{"version":3,"sources":["webpack:///./src/components/Map/locator/script.js","webpack:///./src/assets/js/bootstrap.js","webpack:///node_modules/gvue/src/components/Accordion/CollapseButton.vue","webpack:///./node_modules/gvue/src/components/Accordion/CollapseButton.vue?8e80","webpack:///./node_modules/gvue/src/components/Accordion/CollapseButton.vue","webpack:///./node_modules/gvue/src/components/Accordion/Collapsible.vue?f487","webpack:///./node_modules/gvue/src/components/Accordion/Collapsible.vue","webpack:///node_modules/gvue/src/components/Accordion/Collapsible.vue","webpack:///node_modules/gvue/src/components/Accordion/Accordion.vue","webpack:///./node_modules/gvue/src/components/Accordion/Accordion.vue?492f","webpack:///./node_modules/gvue/src/components/Accordion/Accordion.vue","webpack:///node_modules/gvue/src/core/Zone/Zone.vue","webpack:///./node_modules/gvue/src/core/Zone/Zone.vue?6f69","webpack:///./node_modules/gvue/src/core/Zone/Zone.vue","webpack:///node_modules/gvue/src/core/Visual/Visual.vue","webpack:///./node_modules/gvue/src/core/Visual/Visual.vue?6cd3","webpack:///./node_modules/gvue/src/core/Visual/Visual.vue","webpack:///./src/components/Map/locator/jquery.jscrollpane.js","webpack:///./src/components/Map/locator/markerclustererplus.js","webpack:///./src/components/Map/locator/search.js","webpack:///node_modules/gvue/src/core/Cta/Cta.vue","webpack:///./node_modules/gvue/src/core/Cta/Cta.vue","webpack:///src/components/PopinHowto/PopinHowto.vue","webpack:///./src/components/PopinHowto/PopinHowto.vue?447f","webpack:///./src/components/PopinHowto/PopinHowto.vue","webpack:///./src/helpers/helpers.js","webpack:///./src/directives/tap.js","webpack:///src/components/RecyclingMedia/RecyclingMedia.vue","webpack:///./src/components/RecyclingMedia/RecyclingMedia.vue?f14c","webpack:///./src/components/RecyclingMedia/RecyclingMedia.vue","webpack:///src/components/HeroSwiper/HeroSwiper.vue","webpack:///./src/components/HeroSwiper/HeroSwiper.vue?d406","webpack:///./src/components/HeroSwiper/HeroSwiper.vue","webpack:///src/components/SplitPane/SplitPane.vue","webpack:///./src/components/SplitPane/SplitPane.vue?5cf6","webpack:///./src/components/SplitPane/SplitPane.vue","webpack:///src/components/Map/Map.vue","webpack:///./src/components/Map/Map.vue?dfcd","webpack:///./src/components/Map/Map.vue","webpack:///src/components/RecyclingHero/RecyclingHero.vue","webpack:///./src/components/RecyclingHero/RecyclingHero.vue?f8cd","webpack:///./src/components/RecyclingHero/RecyclingHero.vue","webpack:///src/components/RecyclingFaq/RecyclingFaq.vue","webpack:///./src/components/RecyclingFaq/RecyclingFaq.vue?4d86","webpack:///./src/components/RecyclingFaq/RecyclingFaq.vue","webpack:///src/components/RecyclingOutro/RecyclingOutro.vue","webpack:///./src/components/RecyclingOutro/RecyclingOutro.vue?e74b","webpack:///./src/components/RecyclingOutro/RecyclingOutro.vue","webpack:///src/components/PopinStory/PopinStory.vue","webpack:///./src/components/PopinStory/PopinStory.vue?de90","webpack:///./src/components/PopinStory/PopinStory.vue","webpack:///src/components/RecyclingEffort/RecyclingEffort.vue","webpack:///./src/components/RecyclingEffort/RecyclingEffort.vue?ab14","webpack:///./src/components/RecyclingEffort/RecyclingEffort.vue","webpack:///src/App.vue","webpack:///./src/App.vue?af89","webpack:///./src/App.vue","webpack:///./src/main.js","webpack:///node_modules/gvue/src/core/Popin/Popin.vue","webpack:///./node_modules/gvue/src/core/Popin/Popin.vue?79bb","webpack:///./node_modules/gvue/src/core/Popin/Popin.vue","webpack:///node_modules/nespresso-components/AddToCart/AddToCart.vue","webpack:///./node_modules/nespresso-components/AddToCart/AddToCart.vue?6854","webpack:///./node_modules/nespresso-components/AddToCart/AddToCart.vue","webpack:///node_modules/gvue/src/core/EmbedVideo/EmbedVideo.vue","webpack:///./node_modules/gvue/src/core/EmbedVideo/EmbedVideo.vue?3207","webpack:///./node_modules/gvue/src/core/EmbedVideo/EmbedVideo.vue","webpack:///node_modules/gvue/src/core/Paragraph/Paragraph.vue","webpack:///./node_modules/gvue/src/core/Paragraph/Paragraph.vue","webpack:///./src/components/Map/locator/nespresso.tools.js","webpack:///node_modules/gvue/src/components/Services/Services.vue","webpack:///./node_modules/gvue/src/components/Services/Services.vue?c4e3","webpack:///./node_modules/gvue/src/components/Services/Services.vue","webpack:///node_modules/gvue/src/core/Heading/Heading.vue","webpack:///./node_modules/gvue/src/core/Heading/Heading.vue","webpack:///./src/components/Map/locator/googlemaps.js"],"names":["Object","defineProperty","__webpack_exports__","value","$","data","xhr","window","nespresso","currentLatitude","currentLongitude","currentPlaceType","currentRequest","currentCountry","country","isGeolocSuccess","nearby","countryRestriction","currentMarker","currentShopType","markers","defaultLatitude","default_lat","defaultLongitude","default_lng","defaultZoom","default_zoom","latlng","google","maps","LatLng","options","zoom","parseInt","center","zoomControlOptions","style","ZoomControlStyle","DEFAULT","mapTypeId","MapTypeId","ROADMAP","styles","stylers","hue","invert_lightness","saturation","lightness","gamma","featureType","elementType","color","map","Map","document","getElementById","path","process","clusterer","MarkerClusterer","gridSize","maxZoom","url","height","width","textColor","rv","navigator","appName","ua","userAgent","re","RegExp","exec","parseFloat","$1","getIERev","event","addListener","setTimeout","stop","isRTL","hasClass","holderOpen","click","r","this","addClass","removeClass","centerMapOffset","resultsShowed","attr","initMap","css","geoloc","geolocInput","geolocButton","deactivateCurrentLocation","activateCurrentLocation","findByText","val","placeName","autocompleteService","places","AutocompleteService","getPlacePredictions","input","offset","length","bounds","getBounds","list","status","placesService","PlacesService","getDetails","reference","detailsResult","placesServiceStatus","placeMatched","place","countryCode","each","address_components","index","component","i","n","types","short_name","extractCountryCode","name","geometry","viewport","fitBounds","setCenter","location","lat","lng","init","self","hide","remove","focusout","get","autocomplete","Autocomplete","bindTo","trigger","getPlace","filters","find","change","e","siblings","elt","text","omnitureSet","dt","setMap","clearMarkers","clearOverlays","empty","push","lang","region","geo","type","service","city","zipcode","createRequest","filtersSpanHeight","services","abort","requestedShopType","html","show","ajax","ajaxPath","success","counter","enabledFilters","demo","pickup","wifi","recycling","wheelchair","cube","appointment","i18n","boutique","id","uniqId","isStore","point_of_interest","isNcafe","supported_service","address","number","formatter","isArray","pop","storeName","arrayGet","isRecycling","isDemo","isWifi","isPickup","isWheelchair","isCube","isAppointment","address_line","service_recycling","service_demo","service_wifi","service_pickup","service_wheelchair","service_cube","service_appointment","position","marker","Marker","prepareMarker","latitude","longitude","info","buildFileInfo","body","toString","LatLngBounds","extend","addMarkers","prepareMapObjects","append","parent","no_store_found","is","size","filtersUlHeight","error","loadPoiInfos","getZoom","setZoom","projection","getProjection","offsetX","point1","fromLatLngToPoint","point2","Point","Math","pow","cent","fromPointToLatLng","x","y","panTo","on","__WEBPACK_IMPORTED_MODULE_0__search__","__webpack_require__","__WEBPACK_IMPORTED_MODULE_2__markerclustererplus__","__WEBPACK_IMPORTED_MODULE_3__nespresso_tools__","uniqueCounter","uniqueInt","setInterval","Array","prototype","hasOwnProperty","unique","clearInterval","CollapseButton","props","Number","required","total","feature","methods","toggle","isOpen","_feature","trackingLabel","title","tracking","customEvent","category","action","label","$landing","trackingLabelPrefix","interaction","Accordion_CollapseButton","render","_vm","_h","$createElement","_c","_self","staticClass","class","g_open","attrs","aria-expanded","data-translate","data-of","tabindex","$event","_v","_s","_t","staticRenderFns","components_Accordion_CollapseButton","normalizeComponent","Accordion_Collapsible","aria-hidden","domProps","innerHTML","content","components_Accordion_Collapsible","Collapsible_normalizeComponent","ssrContext","Accordion","limit","showAll","components","Collapsible","created","_this","items","forEach","item","$set","computed","toBeShown","slice","showAllFAQ","showLessFAQ","Accordion_Accordion","role","_l","$index","key","_e","showLess","showMore","Accordion_Component","Accordion_normalizeComponent","Zone","mixins","String","dataLabel","contrast","validator","constants","indexOf","autoHeight","Boolean","align","mobilePosition","classNamesBg","classNamesRestrict","classNamesContent","backgroundImage","restrict","default","parallax","speed","parallaxLoaded","classNames","utils","hasParallax","then","bind","VueParallaxJs","vue_esm","use","minWidth","$parallaxjs","directive","mounted","parallaxRules","$breakpoint","isS","styleSheets","insertRule","Zone_Zone","data-label","directives","rawName","expression","g_parallax","backgroundPosition","backgroundSize","backgroundColor","backgroundAttachment","attachment","$slots","g_content","Component","Visual","src","svg","fontIcon","m","Visual_Visual","factory","fn","jScrollPane","settings","JScrollPane","elem","s","pane","paneWidth","paneHeight","container","contentWidth","contentHeight","percentInViewH","percentInViewV","isScrollableV","isScrollableH","verticalDrag","dragMaxY","verticalDragPosition","horizontalDrag","dragMaxX","horizontalDragPosition","verticalBar","verticalTrack","scrollbarWidth","verticalTrackHeight","verticalDragHeight","arrowUp","arrowDown","horizontalBar","horizontalTrack","horizontalTrackWidth","horizontalDragWidth","arrowLeft","arrowRight","reinitialiseInterval","originalPadding","originalPaddingTotalWidth","previousContentWidth","jsp","wasAtTop","wasAtLeft","wasAtBottom","wasAtRight","originalElement","clone","mwEvent","mwheelIntent","initialise","isMaintainingPositon","lastContentX","lastContentY","hasContainingSpaceChanged","originalScrollTop","originalScrollLeft","scrollableWidth","scrollableHeight","startX","startY","touchStartX","touchStartY","moved","moving","maintainAtBottom","maintainAtRight","undefined","scrollTop","scrollLeft","overflow","padding","innerWidth","innerHeight","children","appendTo","stickToBottom","contentPositionY","stickToRight","contentPositionX","outerHeight","end","scrollWidth","scrollHeight","maintainPosition","showArrows","getArrowScroll","nil","arrowScrollOnHover","appendArrows","verticalArrowPositions","hover","pageY","top","positionDragY","cancelDrag","sizeVerticalScrollbar","horizontalArrowPositions","pageX","left","positionDragX","sizeHorizontalScrollbar","horizontalTrackHeight","verticalTrackWidth","outerWidth","ceil","horizontalDragMaxWidth","horizontalDragMinWidth","_positionDragX","verticalDragMaxHeight","verticalDragMinHeight","_positionDragY","resizeScrollbars","scrollToX","scrollToY","unbind","scrollToElement","target","delta","deltaX","deltaY","dX","dY","factor","deltaFactor","mouseWheelSpeed","scrollBy","touch","originalEvent","touches","ev","touchPos","scrollTo","abs","enableKeyboardNavigation","keyDown","elementHasScrolled","validParents","focus","closest","keyCode","keyDownHandler","hideFocus","scrollByY","keyboardSpeed","scrollPagePercent","scrollByX","initKeyboardNav","clickOnTrack","removeClickOnTrack","originalTarget","currentTarget","scrollTimeout","clickedTrack","direction","isFirst","cancelClick","clearTimeout","doScroll","pos","contentDragY","dragY","initialDelay","trackClickRepeatFreq","contentDragX","dragX","initClickOnTrack","hash","retryInt","escape","substr","err","observeHash","hijackInternalLinks","delegate","element","elementTop","href","locationHref","scrollIntoView","preventDefault","removeAttr","autoReinitialise","autoReinitialiseDelay","verticalGutter","ele","p","a1","a2","aTemp","p1","p2","test","platform","dirX","dirY","arrow","eve","arrowButtonSpeed","arrowRepeatFreq","arrowScroll","blur","destY","animate","willScrollYEvent","Event","isDefaultPrevented","tmpVerticalDragPosition","isAtTop","isAtBottom","destTop","animateScroll","updateVerticalArrows","destX","willScrollXEvent","tmpHorizontalDragPosition","isAtLeft","isAtRight","destLeft","updateHorizontalArrows","stickToTop","eleHeight","eleWidth","viewportTop","viewportLeft","maxVisibleEleTop","maxVisibleEleLeft","eleTop","eleLeft","offsetParent","nodeName","horizontalGutter","isNaN","reinitialise","scrollToPercentX","destPercentX","scrollToPercentY","destPercentY","prop","stepCallback","completeCallback","params","duration","animateDuration","easing","animateEase","queue","step","complete","getContentPositionX","getContentPositionY","getContentWidth","getContentHeight","getPercentScrolledX","getPercentScrolledY","getIsScrollableH","getIsScrollableV","getContentPane","scrollToBottom","noop","destroy","currentY","currentX","replaceWith","defaults","jspApi","filter","trackClickSpeed","define","exports","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_typeof___default","module","require","jQuery","ClusterIcon","cluster","getMarkerClusterer","OverlayView","cluster_","className_","getClusterClass","styles_","center_","div_","sums_","visible_","getMap","Cluster","mc","markerClusterer_","map_","gridSize_","getGridSize","minClusterSize_","getMinimumClusterSize","averageCenter_","getAverageCenter","hideLabel_","getHideLabel","markers_","bounds_","clusterIcon_","getStyles","opt_markers","opt_options","clusters_","listeners_","activeMap_","ready_","minimumClusterSize","maxZoom_","title_","zoomOnClick_","zoomOnClick","averageCenter","ignoreHidden_","ignoreHidden","enableRetinaIcons_","enableRetinaIcons","hideLabel","imagePath_","imagePath","IMAGE_PATH","imageExtension_","imageExtension","IMAGE_EXTENSION","imageSizes_","imageSizes","IMAGE_SIZES","calculator_","calculator","CALCULATOR","batchSize_","batchSize","BATCH_SIZE","batchSizeIE_","batchSizeIE","BATCH_SIZE_IE","clusterClass_","clusterClass","toLowerCase","setupStyles_","onAdd","cMouseDownInCluster","cDraggingMapByCluster","cClusterIcon","createElement","className","getPanes","overlayMouseTarget","appendChild","boundsChangedListener_","addDomListener","theBounds","mz","getZoomOnClick","getMaxZoom","cancelBubble","stopPropagation","onRemove","parentNode","removeListener","clearInstanceListeners","removeChild","draw","getPosFromLatLng_","display","img","bp","backgroundPosition_","split","spriteH","trim","spriteV","cssText","createCss","url_","width_","height_","anchorText_","textColor_","textSize_","fontFamily_","fontWeight_","fontStyle_","textDecoration_","getTitle","useStyle","sums","max","min","anchorText","anchorIcon_","anchorIcon","textSize","textDecoration","fontWeight","fontStyle","fontFamily","join","fromLatLngToDivPixel","getSize","getMarkers","getCenter","getPosition","addMarker","mCount","isMarkerAlreadyAdded_","l","calculateBounds_","isAdded","isMarkerInClusterBounds","contains","getExtendedBounds","updateIcon_","numStyles","getCalculator","cMarkerClusterer","repaint","resetViewport_","redraw_","fitMapToMarkers","setGridSize","setMinimumClusterSize","setMaxZoom","setStyles","setTitle","setZoomOnClick","setAverageCenter","getIgnoreHidden","setIgnoreHidden","getEnableRetinaIcons","setEnableRetinaIcons","getImageExtension","setImageExtension","getImagePath","setImagePath","getImageSizes","setImageSizes","setCalculator","setHideLabel","getBatchSizeIE","setBatchSizeIE","setClusterClass","getTotalMarkers","getClusters","getTotalClusters","opt_nodraw","pushMarkerTo_","getDraggable","removeMarker","opt_noMapRemove","removeFromMap","removed","removeMarker_","removeMarkers","splice","oldClusters","tr","getNorthEast","bl","getSouthWest","trPix","blPix","ne","fromDivPixelToLatLng","sw","createClusters_","opt_hide","distanceBetweenPoints_","dLat","PI","dLon","a","sin","cos","atan2","sqrt","isMarkerInBounds_","addToClosestCluster_","d","distance","clusterToAddTo","iFirst","mapBounds","timerRefStatic","iLast","getVisible","obj1","obj2","object","property","apply","count","dv","replace","code","omnitureId","s_gi","s_account","linkTrackVars","linkTrackEvents","eVar14","events","tl","TXT_SIZES","Cta","sizeMobile","isLink","isBtn","isWhite","isGold","isBuy","isOutline","isHeadline","link","linkMobile","classNameContent","handleClick","evt","$emit","Promise","resolve","_scrollTo$split","_scrollTo$split2","slicedToArray_default","anchor","minus","trackLink","goToLink","open","getLink","hasIcon","icon","dataLayer","isMobile","beforeMount","_this2","el","span","after","PopinHowto","Heading","Paragraph","Popin","extends_default","$json","popinHowtoOpened","isSmall","watch","state","$nextTick","preventScrollLock","dom","showMap","cta","PopinHowto_PopinHowto","close-label","is-open","model","callback","$$v","level","getImgUrl","folder","ext","header","is-btn","components_PopinHowto_PopinHowto","roundFloat","round","lockScroll","documentElement","classList","Tap","binding","Hammer","RecyclingMedia","media","config","isVideo","video","videoId","caption","subtitle","openPopin","RecyclingMedia_RecyclingMedia","watchVideo","modifiers","sync","components_RecyclingMedia_RecyclingMedia","RecyclingMedia_normalizeComponent","HeroSwiper","core_Paragraph","slider","extras","swiper","slidesPerView","effect","coverflowEffect","depth","stretch","slideShadows","rotate","navigation","nextEl","prevEl","pagination","spaceBetween","swiper_esm_bundle","$refs","HeroSwiper_HeroSwiper","ref","slide","popin","_m","components_HeroSwiper_HeroSwiper","HeroSwiper_normalizeComponent","polyfill","SplitPane","EmbedVideo","capsules","mode","splitIndex","splitPanels","timeline","TimelineLite","activePanel","isDragging","swipers","splitPanelsSizes","none","aluminium","ground","isPopinOpen","ccPolicy","getHeaderDepth","bootstrap","addEventListener","lodash","getBackground","image","querySelector","getComputedStyle","panels","panel","initSplit","initPanels","split_es","sizes","minSize","gutterSize","snapOffset","gutter","onDrag","onDragEnd","playbackToOnDragEnd","initPanelsWidth","initPanelsTimeline","reduce","panelWidth","$el","offsetWidth","firstChild","panelCover","panelCoverFigure","panelCoverCaption","panelCoverTransition","alpha","zIndex","panelCoverFigureTransition","from","to","panelCoverCaptionTransition","panelDetails","panelDetailsTitle","panelDetailsClose","panelDetailsTransition","panelDetailsTitleTransition","panelDetailsCloseTransition","call","fromTo","add","pause","getRemainingDuration","toConsumableArray_default","concat","getPanelSizes","updatePlaybackProgress","playbackToOnClick","targetPane","resetState","animationOptions","getAnimateOptionsByPane","setState","linkOrSlider","playbackToOnPan","_this3","setActivePanelFromSizes","startSizes","stopSizes","updateHeight","getSizes","_sizes","right","topOffset","pageYOffset","getBoundingClientRect","behavior","arguments","scrollDetailsToTop","_ref","_this4","onUpdate","updateSizes","onComplete","clear","setSizes","panelsSizes","setPlaybackHead","values_default","progress","language","SplitPane_SplitPane","refInFor","legend","font-icon","is-link","discover","section","closeLabel","auto-play","controlPanel","components_SplitPane_SplitPane","SplitPane_normalizeComponent","googleMaps","mapOpened","jsonKey","opened","loadData","close","Map_Map","transition","select","placeholder","data-type","components_Map_Map","Map_normalizeComponent","RecyclingHero","ZoneTracking","AddToCart","openHowtoPopin","productClick","product","products","trackingProductClickLabel","toggleMap","RecyclingHero_RecyclingHero","_b","translations","addToCart","show-price","ctaHowTo","howto","shopFinder","components_RecyclingHero_RecyclingHero","RecyclingHero_normalizeComponent","RecyclingFaq","core_Heading","RecyclingFaq_RecyclingFaq","background-image","components_RecyclingFaq_RecyclingFaq","RecyclingFaq_normalizeComponent","RecyclingOutro","readMore","RecyclingOutro_RecyclingOutro","commons","link-mobile","link_mobile","components_RecyclingOutro_RecyclingOutro","RecyclingOutro_normalizeComponent","PopinStory","initiative","popinStoryOpened","seeTheStory","PopinStory_PopinStory","ctaFullStory","components_PopinStory_PopinStory","PopinStory_normalizeComponent","RecyclingEffort","activeInitiative","swiperIndex","swiperOptions","simulateTouch","centeredSlides","watchSlidesProgress","slideToClickedSlide","slides","alphaOffset","scaleOffset","positionOffset","translateValue","opacity","transform","touchStart","touchEnd","transitionEnd","slidesArray","effort","carousel","activeIndex","charAt","toUpperCase","openStoryPopin","RecyclingEffort_RecyclingEffort","App","RecyclingEffort_normalizeComponent","Services","selectortype_template_index_0_src_App","src_App","App_normalizeComponent","Vue","performance","devtools","productionTip","VueLanding","project","landing","projectPath","sectionTrackingLabels","outro","skipMutationKeys","VueMedia","breakpoints","S","L","XL","Infinity","getImgSuffix","breakpoint","template","isSlide","bindEvent","unbindEvent","beforeDestroy","closeDiscoverEchap","closeDiscoverOverlay","which","ESC","unslide","Popin_Popin","g_popinOpened","g_popinSlide","aria-label","api","eventHub","quantity","customThirdLine","hasPhantom","showPrice","showPriceInQS","modifier","amount","constants_default","isDesktop","isMosaic","isResponsive","isClassic","quantitySelectorOpened","activeQuantity","quantities","btnLabelAdd","btnLabelUpdate","btnLabelPhantom","voiceAddToCart","materialPlay","quantityStep","useCustomThirdLine","getProduct","_cartEvent","setActiveQuantity","_window$napi$data","napi","$on","useMosaicOne","oldValue","sku","immediate","handler","buildQuantities","isCapsule","thirdLineQuantities","some","capsulesThirdLineQuantities","getIn","col","scrollImpression","itemDisplay","rect","setProperty","clientX","clientY","setQuantity","dispatchAddedToCart","previousQuantity","isCustomQuantityButton","_this5","focusForAddOneToCart","button","newQuantity","pQuantities","lastQuantity","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","get_iterator_default","next","done","pQuantity","return","setText","productSku","promises","fill","CartManager","updateItem","promise_default","all","catch","isInApp","method","additionalProducts","formattedProductsCount","padl","namespace","user","isLoggedIn","angular","scope","readCart","reload","isDocumentEvent","_this6","productData","existProduct","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","productId","_hasSameUnitPrice","unitPrice","_activeQuantity","_iteratorNormalCompletion3","_didIteratorError3","_iteratorError3","_step3","_iterator3","_product","inStock","updateCart","voices","outOfStock","checkProductPriceExist","channel","price","off","$off","AddToCart_AddToCart","g_mini","MODIFIER_MINI","g_miniMobile","MODIFIER_MINI_MOBILE","g_miniDesktop","MODIFIER_MINI_DESKTOP","displayedPrice","data-product-item-id","internationalId","data-product-section","data-product-position","data-disabled","textContent","labelAdd","labelUpdate","g_quantitySelectorOpened","g_update","g_materialPlay","disabled","g_quantity","update:opened","isBackground","autoPlay","preload","mute","_hasBeenTrack","isPlaying","canvas","track","moveTo","play","load","getDuration","getCurrentTime","getTrackingTitle","$trackingLandingLabel","YtPlayer","additionnalParams","controls","typeof_default","assign_default","cc_load_policy","cc_lang_pref","correspondenceLang_default","attach","player","playVideo","pauseVideo","stopVideo","time","seekTo","toFixed","YT","PlayerState","PLAYING","ENDED","YkPlayer","_uid","onPlay","onPlayerComplete","muted","setAttribute","autoplay","querySelectorAll","currentTime","EmbedVideo_EmbedVideo","v_isPlaying","attributes","phone","poi","__WEBPACK_IMPORTED_MODULE_2_babel_runtime_helpers_typeof___default","postal_code","_","company_name_type","openingHours","opening_hours_text","buildOpeningHours","directionsLink","google_directions","google_lang","boutiqueImageUrl","retailImageUrl","notStoreStyle","addrLine","match","userLanguage","openning_hours","store_directions_cta","print","opening_hours","monday","tuesday","wednesday","thursday","friday","saturday","sunday","lines","shift","weekly_timetable","day","time_slot","dayHours","timeSlot","formatHour","start","hour","array","segments","_uniqId","Information","__WEBPACK_IMPORTED_MODULE_0_babel_runtime_helpers_classCallCheck___default","panes","floatPane","_stopPropagation","returnValue","point","offsetHeight","onMouseOut_","div","__id","__className","__label","listeners","onClick_","onMouseOver_","noScroll","box","information","getElement","oldMarker","ServicesItems","folderSuffix","Services_Services","slot","isHeadingLevel","levelClass","fake","noMargin","hidden","GoogleMaps","dataBeforeLoaded","locatorScript","isGoogleVarDefined","loadGoogleMaps","loadGoogleMapsScript","pathname","loadGoogleMapsAPI","sensor","libraries","console","_that","interval","isJqueryDefined","isScriptDefined"],"mappings":"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","file":"js/app.js","sourcesContent":["import omnitureSet from './search'\n// import Plugins from './plugins'\n// eslint-disable-next-line no-unused-vars\nimport jScrollPane from './jquery.jscrollpane'\nimport MarkerClusterer from './markerclustererplus'\nimport Marker from './nespresso.tools'\n\nwindow.map = null\nwindow.nespresso = null\nwindow.geoloc = null\nwindow.centerMapOffset = null\n// var scrollPane = null\nvar ajaxPath = 'https://www.nespresso.com/storelocator/app/find_poi.php'\n\nif (process.env.NODE_ENV === 'development') {\n ajaxPath = '/static/recycling2019/locator/mock.json'\n}\n\nexport function init (data) {\n window.nespresso = data\n var xhr\n var currentLatitude = null\n var currentLongitude = null\n\n var currentPlaceType = 'country'\n var currentRequest = null\n var currentCountry = nespresso.country\n var isGeolocSuccess = false\n var nearby = false\n var countryRestriction = ''\n window.currentMarker = null\n\n var currentShopType = 'recycling'\n\n var markers = []\n var defaultLatitude = window.nespresso.default_lat\n var defaultLongitude = window.nespresso.default_lng\n var defaultZoom = window.nespresso.default_zoom\n\n var latlng = new google.maps.LatLng(defaultLatitude, defaultLongitude)\n var options = {\n zoom: parseInt(defaultZoom),\n center: latlng,\n zoomControlOptions: {\n style: google.maps.ZoomControlStyle.DEFAULT\n },\n\n mapTypeId: google.maps.MapTypeId.ROADMAP,\n styles: [{'stylers': [{'hue': '#ff1a00'}, {'invert_lightness': true}, {'saturation': -100}, {'lightness': 33}, {'gamma': 0.5}]},\n {'featureType': 'water', 'elementType': 'geometry', 'stylers': [{'color': '#2D333C'}]}]\n }\n window.map = new google.maps.Map(document.getElementById('map'), options)\n\n let path = '/shared_res/agility'\n if (process.env.NODE_ENV === 'development') {\n path = '/static'\n }\n var clusterer = new MarkerClusterer(window.map, null, {\n gridSize: 20,\n maxZoom: 12,\n styles: [{\n url: path + '/recycling2019/recycling2019/locator/cluster.png',\n height: 52,\n width: 53,\n textColor: 'white'\n }]\n })\n // Nav geoloc\n // if(navigator.geolocation) {\n // navigator.geolocation.getCurrentPosition(geoLocSuccess)\n // }\n\n // google.maps.event.addListener(window.map, 'bounds_changed', function() {\n // initMap()\n // google.maps.event.clearListeners(window.map, 'bounds_changed')\n // })\n\n // bugfix google map infinit loading\n if (!getIERev()) {\n google.maps.event.addListener(window.map, 'tilesloaded', function () {\n setTimeout(function () {\n window.stop()\n }, 10000)\n })\n }\n\n var isRTL = $('body').hasClass('rtl')\n\n var holderOpen = false\n // init result list open/close\n $('#results .holder a').click(function () {\n var r = $('#results')\n\n r.stop()\n if (r.hasClass('closed')) {\n $(this).addClass('open')\n r.removeClass('closed')\n holderOpen = true\n } else {\n $(this).removeClass('open')\n r.addClass('closed')\n holderOpen = false\n }\n if (window.currentMarker != null) {\n // re-position opened marker on holder change\n // eslint-disable-next-line no-undef\n centerMapOffset(window.currentMarker)\n }\n })\n\n // open/close results on init\n var resultsShowed = false\n function initResultsAnimation () {\n var r = $('#results')\n r.removeClass('closed')\n setTimeout(function () {\n r.addClass('closed')\n }, 2500)\n\n resultsShowed = true\n }\n\n // init shop type events\n $('#shops a').click(function () {\n if ($(this).attr('href') === '#') {\n $('#shops a').removeClass('active')\n $(this).addClass('active')\n currentShopType = $(this).data('type')\n initMap(this)\n $('.jspScrollable .jspPane, .jspScrollable .jspDrag').css('top', '0')\n return false\n }\n })\n\n currentShopType = $('#shops .active').data('type')\n\n // eslint-disable-next-line no-unused-vars\n function geoLocSuccess (position) {\n isGeolocSuccess = true\n $('#btnLocate').addClass('active')\n currentLatitude = position.coords.latitude\n currentLongitude = position.coords.longitude\n window.map.setCenter(new google.maps.LatLng(currentLatitude, currentLongitude))\n initMap()\n }\n\n function extractCity (place) {\n var city\n\n $.each(place.address_components, function (index, component) {\n var type\n\n for (var i = 0, n = component.types.length; i < n; i++) {\n type = component.types[i]\n\n if (type === 'locality' || type === 'city') {\n city = component.long_name\n }\n }\n })\n\n return city\n }\n\n function extractZipCode (place) {\n var zipcode\n\n $.each(place.address_components, function (index, component) {\n var type\n\n for (var i = 0, n = component.types.length; i < n; i++) {\n type = component.types[i]\n\n if (type === 'postal_code') {\n zipcode = component.long_name\n }\n }\n })\n\n return zipcode\n }\n\n function extractCountryCode (place) {\n var countryCode\n\n $.each(place.address_components, function (index, component) {\n var type\n\n for (var i = 0, n = component.types.length; i < n; i++) {\n type = component.types[i]\n\n if (type === 'country') {\n countryCode = component.short_name\n }\n }\n })\n\n if (countryCode === 'ES') {\n // return 'SP'\n }\n if (countryCode === 'GB') {\n return 'UK'\n }\n return countryCode\n }\n\n // -------------------------------------------------------------------------\n // Geoloc\n // -------------------------------------------------------------------------\n window.geoloc = {\n geolocInput: $('#location'),\n geolocButton: $('#btnLocate'),\n\n deactivateCurrentLocation: function () {\n geoloc.geolocButton.removeClass('active')\n },\n activateCurrentLocation: function () {\n geoloc.geolocButton.addClass('active')\n },\n\n findByText: function () {\n if (geoloc.geolocInput.val() === '') return\n\n // The user pressed enter in the input without selecting a result from the list\n var placeName = geoloc.geolocInput.val()\n var autocompleteService = new google.maps.places.AutocompleteService()\n autocompleteService.getPlacePredictions({'input': placeName, 'offset': placeName.length, 'bounds': window.map.getBounds()},\n function listentoresult (list, status) {\n if (list == null || list.length === 0) {\n // no results\n } else {\n var placesService = new google.maps.places.PlacesService(document.getElementById('location'))\n placesService.getDetails({'reference': list[0].reference},\n function detailsresult (detailsResult, placesServiceStatus) {\n // Here's the first result in the AutoComplete with the exact\n // same data format as you get from the AutoComplete.\n geoloc.placeMatched(detailsResult)\n }\n )\n }\n }\n )\n },\n\n placeMatched: function (place) {\n currentCountry = extractCountryCode(place)\n\n // set current place type\n currentPlaceType = place.types[0]\n\n if (currentPlaceType === 'country') {\n nearby = false\n countryRestriction = place.address_components[0].short_name\n } else {\n nearby = true\n countryRestriction = ''\n }\n\n currentRequest = place.name\n\n // If the place has a geometry, then present it on a map.\n if (place.geometry.viewport) {\n // Use the viewport if it is provided.\n window.map.fitBounds(place.geometry.viewport)\n } else {\n // Otherwise use the location and set a chosen zoom level.\n window.map.setCenter(place.geometry.location)\n }\n currentLatitude = place.geometry.location.lat()\n currentLongitude = place.geometry.location.lng()\n initMap()\n },\n\n init: function () {\n var self = this\n self.geolocInput.click(function () {\n $('.pac-container').hide()\n $('.pac-container pac-item-refresh, .pac-container pac-item').remove()\n self.deactivateCurrentLocation()\n $(this).val('')\n })\n\n $('#btnSearch').click(function () {\n self.findByText()\n })\n $('#btnClear').click(function () {\n self.geolocInput.val('')\n self.deactivateCurrentLocation()\n })\n\n // self.geolocButton.click(function(){\n // navigator.geolocation.getCurrentPosition(geoLocSuccess)\n // })\n\n self.geolocInput.focusout(function () {\n self.deactivateCurrentLocation()\n })\n var input = self.geolocInput.get(0)\n var options = {\n types: []\n }\n var autocomplete = new google.maps.places.Autocomplete(input, options)\n autocomplete.bindTo('bounds', window.map)\n google.maps.event.addListener(autocomplete, 'place_changed', function () {\n // eslint-disable-next-line no-unused-vars\n var inputValue = self.geolocInput.val()\n var pacItems = $('.pac-container .pac-item-refresh, .pac-container .pac-item')\n\n var userSelectItem = true\n\n self.deactivateCurrentLocation()\n self.geolocInput.trigger('blur')\n if (userSelectItem === true) {\n var place = autocomplete.getPlace()\n if (typeof place.address_components === 'undefined') {\n geoloc.findByText()\n } else {\n geoloc.placeMatched(place)\n }\n } else {\n var city = pacItems.first().text()\n self.geolocInput.val(city)\n self.geolocInput.trigger('focusout')\n\n var geocoder = new google.maps.Geocoder()\n geocoder.geocode({'address': city}, function (results, status) {\n var place = results[0]\n\n if (status === google.maps.GeocoderStatus.OK) {\n place = results[0]\n\n // set current place type\n currentPlaceType = place.types[0]\n\n switch (currentPlaceType) {\n case 'locality':\n case 'city':\n currentRequest = extractCity(place)\n break\n\n case 'postal_code':\n currentRequest = extractZipCode(place)\n }\n\n // center and adapte zoom for geometry (country, city...)\n var northEast = place.geometry.bounds.getNorthEast()\n var southWest = place.geometry.bounds.getSouthWest()\n var bounds = new google.maps.LatLngBounds(southWest, northEast)\n\n window.map.fitBounds(bounds)\n\n // If the place has a geometry, then present it on a map.\n currentLatitude = place.geometry.location.lat()\n currentLongitude = place.geometry.location.lng()\n initMap()\n }\n })\n }\n })\n\n /* if (Modernizr.touch){\n self.activateCurrentLocation()\n } */\n }\n }\n window.geoloc.init()\n\n // -------------------------------------------------------------------------\n // Filter Find Us\n // -------------------------------------------------------------------------\n var optionFilter = {\n filters: $('#filters'),\n\n init: function () {\n var self = this\n self.filters.find('input').change(function (e) {\n $(this).siblings()[$(this).attr('checked') ? 'addClass' : 'removeClass']('active')\n\n initMap()\n $('.jspScrollable .jspPane, .jspScrollable .jspDrag').css('top', '0')\n return true\n })\n // init controlls (browser may keep these values on refresh!)\n self.filters.find('input').each(function (e) {\n $(this).siblings()[$(this).attr('checked') ? 'addClass' : 'removeClass']('active')\n })\n }\n }\n optionFilter.init()\n\n // -------------------------------------------------------------------------\n // Map Find Us\n // -------------------------------------------------------------------------\n var initMap = function (elt) {\n $('.item-details .close').click()\n\n loadPoiInfos(elt)\n\n function clearOverlays () {\n for (var i = 0; i < markers.length; i++) {\n markers[i].setMap(null)\n }\n\n clusterer.clearMarkers()\n window.currentMarker = null\n }\n\n function loadPoiInfos (elt) {\n $('.results-empty').text('')\n\n if (elt == null) {\n omnitureSet(1)\n } else {\n var dt = $(elt).data('type')\n if (dt === 'boutique') omnitureSet(2)\n else if (dt === 'point_of_sale') omnitureSet(3)\n else if (dt === 'pick_up_point') omnitureSet(4)\n else if (dt === 'recycling') omnitureSet(5)\n }\n\n // Use default lat/lng if no geoloc\n if (currentLatitude === null || currentLongitude === null) {\n currentLatitude = defaultLatitude\n currentLongitude = defaultLongitude\n }\n\n // clear before sending request\n clearOverlays()\n $('#store-locator-results').empty()\n\n var data = createRequest()\n var type = data.type\n // eslint-disable-next-line no-unused-vars\n var service = data.services\n var filtersSpanHeight = $('#filters span').height() + 20\n\n if (type == null) return\n\n if (xhr) xhr.abort()\n\n var requestedShopType = currentShopType\n\n // hide filters when on recycling and pick_up_point, they are always ignored in this case\n if (currentShopType === 'recycling' || currentShopType === 'pick_up_point') {\n $('#filters').hide()\n }\n\n // Request shops\n $('.results-ctn').addClass('hidden')\n $('.results-header').addClass('hidden')\n $('.results-empty').addClass('loading').html('<img src=\"../img/locator/ajax-loader.gif\" alt=\"\" />').show()\n xhr = $.ajax(ajaxPath, {\n data: data,\n success: function (data) {\n markers = []\n\n var counter = 0\n var enabledFilters = {demo: 0, pickup: 0, wifi: 0, recycling: 0, wheelchair: 0, cube: 0, appointment: 0}\n\n var html = ''\n\n $('#search .select-shop').html(window.nespresso.i18n.boutique + data.length)\n\n $.each(data, function (index, value) {\n // eslint-disable-next-line no-undef\n var id = uniqId()\n\n var isStore = value.point_of_interest.type === 'BOUTIQUE'\n value.isStore = isStore\n var isNcafe = value.point_of_interest.type === 'NCAFE'\n value.isNcafe = isNcafe\n // todo: define the format of multiple supported services.\n var services = value.point_of_interest.supported_service\n var address = value.point_of_interest.address\n var number = isStore ? null : ++counter\n\n if (window.formatter.isArray(address)) {\n address = address.pop()\n }\n\n // eslint-disable-next-line no-undef\n var storeName = arrayGet(address, 'name.company_name_type.name.name')\n\n if (storeName === null) storeName = ''\n\n // eslint-disable-next-line one-var\n var isRecycling = (services === 'RECYCLING'),\n isDemo = (typeof (value.point_of_interest.demo) !== 'undefined' && value.point_of_interest.demo === 1),\n isWifi = (typeof (value.point_of_interest.wifi) !== 'undefined' && value.point_of_interest.wifi === 1),\n isPickup = (typeof (value.point_of_interest.pickup) !== 'undefined' && value.point_of_interest.pickup === 1),\n isWheelchair = (typeof (value.point_of_interest.wheelchair) !== 'undefined' && value.point_of_interest.wheelchair === 1),\n isCube = (typeof (value.point_of_interest.cube) !== 'undefined' && value.point_of_interest.cube === 1),\n isAppointment = (typeof (value.point_of_interest.appointment) !== 'undefined' && value.point_of_interest.appointment === 1)\n // save these values for later use\n enabledFilters.demo |= value.demo = isDemo\n enabledFilters.wifi |= value.wifi = isWifi\n enabledFilters.pickup |= value.pickup = isPickup\n enabledFilters.recycling |= value.recycling = isRecycling\n enabledFilters.wheelchair |= value.wheelchair = isWheelchair\n enabledFilters.cube |= value.cube = isCube\n enabledFilters.appointment |= value.appointment = isAppointment\n\n html +=\n '<li data-id=\"' + id + '\">' +\n '<a href=\"#\" class=\"omnitureSelectStore\">' +\n (isStore\n ? '<span class=\"store-pins\"> </span>'\n : (isNcafe\n ? '<span class=\"ncafe-pins\"> </span>'\n : '<span class=\"number\">' + (number < 10 ? ('0' + number) : number) + '</span>'\n )\n ) +\n '<address>' +\n '<strong>' + storeName + '</strong>' +\n (address.address_line ? '<br>' + address.address_line : '') +\n (address.city.name ? '<br>' + address.city.name : '') +\n '</address>' +\n '<ul class=\"capabilities\">' +\n (isRecycling ? '<li class=\"recycling\" title=\"' + window.nespresso.i18n.service_recycling + '\"></li>' : '') +\n (isDemo ? '<li class=\"demo\" title=\"' + window.nespresso.i18n.service_demo + '\"></li>' : '') +\n (isWifi ? '<li class=\"wifi\" title=\"' + window.nespresso.i18n.service_wifi + '\"></li>' : '') +\n (isPickup ? '<li class=\"pickup\" title=\"' + window.nespresso.i18n.service_pickup + '\"></li>' : '') +\n (isWheelchair ? '<li class=\"wheelchair\" title=\"' + window.nespresso.i18n.service_wheelchair + '\"></li>' : '') +\n (isCube ? '<li class=\"cube\" title=\"' + window.nespresso.i18n.service_cube + '\"></li>' : '') +\n (isAppointment ? '<li class=\"appointment\" title=\"' + window.nespresso.i18n.service_appointment + '\"></li>' : '') +\n '</ul>' +\n '</a>' +\n '<div class=\"spacer\"> </div>' +\n '</li>'\n\n var position = value.position\n\n var marker = prepareMarker(counter, position.latitude, position.longitude, isStore, isNcafe, id)\n marker.info = window.formatter.buildFileInfo(value, position.latitude, position.longitude)\n\n $.data(document.body, id.toString(), marker)\n\n // todo: remove this array.\n markers[index] = marker\n })\n\n if (markers.length !== 0) {\n prepareMapObjects()\n\n $('#store-locator-results').empty().append(html)\n\n $('.omnitureSelectStore').click(function (elt) {\n omnitureSet(6)\n })\n $('.omnitureGetDirection').click(function (elt) {\n omnitureSet(7)\n })\n\n $('.results-empty').hide()\n $('.results-header').find('span').html(data.length).parent().removeClass('hidden')\n $('.results-ctn').removeClass('hidden')\n } else {\n $('.results-empty').removeClass('loading').text(nespresso.i18n.no_store_found).show()\n $('.results-ctn').addClass('hidden')\n $('.results-header').addClass('hidden')\n }\n\n // adapt filters\n if (requestedShopType === 'recycling') {\n $('#filters').hide()\n } else {\n $('#filters li').attr('class', null)\n if (enabledFilters.demo || $('#flt-demo').is(':checked')) $('#filters .demo').parent().addClass('vis')\n if (enabledFilters.pickup || $('#flt-pickup').is(':checked')) $('#filters .pickup').parent().addClass('vis')\n if (enabledFilters.wifi || $('#flt-wifi').is(':checked')) $('#filters .wifi').parent().addClass('vis')\n if (enabledFilters.recycling || $('#flt-recycling').is(':checked')) $('#filters .recycling').parent().addClass('vis')\n if (enabledFilters.wheelchair || $('#flt-wheelchair').is(':checked')) $('#filters .wheelchair').parent().addClass('vis')\n if (enabledFilters.cube || $('#flt-cube').is(':checked')) $('#filters .cube').parent().addClass('vis')\n if (enabledFilters.appointment || $('#flt-appointment').is(':checked')) $('#filters .appointment').parent().addClass('vis')\n $('#filters .vis').css('display', 'block').size() === 0 ? $('#filters').hide() : $('#filters').show()\n var filtersUlHeight = $('#filters ul').height() + filtersSpanHeight\n if (filtersUlHeight >= $('#filters').height()) {\n $('#filters').height($('#filters').height() + 25)\n }\n $('#filters .vis:eq(0)').attr('class', 'first')\n }\n\n // open/close results on init\n if (!resultsShowed) initResultsAnimation()\n },\n error: function (data) {\n $('.results-empty').removeClass('loading').text(nespresso.i18n.no_store_found).show()\n $('.results-ctn').addClass('hidden')\n $('.results-header').addClass('hidden')\n }\n })\n }\n\n function prepareMarker (position, lat, lng, isStore, isNcafe, id) {\n var marker\n if (isStore) {\n marker = new Marker(new google.maps.LatLng(lat, lng), 'mstore', id, '')\n } else if (isNcafe) {\n marker = new Marker(new google.maps.LatLng(lat, lng), 'mncafe', id, '')\n } else {\n marker = new Marker(new google.maps.LatLng(lat, lng), 'mlabel', id, position)\n }\n\n return marker\n }\n\n function prepareMapObjects () {\n var bounds = new google.maps.LatLngBounds()\n bounds.extend(new google.maps.LatLng(currentLatitude, currentLongitude))\n\n // Add listener for a click on the pin\n $.each(markers, function (i, marker) {\n bounds.extend(marker.position)\n })\n\n if (isMarkersBoundsZoom()) {\n window.map.fitBounds(bounds)\n }\n\n clusterer.addMarkers(markers)\n }\n\n /**\n * Define when zoom on markers bound\n */\n function isMarkersBoundsZoom () {\n // NSLV-43 When changing from one tab to another, map should auto-zoom to display the whole list of results on the map.\n return true\n /* if (isGeolocSuccess && currentPlaceType == null) {\n return true\n }\n return false */\n }\n }\n\n window.centerMapOffset = function (marker) {\n if (window.map.getZoom() < 13) window.map.setZoom(13)\n\n var projection = window.map.getProjection()\n // eslint-disable-next-line one-var\n var offsetX = (holderOpen ? 120 : 0), offsetY = -220\n if (isRTL) {\n offsetX = holderOpen ? -120 : 0\n }\n var point1 = projection.fromLatLngToPoint(marker.position)\n var point2 = new google.maps.Point(offsetX / Math.pow(2, window.map.getZoom()), offsetY / Math.pow(2, window.map.getZoom()))\n var cent = window.map.getProjection().fromPointToLatLng(new google.maps.Point(point1.x - point2.x, point1.y + point2.y))\n window.map.panTo(cent)\n }\n\n $('#store-locator-results').on('click', 'li', function (e) {\n var marker = $.data(document.body, $(this).attr('data-id'))\n if (marker) marker.click()\n return false\n })\n\n function createRequest () {\n var filters = []\n // ignore filters when on recycling and pick_up_point, they are always hidden in this case\n if (currentShopType !== 'recycling' && currentShopType !== 'pick_up_point') {\n $('input[name=\"filters[]\"]:checked').each(function () {\n filters.push($(this).val())\n })\n }\n\n var data = {\n country: currentCountry,\n lang: currentCountry === 'KR' ? 'KO' : nespresso.lang,\n region: currentCountry,\n lat: currentLatitude,\n lng: currentLongitude,\n geo: isGeolocSuccess,\n // geo: false,\n type: currentShopType,\n filters: filters,\n nearby: nearby,\n countryRestriction: countryRestriction,\n service: $('.sub-menu li.active').attr('data-value')\n }\n\n switch (currentPlaceType) {\n case 'locality':\n case 'city':\n data.city = currentRequest\n break\n\n case 'postal_code':\n data.zipcode = currentRequest\n break\n\n default:\n // data.geo = true // todo: limit to 50km radius when user is looking for a specific address.\n }\n\n return data\n }\n\n $('body').on('click', '.omnitureGetDirection', function (event) {\n omnitureSet(7)\n })\n $('body').on('click', '#moreinfoDirections', function (event) {\n omnitureSet(7)\n })\n\n initMap()\n}\n\nfunction getIERev () {\n var rv = false\n if (navigator.appName === 'Microsoft Internet Explorer') {\n var ua = navigator.userAgent\n // eslint-disable-next-line no-useless-escape\n var re = new RegExp('MSIE ([0-9]{1,}[\\.0-9]{0,})')\n if (re.exec(ua) != null) {\n rv = parseFloat(RegExp.$1)\n }\n }\n return rv\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Map/locator/script.js","if (process.env.NODE_ENV === 'development') {\n window.isResponsivePlatform = false\n require('nespresso-library/src/utils/mocks')\n} else {\n let uniqueCounter = 0\n const uniqueInt = setInterval(() => {\n uniqueCounter++\n if (Array.prototype.hasOwnProperty('unique') || uniqueCounter === 10) {\n delete Array.prototype.unique\n clearInterval(uniqueInt)\n }\n }, 500)\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/assets/js/bootstrap.js","<template>\n <button class=\"g_title\" :class=\"{g_open: feature.isOpen}\" :aria-expanded=\"feature.isOpen\"\n @click=\"toggle()\" data-translate=\"Accordion item\" data-of=\"of\" tabindex=\"0\">\n <span class=\"g_visually_hidden\">Accordion item {{index}} of {{total}}</span>\n <slot />\n </button>\n</template>\n<script>\nimport Tracking from 'nespresso-library/src/core/tracking'\n\nexport default {\n name: 'AccordionCollapseButton',\n props: {\n index: {\n type: Number,\n required: true\n },\n total: {\n type: Number,\n required: true\n },\n feature: {}\n },\n methods: {\n toggle () {\n this.feature.isOpen = !this.feature.isOpen\n if (this.feature.isOpen) {\n const { trackingLabel, title } = this.feature\n Tracking.customEvent({\n category: 'User Engagement',\n action: 'Click',\n label: `${this.$landing.trackingLabelPrefix} - Faq - ${trackingLabel || title}`,\n interaction: 0\n })\n }\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/components/Accordion/CollapseButton.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('button',{staticClass:\"g_title\",class:{g_open: _vm.feature.isOpen},attrs:{\"aria-expanded\":_vm.feature.isOpen,\"data-translate\":\"Accordion item\",\"data-of\":\"of\",\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.toggle()}}},[_c('span',{staticClass:\"g_visually_hidden\"},[_vm._v(\"Accordion item \"+_vm._s(_vm.index)+\" of \"+_vm._s(_vm.total))]),_vm._v(\" \"),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-54d1174a\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/gvue/src/components/Accordion/CollapseButton.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./CollapseButton.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./CollapseButton.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-54d1174a\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../vue-loader/lib/selector?type=template&index=0!./CollapseButton.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/components/Accordion/CollapseButton.vue\n// module id = null\n// module chunks = ","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"g_coollapsible g_wysiwyg\",attrs:{\"aria-hidden\":''+!_vm.feature.isOpen},domProps:{\"innerHTML\":_vm._s(_vm.feature.content)}})}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-265f4190\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/gvue/src/components/Accordion/Collapsible.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-265f4190\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../../vue-loader/lib/selector?type=styles&index=0!./Collapsible.vue\")\n}\nvar normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Collapsible.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Collapsible.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-265f4190\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../vue-loader/lib/selector?type=template&index=0!./Collapsible.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/components/Accordion/Collapsible.vue\n// module id = null\n// module chunks = ","<style lang=\"sass\">\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n@import sass/variables\n.g_coollapsible.g_wysiwyg\n overflow: hidden\n opacity: 0\n visibility: hidden\n max-height: 0\n +transition($duration_medium $easing)\n\n &[aria-hidden=false]\n opacity: 1\n visibility: visible\n max-height: pxToEm($accordion_max_lines * stripUnits(remToPx($L_txt_line_height)))\n</style>\n\n<template>\n <div class=\"g_coollapsible g_wysiwyg\" :aria-hidden=\"''+!feature.isOpen\"\n v-html=\"feature.content\" />\n</template>\n\n<script>\nexport default {\n name: 'AccordionCollapsible',\n props: {\n feature: {}\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/components/Accordion/Collapsible.vue","<style lang=\"sass\">\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n@import sass/variables\n@import sass/accordion\n</style>\n\n<template>\n <div class=\"g_accordion\">\n <ul role=\"accordion\" class=\"g_isCollapsable\">\n <li class=\"g_accordionItem\" v-for=\"(feature, $index) in toBeShown\" :key=\"$index\">\n <CollapseButton :feature=\"feature\" :index=\"$index + 1\" :total=\"list.items.length\">\n <template>\n <i class=\"fn_angleUpCircle\" />\n <span v-html=\"feature.title\" />\n </template>\n </CollapseButton>\n <Collapsible :feature=\"feature\" v-if=\"feature.content\" />\n </li>\n </ul>\n <button @click=\"showLessFAQ\" class=\"g_accordion_expand\" v-if=\"showAll && limit\"><i class=\"fn_angleUp\" />{{ list.showLess ? list.showLess : 'Show Less' }}</button>\n <button @click=\"showAllFAQ\" class=\"g_accordion_expand\" v-if=\"!showAll && limit\"><i class=\"fn_angleDown\" />{{ list.showMore ? list.showMore : 'Show More' }}</button>\n </div>\n</template>\n\n<script>\nimport CollapseButton from './CollapseButton.vue'\nimport Collapsible from './Collapsible.vue'\n\nexport default {\n props: {\n list: {\n type: Object,\n required: true\n },\n limit: {\n type: Number\n }\n },\n data: function () {\n return {\n showAll: false\n }\n },\n components: {\n CollapseButton,\n Collapsible\n },\n created () {\n this.list.items\n .forEach(item => this.$set(item, 'isOpen', false))\n },\n computed: {\n toBeShown () {\n if (this.showAll) {\n return this.list.items.slice(0, this.list.items.length)\n }\n return this.list.items.slice(0, this.limit)\n }\n },\n methods: {\n showAllFAQ () {\n this.showAll = true\n },\n showLessFAQ () {\n this.showAll = false\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/components/Accordion/Accordion.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"g_accordion\"},[_c('ul',{staticClass:\"g_isCollapsable\",attrs:{\"role\":\"accordion\"}},_vm._l((_vm.toBeShown),function(feature,$index){return _c('li',{key:$index,staticClass:\"g_accordionItem\"},[_c('CollapseButton',{attrs:{\"feature\":feature,\"index\":$index + 1,\"total\":_vm.list.items.length}},[[_c('i',{staticClass:\"fn_angleUpCircle\"}),_vm._v(\" \"),_c('span',{domProps:{\"innerHTML\":_vm._s(feature.title)}})]],2),_vm._v(\" \"),(feature.content)?_c('Collapsible',{attrs:{\"feature\":feature}}):_vm._e()],1)}),0),_vm._v(\" \"),(_vm.showAll && _vm.limit)?_c('button',{staticClass:\"g_accordion_expand\",on:{\"click\":_vm.showLessFAQ}},[_c('i',{staticClass:\"fn_angleUp\"}),_vm._v(_vm._s(_vm.list.showLess ? _vm.list.showLess : 'Show Less'))]):_vm._e(),_vm._v(\" \"),(!_vm.showAll && _vm.limit)?_c('button',{staticClass:\"g_accordion_expand\",on:{\"click\":_vm.showAllFAQ}},[_c('i',{staticClass:\"fn_angleDown\"}),_vm._v(_vm._s(_vm.list.showMore ? _vm.list.showMore : 'Show More'))]):_vm._e()])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-e2678bc2\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/gvue/src/components/Accordion/Accordion.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-e2678bc2\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../../vue-loader/lib/selector?type=styles&index=0!./Accordion.vue\")\n}\nvar normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Accordion.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Accordion.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-e2678bc2\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../vue-loader/lib/selector?type=template&index=0!./Accordion.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/components/Accordion/Accordion.vue\n// module id = null\n// module chunks = ","<style lang=\"sass\">\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n@import sass/zone/zone\n@import sass/backgrounds/backgrounds\n</style>\n\n<template>\n <section\n :id=\"id\"\n :data-label=\"dataLabel\"\n class=\"g_section\"\n :class=\"classNames\">\n <div\n v-if=\"backgroundImage && (hasParallax() ? parallaxLoaded : true)\"\n class=\"g_bg\"\n :class=\"[classNamesBg, {'g_parallax': hasParallax()}]\"\n v-img-src=\"backgroundImage\"\n :style=\"{\n backgroundPosition: backgroundImage.position || null,\n backgroundSize: backgroundImage.size || null,\n backgroundColor: backgroundImage.color || null,\n backgroundAttachment: backgroundImage.attachment || null\n }\"\n v-parallax=\"parallax.speed\"></div>\n <slot name=\"before\"></slot>\n <div\n class=\"g_restrict\"\n :class=\"[classNamesRestrict]\"\n v-if=\"restrict && $slots.default\">\n <div :class=\"[{'g_content': !classNamesContent}, classNamesContent]\">\n <div class=\"g_text\">\n <slot />\n <slot name=\"insideRestrict\" />\n </div>\n </div>\n </div>\n <slot name=\"after\" />\n </section>\n</template>\n<script>\nimport Vue from 'vue'\nimport { capitalize } from '../../assets/js/utils'\nimport * as constants from './constants'\nimport ZoneTracking from '../../assets/js/mixins/ZoneTracking'\n\nexport default {\n name: 'Zone',\n mixins: [ZoneTracking],\n props: {\n id: String,\n dataLabel: String,\n contrast: {\n type: String,\n validator (value) {\n return !!~constants.CONTRASTS.indexOf(value)\n }\n },\n autoHeight: Boolean,\n align: {\n type: String,\n validator (value) {\n return !!~constants.ALIGNMENTS.indexOf(value)\n }\n },\n position: {\n type: String,\n validator (value) {\n return !!~constants.POSITIONS.indexOf(value)\n }\n },\n mobilePosition: {\n type: String,\n validator (value) {\n return !!~constants.POSITIONS_MOBILE.indexOf(value)\n }\n },\n classNamesBg: {},\n classNamesRestrict: {},\n classNamesContent: {},\n backgroundImage: Object,\n restrict: {\n type: Boolean,\n default: true\n },\n parallax: {\n type: Object,\n default: () => {\n return {\n speed: 0,\n height: null\n }\n }\n }\n },\n data () {\n return {\n parallaxLoaded: false\n }\n },\n computed: {\n classNames () {\n const classNames = []\n if (this.contrast) {\n classNames.push('g_' + this.contrast)\n }\n if (this.autoHeight) {\n classNames.push(constants.AUTO_HEIGHT_CLASS)\n }\n if (this.align) {\n classNames.push('g_' + this.align)\n }\n if (this.position) {\n classNames.push('g_' + this.position)\n }\n if (this.mobilePosition) {\n classNames.push('g_mobile' + capitalize(this.mobilePosition))\n }\n return classNames\n }\n },\n created () {\n if (this.hasParallax()) {\n import(/* webpackChunkName: \"VueParallaxJs\" */ '../../assets/js/directives/vue-parallax-js').then(VueParallaxJs => {\n Vue.use(VueParallaxJs, {\n minWidth: 767 // min width to activate parallax\n })\n this.parallaxLoaded = true\n })\n } else if (!this.$parallaxjs) {\n Vue.directive('parallax', {})\n }\n },\n mounted () {\n this.parallaxRules()\n },\n methods: {\n hasParallax () {\n return !this.$breakpoint.isS && this.parallax.speed !== 0 && this.parallax.height\n },\n parallaxRules () {\n // No parallax\n if (!this.hasParallax()) {\n return\n }\n\n let css = `\n .g #${this.id} .g_bg.g_parallax {\n height: ${this.parallax.height}px\n }`\n document.styleSheets[0].insertRule(css, 0)\n css = `\n @media screen and (min-width: 1920px) {\n .g #${this.id} .g_bg.g_parallax {\n height: ${this.parallax.height / 1920 * 100}vw\n }\n }`\n document.styleSheets[0].insertRule(css, 1)\n }\n }\n}\n\n// TODO Doc\n// .g_section\n// &.g_light\n// &.g_dark\n// &.g_right\n// &.g_left\n// .g_section .g_sectionRestrict .g_sectionSmall\n// TODO require sass only if needed\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/core/Zone/Zone.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"g_section\",class:_vm.classNames,attrs:{\"id\":_vm.id,\"data-label\":_vm.dataLabel}},[(_vm.backgroundImage && (_vm.hasParallax() ? _vm.parallaxLoaded : true))?_c('div',{directives:[{name:\"img-src\",rawName:\"v-img-src\",value:(_vm.backgroundImage),expression:\"backgroundImage\"},{name:\"parallax\",rawName:\"v-parallax\",value:(_vm.parallax.speed),expression:\"parallax.speed\"}],staticClass:\"g_bg\",class:[_vm.classNamesBg, {'g_parallax': _vm.hasParallax()}],style:({\n backgroundPosition: _vm.backgroundImage.position || null,\n backgroundSize: _vm.backgroundImage.size || null,\n backgroundColor: _vm.backgroundImage.color || null,\n backgroundAttachment: _vm.backgroundImage.attachment || null\n })}):_vm._e(),_vm._v(\" \"),_vm._t(\"before\"),_vm._v(\" \"),(_vm.restrict && _vm.$slots.default)?_c('div',{staticClass:\"g_restrict\",class:[_vm.classNamesRestrict]},[_c('div',{class:[{'g_content': !_vm.classNamesContent}, _vm.classNamesContent]},[_c('div',{staticClass:\"g_text\"},[_vm._t(\"default\"),_vm._v(\" \"),_vm._t(\"insideRestrict\")],2)])]):_vm._e(),_vm._v(\" \"),_vm._t(\"after\")],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-13bb95b3\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/gvue/src/core/Zone/Zone.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-13bb95b3\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../../vue-loader/lib/selector?type=styles&index=0!./Zone.vue\")\n}\nvar normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Zone.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Zone.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-13bb95b3\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../vue-loader/lib/selector?type=template&index=0!./Zone.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/core/Zone/Zone.vue\n// module id = null\n// module chunks = ","<style lang=\"sass\">\n @import visual\n @import lazyload\n</style>\n\n<template>\n <icon v-if=\"svg\" :src=\"svg\" class=\"g_visual\" />\n <i v-else-if=\"fontIcon\" :class=\"fontIcon\" />\n <img v-else class=\"g_visual\" v-img-src=\"src\" />\n</template>\n<script>\nimport Vue from 'vue'\n\nexport default {\n name: 'Visual',\n props: {\n src: Object,\n svg: String,\n fontIcon: String\n },\n created () {\n if (this.svg) {\n Vue.component('icon', () => import(/* webpackChunkName: \"Icon\" */ 'nespresso-components/icon/Icon').then(m => m.default))\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/core/Visual/Visual.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.svg)?_c('icon',{staticClass:\"g_visual\",attrs:{\"src\":_vm.svg}}):(_vm.fontIcon)?_c('i',{class:_vm.fontIcon}):_c('img',{directives:[{name:\"img-src\",rawName:\"v-img-src\",value:(_vm.src),expression:\"src\"}],staticClass:\"g_visual\"})}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-676c0944\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/gvue/src/core/Visual/Visual.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-676c0944\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../../vue-loader/lib/selector?type=styles&index=0!./Visual.vue\")\n}\nvar normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Visual.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Visual.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-676c0944\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../vue-loader/lib/selector?type=template&index=0!./Visual.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/core/Visual/Visual.vue\n// module id = null\n// module chunks = ","/* eslint-disable */\n/*!\n * jScrollPane - v2.0.23 - 2016-01-28\n * http://jscrollpane.kelvinluck.com/\n *\n * Copyright (c) 2014 Kelvin Luck\n * Dual licensed under the MIT or GPL licenses.\n */\n\n// Script: jScrollPane - cross browser customisable scrollbars\n//\n// *Version: 2.0.23, Last updated: 2016-01-28*\n//\n// Project Home - http://jscrollpane.kelvinluck.com/\n// GitHub - http://github.com/vitch/jScrollPane\n// Source - http://github.com/vitch/jScrollPane/raw/master/script/jquery.jscrollpane.js\n// (Minified) - http://github.com/vitch/jScrollPane/raw/master/script/jquery.jscrollpane.min.js\n//\n// About: License\n//\n// Copyright (c) 2014 Kelvin Luck\n// Dual licensed under the MIT or GPL Version 2 licenses.\n// http://jscrollpane.kelvinluck.com/MIT-LICENSE.txt\n// http://jscrollpane.kelvinluck.com/GPL-LICENSE.txt\n//\n// About: Examples\n//\n// All examples and demos are available through the jScrollPane example site at:\n// http://jscrollpane.kelvinluck.com/\n//\n// About: Support and Testing\n//\n// This plugin is tested on the browsers below and has been found to work reliably on them. If you run\n// into a problem on one of the supported browsers then please visit the support section on the jScrollPane\n// website (http://jscrollpane.kelvinluck.com/) for more information on getting support. You are also\n// welcome to fork the project on GitHub if you can contribute a fix for a given issue.\n//\n// jQuery Versions - tested in 1.4.2+ - reported to work in 1.3.x\n// Browsers Tested - Firefox 3.6.8, Safari 5, Opera 10.6, Chrome 5.0, IE 6, 7, 8\n//\n// About: Release History\n//\n// 2.0.23 - (2016-01-28) Various\n// 2.0.22 - (2015-04-25) Resolve a memory leak due to an event handler that isn't cleaned up in destroy (thanks @timjnh)\n// 2.0.21 - (2015-02-24) Simplify UMD pattern: fixes browserify when loading jQuery outside of bundle\n// 2.0.20 - (2014-10-23) Adds AMD support (thanks @carlosrberto) and support for overflow-x/overflow-y (thanks @darimpulso)\n// 2.0.19 - (2013-11-16) Changes for more reliable scroll amount with latest mousewheel plugin (thanks @brandonaaron)\n// 2.0.18 - (2013-10-23) Fix for issue with gutters and scrollToElement (thanks @Dubiy)\n// 2.0.17 - (2013-08-17) Working correctly when box-sizing is set to border-box (thanks @pieht)\n// 2.0.16 - (2013-07-30) Resetting left position when scroll is removed. Fixes #189\n// 2.0.15 - (2013-07-29) Fixed issue with scrollToElement where the destX and destY are undefined.\n// 2.0.14 - (2013-05-01) Updated to most recent mouse wheel plugin (see #106) and related changes for sensible scroll speed\n// 2.0.13 - (2013-05-01) Switched to semver compatible version name\n// 2.0.0beta12 - (2012-09-27) fix for jQuery 1.8+\n// 2.0.0beta11 - (2012-05-14)\n// 2.0.0beta10 - (2011-04-17) cleaner required size calculation, improved keyboard support, stickToBottom/Left, other small fixes\n// 2.0.0beta9 - (2011-01-31) new API methods, bug fixes and correct keyboard support for FF/OSX\n// 2.0.0beta8 - (2011-01-29) touchscreen support, improved keyboard support\n// 2.0.0beta7 - (2011-01-23) scroll speed consistent (thanks Aivo Paas)\n// 2.0.0beta6 - (2010-12-07) scrollToElement horizontal support\n// 2.0.0beta5 - (2010-10-18) jQuery 1.4.3 support, various bug fixes\n// 2.0.0beta4 - (2010-09-17) clickOnTrack support, bug fixes\n// 2.0.0beta3 - (2010-08-27) Horizontal mousewheel, mwheelIntent, keyboard support, bug fixes\n// 2.0.0beta2 - (2010-08-21) Bug fixes\n// 2.0.0beta1 - (2010-08-17) Rewrite to follow modern best practices and enable horizontal scrolling, initially hidden\n// elements and dynamically sized elements.\n// 1.x - (2006-12-31 - 2010-07-31) Initial version, hosted at googlecode, deprecated\n\n(function (factory) {\n if ( typeof define === 'function' && define.amd ) {\n // AMD. Register as an anonymous module.\n define(['jquery'], factory);\n } else if (typeof exports === 'object') {\n // Node/CommonJS style for Browserify\n module.exports = factory(require('jquery'));\n } else {\n // Browser globals\n factory(jQuery);\n }\n}(function($){\n\n $.fn.jScrollPane = function(settings)\n {\n // JScrollPane \"class\" - public methods are available through $('selector').data('jsp')\n function JScrollPane(elem, s)\n {\n var settings, jsp = this, pane, paneWidth, paneHeight, container, contentWidth, contentHeight,\n percentInViewH, percentInViewV, isScrollableV, isScrollableH, verticalDrag, dragMaxY,\n verticalDragPosition, horizontalDrag, dragMaxX, horizontalDragPosition,\n verticalBar, verticalTrack, scrollbarWidth, verticalTrackHeight, verticalDragHeight, arrowUp, arrowDown,\n horizontalBar, horizontalTrack, horizontalTrackWidth, horizontalDragWidth, arrowLeft, arrowRight,\n reinitialiseInterval, originalPadding, originalPaddingTotalWidth, previousContentWidth,\n wasAtTop = true, wasAtLeft = true, wasAtBottom = false, wasAtRight = false,\n originalElement = elem.clone(false, false).empty(),\n mwEvent = $.fn.mwheelIntent ? 'mwheelIntent.jsp' : 'mousewheel.jsp';\n\n if (elem.css('box-sizing') === 'border-box') {\n originalPadding = 0;\n originalPaddingTotalWidth = 0;\n } else {\n originalPadding = elem.css('paddingTop') + ' ' +\n elem.css('paddingRight') + ' ' +\n elem.css('paddingBottom') + ' ' +\n elem.css('paddingLeft');\n originalPaddingTotalWidth = (parseInt(elem.css('paddingLeft'), 10) || 0) +\n (parseInt(elem.css('paddingRight'), 10) || 0);\n }\n\n function initialise(s)\n {\n\n var /*firstChild, lastChild, */isMaintainingPositon, lastContentX, lastContentY,\n hasContainingSpaceChanged, originalScrollTop, originalScrollLeft,\n maintainAtBottom = false, maintainAtRight = false;\n\n settings = s;\n\n if (pane === undefined) {\n originalScrollTop = elem.scrollTop();\n originalScrollLeft = elem.scrollLeft();\n\n elem.css(\n {\n overflow: 'hidden',\n padding: 0\n }\n );\n // TODO: Deal with where width/ height is 0 as it probably means the element is hidden and we should\n // come back to it later and check once it is unhidden...\n paneWidth = elem.innerWidth() + originalPaddingTotalWidth;\n paneHeight = elem.innerHeight();\n\n elem.width(paneWidth);\n\n pane = $('<div class=\"jspPane\" />').css('padding', originalPadding).append(elem.children());\n container = $('<div class=\"jspContainer\" />')\n .css({\n 'width': paneWidth + 'px',\n 'height': paneHeight + 'px'\n }\n ).append(pane).appendTo(elem);\n\n /*\n // Move any margins from the first and last children up to the container so they can still\n // collapse with neighbouring elements as they would before jScrollPane\n firstChild = pane.find(':first-child');\n lastChild = pane.find(':last-child');\n elem.css(\n {\n 'margin-top': firstChild.css('margin-top'),\n 'margin-bottom': lastChild.css('margin-bottom')\n }\n );\n firstChild.css('margin-top', 0);\n lastChild.css('margin-bottom', 0);\n */\n } else {\n elem.css('width', '');\n\n maintainAtBottom = settings.stickToBottom && isCloseToBottom();\n maintainAtRight = settings.stickToRight && isCloseToRight();\n\n hasContainingSpaceChanged = elem.innerWidth() + originalPaddingTotalWidth != paneWidth || elem.outerHeight() != paneHeight;\n\n if (hasContainingSpaceChanged) {\n paneWidth = elem.innerWidth() + originalPaddingTotalWidth;\n paneHeight = elem.innerHeight();\n container.css({\n width: paneWidth + 'px',\n height: paneHeight + 'px'\n });\n }\n\n // If nothing changed since last check...\n if (!hasContainingSpaceChanged && previousContentWidth == contentWidth && pane.outerHeight() == contentHeight) {\n elem.width(paneWidth);\n return;\n }\n previousContentWidth = contentWidth;\n\n pane.css('width', '');\n elem.width(paneWidth);\n\n container.find('>.jspVerticalBar,>.jspHorizontalBar').remove().end();\n }\n\n pane.css('overflow', 'auto');\n if (s.contentWidth) {\n contentWidth = s.contentWidth;\n } else {\n contentWidth = pane[0].scrollWidth;\n }\n contentHeight = pane[0].scrollHeight;\n pane.css('overflow', '');\n\n percentInViewH = contentWidth / paneWidth;\n percentInViewV = contentHeight / paneHeight;\n isScrollableV = percentInViewV > 1;\n\n isScrollableH = percentInViewH > 1;\n\n //console.log(paneWidth, paneHeight, contentWidth, contentHeight, percentInViewH, percentInViewV, isScrollableH, isScrollableV);\n\n if (!(isScrollableH || isScrollableV)) {\n elem.removeClass('jspScrollable');\n pane.css({\n top: 0,\n left: 0,\n width: container.width() - originalPaddingTotalWidth\n });\n removeMousewheel();\n removeFocusHandler();\n removeKeyboardNav();\n removeClickOnTrack();\n } else {\n elem.addClass('jspScrollable');\n\n isMaintainingPositon = settings.maintainPosition && (verticalDragPosition || horizontalDragPosition);\n if (isMaintainingPositon) {\n lastContentX = contentPositionX();\n lastContentY = contentPositionY();\n }\n\n initialiseVerticalScroll();\n initialiseHorizontalScroll();\n resizeScrollbars();\n\n if (isMaintainingPositon) {\n scrollToX(maintainAtRight ? (contentWidth - paneWidth ) : lastContentX, false);\n scrollToY(maintainAtBottom ? (contentHeight - paneHeight) : lastContentY, false);\n }\n\n initFocusHandler();\n initMousewheel();\n initTouch();\n\n if (settings.enableKeyboardNavigation) {\n initKeyboardNav();\n }\n if (settings.clickOnTrack) {\n initClickOnTrack();\n }\n\n observeHash();\n if (settings.hijackInternalLinks) {\n hijackInternalLinks();\n }\n }\n\n if (settings.autoReinitialise && !reinitialiseInterval) {\n reinitialiseInterval = setInterval(\n function()\n {\n initialise(settings);\n },\n settings.autoReinitialiseDelay\n );\n } else if (!settings.autoReinitialise && reinitialiseInterval) {\n clearInterval(reinitialiseInterval);\n }\n\n originalScrollTop && elem.scrollTop(0) && scrollToY(originalScrollTop, false);\n originalScrollLeft && elem.scrollLeft(0) && scrollToX(originalScrollLeft, false);\n\n elem.trigger('jsp-initialised', [isScrollableH || isScrollableV]);\n }\n\n function initialiseVerticalScroll()\n {\n if (isScrollableV) {\n\n container.append(\n $('<div class=\"jspVerticalBar\" />').append(\n $('<div class=\"jspCap jspCapTop\" />'),\n $('<div class=\"jspTrack\" />').append(\n $('<div class=\"jspDrag\" />').append(\n $('<div class=\"jspDragTop\" />'),\n $('<div class=\"jspDragBottom\" />')\n )\n ),\n $('<div class=\"jspCap jspCapBottom\" />')\n )\n );\n\n verticalBar = container.find('>.jspVerticalBar');\n verticalTrack = verticalBar.find('>.jspTrack');\n verticalDrag = verticalTrack.find('>.jspDrag');\n\n if (settings.showArrows) {\n arrowUp = $('<a class=\"jspArrow jspArrowUp\" />').bind(\n 'mousedown.jsp', getArrowScroll(0, -1)\n ).bind('click.jsp', nil);\n arrowDown = $('<a class=\"jspArrow jspArrowDown\" />').bind(\n 'mousedown.jsp', getArrowScroll(0, 1)\n ).bind('click.jsp', nil);\n if (settings.arrowScrollOnHover) {\n arrowUp.bind('mouseover.jsp', getArrowScroll(0, -1, arrowUp));\n arrowDown.bind('mouseover.jsp', getArrowScroll(0, 1, arrowDown));\n }\n\n appendArrows(verticalTrack, settings.verticalArrowPositions, arrowUp, arrowDown);\n }\n\n verticalTrackHeight = paneHeight;\n container.find('>.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow').each(\n function()\n {\n verticalTrackHeight -= $(this).outerHeight();\n }\n );\n\n\n verticalDrag.hover(\n function()\n {\n verticalDrag.addClass('jspHover');\n },\n function()\n {\n verticalDrag.removeClass('jspHover');\n }\n ).bind(\n 'mousedown.jsp',\n function(e)\n {\n // Stop IE from allowing text selection\n $('html').bind('dragstart.jsp selectstart.jsp', nil);\n\n verticalDrag.addClass('jspActive');\n\n var startY = e.pageY - verticalDrag.position().top;\n\n $('html').bind(\n 'mousemove.jsp',\n function(e)\n {\n positionDragY(e.pageY - startY, false);\n }\n ).bind('mouseup.jsp mouseleave.jsp', cancelDrag);\n return false;\n }\n );\n sizeVerticalScrollbar();\n }\n }\n\n function sizeVerticalScrollbar()\n {\n verticalTrack.height(verticalTrackHeight + 'px');\n verticalDragPosition = 0;\n scrollbarWidth = settings.verticalGutter + verticalTrack.outerWidth();\n\n // Make the pane thinner to allow for the vertical scrollbar\n pane.width(paneWidth - scrollbarWidth - originalPaddingTotalWidth);\n\n // Add margin to the left of the pane if scrollbars are on that side (to position\n // the scrollbar on the left or right set it's left or right property in CSS)\n try {\n if (verticalBar.position().left === 0) {\n pane.css('margin-left', scrollbarWidth + 'px');\n }\n } catch (err) {\n }\n }\n\n function initialiseHorizontalScroll()\n {\n if (isScrollableH) {\n\n container.append(\n $('<div class=\"jspHorizontalBar\" />').append(\n $('<div class=\"jspCap jspCapLeft\" />'),\n $('<div class=\"jspTrack\" />').append(\n $('<div class=\"jspDrag\" />').append(\n $('<div class=\"jspDragLeft\" />'),\n $('<div class=\"jspDragRight\" />')\n )\n ),\n $('<div class=\"jspCap jspCapRight\" />')\n )\n );\n\n horizontalBar = container.find('>.jspHorizontalBar');\n horizontalTrack = horizontalBar.find('>.jspTrack');\n horizontalDrag = horizontalTrack.find('>.jspDrag');\n\n if (settings.showArrows) {\n arrowLeft = $('<a class=\"jspArrow jspArrowLeft\" />').bind(\n 'mousedown.jsp', getArrowScroll(-1, 0)\n ).bind('click.jsp', nil);\n arrowRight = $('<a class=\"jspArrow jspArrowRight\" />').bind(\n 'mousedown.jsp', getArrowScroll(1, 0)\n ).bind('click.jsp', nil);\n if (settings.arrowScrollOnHover) {\n arrowLeft.bind('mouseover.jsp', getArrowScroll(-1, 0, arrowLeft));\n arrowRight.bind('mouseover.jsp', getArrowScroll(1, 0, arrowRight));\n }\n appendArrows(horizontalTrack, settings.horizontalArrowPositions, arrowLeft, arrowRight);\n }\n\n horizontalDrag.hover(\n function()\n {\n horizontalDrag.addClass('jspHover');\n },\n function()\n {\n horizontalDrag.removeClass('jspHover');\n }\n ).bind(\n 'mousedown.jsp',\n function(e)\n {\n // Stop IE from allowing text selection\n $('html').bind('dragstart.jsp selectstart.jsp', nil);\n\n horizontalDrag.addClass('jspActive');\n\n var startX = e.pageX - horizontalDrag.position().left;\n\n $('html').bind(\n 'mousemove.jsp',\n function(e)\n {\n positionDragX(e.pageX - startX, false);\n }\n ).bind('mouseup.jsp mouseleave.jsp', cancelDrag);\n return false;\n }\n );\n horizontalTrackWidth = container.innerWidth();\n sizeHorizontalScrollbar();\n }\n }\n\n function sizeHorizontalScrollbar()\n {\n container.find('>.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow').each(\n function()\n {\n horizontalTrackWidth -= $(this).outerWidth();\n }\n );\n\n horizontalTrack.width(horizontalTrackWidth + 'px');\n horizontalDragPosition = 0;\n }\n\n function resizeScrollbars()\n {\n if (isScrollableH && isScrollableV) {\n var horizontalTrackHeight = horizontalTrack.outerHeight(),\n verticalTrackWidth = verticalTrack.outerWidth();\n verticalTrackHeight -= horizontalTrackHeight;\n $(horizontalBar).find('>.jspCap:visible,>.jspArrow').each(\n function()\n {\n horizontalTrackWidth += $(this).outerWidth();\n }\n );\n horizontalTrackWidth -= verticalTrackWidth;\n paneHeight -= verticalTrackWidth;\n paneWidth -= horizontalTrackHeight;\n horizontalTrack.parent().append(\n $('<div class=\"jspCorner\" />').css('width', horizontalTrackHeight + 'px')\n );\n sizeVerticalScrollbar();\n sizeHorizontalScrollbar();\n }\n // reflow content\n if (isScrollableH) {\n pane.width((container.outerWidth() - originalPaddingTotalWidth) + 'px');\n }\n contentHeight = pane.outerHeight();\n percentInViewV = contentHeight / paneHeight;\n\n if (isScrollableH) {\n horizontalDragWidth = Math.ceil(1 / percentInViewH * horizontalTrackWidth);\n if (horizontalDragWidth > settings.horizontalDragMaxWidth) {\n horizontalDragWidth = settings.horizontalDragMaxWidth;\n } else if (horizontalDragWidth < settings.horizontalDragMinWidth) {\n horizontalDragWidth = settings.horizontalDragMinWidth;\n }\n horizontalDrag.width(horizontalDragWidth + 'px');\n dragMaxX = horizontalTrackWidth - horizontalDragWidth;\n _positionDragX(horizontalDragPosition); // To update the state for the arrow buttons\n }\n if (isScrollableV) {\n verticalDragHeight = Math.ceil(1 / percentInViewV * verticalTrackHeight);\n if (verticalDragHeight > settings.verticalDragMaxHeight) {\n verticalDragHeight = settings.verticalDragMaxHeight;\n } else if (verticalDragHeight < settings.verticalDragMinHeight) {\n verticalDragHeight = settings.verticalDragMinHeight;\n }\n verticalDrag.height(verticalDragHeight + 'px');\n dragMaxY = verticalTrackHeight - verticalDragHeight;\n _positionDragY(verticalDragPosition); // To update the state for the arrow buttons\n }\n }\n\n function appendArrows(ele, p, a1, a2)\n {\n var p1 = \"before\", p2 = \"after\", aTemp;\n\n // Sniff for mac... Is there a better way to determine whether the arrows would naturally appear\n // at the top or the bottom of the bar?\n if (p == \"os\") {\n p = /Mac/.test(navigator.platform) ? \"after\" : \"split\";\n }\n if (p == p1) {\n p2 = p;\n } else if (p == p2) {\n p1 = p;\n aTemp = a1;\n a1 = a2;\n a2 = aTemp;\n }\n\n ele[p1](a1)[p2](a2);\n }\n\n function getArrowScroll(dirX, dirY, ele)\n {\n return function()\n {\n arrowScroll(dirX, dirY, this, ele);\n this.blur();\n return false;\n };\n }\n\n function arrowScroll(dirX, dirY, arrow, ele)\n {\n arrow = $(arrow).addClass('jspActive');\n\n var eve,\n scrollTimeout,\n isFirst = true,\n doScroll = function()\n {\n if (dirX !== 0) {\n jsp.scrollByX(dirX * settings.arrowButtonSpeed);\n }\n if (dirY !== 0) {\n jsp.scrollByY(dirY * settings.arrowButtonSpeed);\n }\n scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.arrowRepeatFreq);\n isFirst = false;\n };\n\n doScroll();\n\n eve = ele ? 'mouseout.jsp' : 'mouseup.jsp';\n ele = ele || $('html');\n ele.bind(\n eve,\n function()\n {\n arrow.removeClass('jspActive');\n scrollTimeout && clearTimeout(scrollTimeout);\n scrollTimeout = null;\n ele.unbind(eve);\n }\n );\n }\n\n function initClickOnTrack()\n {\n removeClickOnTrack();\n if (isScrollableV) {\n verticalTrack.bind(\n 'mousedown.jsp',\n function(e)\n {\n if (e.originalTarget === undefined || e.originalTarget == e.currentTarget) {\n var clickedTrack = $(this),\n offset = clickedTrack.offset(),\n direction = e.pageY - offset.top - verticalDragPosition,\n scrollTimeout,\n isFirst = true,\n doScroll = function()\n {\n var offset = clickedTrack.offset(),\n pos = e.pageY - offset.top - verticalDragHeight / 2,\n contentDragY = paneHeight * settings.scrollPagePercent,\n dragY = dragMaxY * contentDragY / (contentHeight - paneHeight);\n if (direction < 0) {\n if (verticalDragPosition - dragY > pos) {\n jsp.scrollByY(-contentDragY);\n } else {\n positionDragY(pos);\n }\n } else if (direction > 0) {\n if (verticalDragPosition + dragY < pos) {\n jsp.scrollByY(contentDragY);\n } else {\n positionDragY(pos);\n }\n } else {\n cancelClick();\n return;\n }\n scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.trackClickRepeatFreq);\n isFirst = false;\n },\n cancelClick = function()\n {\n scrollTimeout && clearTimeout(scrollTimeout);\n scrollTimeout = null;\n $(document).unbind('mouseup.jsp', cancelClick);\n };\n doScroll();\n $(document).bind('mouseup.jsp', cancelClick);\n return false;\n }\n }\n );\n }\n\n if (isScrollableH) {\n horizontalTrack.bind(\n 'mousedown.jsp',\n function(e)\n {\n if (e.originalTarget === undefined || e.originalTarget == e.currentTarget) {\n var clickedTrack = $(this),\n offset = clickedTrack.offset(),\n direction = e.pageX - offset.left - horizontalDragPosition,\n scrollTimeout,\n isFirst = true,\n doScroll = function()\n {\n var offset = clickedTrack.offset(),\n pos = e.pageX - offset.left - horizontalDragWidth / 2,\n contentDragX = paneWidth * settings.scrollPagePercent,\n dragX = dragMaxX * contentDragX / (contentWidth - paneWidth);\n if (direction < 0) {\n if (horizontalDragPosition - dragX > pos) {\n jsp.scrollByX(-contentDragX);\n } else {\n positionDragX(pos);\n }\n } else if (direction > 0) {\n if (horizontalDragPosition + dragX < pos) {\n jsp.scrollByX(contentDragX);\n } else {\n positionDragX(pos);\n }\n } else {\n cancelClick();\n return;\n }\n scrollTimeout = setTimeout(doScroll, isFirst ? settings.initialDelay : settings.trackClickRepeatFreq);\n isFirst = false;\n },\n cancelClick = function()\n {\n scrollTimeout && clearTimeout(scrollTimeout);\n scrollTimeout = null;\n $(document).unbind('mouseup.jsp', cancelClick);\n };\n doScroll();\n $(document).bind('mouseup.jsp', cancelClick);\n return false;\n }\n }\n );\n }\n }\n\n function removeClickOnTrack()\n {\n if (horizontalTrack) {\n horizontalTrack.unbind('mousedown.jsp');\n }\n if (verticalTrack) {\n verticalTrack.unbind('mousedown.jsp');\n }\n }\n\n function cancelDrag()\n {\n $('html').unbind('dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp');\n\n if (verticalDrag) {\n verticalDrag.removeClass('jspActive');\n }\n if (horizontalDrag) {\n horizontalDrag.removeClass('jspActive');\n }\n }\n\n function positionDragY(destY, animate)\n {\n if (!isScrollableV) {\n return;\n }\n if (destY < 0) {\n destY = 0;\n } else if (destY > dragMaxY) {\n destY = dragMaxY;\n }\n\n // allow for devs to prevent the JSP from being scrolled\n var willScrollYEvent = new $.Event(\"jsp-will-scroll-y\");\n elem.trigger(willScrollYEvent, [destY]);\n\n if (willScrollYEvent.isDefaultPrevented()) {\n return;\n }\n\n var tmpVerticalDragPosition = destY || 0;\n\n var isAtTop = tmpVerticalDragPosition === 0,\n isAtBottom = tmpVerticalDragPosition == dragMaxY,\n percentScrolled = destY/ dragMaxY,\n destTop = -percentScrolled * (contentHeight - paneHeight);\n\n // can't just check if(animate) because false is a valid value that could be passed in...\n if (animate === undefined) {\n animate = settings.animateScroll;\n }\n if (animate) {\n jsp.animate(verticalDrag, 'top', destY, _positionDragY, function() {\n elem.trigger('jsp-user-scroll-y', [-destTop, isAtTop, isAtBottom]);\n });\n } else {\n verticalDrag.css('top', destY);\n _positionDragY(destY);\n elem.trigger('jsp-user-scroll-y', [-destTop, isAtTop, isAtBottom]);\n }\n\n }\n\n function _positionDragY(destY)\n {\n if (destY === undefined) {\n destY = verticalDrag.position().top;\n }\n\n container.scrollTop(0);\n verticalDragPosition = destY || 0;\n\n var isAtTop = verticalDragPosition === 0,\n isAtBottom = verticalDragPosition == dragMaxY,\n percentScrolled = destY/ dragMaxY,\n destTop = -percentScrolled * (contentHeight - paneHeight);\n\n if (wasAtTop != isAtTop || wasAtBottom != isAtBottom) {\n wasAtTop = isAtTop;\n wasAtBottom = isAtBottom;\n elem.trigger('jsp-arrow-change', [wasAtTop, wasAtBottom, wasAtLeft, wasAtRight]);\n }\n\n updateVerticalArrows(isAtTop, isAtBottom);\n pane.css('top', destTop);\n elem.trigger('jsp-scroll-y', [-destTop, isAtTop, isAtBottom]).trigger('scroll');\n }\n\n function positionDragX(destX, animate)\n {\n if (!isScrollableH) {\n return;\n }\n if (destX < 0) {\n destX = 0;\n } else if (destX > dragMaxX) {\n destX = dragMaxX;\n }\n\n\n // allow for devs to prevent the JSP from being scrolled\n var willScrollXEvent = new $.Event(\"jsp-will-scroll-x\");\n elem.trigger(willScrollXEvent, [destX]);\n\n if (willScrollXEvent.isDefaultPrevented()) {\n return;\n }\n\n var tmpHorizontalDragPosition = destX ||0;\n\n var isAtLeft = tmpHorizontalDragPosition === 0,\n isAtRight = tmpHorizontalDragPosition == dragMaxX,\n percentScrolled = destX / dragMaxX,\n destLeft = -percentScrolled * (contentWidth - paneWidth);\n\n if (animate === undefined) {\n animate = settings.animateScroll;\n }\n if (animate) {\n jsp.animate(horizontalDrag, 'left', destX, _positionDragX, function() {\n elem.trigger('jsp-user-scroll-x', [-destLeft, isAtLeft, isAtRight]);\n });\n } else {\n horizontalDrag.css('left', destX);\n _positionDragX(destX);\n elem.trigger('jsp-user-scroll-x', [-destLeft, isAtLeft, isAtRight]);\n }\n }\n\n function _positionDragX(destX)\n {\n if (destX === undefined) {\n destX = horizontalDrag.position().left;\n }\n\n container.scrollTop(0);\n horizontalDragPosition = destX ||0;\n\n var isAtLeft = horizontalDragPosition === 0,\n isAtRight = horizontalDragPosition == dragMaxX,\n percentScrolled = destX / dragMaxX,\n destLeft = -percentScrolled * (contentWidth - paneWidth);\n\n if (wasAtLeft != isAtLeft || wasAtRight != isAtRight) {\n wasAtLeft = isAtLeft;\n wasAtRight = isAtRight;\n elem.trigger('jsp-arrow-change', [wasAtTop, wasAtBottom, wasAtLeft, wasAtRight]);\n }\n\n updateHorizontalArrows(isAtLeft, isAtRight);\n pane.css('left', destLeft);\n elem.trigger('jsp-scroll-x', [-destLeft, isAtLeft, isAtRight]).trigger('scroll');\n }\n\n function updateVerticalArrows(isAtTop, isAtBottom)\n {\n if (settings.showArrows) {\n arrowUp[isAtTop ? 'addClass' : 'removeClass']('jspDisabled');\n arrowDown[isAtBottom ? 'addClass' : 'removeClass']('jspDisabled');\n }\n }\n\n function updateHorizontalArrows(isAtLeft, isAtRight)\n {\n if (settings.showArrows) {\n arrowLeft[isAtLeft ? 'addClass' : 'removeClass']('jspDisabled');\n arrowRight[isAtRight ? 'addClass' : 'removeClass']('jspDisabled');\n }\n }\n\n function scrollToY(destY, animate)\n {\n var percentScrolled = destY / (contentHeight - paneHeight);\n positionDragY(percentScrolled * dragMaxY, animate);\n }\n\n function scrollToX(destX, animate)\n {\n var percentScrolled = destX / (contentWidth - paneWidth);\n positionDragX(percentScrolled * dragMaxX, animate);\n }\n\n function scrollToElement(ele, stickToTop, animate)\n {\n var e, eleHeight, eleWidth, eleTop = 0, eleLeft = 0, viewportTop, viewportLeft, maxVisibleEleTop, maxVisibleEleLeft, destY, destX;\n\n // Legal hash values aren't necessarily legal jQuery selectors so we need to catch any\n // errors from the lookup...\n try {\n e = $(ele);\n } catch (err) {\n return;\n }\n eleHeight = e.outerHeight();\n eleWidth= e.outerWidth();\n\n container.scrollTop(0);\n container.scrollLeft(0);\n\n // loop through parents adding the offset top of any elements that are relatively positioned between\n // the focused element and the jspPane so we can get the true distance from the top\n // of the focused element to the top of the scrollpane...\n while (!e.is('.jspPane')) {\n eleTop += e.position().top;\n eleLeft += e.position().left;\n e = e.offsetParent();\n if (/^body|html$/i.test(e[0].nodeName)) {\n // we ended up too high in the document structure. Quit!\n return;\n }\n }\n\n viewportTop = contentPositionY();\n maxVisibleEleTop = viewportTop + paneHeight;\n if (eleTop < viewportTop || stickToTop) { // element is above viewport\n destY = eleTop - settings.horizontalGutter;\n } else if (eleTop + eleHeight > maxVisibleEleTop) { // element is below viewport\n destY = eleTop - paneHeight + eleHeight + settings.horizontalGutter;\n }\n if (!isNaN(destY)) {\n scrollToY(destY, animate);\n }\n\n viewportLeft = contentPositionX();\n maxVisibleEleLeft = viewportLeft + paneWidth;\n if (eleLeft < viewportLeft || stickToTop) { // element is to the left of viewport\n destX = eleLeft - settings.horizontalGutter;\n } else if (eleLeft + eleWidth > maxVisibleEleLeft) { // element is to the right viewport\n destX = eleLeft - paneWidth + eleWidth + settings.horizontalGutter;\n }\n if (!isNaN(destX)) {\n scrollToX(destX, animate);\n }\n\n }\n\n function contentPositionX()\n {\n return -pane.position().left;\n }\n\n function contentPositionY()\n {\n return -pane.position().top;\n }\n\n function isCloseToBottom()\n {\n var scrollableHeight = contentHeight - paneHeight;\n return (scrollableHeight > 20) && (scrollableHeight - contentPositionY() < 10);\n }\n\n function isCloseToRight()\n {\n var scrollableWidth = contentWidth - paneWidth;\n return (scrollableWidth > 20) && (scrollableWidth - contentPositionX() < 10);\n }\n\n function initMousewheel()\n {\n container.unbind(mwEvent).bind(\n mwEvent,\n function (event, delta, deltaX, deltaY) {\n\n if (!horizontalDragPosition) horizontalDragPosition = 0;\n if (!verticalDragPosition) verticalDragPosition = 0;\n\n var dX = horizontalDragPosition, dY = verticalDragPosition, factor = event.deltaFactor || settings.mouseWheelSpeed;\n jsp.scrollBy(deltaX * factor, -deltaY * factor, false);\n // return true if there was no movement so rest of screen can scroll\n return dX == horizontalDragPosition && dY == verticalDragPosition;\n }\n );\n }\n\n function removeMousewheel()\n {\n container.unbind(mwEvent);\n }\n\n function nil()\n {\n return false;\n }\n\n function initFocusHandler()\n {\n pane.find(':input,a').unbind('focus.jsp').bind(\n 'focus.jsp',\n function(e)\n {\n scrollToElement(e.target, false);\n }\n );\n }\n\n function removeFocusHandler()\n {\n pane.find(':input,a').unbind('focus.jsp');\n }\n\n function initKeyboardNav()\n {\n var keyDown, elementHasScrolled, validParents = [];\n isScrollableH && validParents.push(horizontalBar[0]);\n isScrollableV && validParents.push(verticalBar[0]);\n\n // IE also focuses elements that don't have tabindex set.\n pane.bind(\n 'focus.jsp',\n function()\n {\n elem.focus();\n }\n );\n\n elem.attr('tabindex', 0)\n .unbind('keydown.jsp keypress.jsp')\n .bind(\n 'keydown.jsp',\n function(e)\n {\n if (e.target !== this && !(validParents.length && $(e.target).closest(validParents).length)){\n return;\n }\n var dX = horizontalDragPosition, dY = verticalDragPosition;\n switch(e.keyCode) {\n case 40: // down\n case 38: // up\n case 34: // page down\n case 32: // space\n case 33: // page up\n case 39: // right\n case 37: // left\n keyDown = e.keyCode;\n keyDownHandler();\n break;\n case 35: // end\n scrollToY(contentHeight - paneHeight);\n keyDown = null;\n break;\n case 36: // home\n scrollToY(0);\n keyDown = null;\n break;\n }\n\n elementHasScrolled = e.keyCode == keyDown && dX != horizontalDragPosition || dY != verticalDragPosition;\n return !elementHasScrolled;\n }\n ).bind(\n 'keypress.jsp', // For FF/ OSX so that we can cancel the repeat key presses if the JSP scrolls...\n function(e)\n {\n if (e.keyCode == keyDown) {\n keyDownHandler();\n }\n // If the keypress is not related to the area, ignore it. Fixes problem with inputs inside scrolled area. Copied from line 955.\n if (e.target !== this && !(validParents.length && $(e.target).closest(validParents).length)){\n return;\n }\n return !elementHasScrolled;\n }\n );\n\n if (settings.hideFocus) {\n elem.css('outline', 'none');\n if ('hideFocus' in container[0]){\n elem.attr('hideFocus', true);\n }\n } else {\n elem.css('outline', '');\n if ('hideFocus' in container[0]){\n elem.attr('hideFocus', false);\n }\n }\n\n function keyDownHandler()\n {\n var dX = horizontalDragPosition, dY = verticalDragPosition;\n switch(keyDown) {\n case 40: // down\n jsp.scrollByY(settings.keyboardSpeed, false);\n break;\n case 38: // up\n jsp.scrollByY(-settings.keyboardSpeed, false);\n break;\n case 34: // page down\n case 32: // space\n jsp.scrollByY(paneHeight * settings.scrollPagePercent, false);\n break;\n case 33: // page up\n jsp.scrollByY(-paneHeight * settings.scrollPagePercent, false);\n break;\n case 39: // right\n jsp.scrollByX(settings.keyboardSpeed, false);\n break;\n case 37: // left\n jsp.scrollByX(-settings.keyboardSpeed, false);\n break;\n }\n\n elementHasScrolled = dX != horizontalDragPosition || dY != verticalDragPosition;\n return elementHasScrolled;\n }\n }\n\n function removeKeyboardNav()\n {\n elem.attr('tabindex', '-1')\n .removeAttr('tabindex')\n .unbind('keydown.jsp keypress.jsp');\n\n pane.unbind('.jsp');\n }\n\n function observeHash()\n {\n if (location.hash && location.hash.length > 1) {\n var e,\n retryInt,\n hash = escape(location.hash.substr(1)) // hash must be escaped to prevent XSS\n ;\n try {\n e = $('#' + hash + ', a[name=\"' + hash + '\"]');\n } catch (err) {\n return;\n }\n\n if (e.length && pane.find(hash)) {\n // nasty workaround but it appears to take a little while before the hash has done its thing\n // to the rendered page so we just wait until the container's scrollTop has been messed up.\n if (container.scrollTop() === 0) {\n retryInt = setInterval(\n function()\n {\n if (container.scrollTop() > 0) {\n scrollToElement(e, true);\n $(document).scrollTop(container.position().top);\n clearInterval(retryInt);\n }\n },\n 50\n );\n } else {\n scrollToElement(e, true);\n $(document).scrollTop(container.position().top);\n }\n }\n }\n }\n\n function hijackInternalLinks()\n {\n // only register the link handler once\n if ($(document.body).data('jspHijack')) {\n return;\n }\n\n // remember that the handler was bound\n $(document.body).data('jspHijack', true);\n\n // use live handler to also capture newly created links\n $(document.body).delegate('a[href*=\"#\"]', 'click', function(event) {\n // does the link point to the same page?\n // this also takes care of cases with a <base>-Tag or Links not starting with the hash #\n // e.g. <a href=\"index.html#test\"> when the current url already is index.html\n var href = this.href.substr(0, this.href.indexOf('#')),\n locationHref = location.href,\n hash,\n element,\n container,\n jsp,\n scrollTop,\n elementTop;\n if (location.href.indexOf('#') !== -1) {\n locationHref = location.href.substr(0, location.href.indexOf('#'));\n }\n if (href !== locationHref) {\n // the link points to another page\n return;\n }\n\n // check if jScrollPane should handle this click event\n hash = escape(this.href.substr(this.href.indexOf('#') + 1));\n\n // find the element on the page\n element;\n try {\n element = $('#' + hash + ', a[name=\"' + hash + '\"]');\n } catch (e) {\n // hash is not a valid jQuery identifier\n return;\n }\n\n if (!element.length) {\n // this link does not point to an element on this page\n return;\n }\n\n container = element.closest('.jspScrollable');\n jsp = container.data('jsp');\n\n // jsp might be another jsp instance than the one, that bound this event\n // remember: this event is only bound once for all instances.\n jsp.scrollToElement(element, true);\n\n if (container[0].scrollIntoView) {\n // also scroll to the top of the container (if it is not visible)\n scrollTop = $(window).scrollTop();\n elementTop = element.offset().top;\n if (elementTop < scrollTop || elementTop > scrollTop + $(window).height()) {\n container[0].scrollIntoView();\n }\n }\n\n // jsp handled this event, prevent the browser default (scrolling :P)\n event.preventDefault();\n });\n }\n\n // Init touch on iPad, iPhone, iPod, Android\n function initTouch()\n {\n var startX,\n startY,\n touchStartX,\n touchStartY,\n moved,\n moving = false;\n\n container.unbind('touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick').bind(\n 'touchstart.jsp',\n function(e)\n {\n var touch = e.originalEvent.touches[0];\n startX = contentPositionX();\n startY = contentPositionY();\n touchStartX = touch.pageX;\n touchStartY = touch.pageY;\n moved = false;\n moving = true;\n }\n ).bind(\n 'touchmove.jsp',\n function(ev)\n {\n if(!moving) {\n return;\n }\n\n var touchPos = ev.originalEvent.touches[0],\n dX = horizontalDragPosition, dY = verticalDragPosition;\n\n jsp.scrollTo(startX + touchStartX - touchPos.pageX, startY + touchStartY - touchPos.pageY);\n\n moved = moved || Math.abs(touchStartX - touchPos.pageX) > 5 || Math.abs(touchStartY - touchPos.pageY) > 5;\n\n // return true if there was no movement so rest of screen can scroll\n return dX == horizontalDragPosition && dY == verticalDragPosition;\n }\n ).bind(\n 'touchend.jsp',\n function(e)\n {\n moving = false;\n /*if(moved) {\n return false;\n }*/\n }\n ).bind(\n 'click.jsp-touchclick',\n function(e)\n {\n if(moved) {\n moved = false;\n return false;\n }\n }\n );\n }\n\n function destroy(){\n var currentY = contentPositionY(),\n currentX = contentPositionX();\n elem.removeClass('jspScrollable').unbind('.jsp');\n pane.unbind('.jsp');\n elem.replaceWith(originalElement.append(pane.children()));\n originalElement.scrollTop(currentY);\n originalElement.scrollLeft(currentX);\n\n // clear reinitialize timer if active\n if (reinitialiseInterval) {\n clearInterval(reinitialiseInterval);\n }\n }\n\n // Public API\n $.extend(\n jsp,\n {\n // Reinitialises the scroll pane (if it's internal dimensions have changed since the last time it\n // was initialised). The settings object which is passed in will override any settings from the\n // previous time it was initialised - if you don't pass any settings then the ones from the previous\n // initialisation will be used.\n reinitialise: function(s)\n {\n s = $.extend({}, settings, s);\n initialise(s);\n },\n // Scrolls the specified element (a jQuery object, DOM node or jQuery selector string) into view so\n // that it can be seen within the viewport. If stickToTop is true then the element will appear at\n // the top of the viewport, if it is false then the viewport will scroll as little as possible to\n // show the element. You can also specify if you want animation to occur. If you don't provide this\n // argument then the animateScroll value from the settings object is used instead.\n scrollToElement: function(ele, stickToTop, animate)\n {\n scrollToElement(ele, stickToTop, animate);\n },\n // Scrolls the pane so that the specified co-ordinates within the content are at the top left\n // of the viewport. animate is optional and if not passed then the value of animateScroll from\n // the settings object this jScrollPane was initialised with is used.\n scrollTo: function(destX, destY, animate)\n {\n scrollToX(destX, animate);\n scrollToY(destY, animate);\n },\n // Scrolls the pane so that the specified co-ordinate within the content is at the left of the\n // viewport. animate is optional and if not passed then the value of animateScroll from the settings\n // object this jScrollPane was initialised with is used.\n scrollToX: function(destX, animate)\n {\n scrollToX(destX, animate);\n },\n // Scrolls the pane so that the specified co-ordinate within the content is at the top of the\n // viewport. animate is optional and if not passed then the value of animateScroll from the settings\n // object this jScrollPane was initialised with is used.\n scrollToY: function(destY, animate)\n {\n scrollToY(destY, animate);\n },\n // Scrolls the pane to the specified percentage of its maximum horizontal scroll position. animate\n // is optional and if not passed then the value of animateScroll from the settings object this\n // jScrollPane was initialised with is used.\n scrollToPercentX: function(destPercentX, animate)\n {\n scrollToX(destPercentX * (contentWidth - paneWidth), animate);\n },\n // Scrolls the pane to the specified percentage of its maximum vertical scroll position. animate\n // is optional and if not passed then the value of animateScroll from the settings object this\n // jScrollPane was initialised with is used.\n scrollToPercentY: function(destPercentY, animate)\n {\n scrollToY(destPercentY * (contentHeight - paneHeight), animate);\n },\n // Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then\n // the value of animateScroll from the settings object this jScrollPane was initialised with is used.\n scrollBy: function(deltaX, deltaY, animate)\n {\n jsp.scrollByX(deltaX, animate);\n jsp.scrollByY(deltaY, animate);\n },\n // Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then\n // the value of animateScroll from the settings object this jScrollPane was initialised with is used.\n scrollByX: function(deltaX, animate)\n {\n var destX = contentPositionX() + Math[deltaX<0 ? 'floor' : 'ceil'](deltaX),\n percentScrolled = destX / (contentWidth - paneWidth);\n positionDragX(percentScrolled * dragMaxX, animate);\n },\n // Scrolls the pane by the specified amount of pixels. animate is optional and if not passed then\n // the value of animateScroll from the settings object this jScrollPane was initialised with is used.\n scrollByY: function(deltaY, animate)\n {\n var destY = contentPositionY() + Math[deltaY<0 ? 'floor' : 'ceil'](deltaY),\n percentScrolled = destY / (contentHeight - paneHeight);\n positionDragY(percentScrolled * dragMaxY, animate);\n },\n // Positions the horizontal drag at the specified x position (and updates the viewport to reflect\n // this). animate is optional and if not passed then the value of animateScroll from the settings\n // object this jScrollPane was initialised with is used.\n positionDragX: function(x, animate)\n {\n positionDragX(x, animate);\n },\n // Positions the vertical drag at the specified y position (and updates the viewport to reflect\n // this). animate is optional and if not passed then the value of animateScroll from the settings\n // object this jScrollPane was initialised with is used.\n positionDragY: function(y, animate)\n {\n positionDragY(y, animate);\n },\n // This method is called when jScrollPane is trying to animate to a new position. You can override\n // it if you want to provide advanced animation functionality. It is passed the following arguments:\n // * ele - the element whose position is being animated\n // * prop - the property that is being animated\n // * value - the value it's being animated to\n // * stepCallback - a function that you must execute each time you update the value of the property\n // * completeCallback - a function that will be executed after the animation had finished\n // You can use the default implementation (below) as a starting point for your own implementation.\n animate: function(ele, prop, value, stepCallback, completeCallback)\n {\n var params = {};\n params[prop] = value;\n ele.animate(\n params,\n {\n 'duration' : settings.animateDuration,\n 'easing' : settings.animateEase,\n 'queue' : false,\n 'step' : stepCallback,\n 'complete' : completeCallback\n }\n );\n },\n // Returns the current x position of the viewport with regards to the content pane.\n getContentPositionX: function()\n {\n return contentPositionX();\n },\n // Returns the current y position of the viewport with regards to the content pane.\n getContentPositionY: function()\n {\n return contentPositionY();\n },\n // Returns the width of the content within the scroll pane.\n getContentWidth: function()\n {\n return contentWidth;\n },\n // Returns the height of the content within the scroll pane.\n getContentHeight: function()\n {\n return contentHeight;\n },\n // Returns the horizontal position of the viewport within the pane content.\n getPercentScrolledX: function()\n {\n return contentPositionX() / (contentWidth - paneWidth);\n },\n // Returns the vertical position of the viewport within the pane content.\n getPercentScrolledY: function()\n {\n return contentPositionY() / (contentHeight - paneHeight);\n },\n // Returns whether or not this scrollpane has a horizontal scrollbar.\n getIsScrollableH: function()\n {\n return isScrollableH;\n },\n // Returns whether or not this scrollpane has a vertical scrollbar.\n getIsScrollableV: function()\n {\n return isScrollableV;\n },\n // Gets a reference to the content pane. It is important that you use this method if you want to\n // edit the content of your jScrollPane as if you access the element directly then you may have some\n // problems (as your original element has had additional elements for the scrollbars etc added into\n // it).\n getContentPane: function()\n {\n return pane;\n },\n // Scrolls this jScrollPane down as far as it can currently scroll. If animate isn't passed then the\n // animateScroll value from settings is used instead.\n scrollToBottom: function(animate)\n {\n positionDragY(dragMaxY, animate);\n },\n // Hijacks the links on the page which link to content inside the scrollpane. If you have changed\n // the content of your page (e.g. via AJAX) and want to make sure any new anchor links to the\n // contents of your scroll pane will work then call this function.\n hijackInternalLinks: $.noop,\n // Removes the jScrollPane and returns the page to the state it was in before jScrollPane was\n // initialised.\n destroy: function()\n {\n destroy();\n }\n }\n );\n\n initialise(s);\n }\n\n // Pluginifying code...\n settings = $.extend({}, $.fn.jScrollPane.defaults, settings);\n\n // Apply default speed\n $.each(['arrowButtonSpeed', 'trackClickSpeed', 'keyboardSpeed'], function() {\n settings[this] = settings[this] || settings.speed;\n });\n\n return this.each(\n function()\n {\n var elem = $(this), jspApi = elem.data('jsp');\n if (jspApi) {\n jspApi.reinitialise(settings);\n } else {\n $(\"script\",elem).filter('[type=\"text/javascript\"],:not([type])').remove();\n jspApi = new JScrollPane(elem, settings);\n elem.data('jsp', jspApi);\n }\n }\n );\n };\n\n $.fn.jScrollPane.defaults = {\n showArrows : false,\n maintainPosition : true,\n stickToBottom : false,\n stickToRight : false,\n clickOnTrack : true,\n autoReinitialise : false,\n autoReinitialiseDelay : 500,\n verticalDragMinHeight : 0,\n verticalDragMaxHeight : 99999,\n horizontalDragMinWidth : 0,\n horizontalDragMaxWidth : 99999,\n contentWidth : undefined,\n animateScroll : false,\n animateDuration : 300,\n animateEase : 'linear',\n hijackInternalLinks : false,\n verticalGutter : 4,\n horizontalGutter : 4,\n mouseWheelSpeed : 3,\n arrowButtonSpeed : 0,\n arrowRepeatFreq : 50,\n arrowScrollOnHover : false,\n trackClickSpeed : 0,\n trackClickRepeatFreq : 70,\n verticalArrowPositions : 'split',\n horizontalArrowPositions : 'split',\n enableKeyboardNavigation : true,\n hideFocus : false,\n keyboardSpeed : 0,\n initialDelay : 300, // Delay before starting repeating\n speed : 30, // Default speed when others falsey\n scrollPagePercent : .8 // Percent of visible area scrolled when pageUp/Down or track area pressed\n };\n\n}));\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Map/locator/jquery.jscrollpane.js","/* eslint-disable */\n/**\n * @name MarkerClustererPlus for Google Maps V3\n * @version 2.1.1 [November 4, 2013]\n * @author Gary Little\n * @fileoverview\n * The library creates and manages per-zoom-level clusters for large amounts of markers.\n * <p>\n * This is an enhanced V3 implementation of the\n * <a href=\"http://gmaps-utility-library-dev.googlecode.com/svn/tags/markerclusterer/\"\n * >V2 MarkerClusterer</a> by Xiaoxi Wu. It is based on the\n * <a href=\"http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclusterer/\"\n * >V3 MarkerClusterer</a> port by Luke Mahe. MarkerClustererPlus was created by Gary Little.\n * <p>\n * v2.0 release: MarkerClustererPlus v2.0 is backward compatible with MarkerClusterer v1.0. It\n * adds support for the <code>ignoreHidden</code>, <code>title</code>, <code>batchSizeIE</code>,\n * and <code>calculator</code> properties as well as support for four more events. It also allows\n * greater control over the styling of the text that appears on the cluster marker. The\n * documentation has been significantly improved and the overall code has been simplified and\n * polished. Very large numbers of markers can now be managed without causing Javascript timeout\n * errors on Internet Explorer. Note that the name of the <code>clusterclick</code> event has been\n * deprecated. The new name is <code>click</code>, so please change your application code now.\n */\n\n/**\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * @name ClusterIconStyle\n * @class This class represents the object for values in the <code>styles</code> array passed\n * to the {@link MarkerClusterer} constructor. The element in this array that is used to\n * style the cluster icon is determined by calling the <code>calculator</code> function.\n *\n * @property {string} url The URL of the cluster icon image file. Required.\n * @property {number} height The display height (in pixels) of the cluster icon. Required.\n * @property {number} width The display width (in pixels) of the cluster icon. Required.\n * @property {Array} [anchorText] The position (in pixels) from the center of the cluster icon to\n * where the text label is to be centered and drawn. The format is <code>[yoffset, xoffset]</code>\n * where <code>yoffset</code> increases as you go down from center and <code>xoffset</code>\n * increases to the right of center. The default is <code>[0, 0]</code>.\n * @property {Array} [anchorIcon] The anchor position (in pixels) of the cluster icon. This is the\n * spot on the cluster icon that is to be aligned with the cluster position. The format is\n * <code>[yoffset, xoffset]</code> where <code>yoffset</code> increases as you go down and\n * <code>xoffset</code> increases to the right of the top-left corner of the icon. The default\n * anchor position is the center of the cluster icon.\n * @property {string} [textColor=\"black\"] The color of the label text shown on the\n * cluster icon.\n * @property {number} [textSize=11] The size (in pixels) of the label text shown on the\n * cluster icon.\n * @property {string} [textDecoration=\"none\"] The value of the CSS <code>text-decoration</code>\n * property for the label text shown on the cluster icon.\n * @property {string} [fontWeight=\"bold\"] The value of the CSS <code>font-weight</code>\n * property for the label text shown on the cluster icon.\n * @property {string} [fontStyle=\"normal\"] The value of the CSS <code>font-style</code>\n * property for the label text shown on the cluster icon.\n * @property {string} [fontFamily=\"Arial,sans-serif\"] The value of the CSS <code>font-family</code>\n * property for the label text shown on the cluster icon.\n * @property {string} [backgroundPosition=\"0 0\"] The position of the cluster icon image\n * within the image defined by <code>url</code>. The format is <code>\"xpos ypos\"</code>\n * (the same format as for the CSS <code>background-position</code> property). You must set\n * this property appropriately when the image defined by <code>url</code> represents a sprite\n * containing multiple images. Note that the position <i>must</i> be specified in px units.\n */\n/**\n * @name ClusterIconInfo\n * @class This class is an object containing general information about a cluster icon. This is\n * the object that a <code>calculator</code> function returns.\n *\n * @property {string} text The text of the label to be shown on the cluster icon.\n * @property {number} index The index plus 1 of the element in the <code>styles</code>\n * array to be used to style the cluster icon.\n * @property {string} title The tooltip to display when the mouse moves over the cluster icon.\n * If this value is <code>undefined</code> or <code>\"\"</code>, <code>title</code> is set to the\n * value of the <code>title</code> property passed to the MarkerClusterer.\n */\n/**\n * A cluster icon.\n *\n * @constructor\n * @extends google.maps.OverlayView\n * @param {Cluster} cluster The cluster with which the icon is to be associated.\n * @param {Array} [styles] An array of {@link ClusterIconStyle} defining the cluster icons\n * to use for various cluster sizes.\n * @private\n */\nfunction ClusterIcon(cluster, styles) {\n cluster.getMarkerClusterer().extend(ClusterIcon, google.maps.OverlayView);\n\n this.cluster_ = cluster;\n this.className_ = cluster.getMarkerClusterer().getClusterClass();\n this.styles_ = styles;\n this.center_ = null;\n this.div_ = null;\n this.sums_ = null;\n this.visible_ = false;\n\n this.setMap(cluster.getMap()); // Note: this causes onAdd to be called\n}\n\n\n/**\n * Adds the icon to the DOM.\n */\nClusterIcon.prototype.onAdd = function () {\n var cClusterIcon = this;\n var cMouseDownInCluster;\n var cDraggingMapByCluster;\n\n this.div_ = document.createElement(\"div\");\n this.div_.className = this.className_;\n if (this.visible_) {\n this.show();\n }\n\n this.getPanes().overlayMouseTarget.appendChild(this.div_);\n\n // Fix for Issue 157\n this.boundsChangedListener_ = google.maps.event.addListener(this.getMap(), \"bounds_changed\", function () {\n cDraggingMapByCluster = cMouseDownInCluster;\n });\n\n google.maps.event.addDomListener(this.div_, \"mousedown\", function () {\n cMouseDownInCluster = true;\n cDraggingMapByCluster = false;\n });\n\n google.maps.event.addDomListener(this.div_, \"click\", function (e) {\n cMouseDownInCluster = false;\n if (!cDraggingMapByCluster) {\n var theBounds;\n var mz;\n var mc = cClusterIcon.cluster_.getMarkerClusterer();\n /**\n * This event is fired when a cluster marker is clicked.\n * @name MarkerClusterer#click\n * @param {Cluster} c The cluster that was clicked.\n * @event\n */\n google.maps.event.trigger(mc, \"click\", cClusterIcon.cluster_);\n google.maps.event.trigger(mc, \"clusterclick\", cClusterIcon.cluster_); // deprecated name\n\n // The default click handler follows. Disable it by setting\n // the zoomOnClick property to false.\n if (mc.getZoomOnClick()) {\n // Zoom into the cluster.\n mz = mc.getMaxZoom();\n theBounds = cClusterIcon.cluster_.getBounds();\n mc.getMap().fitBounds(theBounds);\n // There is a fix for Issue 170 here:\n setTimeout(function () {\n mc.getMap().fitBounds(theBounds);\n // Don't zoom beyond the max zoom level\n if (mz !== null && (mc.getMap().getZoom() > mz)) {\n mc.getMap().setZoom(mz + 1);\n }\n }, 100);\n }\n\n // Prevent event propagation to the map:\n e.cancelBubble = true;\n if (e.stopPropagation) {\n e.stopPropagation();\n }\n }\n });\n\n google.maps.event.addDomListener(this.div_, \"mouseover\", function () {\n var mc = cClusterIcon.cluster_.getMarkerClusterer();\n /**\n * This event is fired when the mouse moves over a cluster marker.\n * @name MarkerClusterer#mouseover\n * @param {Cluster} c The cluster that the mouse moved over.\n * @event\n */\n google.maps.event.trigger(mc, \"mouseover\", cClusterIcon.cluster_);\n });\n\n google.maps.event.addDomListener(this.div_, \"mouseout\", function () {\n var mc = cClusterIcon.cluster_.getMarkerClusterer();\n /**\n * This event is fired when the mouse moves out of a cluster marker.\n * @name MarkerClusterer#mouseout\n * @param {Cluster} c The cluster that the mouse moved out of.\n * @event\n */\n google.maps.event.trigger(mc, \"mouseout\", cClusterIcon.cluster_);\n });\n};\n\n\n/**\n * Removes the icon from the DOM.\n */\nClusterIcon.prototype.onRemove = function () {\n if (this.div_ && this.div_.parentNode) {\n this.hide();\n google.maps.event.removeListener(this.boundsChangedListener_);\n google.maps.event.clearInstanceListeners(this.div_);\n this.div_.parentNode.removeChild(this.div_);\n this.div_ = null;\n }\n};\n\n\n/**\n * Draws the icon.\n */\nClusterIcon.prototype.draw = function () {\n if (this.visible_) {\n var pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.top = pos.y + \"px\";\n this.div_.style.left = pos.x + \"px\";\n }\n};\n\n\n/**\n * Hides the icon.\n */\nClusterIcon.prototype.hide = function () {\n if (this.div_) {\n this.div_.style.display = \"none\";\n }\n this.visible_ = false;\n};\n\n\n/**\n * Positions and shows the icon.\n */\nClusterIcon.prototype.show = function () {\n if (this.div_) {\n var img = \"\";\n // NOTE: values must be specified in px units\n var bp = this.backgroundPosition_.split(\" \");\n var spriteH = parseInt(bp[0].trim(), 10);\n var spriteV = parseInt(bp[1].trim(), 10);\n var pos = this.getPosFromLatLng_(this.center_);\n this.div_.style.cssText = this.createCss(pos);\n img = \"<img src='\" + this.url_ + \"' style='position: absolute; top: \" + spriteV + \"px; left: \" + spriteH + \"px; \";\n if (!this.cluster_.getMarkerClusterer().enableRetinaIcons_) {\n img += \"clip: rect(\" + (-1 * spriteV) + \"px, \" + ((-1 * spriteH) + this.width_) + \"px, \" +\n ((-1 * spriteV) + this.height_) + \"px, \" + (-1 * spriteH) + \"px);\";\n }\n else {\n img += \"width: \" + this.width_ + \"px;\" + \"height: \" + this.height_ + \"px;\";\n }\n img += \"'>\";\n this.div_.innerHTML = img + \"<div style='\" +\n \"position: absolute;\" +\n \"top: \" + this.anchorText_[0] + \"px;\" +\n \"left: \" + this.anchorText_[1] + \"px;\" +\n \"color: \" + this.textColor_ + \";\" +\n \"font-size: \" + this.textSize_ + \"px;\" +\n \"font-family: \" + this.fontFamily_ + \";\" +\n \"font-weight: \" + this.fontWeight_ + \";\" +\n \"font-style: \" + this.fontStyle_ + \";\" +\n \"text-decoration: \" + this.textDecoration_ + \";\" +\n \"text-align: center;\" +\n \"width: \" + this.width_ + \"px;\" +\n \"line-height:\" + this.height_ + \"px;\" +\n \"'>\" + (this.cluster_.hideLabel_ ? ' ' : this.sums_.text) + \"</div>\";\n if (typeof this.sums_.title === \"undefined\" || this.sums_.title === \"\") {\n this.div_.title = this.cluster_.getMarkerClusterer().getTitle();\n } else {\n this.div_.title = this.sums_.title;\n }\n this.div_.style.display = \"\";\n }\n this.visible_ = true;\n};\n\n\n/**\n * Sets the icon styles to the appropriate element in the styles array.\n *\n * @param {ClusterIconInfo} sums The icon label text and styles index.\n */\nClusterIcon.prototype.useStyle = function (sums) {\n this.sums_ = sums;\n var index = Math.max(0, sums.index - 1);\n index = Math.min(this.styles_.length - 1, index);\n var style = this.styles_[index];\n this.url_ = style.url;\n this.height_ = style.height;\n this.width_ = style.width;\n this.anchorText_ = style.anchorText || [0, 0];\n this.anchorIcon_ = style.anchorIcon || [parseInt(this.height_ / 2, 10), parseInt(this.width_ / 2, 10)];\n this.textColor_ = style.textColor || \"black\";\n this.textSize_ = style.textSize || 11;\n this.textDecoration_ = style.textDecoration || \"none\";\n this.fontWeight_ = style.fontWeight || \"bold\";\n this.fontStyle_ = style.fontStyle || \"normal\";\n this.fontFamily_ = style.fontFamily || \"Arial,sans-serif\";\n this.backgroundPosition_ = style.backgroundPosition || \"0 0\";\n};\n\n\n/**\n * Sets the position at which to center the icon.\n *\n * @param {google.maps.LatLng} center The latlng to set as the center.\n */\nClusterIcon.prototype.setCenter = function (center) {\n this.center_ = center;\n};\n\n\n/**\n * Creates the cssText style parameter based on the position of the icon.\n *\n * @param {google.maps.Point} pos The position of the icon.\n * @return {string} The CSS style text.\n */\nClusterIcon.prototype.createCss = function (pos) {\n var style = [];\n style.push(\"cursor: pointer;\");\n style.push(\"position: absolute; top: \" + pos.y + \"px; left: \" + pos.x + \"px;\");\n style.push(\"width: \" + this.width_ + \"px; height: \" + this.height_ + \"px;\");\n return style.join(\"\");\n};\n\n\n/**\n * Returns the position at which to place the DIV depending on the latlng.\n *\n * @param {google.maps.LatLng} latlng The position in latlng.\n * @return {google.maps.Point} The position in pixels.\n */\nClusterIcon.prototype.getPosFromLatLng_ = function (latlng) {\n var pos = this.getProjection().fromLatLngToDivPixel(latlng);\n pos.x -= this.anchorIcon_[1];\n pos.y -= this.anchorIcon_[0];\n pos.x = parseInt(pos.x, 10);\n pos.y = parseInt(pos.y, 10);\n return pos;\n};\n\n\n/**\n * Creates a single cluster that manages a group of proximate markers.\n * Used internally, do not call this constructor directly.\n * @constructor\n * @param {MarkerClusterer} mc The <code>MarkerClusterer</code> object with which this\n * cluster is associated.\n */\nfunction Cluster(mc) {\n this.markerClusterer_ = mc;\n this.map_ = mc.getMap();\n this.gridSize_ = mc.getGridSize();\n this.minClusterSize_ = mc.getMinimumClusterSize();\n this.averageCenter_ = mc.getAverageCenter();\n this.hideLabel_ = mc.getHideLabel();\n this.markers_ = [];\n this.center_ = null;\n this.bounds_ = null;\n this.clusterIcon_ = new ClusterIcon(this, mc.getStyles());\n}\n\n\n/**\n * Returns the number of markers managed by the cluster. You can call this from\n * a <code>click</code>, <code>mouseover</code>, or <code>mouseout</code> event handler\n * for the <code>MarkerClusterer</code> object.\n *\n * @return {number} The number of markers in the cluster.\n */\nCluster.prototype.getSize = function () {\n return this.markers_.length;\n};\n\n\n/**\n * Returns the array of markers managed by the cluster. You can call this from\n * a <code>click</code>, <code>mouseover</code>, or <code>mouseout</code> event handler\n * for the <code>MarkerClusterer</code> object.\n *\n * @return {Array} The array of markers in the cluster.\n */\nCluster.prototype.getMarkers = function () {\n return this.markers_;\n};\n\n\n/**\n * Returns the center of the cluster. You can call this from\n * a <code>click</code>, <code>mouseover</code>, or <code>mouseout</code> event handler\n * for the <code>MarkerClusterer</code> object.\n *\n * @return {google.maps.LatLng} The center of the cluster.\n */\nCluster.prototype.getCenter = function () {\n return this.center_;\n};\n\n\n/**\n * Returns the map with which the cluster is associated.\n *\n * @return {google.maps.Map} The map.\n * @ignore\n */\nCluster.prototype.getMap = function () {\n return this.map_;\n};\n\n\n/**\n * Returns the <code>MarkerClusterer</code> object with which the cluster is associated.\n *\n * @return {MarkerClusterer} The associated marker clusterer.\n * @ignore\n */\nCluster.prototype.getMarkerClusterer = function () {\n return this.markerClusterer_;\n};\n\n\n/**\n * Returns the bounds of the cluster.\n *\n * @return {google.maps.LatLngBounds} the cluster bounds.\n * @ignore\n */\nCluster.prototype.getBounds = function () {\n var i;\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n var markers = this.getMarkers();\n for (i = 0; i < markers.length; i++) {\n bounds.extend(markers[i].getPosition());\n }\n return bounds;\n};\n\n\n/**\n * Removes the cluster from the map.\n *\n * @ignore\n */\nCluster.prototype.remove = function () {\n this.clusterIcon_.setMap(null);\n this.markers_ = [];\n delete this.markers_;\n};\n\n\n/**\n * Adds a marker to the cluster.\n *\n * @param {google.maps.Marker} marker The marker to be added.\n * @return {boolean} True if the marker was added.\n * @ignore\n */\nCluster.prototype.addMarker = function (marker) {\n var i;\n var mCount;\n var mz;\n\n if (this.isMarkerAlreadyAdded_(marker)) {\n return false;\n }\n\n if (!this.center_) {\n this.center_ = marker.getPosition();\n this.calculateBounds_();\n } else {\n if (this.averageCenter_) {\n var l = this.markers_.length + 1;\n var lat = (this.center_.lat() * (l - 1) + marker.getPosition().lat()) / l;\n var lng = (this.center_.lng() * (l - 1) + marker.getPosition().lng()) / l;\n this.center_ = new google.maps.LatLng(lat, lng);\n this.calculateBounds_();\n }\n }\n\n marker.isAdded = true;\n this.markers_.push(marker);\n\n mCount = this.markers_.length;\n mz = this.markerClusterer_.getMaxZoom();\n if (mz !== null && this.map_.getZoom() > mz) {\n // Zoomed in past max zoom, so show the marker.\n if (marker.getMap() !== this.map_) {\n marker.setMap(this.map_);\n }\n } else if (mCount < this.minClusterSize_) {\n // Min cluster size not reached so show the marker.\n if (marker.getMap() !== this.map_) {\n marker.setMap(this.map_);\n }\n } else if (mCount === this.minClusterSize_) {\n // Hide the markers that were showing.\n for (i = 0; i < mCount; i++) {\n this.markers_[i].setMap(null);\n }\n } else {\n marker.setMap(null);\n }\n\n return true;\n};\n\n\n/**\n * Determines if a marker lies within the cluster's bounds.\n *\n * @param {google.maps.Marker} marker The marker to check.\n * @return {boolean} True if the marker lies in the bounds.\n * @ignore\n */\nCluster.prototype.isMarkerInClusterBounds = function (marker) {\n return this.bounds_.contains(marker.getPosition());\n};\n\n\n/**\n * Calculates the extended bounds of the cluster with the grid.\n */\nCluster.prototype.calculateBounds_ = function () {\n var bounds = new google.maps.LatLngBounds(this.center_, this.center_);\n this.bounds_ = this.markerClusterer_.getExtendedBounds(bounds);\n};\n\n\n/**\n * Updates the cluster icon.\n */\nCluster.prototype.updateIcon_ = function () {\n var mCount = this.markers_.length;\n var mz = this.markerClusterer_.getMaxZoom();\n\n if (mz !== null && this.map_.getZoom() > mz) {\n this.clusterIcon_.hide();\n return;\n }\n\n if (mCount < this.minClusterSize_) {\n // Min cluster size not yet reached.\n this.clusterIcon_.hide();\n return;\n }\n\n var numStyles = this.markerClusterer_.getStyles().length;\n var sums = this.markerClusterer_.getCalculator()(this.markers_, numStyles);\n this.clusterIcon_.setCenter(this.center_);\n this.clusterIcon_.useStyle(sums);\n this.clusterIcon_.show();\n};\n\n\n/**\n * Determines if a marker has already been added to the cluster.\n *\n * @param {google.maps.Marker} marker The marker to check.\n * @return {boolean} True if the marker has already been added.\n */\nCluster.prototype.isMarkerAlreadyAdded_ = function (marker) {\n for (var i = 0, n = this.markers_.length; i < n; i++) {\n if (marker === this.markers_[i]) {\n return true;\n }\n }\n return false;\n};\n\n\n/**\n * @name MarkerClustererOptions\n * @class This class represents the optional parameter passed to\n * the {@link MarkerClusterer} constructor.\n * @property {number} [gridSize=60] The grid size of a cluster in pixels. The grid is a square.\n * @property {number} [maxZoom=null] The maximum zoom level at which clustering is enabled or\n * <code>null</code> if clustering is to be enabled at all zoom levels.\n * @property {boolean} [zoomOnClick=true] Whether to zoom the map when a cluster marker is\n * clicked. You may want to set this to <code>false</code> if you have installed a handler\n * for the <code>click</code> event and it deals with zooming on its own.\n * @property {boolean} [averageCenter=false] Whether the position of a cluster marker should be\n * the average position of all markers in the cluster. If set to <code>false</code>, the\n * cluster marker is positioned at the location of the first marker added to the cluster.\n * @property {number} [minimumClusterSize=2] The minimum number of markers needed in a cluster\n * before the markers are hidden and a cluster marker appears.\n * @property {boolean} [ignoreHidden=false] Whether to ignore hidden markers in clusters. You\n * may want to set this to <code>true</code> to ensure that hidden markers are not included\n * in the marker count that appears on a cluster marker (this count is the value of the\n * <code>text</code> property of the result returned by the default <code>calculator</code>).\n * If set to <code>true</code> and you change the visibility of a marker being clustered, be\n * sure to also call <code>MarkerClusterer.repaint()</code>.\n * @property {string} [title=\"\"] The tooltip to display when the mouse moves over a cluster\n * marker. (Alternatively, you can use a custom <code>calculator</code> function to specify a\n * different tooltip for each cluster marker.)\n * @property {function} [calculator=MarkerClusterer.CALCULATOR] The function used to determine\n * the text to be displayed on a cluster marker and the index indicating which style to use\n * for the cluster marker. The input parameters for the function are (1) the array of markers\n * represented by a cluster marker and (2) the number of cluster icon styles. It returns a\n * {@link ClusterIconInfo} object. The default <code>calculator</code> returns a\n * <code>text</code> property which is the number of markers in the cluster and an\n * <code>index</code> property which is one higher than the lowest integer such that\n * <code>10^i</code> exceeds the number of markers in the cluster, or the size of the styles\n * array, whichever is less. The <code>styles</code> array element used has an index of\n * <code>index</code> minus 1. For example, the default <code>calculator</code> returns a\n * <code>text</code> value of <code>\"125\"</code> and an <code>index</code> of <code>3</code>\n * for a cluster icon representing 125 markers so the element used in the <code>styles</code>\n * array is <code>2</code>. A <code>calculator</code> may also return a <code>title</code>\n * property that contains the text of the tooltip to be used for the cluster marker. If\n * <code>title</code> is not defined, the tooltip is set to the value of the <code>title</code>\n * property for the MarkerClusterer.\n * @property {string} [clusterClass=\"cluster\"] The name of the CSS class defining general styles\n * for the cluster markers. Use this class to define CSS styles that are not set up by the code\n * that processes the <code>styles</code> array.\n * @property {Array} [styles] An array of {@link ClusterIconStyle} elements defining the styles\n * of the cluster markers to be used. The element to be used to style a given cluster marker\n * is determined by the function defined by the <code>calculator</code> property.\n * The default is an array of {@link ClusterIconStyle} elements whose properties are derived\n * from the values for <code>imagePath</code>, <code>imageExtension</code>, and\n * <code>imageSizes</code>.\n * @property {boolean} [enableRetinaIcons=false] Whether to allow the use of cluster icons that\n * have sizes that are some multiple (typically double) of their actual display size. Icons such\n * as these look better when viewed on high-resolution monitors such as Apple's Retina displays.\n * Note: if this property is <code>true</code>, sprites cannot be used as cluster icons.\n * @property {number} [batchSize=MarkerClusterer.BATCH_SIZE] Set this property to the\n * number of markers to be processed in a single batch when using a browser other than\n * Internet Explorer (for Internet Explorer, use the batchSizeIE property instead).\n * @property {number} [batchSizeIE=MarkerClusterer.BATCH_SIZE_IE] When Internet Explorer is\n * being used, markers are processed in several batches with a small delay inserted between\n * each batch in an attempt to avoid Javascript timeout errors. Set this property to the\n * number of markers to be processed in a single batch; select as high a number as you can\n * without causing a timeout error in the browser. This number might need to be as low as 100\n * if 15,000 markers are being managed, for example.\n * @property {string} [imagePath=MarkerClusterer.IMAGE_PATH]\n * The full URL of the root name of the group of image files to use for cluster icons.\n * The complete file name is of the form <code>imagePath</code>n.<code>imageExtension</code>\n * where n is the image file number (1, 2, etc.).\n * @property {string} [imageExtension=MarkerClusterer.IMAGE_EXTENSION]\n * The extension name for the cluster icon image files (e.g., <code>\"png\"</code> or\n * <code>\"jpg\"</code>).\n * @property {Array} [imageSizes=MarkerClusterer.IMAGE_SIZES]\n * An array of numbers containing the widths of the group of\n * <code>imagePath</code>n.<code>imageExtension</code> image files.\n * (The images are assumed to be square.)\n */\n/**\n * Creates a MarkerClusterer object with the options specified in {@link MarkerClustererOptions}.\n * @constructor\n * @extends google.maps.OverlayView\n * @param {google.maps.Map} map The Google map to attach to.\n * @param {Array.<google.maps.Marker>} [opt_markers] The markers to be added to the cluster.\n * @param {MarkerClustererOptions} [opt_options] The optional parameters.\n */\nfunction MarkerClusterer(map, opt_markers, opt_options) {\n // MarkerClusterer implements google.maps.OverlayView interface. We use the\n // extend function to extend MarkerClusterer with google.maps.OverlayView\n // because it might not always be available when the code is defined so we\n // look for it at the last possible moment. If it doesn't exist now then\n // there is no point going ahead :)\n this.extend(MarkerClusterer, google.maps.OverlayView);\n\n opt_markers = opt_markers || [];\n opt_options = opt_options || {};\n\n this.markers_ = [];\n this.clusters_ = [];\n this.listeners_ = [];\n this.activeMap_ = null;\n this.ready_ = false;\n\n this.gridSize_ = opt_options.gridSize || 60;\n this.minClusterSize_ = opt_options.minimumClusterSize || 2;\n this.maxZoom_ = opt_options.maxZoom || null;\n this.styles_ = opt_options.styles || [];\n this.title_ = opt_options.title || \"\";\n this.zoomOnClick_ = true;\n if (opt_options.zoomOnClick !== undefined) {\n this.zoomOnClick_ = opt_options.zoomOnClick;\n }\n this.averageCenter_ = false;\n if (opt_options.averageCenter !== undefined) {\n this.averageCenter_ = opt_options.averageCenter;\n }\n this.ignoreHidden_ = false;\n if (opt_options.ignoreHidden !== undefined) {\n this.ignoreHidden_ = opt_options.ignoreHidden;\n }\n this.enableRetinaIcons_ = false;\n if (opt_options.enableRetinaIcons !== undefined) {\n this.enableRetinaIcons_ = opt_options.enableRetinaIcons;\n }\n this.hideLabel_ = false;\n if (opt_options.hideLabel !== undefined) {\n this.hideLabel_ = opt_options.hideLabel;\n }\n this.imagePath_ = opt_options.imagePath || MarkerClusterer.IMAGE_PATH;\n this.imageExtension_ = opt_options.imageExtension || MarkerClusterer.IMAGE_EXTENSION;\n this.imageSizes_ = opt_options.imageSizes || MarkerClusterer.IMAGE_SIZES;\n this.calculator_ = opt_options.calculator || MarkerClusterer.CALCULATOR;\n this.batchSize_ = opt_options.batchSize || MarkerClusterer.BATCH_SIZE;\n this.batchSizeIE_ = opt_options.batchSizeIE || MarkerClusterer.BATCH_SIZE_IE;\n this.clusterClass_ = opt_options.clusterClass || \"cluster\";\n\n if (navigator.userAgent.toLowerCase().indexOf(\"msie\") !== -1) {\n // Try to avoid IE timeout when processing a huge number of markers:\n this.batchSize_ = this.batchSizeIE_;\n }\n\n this.setupStyles_();\n\n this.addMarkers(opt_markers, true);\n this.setMap(map); // Note: this causes onAdd to be called\n}\n\n\n/**\n * Implementation of the onAdd interface method.\n * @ignore\n */\nMarkerClusterer.prototype.onAdd = function () {\n var cMarkerClusterer = this;\n\n this.activeMap_ = this.getMap();\n this.ready_ = true;\n\n this.repaint();\n\n // Add the map event listeners\n this.listeners_ = [\n google.maps.event.addListener(this.getMap(), \"zoom_changed\", function () {\n cMarkerClusterer.resetViewport_(false);\n // Workaround for this Google bug: when map is at level 0 and \"-\" of\n // zoom slider is clicked, a \"zoom_changed\" event is fired even though\n // the map doesn't zoom out any further. In this situation, no \"idle\"\n // event is triggered so the cluster markers that have been removed\n // do not get redrawn. Same goes for a zoom in at maxZoom.\n if (this.getZoom() === (this.get(\"minZoom\") || 0) || this.getZoom() === this.get(\"maxZoom\")) {\n google.maps.event.trigger(this, \"idle\");\n }\n }),\n google.maps.event.addListener(this.getMap(), \"idle\", function () {\n cMarkerClusterer.redraw_();\n })\n ];\n};\n\n\n/**\n * Implementation of the onRemove interface method.\n * Removes map event listeners and all cluster icons from the DOM.\n * All managed markers are also put back on the map.\n * @ignore\n */\nMarkerClusterer.prototype.onRemove = function () {\n var i;\n\n // Put all the managed markers back on the map:\n for (i = 0; i < this.markers_.length; i++) {\n if (this.markers_[i].getMap() !== this.activeMap_) {\n this.markers_[i].setMap(this.activeMap_);\n }\n }\n\n // Remove all clusters:\n for (i = 0; i < this.clusters_.length; i++) {\n this.clusters_[i].remove();\n }\n this.clusters_ = [];\n\n // Remove map event listeners:\n for (i = 0; i < this.listeners_.length; i++) {\n google.maps.event.removeListener(this.listeners_[i]);\n }\n this.listeners_ = [];\n\n this.activeMap_ = null;\n this.ready_ = false;\n};\n\n\n/**\n * Implementation of the draw interface method.\n * @ignore\n */\nMarkerClusterer.prototype.draw = function () {};\n\n\n/**\n * Sets up the styles object.\n */\nMarkerClusterer.prototype.setupStyles_ = function () {\n var i, size;\n if (this.styles_.length > 0) {\n return;\n }\n\n for (i = 0; i < this.imageSizes_.length; i++) {\n size = this.imageSizes_[i];\n this.styles_.push({\n url: this.imagePath_ + (i + 1) + \".\" + this.imageExtension_,\n height: size,\n width: size\n });\n }\n};\n\n\n/**\n * Fits the map to the bounds of the markers managed by the clusterer.\n */\nMarkerClusterer.prototype.fitMapToMarkers = function () {\n var i;\n var markers = this.getMarkers();\n var bounds = new google.maps.LatLngBounds();\n for (i = 0; i < markers.length; i++) {\n bounds.extend(markers[i].getPosition());\n }\n\n this.getMap().fitBounds(bounds);\n};\n\n\n/**\n * Returns the value of the <code>gridSize</code> property.\n *\n * @return {number} The grid size.\n */\nMarkerClusterer.prototype.getGridSize = function () {\n return this.gridSize_;\n};\n\n\n/**\n * Sets the value of the <code>gridSize</code> property.\n *\n * @param {number} gridSize The grid size.\n */\nMarkerClusterer.prototype.setGridSize = function (gridSize) {\n this.gridSize_ = gridSize;\n};\n\n\n/**\n * Returns the value of the <code>minimumClusterSize</code> property.\n *\n * @return {number} The minimum cluster size.\n */\nMarkerClusterer.prototype.getMinimumClusterSize = function () {\n return this.minClusterSize_;\n};\n\n/**\n * Sets the value of the <code>minimumClusterSize</code> property.\n *\n * @param {number} minimumClusterSize The minimum cluster size.\n */\nMarkerClusterer.prototype.setMinimumClusterSize = function (minimumClusterSize) {\n this.minClusterSize_ = minimumClusterSize;\n};\n\n\n/**\n * Returns the value of the <code>maxZoom</code> property.\n *\n * @return {number} The maximum zoom level.\n */\nMarkerClusterer.prototype.getMaxZoom = function () {\n return this.maxZoom_;\n};\n\n\n/**\n * Sets the value of the <code>maxZoom</code> property.\n *\n * @param {number} maxZoom The maximum zoom level.\n */\nMarkerClusterer.prototype.setMaxZoom = function (maxZoom) {\n this.maxZoom_ = maxZoom;\n};\n\n\n/**\n * Returns the value of the <code>styles</code> property.\n *\n * @return {Array} The array of styles defining the cluster markers to be used.\n */\nMarkerClusterer.prototype.getStyles = function () {\n return this.styles_;\n};\n\n\n/**\n * Sets the value of the <code>styles</code> property.\n *\n * @param {Array.<ClusterIconStyle>} styles The array of styles to use.\n */\nMarkerClusterer.prototype.setStyles = function (styles) {\n this.styles_ = styles;\n};\n\n\n/**\n * Returns the value of the <code>title</code> property.\n *\n * @return {string} The content of the title text.\n */\nMarkerClusterer.prototype.getTitle = function () {\n return this.title_;\n};\n\n\n/**\n * Sets the value of the <code>title</code> property.\n *\n * @param {string} title The value of the title property.\n */\nMarkerClusterer.prototype.setTitle = function (title) {\n this.title_ = title;\n};\n\n\n/**\n * Returns the value of the <code>zoomOnClick</code> property.\n *\n * @return {boolean} True if zoomOnClick property is set.\n */\nMarkerClusterer.prototype.getZoomOnClick = function () {\n return this.zoomOnClick_;\n};\n\n\n/**\n * Sets the value of the <code>zoomOnClick</code> property.\n *\n * @param {boolean} zoomOnClick The value of the zoomOnClick property.\n */\nMarkerClusterer.prototype.setZoomOnClick = function (zoomOnClick) {\n this.zoomOnClick_ = zoomOnClick;\n};\n\n\n/**\n * Returns the value of the <code>averageCenter</code> property.\n *\n * @return {boolean} True if averageCenter property is set.\n */\nMarkerClusterer.prototype.getAverageCenter = function () {\n return this.averageCenter_;\n};\n\n\n/**\n * Sets the value of the <code>averageCenter</code> property.\n *\n * @param {boolean} averageCenter The value of the averageCenter property.\n */\nMarkerClusterer.prototype.setAverageCenter = function (averageCenter) {\n this.averageCenter_ = averageCenter;\n};\n\n\n/**\n * Returns the value of the <code>ignoreHidden</code> property.\n *\n * @return {boolean} True if ignoreHidden property is set.\n */\nMarkerClusterer.prototype.getIgnoreHidden = function () {\n return this.ignoreHidden_;\n};\n\n\n/**\n * Sets the value of the <code>ignoreHidden</code> property.\n *\n * @param {boolean} ignoreHidden The value of the ignoreHidden property.\n */\nMarkerClusterer.prototype.setIgnoreHidden = function (ignoreHidden) {\n this.ignoreHidden_ = ignoreHidden;\n};\n\n\n/**\n * Returns the value of the <code>enableRetinaIcons</code> property.\n *\n * @return {boolean} True if enableRetinaIcons property is set.\n */\nMarkerClusterer.prototype.getEnableRetinaIcons = function () {\n return this.enableRetinaIcons_;\n};\n\n\n/**\n * Sets the value of the <code>enableRetinaIcons</code> property.\n *\n * @param {boolean} enableRetinaIcons The value of the enableRetinaIcons property.\n */\nMarkerClusterer.prototype.setEnableRetinaIcons = function (enableRetinaIcons) {\n this.enableRetinaIcons_ = enableRetinaIcons;\n};\n\n\n/**\n * Returns the value of the <code>imageExtension</code> property.\n *\n * @return {string} The value of the imageExtension property.\n */\nMarkerClusterer.prototype.getImageExtension = function () {\n return this.imageExtension_;\n};\n\n\n/**\n * Sets the value of the <code>imageExtension</code> property.\n *\n * @param {string} imageExtension The value of the imageExtension property.\n */\nMarkerClusterer.prototype.setImageExtension = function (imageExtension) {\n this.imageExtension_ = imageExtension;\n};\n\n\n/**\n * Returns the value of the <code>imagePath</code> property.\n *\n * @return {string} The value of the imagePath property.\n */\nMarkerClusterer.prototype.getImagePath = function () {\n return this.imagePath_;\n};\n\n\n/**\n * Sets the value of the <code>imagePath</code> property.\n *\n * @param {string} imagePath The value of the imagePath property.\n */\nMarkerClusterer.prototype.setImagePath = function (imagePath) {\n this.imagePath_ = imagePath;\n};\n\n\n/**\n * Returns the value of the <code>imageSizes</code> property.\n *\n * @return {Array} The value of the imageSizes property.\n */\nMarkerClusterer.prototype.getImageSizes = function () {\n return this.imageSizes_;\n};\n\n\n/**\n * Sets the value of the <code>imageSizes</code> property.\n *\n * @param {Array} imageSizes The value of the imageSizes property.\n */\nMarkerClusterer.prototype.setImageSizes = function (imageSizes) {\n this.imageSizes_ = imageSizes;\n};\n\n\n/**\n * Returns the value of the <code>calculator</code> property.\n *\n * @return {function} the value of the calculator property.\n */\nMarkerClusterer.prototype.getCalculator = function () {\n return this.calculator_;\n};\n\n\n/**\n * Sets the value of the <code>calculator</code> property.\n *\n * @param {function(Array.<google.maps.Marker>, number)} calculator The value\n * of the calculator property.\n */\nMarkerClusterer.prototype.setCalculator = function (calculator) {\n this.calculator_ = calculator;\n};\n\n/**\n * Sets the value of the <code>hideLabel</code> property.\n *\n * @param {boolean} printable The value of the hideLabel property.\n */\nMarkerClusterer.prototype.setHideLabel = function (hideLabel) {\n this.hideLabel_ = hideLabel;\n};\n\n/**\n * Returns the value of the <code>hideLabel</code> property.\n *\n * @return {boolean} the value of the hideLabel property.\n */\nMarkerClusterer.prototype.getHideLabel = function () {\n return this.hideLabel_;\n};\n\n/**\n * Returns the value of the <code>batchSizeIE</code> property.\n *\n * @return {number} the value of the batchSizeIE property.\n */\nMarkerClusterer.prototype.getBatchSizeIE = function () {\n return this.batchSizeIE_;\n};\n\n\n/**\n * Sets the value of the <code>batchSizeIE</code> property.\n *\n * @param {number} batchSizeIE The value of the batchSizeIE property.\n */\nMarkerClusterer.prototype.setBatchSizeIE = function (batchSizeIE) {\n this.batchSizeIE_ = batchSizeIE;\n};\n\n\n/**\n * Returns the value of the <code>clusterClass</code> property.\n *\n * @return {string} the value of the clusterClass property.\n */\nMarkerClusterer.prototype.getClusterClass = function () {\n return this.clusterClass_;\n};\n\n\n/**\n * Sets the value of the <code>clusterClass</code> property.\n *\n * @param {string} clusterClass The value of the clusterClass property.\n */\nMarkerClusterer.prototype.setClusterClass = function (clusterClass) {\n this.clusterClass_ = clusterClass;\n};\n\n\n/**\n * Returns the array of markers managed by the clusterer.\n *\n * @return {Array} The array of markers managed by the clusterer.\n */\nMarkerClusterer.prototype.getMarkers = function () {\n return this.markers_;\n};\n\n\n/**\n * Returns the number of markers managed by the clusterer.\n *\n * @return {number} The number of markers.\n */\nMarkerClusterer.prototype.getTotalMarkers = function () {\n return this.markers_.length;\n};\n\n\n/**\n * Returns the current array of clusters formed by the clusterer.\n *\n * @return {Array} The array of clusters formed by the clusterer.\n */\nMarkerClusterer.prototype.getClusters = function () {\n return this.clusters_;\n};\n\n\n/**\n * Returns the number of clusters formed by the clusterer.\n *\n * @return {number} The number of clusters formed by the clusterer.\n */\nMarkerClusterer.prototype.getTotalClusters = function () {\n return this.clusters_.length;\n};\n\n\n/**\n * Adds a marker to the clusterer. The clusters are redrawn unless\n * <code>opt_nodraw</code> is set to <code>true</code>.\n *\n * @param {google.maps.Marker} marker The marker to add.\n * @param {boolean} [opt_nodraw] Set to <code>true</code> to prevent redrawing.\n */\nMarkerClusterer.prototype.addMarker = function (marker, opt_nodraw) {\n this.pushMarkerTo_(marker);\n if (!opt_nodraw) {\n this.redraw_();\n }\n};\n\n\n/**\n * Adds an array of markers to the clusterer. The clusters are redrawn unless\n * <code>opt_nodraw</code> is set to <code>true</code>.\n *\n * @param {Array.<google.maps.Marker>} markers The markers to add.\n * @param {boolean} [opt_nodraw] Set to <code>true</code> to prevent redrawing.\n */\nMarkerClusterer.prototype.addMarkers = function (markers, opt_nodraw) {\n var key;\n for (key in markers) {\n if (markers.hasOwnProperty(key)) {\n this.pushMarkerTo_(markers[key]);\n }\n }\n if (!opt_nodraw) {\n this.redraw_();\n }\n};\n\n\n/**\n * Pushes a marker to the clusterer.\n *\n * @param {google.maps.Marker} marker The marker to add.\n */\nMarkerClusterer.prototype.pushMarkerTo_ = function (marker) {\n // If the marker is draggable add a listener so we can update the clusters on the dragend:\n if (marker.getDraggable()) {\n var cMarkerClusterer = this;\n google.maps.event.addListener(marker, \"dragend\", function () {\n if (cMarkerClusterer.ready_) {\n this.isAdded = false;\n cMarkerClusterer.repaint();\n }\n });\n }\n marker.isAdded = false;\n this.markers_.push(marker);\n};\n\n\n/**\n * Removes a marker from the cluster and map. The clusters are redrawn unless\n * <code>opt_nodraw</code> is set to <code>true</code>. Returns <code>true</code> if the\n * marker was removed from the clusterer.\n *\n * @param {google.maps.Marker} marker The marker to remove.\n * @param {boolean} [opt_nodraw] Set to <code>true</code> to prevent redrawing.\n * @param {boolean} [opt_noMapRemove] Set to <code>true</code> to prevent removal from map but still removing from cluster management\n * @return {boolean} True if the marker was removed from the clusterer.\n */\nMarkerClusterer.prototype.removeMarker = function (marker, opt_nodraw, opt_noMapRemove) {\n var removeFromMap = true && !opt_noMapRemove;\n var removed = this.removeMarker_(marker,removeFromMap);\n\n if (!opt_nodraw && removed) {\n this.repaint();\n }\n\n return removed;\n};\n\n\n/**\n * Removes an array of markers from the cluster and map. The clusters are redrawn unless\n * <code>opt_nodraw</code> is set to <code>true</code>. Returns <code>true</code> if markers\n * were removed from the clusterer.\n *\n * @param {Array.<google.maps.Marker>} markers The markers to remove.\n * @param {boolean} [opt_nodraw] Set to <code>true</code> to prevent redrawing.\n * @param {boolean} [opt_noMapRemove] Set to <code>true</code> to prevent removal from map but still removing from cluster management\n * @return {boolean} True if markers were removed from the clusterer.\n */\nMarkerClusterer.prototype.removeMarkers = function (markers, opt_nodraw, opt_noMapRemove) {\n var i, r;\n var removed = false;\n var removeFromMap = true && !opt_noMapRemove;\n\n for (i = 0; i < markers.length; i++) {\n r = this.removeMarker_(markers[i],removeFromMap);\n removed = removed || r;\n }\n\n if (!opt_nodraw && removed) {\n this.repaint();\n }\n\n return removed;\n};\n\n\n/**\n * Removes a marker and returns true if removed, false if not.\n *\n * @param {google.maps.Marker} marker The marker to remove\n * @param {boolean} removeFromMap set to <code>true</code> to explicitly remove from map as well as cluster manangement\n * @return {boolean} Whether the marker was removed or not\n */\nMarkerClusterer.prototype.removeMarker_ = function (marker,removeFromMap) {\n var i;\n var index = -1;\n if (this.markers_.indexOf) {\n index = this.markers_.indexOf(marker);\n } else {\n for (i = 0; i < this.markers_.length; i++) {\n if (marker === this.markers_[i]) {\n index = i;\n break;\n }\n }\n }\n\n if (index === -1) {\n // Marker is not in our list of markers, so do nothing:\n return false;\n }\n\n if (removeFromMap){\n marker.setMap(null);\n }\n\n this.markers_.splice(index, 1); // Remove the marker from the list of managed markers\n return true;\n};\n\n\n/**\n * Removes all clusters and markers from the map and also removes all markers\n * managed by the clusterer.\n */\nMarkerClusterer.prototype.clearMarkers = function () {\n this.resetViewport_(true);\n this.markers_ = [];\n};\n\n\n/**\n * Recalculates and redraws all the marker clusters from scratch.\n * Call this after changing any properties.\n */\nMarkerClusterer.prototype.repaint = function () {\n var oldClusters = this.clusters_.slice();\n this.clusters_ = [];\n this.resetViewport_(false);\n this.redraw_();\n\n // Remove the old clusters.\n // Do it in a timeout to prevent blinking effect.\n setTimeout(function () {\n var i;\n for (i = 0; i < oldClusters.length; i++) {\n oldClusters[i].remove();\n }\n }, 0);\n};\n\n\n/**\n * Returns the current bounds extended by the grid size.\n *\n * @param {google.maps.LatLngBounds} bounds The bounds to extend.\n * @return {google.maps.LatLngBounds} The extended bounds.\n * @ignore\n */\nMarkerClusterer.prototype.getExtendedBounds = function (bounds) {\n var projection = this.getProjection();\n\n // Turn the bounds into latlng.\n var tr = new google.maps.LatLng(bounds.getNorthEast().lat(),\n bounds.getNorthEast().lng());\n var bl = new google.maps.LatLng(bounds.getSouthWest().lat(),\n bounds.getSouthWest().lng());\n\n // Convert the points to pixels and the extend out by the grid size.\n var trPix = projection.fromLatLngToDivPixel(tr);\n trPix.x += this.gridSize_;\n trPix.y -= this.gridSize_;\n\n var blPix = projection.fromLatLngToDivPixel(bl);\n blPix.x -= this.gridSize_;\n blPix.y += this.gridSize_;\n\n // Convert the pixel points back to LatLng\n var ne = projection.fromDivPixelToLatLng(trPix);\n var sw = projection.fromDivPixelToLatLng(blPix);\n\n // Extend the bounds to contain the new bounds.\n bounds.extend(ne);\n bounds.extend(sw);\n\n return bounds;\n};\n\n\n/**\n * Redraws all the clusters.\n */\nMarkerClusterer.prototype.redraw_ = function () {\n this.createClusters_(0);\n};\n\n\n/**\n * Removes all clusters from the map. The markers are also removed from the map\n * if <code>opt_hide</code> is set to <code>true</code>.\n *\n * @param {boolean} [opt_hide] Set to <code>true</code> to also remove the markers\n * from the map.\n */\nMarkerClusterer.prototype.resetViewport_ = function (opt_hide) {\n var i, marker;\n // Remove all the clusters\n for (i = 0; i < this.clusters_.length; i++) {\n this.clusters_[i].remove();\n }\n this.clusters_ = [];\n\n // Reset the markers to not be added and to be removed from the map.\n for (i = 0; i < this.markers_.length; i++) {\n marker = this.markers_[i];\n marker.isAdded = false;\n if (opt_hide) {\n marker.setMap(null);\n }\n }\n};\n\n\n/**\n * Calculates the distance between two latlng locations in km.\n *\n * @param {google.maps.LatLng} p1 The first lat lng point.\n * @param {google.maps.LatLng} p2 The second lat lng point.\n * @return {number} The distance between the two points in km.\n * @see http://www.movable-type.co.uk/scripts/latlong.html\n */\nMarkerClusterer.prototype.distanceBetweenPoints_ = function (p1, p2) {\n var R = 6371; // Radius of the Earth in km\n var dLat = (p2.lat() - p1.lat()) * Math.PI / 180;\n var dLon = (p2.lng() - p1.lng()) * Math.PI / 180;\n var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n Math.cos(p1.lat() * Math.PI / 180) * Math.cos(p2.lat() * Math.PI / 180) *\n Math.sin(dLon / 2) * Math.sin(dLon / 2);\n var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n var d = R * c;\n return d;\n};\n\n\n/**\n * Determines if a marker is contained in a bounds.\n *\n * @param {google.maps.Marker} marker The marker to check.\n * @param {google.maps.LatLngBounds} bounds The bounds to check against.\n * @return {boolean} True if the marker is in the bounds.\n */\nMarkerClusterer.prototype.isMarkerInBounds_ = function (marker, bounds) {\n return bounds.contains(marker.getPosition());\n};\n\n\n/**\n * Adds a marker to a cluster, or creates a new cluster.\n *\n * @param {google.maps.Marker} marker The marker to add.\n */\nMarkerClusterer.prototype.addToClosestCluster_ = function (marker) {\n var i, d, cluster, center;\n var distance = 40000; // Some large number\n var clusterToAddTo = null;\n for (i = 0; i < this.clusters_.length; i++) {\n cluster = this.clusters_[i];\n center = cluster.getCenter();\n if (center) {\n d = this.distanceBetweenPoints_(center, marker.getPosition());\n if (d < distance) {\n distance = d;\n clusterToAddTo = cluster;\n }\n }\n }\n\n if (clusterToAddTo && clusterToAddTo.isMarkerInClusterBounds(marker)) {\n clusterToAddTo.addMarker(marker);\n } else {\n cluster = new Cluster(this);\n cluster.addMarker(marker);\n this.clusters_.push(cluster);\n }\n};\n\n\n/**\n * Creates the clusters. This is done in batches to avoid timeout errors\n * in some browsers when there is a huge number of markers.\n *\n * @param {number} iFirst The index of the first marker in the batch of\n * markers to be added to clusters.\n */\nMarkerClusterer.prototype.createClusters_ = function (iFirst) {\n var i, marker;\n var mapBounds;\n var cMarkerClusterer = this;\n if (!this.ready_) {\n return;\n }\n\n // Cancel previous batch processing if we're working on the first batch:\n if (iFirst === 0) {\n /**\n * This event is fired when the <code>MarkerClusterer</code> begins\n * clustering markers.\n * @name MarkerClusterer#clusteringbegin\n * @param {MarkerClusterer} mc The MarkerClusterer whose markers are being clustered.\n * @event\n */\n google.maps.event.trigger(this, \"clusteringbegin\", this);\n\n if (typeof this.timerRefStatic !== \"undefined\") {\n clearTimeout(this.timerRefStatic);\n delete this.timerRefStatic;\n }\n }\n\n // Get our current map view bounds.\n // Create a new bounds object so we don't affect the map.\n //\n // See Comments 9 & 11 on Issue 3651 relating to this workaround for a Google Maps bug:\n if (this.getMap().getZoom() > 3) {\n mapBounds = new google.maps.LatLngBounds(this.getMap().getBounds().getSouthWest(),\n this.getMap().getBounds().getNorthEast());\n } else {\n mapBounds = new google.maps.LatLngBounds(new google.maps.LatLng(85.02070771743472, -178.48388434375), new google.maps.LatLng(-85.08136444384544, 178.00048865625));\n }\n var bounds = this.getExtendedBounds(mapBounds);\n\n var iLast = Math.min(iFirst + this.batchSize_, this.markers_.length);\n\n for (i = iFirst; i < iLast; i++) {\n marker = this.markers_[i];\n if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {\n if (!this.ignoreHidden_ || (this.ignoreHidden_ && marker.getVisible())) {\n this.addToClosestCluster_(marker);\n }\n }\n }\n\n if (iLast < this.markers_.length) {\n this.timerRefStatic = setTimeout(function () {\n cMarkerClusterer.createClusters_(iLast);\n }, 0);\n } else {\n delete this.timerRefStatic;\n\n /**\n * This event is fired when the <code>MarkerClusterer</code> stops\n * clustering markers.\n * @name MarkerClusterer#clusteringend\n * @param {MarkerClusterer} mc The MarkerClusterer whose markers are being clustered.\n * @event\n */\n google.maps.event.trigger(this, \"clusteringend\", this);\n\n for (i = 0; i < this.clusters_.length; i++) {\n this.clusters_[i].updateIcon_();\n }\n }\n};\n\n\n/**\n * Extends an object's prototype by another's.\n *\n * @param {Object} obj1 The object to be extended.\n * @param {Object} obj2 The object to extend with.\n * @return {Object} The new extended object.\n * @ignore\n */\nMarkerClusterer.prototype.extend = function (obj1, obj2) {\n return (function (object) {\n var property;\n for (property in object.prototype) {\n this.prototype[property] = object.prototype[property];\n }\n return this;\n }).apply(obj1, [obj2]);\n};\n\n\n/**\n * The default function for determining the label text and style\n * for a cluster icon.\n *\n * @param {Array.<google.maps.Marker>} markers The array of markers represented by the cluster.\n * @param {number} numStyles The number of marker styles available.\n * @return {ClusterIconInfo} The information resource for the cluster.\n * @constant\n * @ignore\n */\nMarkerClusterer.CALCULATOR = function (markers, numStyles) {\n var index = 0;\n var title = \"\";\n var count = markers.length.toString();\n\n var dv = count;\n while (dv !== 0) {\n dv = parseInt(dv / 10, 10);\n index++;\n }\n\n index = Math.min(index, numStyles);\n return {\n text: count,\n index: index,\n title: title\n };\n};\n\n\n/**\n * The number of markers to process in one batch.\n *\n * @type {number}\n * @constant\n */\nMarkerClusterer.BATCH_SIZE = 2000;\n\n\n/**\n * The number of markers to process in one batch (IE only).\n *\n * @type {number}\n * @constant\n */\nMarkerClusterer.BATCH_SIZE_IE = 500;\n\n\n/**\n * The default root name for the marker cluster images.\n *\n * @type {string}\n * @constant\n */\nMarkerClusterer.IMAGE_PATH = \"//cdn.rawgit.com/mahnunchik/markerclustererplus/master/images/m\";\n\n\n/**\n * The default extension name for the marker cluster images.\n *\n * @type {string}\n * @constant\n */\nMarkerClusterer.IMAGE_EXTENSION = \"png\";\n\n\n/**\n * The default array of sizes for the marker cluster images.\n *\n * @type {Array.<number>}\n * @constant\n */\nMarkerClusterer.IMAGE_SIZES = [53, 56, 66, 78, 90];\n\nif (typeof String.prototype.trim !== 'function') {\n /**\n * IE hack since trim() doesn't exist in all browsers\n * @return {string} The string with removed whitespace\n */\n String.prototype.trim = function() {\n return this.replace(/^\\s+|\\s+$/g, '');\n };\n}\n\nexport default MarkerClusterer\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Map/locator/markerclustererplus.js","/* eslint-disable */\n/*\n * \t\t\t\t\t\t\t\t\t\ts.eVar14\n1 - Store Locator - Page \t\t\t\tclub:store-locator:tool:engage\n2 - Filter 1 (Nespresso Boutiques)\t\tclub:store-locator:tool:engage:nespresso-boutique:filter\n3 - Filter 2 (Retailers)\t\t\t\tclub:store-locator:tool:engage:retailers:filter\n4 - Filter 3 (Point of Sale)\t\t\tclub:store-locator:tool:engage:point-of-sale:filter\n5 - Filter 4 (Collecting Points)\t\tclub:store-locator:tool:engage:collecting-points:filter\n6 - Store Selection\t\t\t\t\t\tclub:store-locator:tool:engage:select-store:click\n7 - Get Directions to Store\t\t\t\tclub:store-locator:tool:engage:select-store:directions:click\n8 - More Info about Store\t\t\t\tclub:store-locator:tool:engage:select-store:more-info:click\n */\nexport default function omnitureSet(code) {\n\tvar omnitureId = '' ;\n\tswitch(code) {\n\t\tcase 1 :\n\t\t\tomnitureId = 'club:store-locator:tool:engage' ;\n\t\t\tbreak;\n\t\tcase 2 :\n\t\t\tomnitureId = 'club:store-locator:tool:engage:nespresso-boutique:filter' ;\n\t\t\tbreak;\n\t\tcase 3 :\n\t\t\tomnitureId = 'club:store-locator:tool:engage:retailers:filter' ;\n\t\t\tbreak;\n\t\tcase 4 :\n\t\t\tomnitureId = 'club:store-locator:tool:engage:pickup-points:filter';\n\t\t\tbreak;\n\t\tcase 5 :\n\t\t\tomnitureId = 'club:store-locator:tool:engage:collecting-points:filter' ;\n\t\t\tbreak;\n\t\tcase 6 :\n\t\t\tomnitureId = 'club:store-locator:tool:engage:select-store:click' ;\n\t\t\tbreak;\n\t\tcase 7 :\n\t\t\tomnitureId = 'club:store-locator:tool:engage:select-store:directions:click' ;\n\t\t\tbreak;\n\t\tcase 8 :\n\t\t\tomnitureId = 'club:store-locator:tool:engage:select-store:more-info:click' ;\n\t\t\tbreak;\n\t}\n\tif(omnitureId != '') {\n if (typeof(s_gi) != \"function\") return false;\n\t\tvar s=s_gi(s_account) ;\n\t\ts.linkTrackVars='eVar14,events' ;\n\t\ts.linkTrackEvents='event13' ;\n\t\ts.eVar14=omnitureId ;\n\t\ts.events='event13' ;\n\t\ts.tl(this,'o',omnitureId) ;\n\t}\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Map/locator/search.js","<style lang=\"sass\">\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n@import sass/link\n@import sass/btn\n@import sass/btnRound\n</style>\n<script>\nimport Vue from 'vue'\nimport dataLayer from 'nespresso-library/src/core/dataLayer'\nimport Tracking from 'nespresso-library/src/core/tracking'\n\nconst LINK_CLASS = 'g_link'\nconst BUTTON_CLASS = 'g_btn'\nconst BUY_CLASS = 'g_btnBuy'\nconst GOLD_CLASS = 'g_btnGold'\nconst WHITE_CLASS = 'g_btnWhite'\nconst OUTLINE_CLASS = 'g_btnOutline'\nconst TXT_CLASS = 'g_txt_'\nconst TXT_SIZES = ['XS', 'S', 'M', 'L', 'XL']\nconst HEADLINE_CLASS = 'g_headline'\n\nexport default {\n name: 'cta',\n props: {\n size: {\n type: String,\n validator (value) {\n return !!~TXT_SIZES.indexOf(value)\n }\n },\n sizeMobile: {\n type: String,\n validator (value) {\n return !!~TXT_SIZES.indexOf(value)\n }\n },\n isLink: Boolean,\n isBtn: Boolean,\n isWhite: Boolean,\n isGold: Boolean,\n isBuy: Boolean,\n isOutline: Boolean,\n isHeadline: Boolean,\n link: String,\n linkMobile: String,\n scrollTo: String,\n type: {\n type: String,\n required: true,\n validator: function (value) {\n return !!~['text', 'button'].indexOf(value)\n }\n },\n classNameContent: {},\n fontIcon: String,\n content: String,\n trackingLabel: String,\n target: {\n type: String\n }\n },\n methods: {\n handleClick (evt) {\n this.$emit('click')\n // Run scroll to element\n\n if (this.scrollTo) {\n import(/* webpackChunkName: \"scrollTo\" */ 'nespresso-library/src/utils/scrollTo').then(scrollTo => {\n const [anchor, minus] = this.scrollTo.split(',')\n scrollTo.default(anchor[0] !== '#' ? '#' + anchor : anchor, minus)\n\n this.trackLink()\n })\n } else if (this.link) {\n evt.preventDefault()\n\n this.trackLink()\n this.goToLink()\n }\n },\n goToLink () {\n if (!this.target) {\n location.href = this.getLink()\n } else {\n window.open(this.getLink(), this.target)\n }\n },\n trackLink () {\n if (this.trackingLabel) {\n Tracking.customEvent({\n category: 'User Engagement',\n action: 'Click',\n label: `${this.$landing.trackingLabelPrefix} - CTA - ${this.trackingLabel}`,\n interaction: 0\n })\n }\n },\n hasIcon () {\n return this.icon || this.fontIcon\n },\n getLink () {\n return dataLayer.isMobile && this.linkMobile !== '' ? this.linkMobile : this.link\n }\n },\n beforeMount () {\n if (this.hasIcon()) {\n Vue.component('Visual', () => import(/* webpackChunkName: \"Visual\" */ '../Visual').then(m => m.default))\n }\n },\n render (createElement) {\n let size = this.size\n const classNames = []\n const attrs = {}\n let el\n\n if (this.type === 'button') {\n el = 'button'\n } else {\n el = 'a'\n attrs.href = this.getLink()\n if (this.target) {\n attrs.target = this.target\n }\n }\n\n if (this.sizeMobile && this.$breakpoint.isS) {\n size = this.sizeMobile\n }\n if (size && !this.isHeadline) {\n classNames.push(TXT_CLASS + size)\n }\n\n if (this.isWhite) {\n classNames.push(BUTTON_CLASS)\n classNames.push(WHITE_CLASS)\n } else if (this.isGold) {\n classNames.push(BUTTON_CLASS)\n classNames.push(GOLD_CLASS)\n } else if (this.isBuy) {\n classNames.push(BUTTON_CLASS)\n classNames.push(BUY_CLASS)\n } else if (this.isOutline) {\n classNames.push(BUTTON_CLASS)\n classNames.push(OUTLINE_CLASS)\n } else if (this.isLink) {\n classNames.push(LINK_CLASS)\n } else if (this.isBtn) {\n classNames.push(BUTTON_CLASS)\n }\n\n const classNamesContent = []\n if (this.isHeadline) {\n classNamesContent.push(HEADLINE_CLASS)\n }\n\n if (this.classNameContent) {\n classNamesContent.push(this.classNameContent)\n }\n\n let span\n if (this.content) {\n span = createElement('span',\n {\n attrs: {\n class: classNamesContent\n },\n domProps: {\n innerHTML: this.content\n }\n }\n )\n }\n\n let fontIcon\n if (this.fontIcon) {\n fontIcon = createElement('Visual',\n {\n attrs: {\n fontIcon: this.fontIcon\n }\n }\n )\n }\n\n return createElement(el,\n {\n class: classNames,\n attrs,\n on: {\n click: evt => this.handleClick(evt)\n }\n },\n [this.$slots.default, span, fontIcon, this.$slots.after]\n )\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/core/Cta/Cta.vue","function injectStyle (ssrContext) {\n require(\"!!../../../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1fd13a90\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../../vue-loader/lib/selector?type=styles&index=0!./Cta.vue\")\n}\nvar normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Cta.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Cta.vue\"\n/* template */\nvar __vue_template__ = null\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/core/Cta/Cta.vue\n// module id = null\n// module chunks = ","<template>\n <Popin class=\"g_popinHowto\"\n close-label=\"close\"\n v-model=\"popinHowtoOpened\"\n :is-open=\"false\"\n >\n <div class=\"g_popinHowto__content\">\n <Heading :level=\"2\" v-html=\"title\"/>\n <div class=\"g_popinHowto__points\">\n <div class=\"g_popinHowto__element\"\n v-for=\"(element, index) in list\"\n :key=\"index\"\n >\n <Visual class=\"g_popinHowto__icon\"\n :svg=\"$landing.getImgUrl({ folder: 'howto', name: element.icon, ext: 'svg' })\"\n />\n <Heading :level=\"3\">{{ element.header }}</Heading>\n <Paragraph class=\"g_popinHowto__text\" v-html=\"element.content\" size=\"L\" />\n </div>\n </div>\n <Cta class=\"g_btnGold g_btn\"\n is-btn\n type=\"button\"\n :content=\"cta.content\"\n :link=\"cta.link ? cta.link : '' \"\n @click=\"showMap\"\n />\n </div>\n </Popin>\n</template>\n\n<script>\nimport Tracking from 'nespresso-library/src/core/tracking'\n\nimport { getHtml } from 'nespresso-library/src/utils/dom'\nimport { toggleClass } from 'gaspard'\n\nimport Cta from 'gvue/src/core/Cta/Cta'\nimport Heading from 'gvue/src/core/Heading/Heading'\nimport Paragraph from 'gvue/src/core/Paragraph/Paragraph'\nimport Popin from 'gvue/src/core/Popin'\nimport Visual from 'gvue/src/core/Visual'\n\nexport default {\n name: 'PopinHowto',\n components: {\n Cta,\n Heading,\n Paragraph,\n Popin,\n Visual\n },\n props: {\n value: { type: Boolean, default: false }\n },\n data () {\n return {\n ...this.$json['howto'],\n popinHowtoOpened: false\n }\n },\n computed: {\n isSmall () {\n return this.$breakpoint.isS\n }\n },\n watch: {\n value (state) {\n this.popinHowtoOpened = state\n },\n popinHowtoOpened (state) {\n this.$emit('input', state)\n this.$nextTick(() => {\n this.preventScrollLock()\n })\n }\n },\n methods: {\n preventScrollLock () {\n if (!this.isSmall) {\n toggleClass(getHtml(), 'g_scrollLock', false)\n }\n },\n showMap () {\n Tracking.customEvent({\n category: 'User Engagement',\n action: 'Click',\n label: `${this.$landing.trackingLabelPrefix} - Find Nearest Recycling Point`,\n interaction: 0\n })\n\n if (!this.cta.link) {\n this.$emit('toggleMap', true)\n }\n }\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables.sass\n @import PopinHowto\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/PopinHowto/PopinHowto.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popin',{staticClass:\"g_popinHowto\",attrs:{\"close-label\":\"close\",\"is-open\":false},model:{value:(_vm.popinHowtoOpened),callback:function ($$v) {_vm.popinHowtoOpened=$$v},expression:\"popinHowtoOpened\"}},[_c('div',{staticClass:\"g_popinHowto__content\"},[_c('Heading',{attrs:{\"level\":2},domProps:{\"innerHTML\":_vm._s(_vm.title)}}),_vm._v(\" \"),_c('div',{staticClass:\"g_popinHowto__points\"},_vm._l((_vm.list),function(element,index){return _c('div',{key:index,staticClass:\"g_popinHowto__element\"},[_c('Visual',{staticClass:\"g_popinHowto__icon\",attrs:{\"svg\":_vm.$landing.getImgUrl({ folder: 'howto', name: element.icon, ext: 'svg' })}}),_vm._v(\" \"),_c('Heading',{attrs:{\"level\":3}},[_vm._v(_vm._s(element.header))]),_vm._v(\" \"),_c('Paragraph',{staticClass:\"g_popinHowto__text\",attrs:{\"size\":\"L\"},domProps:{\"innerHTML\":_vm._s(element.content)}})],1)}),0),_vm._v(\" \"),_c('Cta',{staticClass:\"g_btnGold g_btn\",attrs:{\"is-btn\":\"\",\"type\":\"button\",\"content\":_vm.cta.content,\"link\":_vm.cta.link ? _vm.cta.link : ''},on:{\"click\":_vm.showMap}})],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-1156c0df\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PopinHowto/PopinHowto.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-1156c0df\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PopinHowto.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./PopinHowto.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./PopinHowto.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-1156c0df\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./PopinHowto.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PopinHowto/PopinHowto.vue\n// module id = null\n// module chunks = ","export const roundFloat = value => Math.round(value * 1e2) / 1e2\r\n\r\nexport const lockScroll = isOpen => document.documentElement.classList[isOpen ? 'add' : 'remove']('g_scrollLock')\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/helpers/helpers.js","import Hammer from 'hammerjs'\r\n\r\nexport const Tap = {\r\n bind (el, binding) {\r\n if (typeof binding.value === 'function') {\r\n const mc = new Hammer(el)\r\n mc.on('tap', binding.value)\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/directives/tap.js","<template>\n <div class=\"g_media\">\n <div class=\"g_media__cover\" @click=\"openPopin\">\n <Heading v-if=\"isVideo\"\n class=\"g_media__action g_h3\"\n :level=\"3\"\n >\n {{ config.watchVideo }}\n <Visual :svg=\"$landing.getImgUrl({ name: 'icon-play', ext: 'svg' })\"/>\n </Heading>\n <img class=\"g_media__image\"\n v-img-src.sync=\"{ folder: 'split', name: media.id, ext: 'png' }\"\n />\n </div>\n </div>\n</template>\n\n<script>\nimport Heading from 'gvue/src/core/Heading/Heading'\nimport Visual from 'gvue/src/core/Visual'\n\nexport default {\n name: 'RecyclingMedia',\n components: {\n Heading,\n Visual\n },\n props: {\n media: { type: Object, required: true }\n },\n data () {\n return {\n config: this.$json.config\n }\n },\n computed: {\n isVideo () {\n return this.media.type === 'video'\n },\n video () {\n return {\n type: 'youtube',\n id: this.media.videoId,\n label: this.media.caption,\n subtitle: this.media.subtitle\n }\n }\n },\n methods: {\n openPopin () {\n if (this.isVideo) {\n this.$emit('popin', this.video)\n }\n }\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables.sass\n @import RecyclingMedia\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/RecyclingMedia/RecyclingMedia.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"g_media\"},[_c('div',{staticClass:\"g_media__cover\",on:{\"click\":_vm.openPopin}},[(_vm.isVideo)?_c('Heading',{staticClass:\"g_media__action g_h3\",attrs:{\"level\":3}},[_vm._v(\"\\n \"+_vm._s(_vm.config.watchVideo)+\"\\n \"),_c('Visual',{attrs:{\"svg\":_vm.$landing.getImgUrl({ name: 'icon-play', ext: 'svg' })}})],1):_vm._e(),_vm._v(\" \"),_c('img',{directives:[{name:\"img-src\",rawName:\"v-img-src.sync\",value:({ folder: 'split', name: _vm.media.id, ext: 'png' }),expression:\"{ folder: 'split', name: media.id, ext: 'png' }\",modifiers:{\"sync\":true}}],staticClass:\"g_media__image\"})],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-7e84b329\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/RecyclingMedia/RecyclingMedia.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7e84b329\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./RecyclingMedia.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingMedia.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingMedia.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-7e84b329\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./RecyclingMedia.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/RecyclingMedia/RecyclingMedia.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"g_slider\">\n <div class=\"swiper-container\" ref=\"swiper\">\n\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide\"\n v-for=\"(slide, index) in slider\"\n :key=\"index\"\n >\n <RecyclingMedia :media=\"slide\" @popin=\"openPopin\"/>\n <Paragraph class=\"g_slider__caption\"\n size=\"L\"\n v-if=\"!isSmall\"\n :content=\"slide.caption\"\n />\n </div>\n </div>\n\n <template v-if=\"!isSmall && extras\">\n <div class=\"swiper-pagination\"></div>\n <div class=\"g_slider__navigation\">\n <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div>\n </div>\n </template>\n\n </div>\n </div>\n</template>\n\n<script>\nimport Swiper from 'swiper'\n\nimport Cta from 'gvue/src/core/Cta/Cta'\nimport Heading from 'gvue/src/core/Heading/Heading'\nimport Paragraph from 'gvue/src/core/Paragraph'\nimport Visual from 'gvue/src/core/Visual'\n\nimport RecyclingMedia from '../RecyclingMedia/RecyclingMedia'\n\nexport default {\n name: 'HeroSwiper',\n components: {\n Cta,\n Heading,\n Paragraph,\n RecyclingMedia,\n Visual\n },\n props: {\n slider: { type: Array, required: true },\n extras: { type: Boolean, default: true }\n },\n data () {\n return {\n config: this.$json.config,\n swiper: null\n }\n },\n computed: {\n isSmall () {\n return this.$breakpoint.isS\n }\n },\n mounted () {\n const options = this.isSmall\n ? {\n slidesPerView: 1,\n effect: 'coverflow',\n coverflowEffect: {\n depth: 0,\n stretch: 20,\n slideShadows: false,\n rotate: 0\n }\n }\n : {\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n pagination: {\n el: '.swiper-pagination',\n type: 'fraction'\n },\n spaceBetween: 30\n }\n\n this.$nextTick(() => {\n this.swiper = new Swiper(this.$refs.swiper, options)\n })\n },\n methods: {\n openPopin (video) {\n this.$emit('popin', video)\n }\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables.sass\n @import HeroSwiper\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/HeroSwiper/HeroSwiper.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"g_slider\"},[_c('div',{ref:\"swiper\",staticClass:\"swiper-container\"},[_c('div',{staticClass:\"swiper-wrapper\"},_vm._l((_vm.slider),function(slide,index){return _c('div',{key:index,staticClass:\"swiper-slide\"},[_c('RecyclingMedia',{attrs:{\"media\":slide},on:{\"popin\":_vm.openPopin}}),_vm._v(\" \"),(!_vm.isSmall)?_c('Paragraph',{staticClass:\"g_slider__caption\",attrs:{\"size\":\"L\",\"content\":slide.caption}}):_vm._e()],1)}),0),_vm._v(\" \"),(!_vm.isSmall && _vm.extras)?[_c('div',{staticClass:\"swiper-pagination\"}),_vm._v(\" \"),_vm._m(0)]:_vm._e()],2)])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"g_slider__navigation\"},[_c('div',{staticClass:\"swiper-button-prev\"}),_vm._v(\" \"),_c('div',{staticClass:\"swiper-button-next\"})])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-11a19066\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/HeroSwiper/HeroSwiper.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-11a19066\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./HeroSwiper.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./HeroSwiper.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./HeroSwiper.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-11a19066\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./HeroSwiper.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/HeroSwiper/HeroSwiper.vue\n// module id = null\n// module chunks = ","<template>\n <div :class=\"['g_split', {open: isOpen}]\">\n <div :class=\"['g_splitPane', panel.id]\"\n :key=\"panel.id\"\n ref=\"panel\"\n v-for=\"panel in capsules.panels\"\n >\n <div class=\"g_splitPaneWrapper\">\n\n <div class=\"g_splitPaneCover\">\n <img class=\"g_splitPaneCover__figure\" v-img-src.sync=\"getBackground(panel.id)\"/>\n <div class=\"g_splitPaneCover__caption\">\n <Heading :level=\"3\">{{ panel.legend }}</Heading>\n <Cta font-icon=\"fn_angleLink\"\n is-link\n type=\"button\"\n :content=\"config.discover\"\n @click=\"playbackToOnClick(panel.id)\"\n />\n </div>\n </div>\n\n <div class=\"g_splitPaneDetails\">\n <div class=\"g_splitPaneDetails__title\">\n <Cta class=\"g_btnRoundS g_btnClose\"\n fontIcon=\"fn_close\"\n ref=\"close\"\n type=\"button\"\n @click=\"resetState\"\n />\n <Heading :level=\"2\">{{ panel.title }}</Heading>\n </div>\n <div class=\"g_splitPaneSections\">\n <div class=\"g_splitPaneSection\"\n v-for=\"section in panel.sections\"\n :key=\"section.icon\"\n >\n <div class=\"g_splitPaneSection__content\">\n <div class=\"g_splitPaneSection__text\">\n <Heading :level=\"3\">{{ section.title }}</Heading>\n <Paragraph size=\"XL\" :content=\"section.label\"/>\n <Paragraph size=\"M\" :content=\"section.text\"/>\n </div>\n <div class=\"g_splitPaneSection__cover\">\n <RecyclingMedia v-if=\"section.media\"\n :media=\"section.media\"\n @popin=\"openPopin\"\n />\n <HeroSwiper v-if=\"section.slider\"\n :slider=\"section.slider\"\n @popin=\"openPopin\"\n />\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"g_splitGutter\" ref=\"gutter\">\n <div class=\"g_splitGutter__line\"></div>\n <div class=\"g_splitGutter__handle\">\n <button class=\"g_splitGutter__button left\"\n v-tap=\"playbackToOnPan('ground', true).bind(this)\"\n ></button>\n <button class=\"g_splitGutter__button right\"\n v-tap=\"playbackToOnPan('aluminium', true).bind(this)\"\n ></button>\n </div>\n </div>\n <Popin v-if=\"video\"\n v-model=\"isPopinOpen\"\n class=\"g_popinVideo\"\n closeLabel=\"close\"\n :is-open=\"false\"\n >\n <EmbedVideo ref=\"video\"\n :auto-play=\"true\"\n :content=\"video\"\n controlPanel=\"1\"\n :trackingLabel=\"video.caption\"\n :ccPolicy=\"ccPolicy\"\n />\n </Popin>\n </div>\n</template>\n\n<script>\nimport Tracking from 'nespresso-library/src/core/tracking'\nimport TimelineLite from 'gsap/TimelineLite'\nimport 'gsap/CSSPlugin.js'\nimport Split from 'split.js'\nimport { debounce } from 'lodash'\n\nimport { lockScroll, roundFloat } from '../../helpers/helpers'\nimport { Tap } from '../../directives/tap'\n\nimport Cta from 'gvue/src/core/Cta/Cta'\nimport EmbedVideo from 'gvue/src/core/EmbedVideo'\nimport Heading from 'gvue/src/core/Heading/Heading'\nimport Paragraph from 'gvue/src/core/Paragraph'\nimport Popin from 'gvue/src/core/Popin'\n\nimport HeroSwiper from '../HeroSwiper/HeroSwiper'\nimport RecyclingMedia from '../RecyclingMedia/RecyclingMedia'\n\nimport smoothscroll from 'smoothscroll-polyfill'\n\n// kick off the polyfill!\nsmoothscroll.polyfill()\n\nconst INITIAL_PANEL_SIZE = 50\nconst STICKY_TRIGGER = 65\n\nexport default {\n name: 'SplitPane',\n components: {\n Cta,\n EmbedVideo,\n Heading,\n Paragraph,\n Popin,\n RecyclingMedia,\n HeroSwiper\n },\n directives: {\n Tap\n },\n props: {\n capsules: {\n type: Object,\n required: true\n },\n mode: {\n type: String,\n default: 'ol'\n }\n },\n data () {\n return {\n config: this.$json['config'],\n split: null,\n splitIndex: 0,\n splitPanels: null,\n timeline: new TimelineLite(),\n activePanel: 'none',\n isDragging: false,\n isOpen: false,\n swipers: [],\n splitPanelsSizes: {\n none: [INITIAL_PANEL_SIZE, INITIAL_PANEL_SIZE],\n aluminium: [100, 0],\n ground: [0, 100]\n },\n isPopinOpen: false,\n video: null,\n ccPolicy: null\n }\n },\n watch: {\n isPopinOpen (state) {\n if (!state) {\n this.video = null\n }\n }\n },\n mounted () {\n this.getHeaderDepth()\n this.bootstrap()\n window.addEventListener('resize', debounce(this.bootstrap, 100))\n },\n methods: {\n getBackground (image) {\n return {\n folder: 'split',\n name: `${image}-${this.mode}`,\n ext: 'png'\n }\n },\n getHeaderDepth () {\n this.splitIndex = document.querySelector('.Header__top-wrapper')\n ? window.getComputedStyle(document.querySelector('.Header__top-wrapper'))['zIndex'] : '2000'\n },\n bootstrap () {\n const panels = this.$refs.panel\n this.split = this.initSplit(panels)\n this.splitPanels = this.initPanels(panels)\n },\n\n initSplit (panels) {\n return Split(panels, {\n sizes: this.splitPanelsSizes.default,\n minSize: 0,\n gutterSize: 0,\n snapOffset: 0,\n gutter: () => this.$refs.gutter,\n onDrag: this.onDrag,\n onDragEnd: this.playbackToOnDragEnd\n })\n },\n initPanels (panels) {\n return panels\n .map(this.initPanelsWidth)\n .map(this.initPanelsTimeline)\n .reduce((panels, panel, index) => {\n const panelId = this.capsules.panels[index].id\n panels[panelId] = panel\n return panels\n }, {})\n },\n initPanelsWidth (panel, index) {\n const panelWidth = this.$el.offsetWidth\n panel.firstChild.style.width = `${panelWidth}px`\n return panel\n },\n initPanelsTimeline (panel, index) {\n const timeline = new TimelineLite()\n const isLeftPanel = index === 0\n const direction = isLeftPanel ? 1 : -1\n\n const panelCover = panel.querySelector('.g_splitPaneCover')\n const panelCoverFigure = panelCover.querySelector('.g_splitPaneCover__figure')\n const panelCoverCaption = panelCover.querySelector('.g_splitPaneCover__caption')\n\n const panelCoverTransition = {\n from: {alpha: 1, zIndex: 1},\n to: {alpha: 0, zIndex: 0}\n }\n const panelCoverFigureTransition = {\n from: {x: 0, alpha: 1},\n to: {x: 50 * direction, alpha: 0}\n }\n const panelCoverCaptionTransition = {\n from: {x: 0, alpha: 1},\n to: {x: 100 * direction, alpha: 0}\n }\n\n const panelDetails = panel.querySelector('.g_splitPaneDetails')\n const panelDetailsTitle = panel.querySelector('.g_splitPaneDetails__title .g_h2')\n const panelDetailsClose = panel.querySelector('.g_splitPaneDetails__title .g_btnClose')\n const panelDetailsTransition = {\n from: {x: (-200 * direction), alpha: 0, zIndex: 0},\n to: {x: 0, alpha: 1, zIndex: 1}\n }\n const panelDetailsTitleTransition = {\n from: {x: (-100 * direction), alpha: 0},\n to: {x: 0, alpha: 1}\n }\n const panelDetailsCloseTransition = {\n from: {x: (-30 * direction), alpha: 0},\n to: {x: 0, alpha: 1}\n }\n\n panel.timeline = timeline\n\n timeline\n .call(() => panel.classList.remove('active'))\n .fromTo(panelCover, 0.25, panelCoverTransition.from, panelCoverTransition.to, 0)\n .fromTo(panelCoverCaption, 0.25, panelCoverCaptionTransition.from, panelCoverCaptionTransition.to, 0.01)\n .fromTo(panelCoverFigure, 0.25, panelCoverFigureTransition.from, panelCoverFigureTransition.to, 0.02)\n .fromTo(panelDetails, 0.2, panelDetailsTransition.from, panelDetailsTransition.to, 0.1)\n .fromTo(panelDetailsTitle, 0.2, panelDetailsTitleTransition.from, panelDetailsTitleTransition.to, 0.12)\n .fromTo(panelDetailsClose, 0.2, panelDetailsCloseTransition.from, panelDetailsCloseTransition.to, 0.13)\n .call(() => panel.classList.add('active'))\n .pause()\n\n return panel\n },\n\n getRemainingDuration (sizes) {\n const delta = Math.max(...sizes, INITIAL_PANEL_SIZE)\n return roundFloat(delta * 0.005)\n },\n\n getPanelSizes (panel) {\n return this.splitPanelsSizes[panel]\n },\n\n onDrag () {\n this.isDragging = true\n this.updatePlaybackProgress()\n },\n\n playbackToOnClick (targetPane, slider) {\n if (!this.isDragging) {\n if (!this.isOpen) {\n const animationOptions = this.getAnimateOptionsByPane(targetPane)\n this.setState(targetPane, animationOptions)\n } else {\n this.resetState()\n }\n // tracking\n const linkOrSlider = slider ? 'Scroll Slider' : 'Link Click'\n const target = targetPane === 'ground' ? 'Coffee Ground' : 'Aluminum'\n Tracking.customEvent({\n category: 'User Engagement',\n action: 'Click',\n label: `${this.$landing.trackingLabelPrefix} - ${target} Discover More ${linkOrSlider}`,\n interaction: 0\n })\n }\n },\n playbackToOnPan (targetPane, slider) {\n return event => {\n this.playbackToOnClick(targetPane, slider)\n }\n },\n playbackToOnDragEnd (sizes) {\n if (this.isDragging) {\n const panel = this.setActivePanelFromSizes(sizes)\n const animationOptions = {\n duration: this.getRemainingDuration(sizes),\n startSizes: sizes,\n stopSizes: this.getPanelSizes(panel || 'none')\n }\n if (panel !== '') {\n this.setState(panel, animationOptions)\n } else {\n this.resetState(animationOptions)\n }\n }\n },\n\n setState (targetPane, animationOptions) {\n this.stickToTop()\n this.isOpen = true\n this.activePanel = targetPane\n this.updateHeight()\n this.animate(animationOptions)\n },\n getAnimateOptionsByPane (pane) {\n return {\n duration: 0.45,\n startSizes: this.split.getSizes(),\n stopSizes: this.getPanelSizes(pane)\n }\n },\n setActivePanelFromSizes (sizes) {\n const [left, right] = sizes\n let panel = ''\n if (left > STICKY_TRIGGER) {\n panel = 'aluminium'\n } else if (right > STICKY_TRIGGER) {\n panel = 'ground'\n }\n return panel\n },\n stickToTop () {\n const scrollOffset = window.pageYOffset\n const topOffset = scrollOffset + this.$el.getBoundingClientRect().top\n window.scrollTo({ top: topOffset, behavior: 'smooth' })\n },\n\n resetState (animationOptions = this.getAnimateOptionsByPane('none')) {\n this.scrollDetailsToTop(this.activePanel)\n this.isOpen = false\n this.activePanel = 'none'\n this.updateHeight()\n this.animate(animationOptions)\n },\n scrollDetailsToTop (panel) {\n if (panel !== 'none') {\n const panelToScroll = this.splitPanels[panel]\n panelToScroll.scrollTo({ top: 0, behavior: 'smooth' })\n }\n },\n\n updateHeight () {\n this.$el.style.height = this.isOpen ? '100vh' : null\n this.$el.style.zIndex = this.isOpen && !this.$breakpoint.isS ? this.splitIndex : null\n },\n animate ({startSizes, stopSizes, duration}) {\n stopSizes.onUpdate = () => {\n this.updateSizes(startSizes)\n }\n stopSizes.onComplete = () => {\n this.isDragging = false\n }\n this.timeline.clear()\n if (this.activePanel !== 'none') {\n this.timeline.call(() => lockScroll(true))\n }\n this.timeline.to(startSizes, duration, stopSizes)\n .call(() => lockScroll(this.isOpen))\n },\n updateSizes (sizes) {\n this.split.setSizes(sizes)\n this.updatePlaybackProgress()\n },\n updatePlaybackProgress () {\n const panelsSizes = this.split.getSizes()\n this.setPlaybackHead(panelsSizes)\n },\n setPlaybackHead (panelsSizes) {\n const panels = Object.values(this.splitPanels)\n panels.forEach((panel, index) => {\n const panelSize = panelsSizes[index]\n const delta = (INITIAL_PANEL_SIZE - panelSize) * -1\n const progress = delta > 0 ? roundFloat(delta / INITIAL_PANEL_SIZE) : 0\n panel.timeline.progress(progress)\n })\n },\n openPopin (video) {\n this.video = video\n this.isPopinOpen = true\n this.ccPolicy = video.subtitle ? { country: this.$landing.country, language: this.$landing.language } : null\n }\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables.sass\n @import SplitPane\n @import SplitPaneGutter\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/SplitPane/SplitPane.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:['g_split', {open: _vm.isOpen}]},[_vm._l((_vm.capsules.panels),function(panel){return _c('div',{key:panel.id,ref:\"panel\",refInFor:true,class:['g_splitPane', panel.id]},[_c('div',{staticClass:\"g_splitPaneWrapper\"},[_c('div',{staticClass:\"g_splitPaneCover\"},[_c('img',{directives:[{name:\"img-src\",rawName:\"v-img-src.sync\",value:(_vm.getBackground(panel.id)),expression:\"getBackground(panel.id)\",modifiers:{\"sync\":true}}],staticClass:\"g_splitPaneCover__figure\"}),_vm._v(\" \"),_c('div',{staticClass:\"g_splitPaneCover__caption\"},[_c('Heading',{attrs:{\"level\":3}},[_vm._v(_vm._s(panel.legend))]),_vm._v(\" \"),_c('Cta',{attrs:{\"font-icon\":\"fn_angleLink\",\"is-link\":\"\",\"type\":\"button\",\"content\":_vm.config.discover},on:{\"click\":function($event){return _vm.playbackToOnClick(panel.id)}}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"g_splitPaneDetails\"},[_c('div',{staticClass:\"g_splitPaneDetails__title\"},[_c('Cta',{ref:\"close\",refInFor:true,staticClass:\"g_btnRoundS g_btnClose\",attrs:{\"fontIcon\":\"fn_close\",\"type\":\"button\"},on:{\"click\":_vm.resetState}}),_vm._v(\" \"),_c('Heading',{attrs:{\"level\":2}},[_vm._v(_vm._s(panel.title))])],1),_vm._v(\" \"),_c('div',{staticClass:\"g_splitPaneSections\"},_vm._l((panel.sections),function(section){return _c('div',{key:section.icon,staticClass:\"g_splitPaneSection\"},[_c('div',{staticClass:\"g_splitPaneSection__content\"},[_c('div',{staticClass:\"g_splitPaneSection__text\"},[_c('Heading',{attrs:{\"level\":3}},[_vm._v(_vm._s(section.title))]),_vm._v(\" \"),_c('Paragraph',{attrs:{\"size\":\"XL\",\"content\":section.label}}),_vm._v(\" \"),_c('Paragraph',{attrs:{\"size\":\"M\",\"content\":section.text}})],1),_vm._v(\" \"),_c('div',{staticClass:\"g_splitPaneSection__cover\"},[(section.media)?_c('RecyclingMedia',{attrs:{\"media\":section.media},on:{\"popin\":_vm.openPopin}}):_vm._e(),_vm._v(\" \"),(section.slider)?_c('HeroSwiper',{attrs:{\"slider\":section.slider},on:{\"popin\":_vm.openPopin}}):_vm._e()],1)])])}),0)])])])}),_vm._v(\" \"),_c('div',{ref:\"gutter\",staticClass:\"g_splitGutter\"},[_c('div',{staticClass:\"g_splitGutter__line\"}),_vm._v(\" \"),_c('div',{staticClass:\"g_splitGutter__handle\"},[_c('button',{directives:[{name:\"tap\",rawName:\"v-tap\",value:(_vm.playbackToOnPan('ground', true).bind(this)),expression:\"playbackToOnPan('ground', true).bind(this)\"}],staticClass:\"g_splitGutter__button left\"}),_vm._v(\" \"),_c('button',{directives:[{name:\"tap\",rawName:\"v-tap\",value:(_vm.playbackToOnPan('aluminium', true).bind(this)),expression:\"playbackToOnPan('aluminium', true).bind(this)\"}],staticClass:\"g_splitGutter__button right\"})])]),_vm._v(\" \"),(_vm.video)?_c('Popin',{staticClass:\"g_popinVideo\",attrs:{\"closeLabel\":\"close\",\"is-open\":false},model:{value:(_vm.isPopinOpen),callback:function ($$v) {_vm.isPopinOpen=$$v},expression:\"isPopinOpen\"}},[_c('EmbedVideo',{ref:\"video\",attrs:{\"auto-play\":true,\"content\":_vm.video,\"controlPanel\":\"1\",\"trackingLabel\":_vm.video.caption,\"ccPolicy\":_vm.ccPolicy}})],1):_vm._e()],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-60ade426\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/SplitPane/SplitPane.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-60ade426\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./SplitPane.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./SplitPane.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./SplitPane.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-60ade426\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./SplitPane.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/SplitPane/SplitPane.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"v_map\" v-if=\"opened\" transition=\"fade\">\n <!-- google maps -->\n <ul id=\"shops\">\n <li class=\"boutique\"><a href=\"#\" class=\"active\" data-type=\"recycling\"><i>Nespresso</i> Boutiques</a></li>\n </ul>\n <div id=\"main\">\n <div id=\"search\">\n <div class=\"select-shop\" v-html=\"data.i18n.select\"></div>\n <div class=\"location\">\n <input id=\"location\" type=\"text\" value=\"\" :placeholder=\"data.i18n.placeholder\"/>\n <button id=\"btnClear\">×</button>\n </div>\n </div>\n <div id=\"map\"></div>\n </div>\n <i class=\"fn_more v_map__close\" v-on:click=\"close\"></i>\n <!-- end google maps locator -->\n </div>\n</template>\n\n<script>\n// import {$,jQuery} from 'jquery'\nimport GoogleMaps from './locator/googlemaps'\nconst googleMaps = new GoogleMaps()\n\nexport default {\n name: 'Map',\n props: {\n mapOpened: Boolean,\n jsonKey: {\n type: Object,\n required: true\n }\n },\n data () {\n // const json = this.$root.json\n // const landing = window.landing\n // landing.tracking.register({\n // name: 'customClick',\n // actionId: 'Map'\n // })\n return {\n opened: this.mapOpened,\n data: this.jsonKey\n // jsonConfig: json.config\n }\n },\n watch: {\n mapOpened () {\n this.opened = this.mapOpened\n this.toggle(this.opened)\n }\n },\n methods: {\n toggle (open) {\n if (open) {\n setTimeout(() => {\n googleMaps.loadData(this.data)\n }, 10)\n }\n },\n close () {\n this.$emit('toggleMap', false)\n }\n }\n}\n</script>\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables.sass\n @import \"Map\"\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/Map/Map.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.opened)?_c('div',{staticClass:\"v_map\",attrs:{\"transition\":\"fade\"}},[_vm._m(0),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"main\"}},[_c('div',{attrs:{\"id\":\"search\"}},[_c('div',{staticClass:\"select-shop\",domProps:{\"innerHTML\":_vm._s(_vm.data.i18n.select)}}),_vm._v(\" \"),_c('div',{staticClass:\"location\"},[_c('input',{attrs:{\"id\":\"location\",\"type\":\"text\",\"value\":\"\",\"placeholder\":_vm.data.i18n.placeholder}}),_vm._v(\" \"),_c('button',{attrs:{\"id\":\"btnClear\"}},[_vm._v(\"×\")])])]),_vm._v(\" \"),_c('div',{attrs:{\"id\":\"map\"}})]),_vm._v(\" \"),_c('i',{staticClass:\"fn_more v_map__close\",on:{\"click\":_vm.close}})]):_vm._e()}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{attrs:{\"id\":\"shops\"}},[_c('li',{staticClass:\"boutique\"},[_c('a',{staticClass:\"active\",attrs:{\"href\":\"#\",\"data-type\":\"recycling\"}},[_c('i',[_vm._v(\"Nespresso\")]),_vm._v(\" Boutiques\")])])])}]\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-657e07b6\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/Map/Map.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-657e07b6\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./Map.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Map.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./Map.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-657e07b6\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./Map.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/Map/Map.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"g_recyclingHero\"\n v-img-src=\"{ folder: 'backgrounds', name: 'hero' }\"\n :data-label=\"dataLabel\"\n :id=\"id\"\n >\n <div :class=\"['g_recyclingHero__split', {hide: popinHowtoOpened}]\">\n <Heading v-html=\"title\" :level=\"2\"/>\n <SplitPane :capsules=\"capsules\"\n :mode=\"mode\"\n />\n </div>\n <AddToCart\n @click=\"productClick\"\n class=\"g_recyclingHero__button\"\n :tracking=\"{ list: $landing.trackingLabelPrefix, position: 0 }\"\n :translations=\"$json.config.addToCart\"\n :product=\"product\"\n show-price\n v-bind=\"product.addToCart\" />\n <Cta class=\"g_btnHowto\"\n type=\"button\"\n v-if=\"ctaHowTo\"\n :is-btn=\"true\"\n @click=\"openHowtoPopin\"\n ><i class=\"fn_reset\"></i><span>{{ ctaHowTo }}</span></Cta>\n <PopinHowto v-model=\"popinHowtoOpened\" @toggleMap=\"toggleMap\"/>\n <Map :jsonKey=\"this.$json.howto.shopFinder\" :mapOpened=\"mapOpened\" @toggleMap=\"toggleMap\"></Map>\n </div>\n</template>\n\n<script>\nimport Tracking from 'nespresso-library/src/core/tracking'\nimport ZoneTracking from 'gvue/src/assets/js/mixins/ZoneTracking'\n\nimport AddToCart from 'nespresso-components/AddToCart'\n\nimport 'gsap/CSSPlugin.js'\nimport Cta from 'gvue/src/core/Cta/Cta'\nimport Heading from 'gvue/src/core/Heading/Heading'\nimport PopinHowto from '../PopinHowto/PopinHowto'\nimport SplitPane from '../SplitPane/SplitPane'\n\nimport Map from '../Map/Map'\n\nexport default {\n name: 'RecyclingHero',\n mixins: [ZoneTracking],\n components: {\n Heading,\n SplitPane,\n Cta,\n PopinHowto,\n AddToCart,\n Map\n },\n data () {\n return {\n ...this.$json['hero'],\n popinHowtoOpened: false,\n mapOpened: false\n }\n },\n methods: {\n openHowtoPopin () {\n this.popinHowtoOpened = true\n Tracking.customEvent({\n category: 'User Engagement',\n action: 'Click',\n label: `${this.$landing.trackingLabelPrefix} - How to Recycle My Capsules`,\n interaction: 0\n })\n },\n productClick (product) {\n this.$emit('atc-click', product)\n Tracking.productClick({\n products: [product],\n list: this.trackingProductClickLabel\n })\n },\n toggleMap (state) {\n this.mapOpened = state\n }\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables.sass\n @import RecyclingHero\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/RecyclingHero/RecyclingHero.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:\"img-src\",rawName:\"v-img-src\",value:({ folder: 'backgrounds', name: 'hero' }),expression:\"{ folder: 'backgrounds', name: 'hero' }\"}],staticClass:\"g_recyclingHero\",attrs:{\"data-label\":_vm.dataLabel,\"id\":_vm.id}},[_c('div',{class:['g_recyclingHero__split', {hide: _vm.popinHowtoOpened}]},[_c('Heading',{attrs:{\"level\":2},domProps:{\"innerHTML\":_vm._s(_vm.title)}}),_vm._v(\" \"),_c('SplitPane',{attrs:{\"capsules\":_vm.capsules,\"mode\":_vm.mode}})],1),_vm._v(\" \"),_c('AddToCart',_vm._b({staticClass:\"g_recyclingHero__button\",attrs:{\"tracking\":{ list: _vm.$landing.trackingLabelPrefix, position: 0 },\"translations\":_vm.$json.config.addToCart,\"product\":_vm.product,\"show-price\":\"\"},on:{\"click\":_vm.productClick}},'AddToCart',_vm.product.addToCart,false)),_vm._v(\" \"),(_vm.ctaHowTo)?_c('Cta',{staticClass:\"g_btnHowto\",attrs:{\"type\":\"button\",\"is-btn\":true},on:{\"click\":_vm.openHowtoPopin}},[_c('i',{staticClass:\"fn_reset\"}),_c('span',[_vm._v(_vm._s(_vm.ctaHowTo))])]):_vm._e(),_vm._v(\" \"),_c('PopinHowto',{on:{\"toggleMap\":_vm.toggleMap},model:{value:(_vm.popinHowtoOpened),callback:function ($$v) {_vm.popinHowtoOpened=$$v},expression:\"popinHowtoOpened\"}}),_vm._v(\" \"),_c('Map',{attrs:{\"jsonKey\":this.$json.howto.shopFinder,\"mapOpened\":_vm.mapOpened},on:{\"toggleMap\":_vm.toggleMap}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2d031e34\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/RecyclingHero/RecyclingHero.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2d031e34\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./RecyclingHero.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingHero.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingHero.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2d031e34\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./RecyclingHero.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/RecyclingHero/RecyclingHero.vue\n// module id = null\n// module chunks = ","<template>\n <Zone class=\"g_recyclingFaq\"\n :background-image=\"{ folder: 'backgrounds', name: image }\"\n :id=\"id\">\n <Heading v-html=\"title\" :level=\"2\"/>\n <Accordion :list=\"list\"/>\n </Zone>\n</template>\n\n<script>\nimport Accordion from 'gvue/src/components/Accordion'\nimport Heading from 'gvue/src/core/Heading'\nimport Zone from 'gvue/src/core/Zone'\n\nexport default {\n name: 'RecyclingFaq',\n components: {\n Accordion,\n Heading,\n Zone\n },\n data () {\n return {...this.$json['faq']}\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables\n @import RecyclingFaq\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/RecyclingFaq/RecyclingFaq.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Zone',{staticClass:\"g_recyclingFaq\",attrs:{\"background-image\":{ folder: 'backgrounds', name: _vm.image },\"id\":_vm.id}},[_c('Heading',{attrs:{\"level\":2},domProps:{\"innerHTML\":_vm._s(_vm.title)}}),_vm._v(\" \"),_c('Accordion',{attrs:{\"list\":_vm.list}})],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-77f0be6f\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/RecyclingFaq/RecyclingFaq.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-77f0be6f\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./RecyclingFaq.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingFaq.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingFaq.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-77f0be6f\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./RecyclingFaq.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/RecyclingFaq/RecyclingFaq.vue\n// module id = null\n// module chunks = ","<template>\n <Zone align=\"center\"\n class=\"g_recyclingOutro\"\n :background-image=\"{ commons: true, folder: 'why', name: 'why_nespresso' }\"\n :data-label=\"dataLabel\"\n :id=\"id\">\n <Heading v-html=\"title\" :level=\"2\" />\n <Paragraph size=\"XL\" :content=\"content\" />\n <Cta font-icon=\"fn_angleLink\"\n is-link=\"\"\n type=\"text\"\n v-if=\"cta.content\"\n :content=\"cta.content\"\n :link=\"cta.link\"\n :link-mobile=\"cta.link_mobile\"\n @click=\"readMore\"\n />\n <slot/>\n </Zone>\n</template>\n\n<script>\nimport Tracking from 'nespresso-library/src/core/tracking'\n\nimport Cta from 'gvue/src/core/Cta'\nimport Heading from 'gvue/src/core/Heading'\nimport Paragraph from 'gvue/src/core/Paragraph'\nimport Zone from 'gvue/src/core/Zone'\n\nexport default {\n name: 'RecyclingOutro',\n components: {\n Cta,\n Heading,\n Paragraph,\n Zone\n },\n data () {\n return {...this.$json['outro']}\n },\n methods: {\n readMore () {\n Tracking.customEvent({\n category: 'User Engagement',\n action: 'Click',\n label: `${this.$landing.trackingLabelPrefix} - Read More about Nespresso`,\n interaction: 0\n })\n }\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables.sass\n @import RecyclingOutro\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/RecyclingOutro/RecyclingOutro.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Zone',{staticClass:\"g_recyclingOutro\",attrs:{\"align\":\"center\",\"background-image\":{ commons: true, folder: 'why', name: 'why_nespresso' },\"data-label\":_vm.dataLabel,\"id\":_vm.id}},[_c('Heading',{attrs:{\"level\":2},domProps:{\"innerHTML\":_vm._s(_vm.title)}}),_vm._v(\" \"),_c('Paragraph',{attrs:{\"size\":\"XL\",\"content\":_vm.content}}),_vm._v(\" \"),(_vm.cta.content)?_c('Cta',{attrs:{\"font-icon\":\"fn_angleLink\",\"is-link\":\"\",\"type\":\"text\",\"content\":_vm.cta.content,\"link\":_vm.cta.link,\"link-mobile\":_vm.cta.link_mobile},on:{\"click\":_vm.readMore}}):_vm._e(),_vm._v(\" \"),_vm._t(\"default\")],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-67429a44\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/RecyclingOutro/RecyclingOutro.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-67429a44\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./RecyclingOutro.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingOutro.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingOutro.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-67429a44\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./RecyclingOutro.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/RecyclingOutro/RecyclingOutro.vue\n// module id = null\n// module chunks = ","<template>\n <Popin class=\"g_popinStory\"\n close-label=\"close\"\n v-model=\"popinStoryOpened\"\n :is-open=\"false\"\n >\n <div class=\"g_popinStory__content\">\n <div class=\"g_popinStory_header\">\n <div class=\"g_popinStory_cover\">\n <img v-img-src.sync=\"{ folder: 'slider', name: initiative.image }\"/>\n </div>\n <img class=\"g_popinStory_flag\" v-img-src.sync=\"{ folder: 'flag', name: initiative.country, ext: 'png' }\"/>\n </div>\n <Heading :level=\"2\">{{initiative.title}}</Heading>\n <Paragraph v-html=\"initiative.subtitle\" size=\"XL\"/>\n <div class=\"g_popinStory__slider\">\n <HeroSwiper :slider=\"initiative.slider\" :extras=\"false\" @popin=\"openPopin\"/>\n </div>\n <Paragraph v-html=\"initiative.text\" size=\"L\"/>\n <Cta class=\"g_btnGold\"\n type=\"text\"\n :is-btn=\"true\"\n :content=\"initiative.ctaFullStory.content\"\n :link=\"initiative.ctaFullStory.link\"\n target=\"_blank\"\n @click=\"seeTheStory\"\n />\n </div>\n </Popin>\n</template>\n\n<script>\nimport Tracking from 'nespresso-library/src/core/tracking'\nimport Cta from 'gvue/src/core/Cta/Cta'\nimport Heading from 'gvue/src/core/Heading/Heading'\nimport Paragraph from 'gvue/src/core/Paragraph/Paragraph'\nimport Popin from 'gvue/src/core/Popin'\nimport Visual from 'gvue/src/core/Visual'\nimport HeroSwiper from '../HeroSwiper/HeroSwiper'\n\nexport default {\n name: 'PopinStory',\n components: {\n HeroSwiper,\n Cta,\n Heading,\n Paragraph,\n Popin,\n Visual\n },\n props: {\n value: { type: Boolean, required: () => true },\n initiative: { type: Object, required: () => true }\n },\n data () {\n return {\n popinStoryOpened: this.value\n }\n },\n watch: {\n value (state) {\n this.popinStoryOpened = state\n },\n popinStoryOpened (state) {\n this.$emit('input', state)\n }\n },\n methods: {\n openPopin (video) {\n this.$emit('popin', video)\n },\n seeTheStory () {\n Tracking.customEvent({\n category: 'User Engagement',\n action: 'Click',\n label: `${this.$landing.trackingLabelPrefix} - See the Full Story`,\n interaction: 0\n })\n }\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables.sass\n @import PopinStory\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/PopinStory/PopinStory.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Popin',{staticClass:\"g_popinStory\",attrs:{\"close-label\":\"close\",\"is-open\":false},model:{value:(_vm.popinStoryOpened),callback:function ($$v) {_vm.popinStoryOpened=$$v},expression:\"popinStoryOpened\"}},[_c('div',{staticClass:\"g_popinStory__content\"},[_c('div',{staticClass:\"g_popinStory_header\"},[_c('div',{staticClass:\"g_popinStory_cover\"},[_c('img',{directives:[{name:\"img-src\",rawName:\"v-img-src.sync\",value:({ folder: 'slider', name: _vm.initiative.image }),expression:\"{ folder: 'slider', name: initiative.image }\",modifiers:{\"sync\":true}}]})]),_vm._v(\" \"),_c('img',{directives:[{name:\"img-src\",rawName:\"v-img-src.sync\",value:({ folder: 'flag', name: _vm.initiative.country, ext: 'png' }),expression:\"{ folder: 'flag', name: initiative.country, ext: 'png' }\",modifiers:{\"sync\":true}}],staticClass:\"g_popinStory_flag\"})]),_vm._v(\" \"),_c('Heading',{attrs:{\"level\":2}},[_vm._v(_vm._s(_vm.initiative.title))]),_vm._v(\" \"),_c('Paragraph',{attrs:{\"size\":\"XL\"},domProps:{\"innerHTML\":_vm._s(_vm.initiative.subtitle)}}),_vm._v(\" \"),_c('div',{staticClass:\"g_popinStory__slider\"},[_c('HeroSwiper',{attrs:{\"slider\":_vm.initiative.slider,\"extras\":false},on:{\"popin\":_vm.openPopin}})],1),_vm._v(\" \"),_c('Paragraph',{attrs:{\"size\":\"L\"},domProps:{\"innerHTML\":_vm._s(_vm.initiative.text)}}),_vm._v(\" \"),_c('Cta',{staticClass:\"g_btnGold\",attrs:{\"type\":\"text\",\"is-btn\":true,\"content\":_vm.initiative.ctaFullStory.content,\"link\":_vm.initiative.ctaFullStory.link,\"target\":\"_blank\"},on:{\"click\":_vm.seeTheStory}})],1)])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-0af5da76\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/PopinStory/PopinStory.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-0af5da76\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./PopinStory.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./PopinStory.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./PopinStory.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-0af5da76\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./PopinStory.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/PopinStory/PopinStory.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"g_recyclingEffort\" :data-label=\"dataLabel\" :id=\"id\">\n <Heading v-html=\"title\" :level=\"2\" />\n <div class=\"swiper-container\" ref=\"swiper\">\n <div class=\"swiper-wrapper\">\n <div class=\"swiper-slide g_recyclingEffort_slide\"\n v-for=\"(initiative, index) in carousel\"\n :key=\"index\"\n >\n <div class=\"g_recyclingEffort_header\">\n <div class=\"g_recyclingEffort_cover\">\n <img v-img-src.sync=\"{ folder: 'slider', name: initiative.image }\"/>\n </div>\n <img class=\"g_recyclingEffort_flag\" v-img-src=\"{ folder: 'flag', name: initiative.country, ext: 'png' }\"/>\n </div>\n <div class=\"g_recyclingEffort_legend\">\n <Heading :level=\"3\">{{initiative.title}}</Heading>\n <Paragraph v-html=\"initiative.text\" size=\"S\"/>\n <Cta class=\"g_btnGold\"\n type=\"button\"\n v-if=\"initiative.cta\"\n :is-btn=\"true\"\n :content=\"initiative.cta\"\n @click=\"openStoryPopin(initiative)\"\n />\n </div>\n </div>\n </div>\n <div class=\"swiper-button-prev\"></div>\n <div class=\"swiper-button-next\"></div>\n </div>\n <PopinStory v-if=\"activeInitiative\"\n v-model=\"popinStoryOpened\"\n :initiative=\"activeInitiative\"\n @popin=\"openPopin\"\n />\n <Popin v-if=\"video\"\n v-model=\"isPopinOpen\"\n class=\"g_popinVideo\"\n closeLabel=\"close\"\n :is-open=\"false\"\n >\n <EmbedVideo ref=\"video\"\n :auto-play=\"true\"\n :content=\"video\"\n controlPanel=\"1\"\n :ccPolicy=\"ccPolicy\"\n />\n </Popin>\n </div>\n</template>\n\n<script>\nimport Tracking from 'nespresso-library/src/core/tracking'\nimport ZoneTracking from 'gvue/src/assets/js/mixins/ZoneTracking'\nimport Swiper from 'swiper'\n\nimport Cta from 'gvue/src/core/Cta/Cta'\nimport Heading from 'gvue/src/core/Heading/Heading'\nimport Paragraph from 'gvue/src/core/Paragraph/Paragraph'\nimport PopinStory from '../PopinStory/PopinStory'\n\nimport Popin from 'gvue/src/core/Popin'\nimport EmbedVideo from 'gvue/src/core/EmbedVideo'\n\nexport default {\n name: 'RecyclingEffort',\n mixins: [ZoneTracking],\n components: {\n Cta,\n Heading,\n Paragraph,\n PopinStory,\n Popin,\n EmbedVideo\n },\n data () {\n return {\n ...this.$json['effort'],\n popinStoryOpened: false,\n activeInitiative: null,\n isPopinOpen: false,\n video: null,\n swiperIndex: 0,\n ccPolicy: null\n }\n },\n watch: {\n isPopinOpen (state) {\n if (!state) {\n this.video = null\n }\n }\n },\n mounted () {\n const self = this\n const SLIDES_PER_VIEW = 5\n const isSmall = self.isSmall\n\n let swiperOptions = {\n slidesPerView: SLIDES_PER_VIEW,\n simulateTouch: true,\n centeredSlides: true,\n watchSlidesProgress: true,\n slideToClickedSlide: true,\n navigation: {\n nextEl: '.swiper-button-next',\n prevEl: '.swiper-button-prev'\n },\n on: {\n progress () {\n const slides = [...this.slides]\n slides.forEach(slide => {\n const offset = Math.abs(slide.progress)\n const alphaOffset = 1 - (0.4 * offset)\n const scaleOffset = 1 - ((isSmall ? 0.125 : 0.2) * offset)\n const positionOffset = slide.progress * (((1 - scaleOffset) / 2) * 100)\n const translateValue = isSmall ? positionOffset * 6.5 : positionOffset\n slide.style.opacity = alphaOffset\n slide.style.transform = `scale(${scaleOffset}) translateX(${translateValue}%)`\n })\n },\n touchStart () {\n const slides = [...this.slides]\n slides.forEach(slide => {\n slide.style.transition = ''\n })\n },\n touchEnd () {\n const slides = [...this.slides]\n slides.forEach(slide => {\n slide.style.transition = `200ms`\n })\n },\n transitionEnd () {\n const slidesArray = self.$json.effort.carousel\n if (slidesArray.length && this.activeIndex !== this.swiperIndex) {\n const initiative = slidesArray[this.activeIndex]\n const country = initiative.country.charAt(0).toUpperCase() + initiative.country.slice(1)\n Tracking.customEvent({\n category: 'User Engagement',\n action: 'Click',\n label: `${self.$landing.trackingLabelPrefix} - ${country} Discover More Arrow Click`,\n interaction: 0\n })\n this.swiperIndex = this.activeIndex\n }\n }\n }\n }\n if (this.$breakpoint.isS) {\n swiperOptions = {\n ...swiperOptions,\n slidesPerView: 1,\n coverflowEffect: {\n ...swiperOptions.coverflowEffect,\n stretch: 100\n },\n spaceBetween: 40\n }\n }\n this.swiper = new Swiper(this.$refs.swiper, swiperOptions)\n },\n computed: {\n isSmall () {\n return window.innerWidth < 700\n }\n },\n methods: {\n openStoryPopin (initiative) {\n this.activeInitiative = initiative\n this.popinStoryOpened = true\n // Tracking - capitalize country\n const country = initiative.country.charAt(0).toUpperCase() + initiative.country.slice(1)\n Tracking.customEvent({\n category: 'User Engagement',\n action: 'Click',\n label: `${this.$landing.trackingLabelPrefix} - ${country} Discover More Link Click`,\n interaction: 0\n })\n },\n openPopin (video) {\n this.video = video\n this.isPopinOpen = true\n this.ccPolicy = video.subtitle ? { country: this.$landing.country, language: this.$landing.language } : null\n }\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n @import ~assets/sass/recycling_variables.sass\n @import RecyclingEffort\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/components/RecyclingEffort/RecyclingEffort.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"g_recyclingEffort\",attrs:{\"data-label\":_vm.dataLabel,\"id\":_vm.id}},[_c('Heading',{attrs:{\"level\":2},domProps:{\"innerHTML\":_vm._s(_vm.title)}}),_vm._v(\" \"),_c('div',{ref:\"swiper\",staticClass:\"swiper-container\"},[_c('div',{staticClass:\"swiper-wrapper\"},_vm._l((_vm.carousel),function(initiative,index){return _c('div',{key:index,staticClass:\"swiper-slide g_recyclingEffort_slide\"},[_c('div',{staticClass:\"g_recyclingEffort_header\"},[_c('div',{staticClass:\"g_recyclingEffort_cover\"},[_c('img',{directives:[{name:\"img-src\",rawName:\"v-img-src.sync\",value:({ folder: 'slider', name: initiative.image }),expression:\"{ folder: 'slider', name: initiative.image }\",modifiers:{\"sync\":true}}]})]),_vm._v(\" \"),_c('img',{directives:[{name:\"img-src\",rawName:\"v-img-src\",value:({ folder: 'flag', name: initiative.country, ext: 'png' }),expression:\"{ folder: 'flag', name: initiative.country, ext: 'png' }\"}],staticClass:\"g_recyclingEffort_flag\"})]),_vm._v(\" \"),_c('div',{staticClass:\"g_recyclingEffort_legend\"},[_c('Heading',{attrs:{\"level\":3}},[_vm._v(_vm._s(initiative.title))]),_vm._v(\" \"),_c('Paragraph',{attrs:{\"size\":\"S\"},domProps:{\"innerHTML\":_vm._s(initiative.text)}}),_vm._v(\" \"),(initiative.cta)?_c('Cta',{staticClass:\"g_btnGold\",attrs:{\"type\":\"button\",\"is-btn\":true,\"content\":initiative.cta},on:{\"click\":function($event){return _vm.openStoryPopin(initiative)}}}):_vm._e()],1)])}),0),_vm._v(\" \"),_c('div',{staticClass:\"swiper-button-prev\"}),_vm._v(\" \"),_c('div',{staticClass:\"swiper-button-next\"})]),_vm._v(\" \"),(_vm.activeInitiative)?_c('PopinStory',{attrs:{\"initiative\":_vm.activeInitiative},on:{\"popin\":_vm.openPopin},model:{value:(_vm.popinStoryOpened),callback:function ($$v) {_vm.popinStoryOpened=$$v},expression:\"popinStoryOpened\"}}):_vm._e(),_vm._v(\" \"),(_vm.video)?_c('Popin',{staticClass:\"g_popinVideo\",attrs:{\"closeLabel\":\"close\",\"is-open\":false},model:{value:(_vm.isPopinOpen),callback:function ($$v) {_vm.isPopinOpen=$$v},expression:\"isPopinOpen\"}},[_c('EmbedVideo',{ref:\"video\",attrs:{\"auto-play\":true,\"content\":_vm.video,\"controlPanel\":\"1\",\"ccPolicy\":_vm.ccPolicy}})],1):_vm._e()],1)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-d9d5c53e\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/components/RecyclingEffort/RecyclingEffort.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-d9d5c53e\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../node_modules/vue-loader/lib/selector?type=styles&index=0!./RecyclingEffort.vue\")\n}\nvar normalizeComponent = require(\"!../../../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingEffort.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../node_modules/vue-loader/lib/selector?type=script&index=0!./RecyclingEffort.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-d9d5c53e\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../node_modules/vue-loader/lib/selector?type=template&index=0!./RecyclingEffort.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/components/RecyclingEffort/RecyclingEffort.vue\n// module id = null\n// module chunks = ","<template>\n <div class=\"g g_recycling\" v-if=\"$json\">\n <RecyclingHero/>\n <RecyclingEffort/>\n <RecyclingFaq/>\n <RecyclingOutro/>\n <div v-if=\"!this.$breakpoint.isS\">\n <Services :data=\"$json.services\"/>\n </div>\n </div>\n</template>\n\n<script>\nimport Services from 'gvue/src/components/Services'\n\nimport RecyclingHero from './components/RecyclingHero/RecyclingHero'\nimport RecyclingFaq from './components/RecyclingFaq/RecyclingFaq'\nimport RecyclingOutro from './components/RecyclingOutro/RecyclingOutro'\nimport RecyclingEffort from './components/RecyclingEffort/RecyclingEffort'\n\nexport default {\n name: 'NespressoRecycling',\n components: {\n RecyclingHero,\n RecyclingEffort,\n RecyclingFaq,\n RecyclingOutro,\n Services\n }\n}\n</script>\n\n<style lang=\"sass\">\n @import ~assets/sass/common\n @import ~assets/sass/main\n @import ~assets/sass/recycling_variables\n @import ~assets/sass/recycling\n</style>\n\n\n\n// WEBPACK FOOTER //\n// src/App.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.$json)?_c('div',{staticClass:\"g g_recycling\"},[_c('RecyclingHero'),_vm._v(\" \"),_c('RecyclingEffort'),_vm._v(\" \"),_c('RecyclingFaq'),_vm._v(\" \"),_c('RecyclingOutro'),_vm._v(\" \"),(!this.$breakpoint.isS)?_c('div',[_c('Services',{attrs:{\"data\":_vm.$json.services}})],1):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-2d2dda8d\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./src/App.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../node_modules/extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../node_modules/vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-2d2dda8d\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../node_modules/vue-loader/lib/selector?type=styles&index=0!./App.vue\")\n}\nvar normalizeComponent = require(\"!../node_modules/vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\nimport __vue_script__ from \"!!babel-loader!../node_modules/vue-loader/lib/selector?type=script&index=0!./App.vue\"\n/* template */\nimport __vue_template__ from \"!!../node_modules/vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-2d2dda8d\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../node_modules/vue-loader/lib/selector?type=template&index=0!./App.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/App.vue\n// module id = null\n// module chunks = ","import 'assets/js/bootstrap'\n\nimport Vue from 'vue'\nimport VueLanding from 'nespresso-components/landing/VueLanding'\nimport VueMedia from 'nespresso-components/media/VueMedia'\n\nimport App from './App'\n\nVue.config.performance = process.env.NODE_ENV === 'development'\nVue.config.devtools = process.env.NODE_ENV === 'development'\nVue.config.productionTip = process.env.NODE_ENV === 'development'\n\nVue.use(VueLanding, {\n project: 'recycling2019',\n landing: 'recycling2019',\n projectPath: 'recycling2019',\n trackingLabelPrefix: 'Recycling Page',\n sectionTrackingLabels: {\n effort: 'Recycling, a global effort',\n outro: 'Nespresso. What else?'\n },\n skipMutationKeys: [\n 'standard'\n ]\n})\nVue.use(VueMedia, {\n breakpoints: {\n S: 767,\n L: 1920,\n XL: Infinity\n },\n getImgSuffix (breakpoint) {\n return `_${breakpoint.name.toUpperCase()}`\n }\n})\n\n/* eslint-disable no-new */\nnew Vue({\n el: '#agilityApp',\n components: { App },\n template: '<App/>'\n})\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","<style lang=\"sass\">\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n$cta_has_btnRound: true !important\n$cta_has_btnRound_S: true !important\n@import ../Cta/sass/btnRound\n@import sass/scrollLock\n@import sass/variables\n@import sass/common\n@import sass/table\n</style>\n\n<template lang=\"html\">\n <div class=\"g_popin\" :class=\"{ g_popinOpened: isOpen, g_popinSlide: isSlide }\" role=\"alertdialog\">\n <div class=\"g_popinOverlay\"/>\n <div class=\"g_popinFixed\">\n <div class=\"g_popinRestrict g_light\">\n <template v-if=\"isOpen\">\n <Cta\n ref=\"close\"\n class=\"g_btnRoundS g_btnClose\"\n type=\"button\"\n fontIcon=\"fn_close\"\n @click=\"close\"\n :content=\"closeLabel\"\n :aria-label=\"closeLabel\"/>\n <div class=\"g_popinContent\">\n <slot/>\n </div>\n </template>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { toggleClass, off, on } from 'gaspard'\nimport { constants } from '../../assets/js/utils'\nimport Cta from '../Cta'\n\nexport default {\n model: {\n prop: 'isOpen'\n },\n components: {\n Cta\n },\n props: {\n isOpen: {\n type: Boolean,\n required: true\n },\n closeLabel: {\n type: String,\n required: true\n }\n },\n data () {\n return {\n isSlide: false\n }\n },\n watch: {\n isOpen (value) {\n toggleClass(document.documentElement, 'g_scrollLock', value)\n\n if (value) {\n this.bindEvent()\n this.$nextTick(() => this.$refs.close.$el.focus())\n } else {\n this.$emit('focusBack')\n this.unbindEvent()\n }\n\n this.$emit('change', value)\n }\n },\n beforeDestroy () {\n this.close()\n },\n methods: {\n bindEvent () {\n on(document, 'keyup', this.closeDiscoverEchap)\n on(document, 'click', this.closeDiscoverOverlay)\n },\n unbindEvent () {\n off(document, 'keyup', this.closeDiscoverEchap)\n off(document, 'click', this.closeDiscoverOverlay)\n },\n closeDiscoverEchap (e) {\n const keyCode = e.keyCode || e.which\n if (keyCode === constants.ESC) {\n e.preventDefault()\n this.close()\n return false\n }\n },\n closeDiscoverOverlay (e) {\n const { className } = e.target\n if (['g_popinFixed', 'g_popinOverlay'].indexOf(className) > -1) {\n this.close()\n }\n },\n close () {\n this.unbindEvent()\n this.$emit('input', false)\n },\n slide () {\n if (!this.$breakpoint.isS) {\n return\n }\n this.isSlide = true\n },\n unslide () {\n this.isSlide = false\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/core/Popin/Popin.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"g_popin\",class:{ g_popinOpened: _vm.isOpen, g_popinSlide: _vm.isSlide },attrs:{\"role\":\"alertdialog\"}},[_c('div',{staticClass:\"g_popinOverlay\"}),_vm._v(\" \"),_c('div',{staticClass:\"g_popinFixed\"},[_c('div',{staticClass:\"g_popinRestrict g_light\"},[(_vm.isOpen)?[_c('Cta',{ref:\"close\",staticClass:\"g_btnRoundS g_btnClose\",attrs:{\"type\":\"button\",\"fontIcon\":\"fn_close\",\"content\":_vm.closeLabel,\"aria-label\":_vm.closeLabel},on:{\"click\":_vm.close}}),_vm._v(\" \"),_c('div',{staticClass:\"g_popinContent\"},[_vm._t(\"default\")],2)]:_vm._e()],2)])])}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-6e9b0806\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/gvue/src/core/Popin/Popin.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-6e9b0806\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../../vue-loader/lib/selector?type=styles&index=0!./Popin.vue\")\n}\nvar normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Popin.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Popin.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-6e9b0806\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../vue-loader/lib/selector?type=template&index=0!./Popin.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/core/Popin/Popin.vue\n// module id = null\n// module chunks = ","<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import ~nespresso-bi/brand/variables\n $cta_has_btn: true !important\n $cta_has_btnBuy: true !important\n @import ~gvue/src/core/Cta/sass/btn\n @import variables\n @import addToCart\n</style>\n\n<template>\n <div class=\"g_addToCart\" :class=\"{g_mini: modifier === constants.MODIFIER_MINI, g_miniMobile: modifier === constants.MODIFIER_MINI_MOBILE, g_miniDesktop: modifier === constants.MODIFIER_MINI_DESKTOP}\">\n <template v-if=\"product.data && checkProductPriceExist(product.data)\">\n <Phantom\n v-if=\"hasPhantom\"\n :showPrice=\"showPrice\"\n :price=\"product.data.displayedPrice\"\n :quantity=\"activeQuantity\"\n :label=\"btnLabelPhantom\" />\n <div class=\"g_priceAndButton track-impression-product\" :data-product-item-id=\"product.data.internationalId\" :data-product-section=\"tracking.list\" :data-product-position=\"tracking.position + 1\">\n <p class=\"g_productPrice\" v-text=\"product.data.displayedPrice\" v-show=\"showPrice\" :data-disabled=\"!product.data.inStock\"></p>\n <MosaicATC\n v-if=\"isDesktop && translations.useMosaicOne\"\n :quantity=\"quantity\"\n :product=\"product\"\n :labelAdd=\"btnLabelAdd\"\n :labelUpdate=\"btnLabelUpdate\"\n :step=\"quantityStep\"\n :useCustomThirdLine=\"useCustomThirdLine\"\n :customThirdLine=\"customThirdLine\" />\n <div v-else-if=\"!translations.useMosaicOne\" class=\"g_addToCartCustom\">\n <button\n ref=\"button\"\n @click=\"addToCart($event)\"\n class=\"g_btn g_btnBuy\"\n :class=\"{g_quantitySelectorOpened: quantitySelectorOpened, g_update: activeQuantity !== 0, g_materialPlay: materialPlay}\"\n :disabled=\"!product.data.inStock\">\n <i class=\"fn_basket\" aria-hidden=\"true\" :class=\"{g_quantity: activeQuantity}\"><span v-text=\"activeQuantity\"></span></i>\n <span class=\"g_visually_hidden\" v-html=\"voiceAddToCart\"></span>\n <span class=\"g_labelAdd\" aria-hidden=\"true\" v-text=\"btnLabelAdd\"></span>\n <span class=\"g_labelUpdate\" aria-hidden=\"true\" v-text=\"btnLabelUpdate\"></span>\n <span class=\"g_labelPhantom\" aria-hidden=\"true\" v-text=\"btnLabelPhantom\"></span>\n <i class=\"fn_more\"></i>\n </button>\n <span tabindex=\"-1\" ref=\"focusForAddOneToCart\" />\n <QuantitySelector\n v-if=\"type === 'quantitySelector' && quantities\"\n :step=\"quantityStep\"\n :product=\"product.data\"\n :quantities=\"quantities\"\n :activeQuantity=\"activeQuantity\"\n @setQuantity=\"setQuantity\"\n :opened=\"quantitySelectorOpened\"\n @update:opened=\"val => quantitySelectorOpened = val\"\n :voices=\"translations.voices\"\n :btnLabelAdd=\"btnLabelAdd\"\n :showPriceInQS=\"showPriceInQS\" />\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script>\nimport Vue from 'vue'\nimport { find, html } from 'gaspard'\nimport xhr from 'nespresso-library/src/utils/xhr'\nimport dataLayer from 'nespresso-library/src/core/dataLayer'\nimport isInApp from 'nespresso-library/src/core/isInApp'\nimport Nespresso from 'nespresso-library/src/core/api'\nimport Tracking from 'nespresso-library/src/core/tracking'\nimport getIn from 'nespresso-library/src/utils/getIn'\nimport constants from './constants'\n\nconst nespresso = new Nespresso()\nconst eventHub = new Vue()\n\nexport default {\n props: {\n tracking: {\n type: Object,\n validator (value) {\n return typeof value.list === 'string' && typeof value.position === 'number'\n }\n },\n translations: {\n type: Object,\n required: true\n },\n product: {\n type: Object,\n required: true\n },\n type: {\n type: String,\n required: true,\n validator (value) {\n return value === 'quantitySelector' || value === 'addOneToCart'\n }\n },\n quantity: {\n type: Number,\n default: 0\n },\n step: Number,\n customThirdLine: String,\n hasPhantom: Boolean,\n showPrice: {\n type: Boolean,\n default: true\n },\n showPriceInQS: {\n type: Boolean,\n default: false\n },\n modifier: {\n type: [Boolean, String],\n default: false\n },\n amount: {\n type: Number,\n default: null\n }\n },\n data () {\n return {\n constants,\n isDesktop: dataLayer.isMosaic || dataLayer.isResponsive,\n isMobile: dataLayer.isMobile,\n isClassic: dataLayer.isClassic,\n quantitySelectorOpened: false,\n activeQuantity: null,\n quantities: [],\n btnLabelAdd: null,\n btnLabelUpdate: null,\n btnLabelPhantom: null,\n voiceAddToCart: null,\n materialPlay: false,\n quantityStep: null,\n useCustomThirdLine: !!this.customThirdLine\n }\n },\n created () {\n this.getProduct()\n this._cartEvent = ['cart.update', () => this.setActiveQuantity(true)]\n if (this.isDesktop) {\n try {\n window.napi.data().on(...this._cartEvent)\n } catch (e) {}\n } else {\n eventHub.$on(...this._cartEvent)\n }\n if (this.translations.useMosaicOne) {\n Vue.component('MosaicATC', () => import(/* webpackChunkName: \"MosaicATC\" */ './MosaicATC').then(m => m.default))\n }\n if (this.hasPhantom) {\n Vue.component('Phantom', () => import(/* webpackChunkName: \"Phantom\" */ './Phantom').then(m => m.default))\n }\n },\n watch: {\n product (value, oldValue) {\n if (value.sku !== oldValue.sku) {\n this.getProduct()\n }\n },\n type: {\n immediate: true,\n handler (value) {\n if (value === 'quantitySelector') {\n Vue.component('QuantitySelector', () => import(/* webpackChunkName: \"QuantitySelector\" */ './QuantitySelector').then(m => m.default))\n }\n }\n }\n },\n methods: {\n buildQuantities () {\n let quantities\n if (this.type === 'quantitySelector') {\n quantities = []\n const isCapsule = this.product.data.type === 'capsule'\n let step = this.step\n if (!step) {\n if (isCapsule) {\n step = 10\n } else {\n step = 1\n }\n }\n this.quantityStep = step\n\n let thirdLineQuantities\n if (this.customThirdLine) {\n thirdLineQuantities = this.customThirdLine.split(',').map(quantity => Number(quantity.trim()))\n }\n if (isCapsule &&\n ((thirdLineQuantities && (thirdLineQuantities.length !== 5 || thirdLineQuantities.some(quantity => isNaN(quantity)))))) {\n const capsulesThirdLineQuantities = getIn('config.capsulesThirdLineQuantities', window)\n if (capsulesThirdLineQuantities) {\n thirdLineQuantities = capsulesThirdLineQuantities.split(',').map(quantity => Number(quantity))\n } else {\n thirdLineQuantities = [100, 150, 200, 250, 300]\n }\n }\n\n const amountOfColumns = 5\n const amountOfOptions = 15\n let col = 0\n for (let i = 0; i < amountOfOptions; i++) {\n if (i % amountOfColumns === 0) {\n col = 0\n }\n if (amountOfOptions > 10 && i > 9 && thirdLineQuantities) {\n quantities.push(Number(thirdLineQuantities[col]))\n } else if (i < amountOfOptions) {\n quantities.push(i * step)\n }\n col++\n }\n }\n return quantities\n },\n init () {\n Tracking.scrollImpression({\n product: this.product\n }).then(() => this.$nextTick(() => {\n this.$emit('data-loaded', this.product)\n Tracking.itemDisplay({\n action: 'Product View',\n element: this.$el\n })\n }))\n this.quantities = this.buildQuantities()\n this.setActiveQuantity()\n },\n getProduct () {\n if (this.product.data) {\n this.init()\n } else {\n nespresso\n .getProduct(this.product.sku)\n .then(data => {\n this.$set(this.product, 'data', data)\n this.init()\n })\n }\n },\n addToCart (e) {\n this.$emit('click', this.product)\n const rect = e.currentTarget.getBoundingClientRect()\n document.documentElement.style.setProperty('--mouseX', Math.round(e.clientX / window.innerWidth * 100) + '%')\n document.documentElement.style.setProperty('--mouseY', Math.round(e.clientY / window.innerHeight * 100) + '%')\n document.documentElement.style.setProperty('--relativeMouseX', Math.round((e.clientX - rect.left) / rect.width * 100) + '%')\n document.documentElement.style.setProperty('--relativeMouseY', Math.round((e.clientY - rect.top ) / rect.height * 100) + '%')\n this.materialPlay = true\n setTimeout(() => (this.materialPlay = false), 300)\n if (this.quantity) {\n this.setQuantity(this.quantity)\n } else {\n this.quantitySelectorOpened = !this.quantitySelectorOpened\n }\n },\n dispatchAddedToCart (previousQuantity) {\n this.$emit('addedToCart', this.product, this.activeQuantity, previousQuantity)\n },\n setQuantity (quantity, isCustomQuantityButton) {\n // Give the focus back to the button in order to read the updated quantity for screen readers\n this.$refs.focusForAddOneToCart.focus()\n window.setTimeout(() => this.$refs.button.focus(), 100)\n\n const previousQuantity = this.activeQuantity\n this.quantitySelectorOpened = false\n\n if (previousQuantity === 0 && quantity === 0) {\n return\n }\n\n if (!isCustomQuantityButton && quantity === previousQuantity) {\n this.activeQuantity = 0\n } else {\n let newQuantity = Number(quantity)\n const pQuantities = this.product.data.quantities\n if (newQuantity > 0 && !~pQuantities.indexOf(newQuantity)) {\n const lastQuantity = pQuantities[pQuantities.length - 1]\n if (newQuantity > lastQuantity) {\n newQuantity = lastQuantity\n } else {\n for (const pQuantity of pQuantities) {\n if (pQuantity > newQuantity) {\n newQuantity = pQuantity\n break\n }\n }\n }\n }\n this.activeQuantity = newQuantity\n }\n this.setText()\n\n const activeQuantity = this.activeQuantity\n const productSku = this.product.sku\n if (this.isDesktop) {\n // Special case for gift card, only one gift card at the time\n if (this.amount > 0 && Number(quantity) > 1) {\n const promises = []\n Array(Number(quantity)).fill().map(() => {\n promises.push(window.CartManager\n .updateItem(productSku, 1, null, this.amount))\n })\n Promise.all(promises).then(() => {\n this.activeQuantity = Number(quantity)\n this.setText()\n })\n } else {\n window.CartManager\n .updateItem(productSku, activeQuantity, null, this.amount)\n .then(() => this.dispatchAddedToCart(previousQuantity))\n .catch(() => {\n this.activeQuantity = previousQuantity\n this.setText()\n })\n }\n } else {\n nespresso\n .addToCart(productSku, activeQuantity)\n .then(() => {\n if (this.isMobile && !isInApp) {\n xhr({\n url: `/mobile/${dataLayer.country.toLowerCase()}/${dataLayer.language}/cart/addMultiple/ajaxEvent`,\n method: 'POST',\n body: { additionalProducts: activeQuantity + ':' + productSku }\n })\n .then(data => {\n if (typeof data.formattedProductsCount === 'string') {\n html(find('#cartProductsCount'), data.formattedProductsCount)\n }\n })\n }\n if (this.isClassic) {\n // On classic sites, update the cart on the fly if the User is logged in\n if (window[window.config.padl.namespace].dataLayer.user.isLoggedIn) {\n window.angular.element('#shopping-bag-controller-summary').scope().readCart()\n } else {\n window.location.reload(true)\n }\n }\n eventHub.$emit('cart.update')\n this.dispatchAddedToCart(previousQuantity)\n })\n .catch(err => {\n this.activeQuantity = previousQuantity\n this.setText()\n })\n }\n },\n setActiveQuantity (isDocumentEvent) {\n const productData = this.product.data\n if (!productData) {\n return\n } else if (isInApp) {\n this.activeQuantity = this.activeQuantity || 0\n this.setText()\n return\n }\n nespresso\n .readCart()\n .then(products => {\n let existProduct\n for (const product of products) {\n if (product.productId === productData.id) {\n const hasSameUnitPrice = this.amount === product.unitPrice\n // We’ve found our product if:\n // - SKU without amount OR\n // - SKU with amount and the current product’s amount and ID both match.\n if (!this.amount || hasSameUnitPrice) {\n existProduct = product\n break\n }\n }\n }\n const activeQuantity = getIn('quantity', existProduct) || 0\n // One gift card per line, so loop again to have the final quantity\n if (this.amount){\n let activeQuantity = 0\n for (const product of products) {\n if (product.productId === productData.id) {\n const hasSameUnitPrice = this.amount === product.unitPrice\n if (hasSameUnitPrice) {\n activeQuantity++\n }\n }\n }\n this.activeQuantity = activeQuantity\n this.setText()\n } else\n if (activeQuantity !== this.activeQuantity) {\n this.activeQuantity = activeQuantity\n this.setText()\n } else if (!isDocumentEvent) {\n this.setText()\n }\n })\n },\n setText () {\n if (this.product.data) {\n if (this.product.data.inStock) {\n this.btnLabelAdd = this.translations.addToCart\n this.btnLabelUpdate = this.translations.updateCart\n this.btnLabelPhantom = this.translations.updateCart.length > this.translations.addToCart.length ? this.translations.updateCart : this.translations.addToCart\n this.voiceAddToCart = this.translations.voices.addToCart\n .replace('{QUANTITY}', this.activeQuantity || 0)\n .replace('{PRODUCT}', this.product.data.name)\n .replace('{CART_STATE}', this.activeQuantity ? this.translations.updateCart : this.translations.addToCart)\n } else {\n this.btnLabelAdd = this.translations.outOfStock\n this.btnLabelPhantom = this.translations.outOfStock\n this.btnLabelUpdate = null\n this.voiceAddToCart = this.translations.voices.outOfStock.replace('{PRODUCT}', this.product.data.name)\n }\n }\n },\n checkProductPriceExist (productData) {\n if (productData.type === 'giftcard') return true\n else return (dataLayer.channel.toUpperCase() === 'B2C') ? true : (productData.price && !isNaN(productData.price))\n }\n },\n beforeDestroy () {\n let offMethod\n if (this.isDesktop || this.isClassic) {\n offMethod = window.napi.data().off\n } else {\n offMethod = eventHub.$off\n }\n offMethod(...this._cartEvent)\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/nespresso-components/AddToCart/AddToCart.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"g_addToCart\",class:{g_mini: _vm.modifier === _vm.constants.MODIFIER_MINI, g_miniMobile: _vm.modifier === _vm.constants.MODIFIER_MINI_MOBILE, g_miniDesktop: _vm.modifier === _vm.constants.MODIFIER_MINI_DESKTOP}},[(_vm.product.data && _vm.checkProductPriceExist(_vm.product.data))?[(_vm.hasPhantom)?_c('Phantom',{attrs:{\"showPrice\":_vm.showPrice,\"price\":_vm.product.data.displayedPrice,\"quantity\":_vm.activeQuantity,\"label\":_vm.btnLabelPhantom}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"g_priceAndButton track-impression-product\",attrs:{\"data-product-item-id\":_vm.product.data.internationalId,\"data-product-section\":_vm.tracking.list,\"data-product-position\":_vm.tracking.position + 1}},[_c('p',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showPrice),expression:\"showPrice\"}],staticClass:\"g_productPrice\",attrs:{\"data-disabled\":!_vm.product.data.inStock},domProps:{\"textContent\":_vm._s(_vm.product.data.displayedPrice)}}),_vm._v(\" \"),(_vm.isDesktop && _vm.translations.useMosaicOne)?_c('MosaicATC',{attrs:{\"quantity\":_vm.quantity,\"product\":_vm.product,\"labelAdd\":_vm.btnLabelAdd,\"labelUpdate\":_vm.btnLabelUpdate,\"step\":_vm.quantityStep,\"useCustomThirdLine\":_vm.useCustomThirdLine,\"customThirdLine\":_vm.customThirdLine}}):(!_vm.translations.useMosaicOne)?_c('div',{staticClass:\"g_addToCartCustom\"},[_c('button',{ref:\"button\",staticClass:\"g_btn g_btnBuy\",class:{g_quantitySelectorOpened: _vm.quantitySelectorOpened, g_update: _vm.activeQuantity !== 0, g_materialPlay: _vm.materialPlay},attrs:{\"disabled\":!_vm.product.data.inStock},on:{\"click\":function($event){return _vm.addToCart($event)}}},[_c('i',{staticClass:\"fn_basket\",class:{g_quantity: _vm.activeQuantity},attrs:{\"aria-hidden\":\"true\"}},[_c('span',{domProps:{\"textContent\":_vm._s(_vm.activeQuantity)}})]),_vm._v(\" \"),_c('span',{staticClass:\"g_visually_hidden\",domProps:{\"innerHTML\":_vm._s(_vm.voiceAddToCart)}}),_vm._v(\" \"),_c('span',{staticClass:\"g_labelAdd\",attrs:{\"aria-hidden\":\"true\"},domProps:{\"textContent\":_vm._s(_vm.btnLabelAdd)}}),_vm._v(\" \"),_c('span',{staticClass:\"g_labelUpdate\",attrs:{\"aria-hidden\":\"true\"},domProps:{\"textContent\":_vm._s(_vm.btnLabelUpdate)}}),_vm._v(\" \"),_c('span',{staticClass:\"g_labelPhantom\",attrs:{\"aria-hidden\":\"true\"},domProps:{\"textContent\":_vm._s(_vm.btnLabelPhantom)}}),_vm._v(\" \"),_c('i',{staticClass:\"fn_more\"})]),_vm._v(\" \"),_c('span',{ref:\"focusForAddOneToCart\",attrs:{\"tabindex\":\"-1\"}}),_vm._v(\" \"),(_vm.type === 'quantitySelector' && _vm.quantities)?_c('QuantitySelector',{attrs:{\"step\":_vm.quantityStep,\"product\":_vm.product.data,\"quantities\":_vm.quantities,\"activeQuantity\":_vm.activeQuantity,\"opened\":_vm.quantitySelectorOpened,\"voices\":_vm.translations.voices,\"btnLabelAdd\":_vm.btnLabelAdd,\"showPriceInQS\":_vm.showPriceInQS},on:{\"setQuantity\":_vm.setQuantity,\"update:opened\":function (val) { return _vm.quantitySelectorOpened = val; }}}):_vm._e()],1):_vm._e()],1)]:_vm._e()],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-499a1e32\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/nespresso-components/AddToCart/AddToCart.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-499a1e32\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../vue-loader/lib/selector?type=styles&index=0!./AddToCart.vue\")\n}\nvar normalizeComponent = require(\"!../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../vue-loader/lib/selector?type=script&index=0!./AddToCart.vue\"\nimport __vue_script__ from \"!!babel-loader!../../vue-loader/lib/selector?type=script&index=0!./AddToCart.vue\"\n/* template */\nimport __vue_template__ from \"!!../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-499a1e32\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../vue-loader/lib/selector?type=template&index=0!./AddToCart.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/nespresso-components/AddToCart/AddToCart.vue\n// module id = null\n// module chunks = ","<template lang=\"html\">\n <div class=\"g_embedVideo\" :class=\"{ v_isPlaying: isPlaying }\" v-if=\"content\">\n <p v-html=\"content.title\" class=\"g_visually_hidden\"></p>\n <div class=\"g_embedVideoPlayer\">\n <div v-if=\"content.type === 'youtube'\" ref=\"video\"/>\n <div v-else-if=\"content.type === 'youku'\" :id=\"`youkuplayer${_uid}`\"/>\n <div v-else-if=\"content.type === 'local'\">\n <video\n class=\"g_fixHtml5Video\"\n ref=\"video\"/>\n </div>\n </div>\n </div>\n</template>\n\n<script>\nimport { capitalize } from '../../assets/js/utils'\nimport correspondenceLang from './correspondenceLang'\nimport Tracking from 'nespresso-library/src/core/tracking'\n\nexport default {\n props: {\n isBackground: Boolean,\n autoPlay: Boolean,\n preload: {\n type: String,\n default: 'metadata'\n },\n content: {\n type: Object\n },\n trackingLabel: String,\n controlPanel: {\n type: String,\n default: '0'\n },\n ccPolicy: {\n type: Object\n },\n mute: {\n type: Boolean,\n default: true\n }\n },\n data () {\n this._hasBeenTrack = false\n return {\n isPlaying: false,\n canvas: null\n }\n },\n watch: {\n '$json' () {\n this.init()\n },\n isPlaying (value) {\n this.$emit('onPlay', value)\n this.track()\n }\n },\n mounted () {\n this.init()\n },\n methods: {\n moveTo () {\n },\n pause () {\n },\n play () {\n },\n stop () {\n },\n load () {\n },\n getDuration () {\n return 0\n },\n getCurrentTime () {\n return 0\n },\n getTrackingTitle () {\n return this.trackingLabel || this.content.tracking || this.content.title\n },\n track () {\n if (this._hasBeenTrack) {\n return\n } else {\n this._hasBeenTrack = true\n }\n const type = capitalize(this.content.type)\n if (this.content.type !== 'youtube') {\n Tracking.customEvent({\n category: 'User Engagement',\n action: `${type} Video - Play`,\n label: `${this.$trackingLandingLabel} - Video : ${this.getTrackingTitle()}`,\n interaction: 0\n })\n }\n },\n init () {\n const video = this.content\n if (!video) {\n return\n }\n if (video.type === 'youtube') {\n import(/* webpackChunkName: \"ytPlayer\" */ 'nespresso-library/src/utils/ytPlayer').then(YtPlayer => {\n YtPlayer = YtPlayer.default\n let additionnalParams = { controls: this.controlPanel }\n if (this.ccPolicy !== null && typeof this.ccPolicy === 'object') {\n Object.assign(additionnalParams, {\n cc_load_policy: 1,\n cc_lang_pref: correspondenceLang[`${this.ccPolicy.language}-${this.ccPolicy.country}`]\n })\n }\n YtPlayer.attach(this.$refs.video, video.id, this.isBackground, this.autoPlay, additionnalParams).then(player => {\n this.player = player\n this.play = () => player.playVideo()\n this.pause = () => player.pauseVideo()\n this.stop = () => player.stopVideo()\n this.moveTo = time => { this.player.seekTo(time, true) }\n this.getDuration = () => Number(this.player.getDuration() * 1000).toFixed(0)\n this.getCurrentTime = () => Number(this.player.getCurrentTime() * 1000).toFixed(0)\n player.addEventListener('onStateChange', event => {\n if (event.data === window.YT.PlayerState.PLAYING) {\n this.isPlaying = true\n } else if (event.data === window.YT.PlayerState.ENDED) {\n // this.isPlaying = false\n }\n })\n this.$emit('onReady')\n })\n })\n } else if (video.type === 'youku') {\n import(/* webpackChunkName: \"ykPlayer\" */ 'nespresso-library/src/utils/ykPlayer').then(YkPlayer => {\n YkPlayer = YkPlayer.default\n YkPlayer.attach(`youkuplayer${this._uid}`, video.id, this.isBackground, this.autoPlay)\n .then(player => {\n this.player = player\n this.play = () => player.playVideo()\n this.pause = () => player.pauseVideo()\n this.stop = () => player.pauseVideo()\n window.onPlay = () => {\n this.isPlaying = true\n }\n window.onPlayerComplete = () => {\n this.isPlaying = false\n }\n this.$emit('onReady')\n })\n })\n } else if (video.type === 'local') {\n if (!this.player) {\n this.player = this.$refs.video\n this.player.src = this.content.src\n this.player.preload = this.preload\n this.player.muted = this.mute\n this.player.setAttribute('playsinline', true)\n this.player.controls = false\n this.player.type = 'video/mp4'\n this.player.autoplay = false\n this.$emit('onReady')\n }\n\n if (this.autoPlay) {\n this.play()\n }\n\n this.play = () => {\n this.isPlaying = true\n this.player.play()\n }\n this.pause = () => {\n const videos = document.querySelectorAll('.g_fixHtml5Video')\n videos.forEach(video => {\n video.pause()\n })\n }\n this.load = () => this.player.load()\n this.stop = () => {\n this.pause()\n this.isPlaying = false\n const videos = document.querySelectorAll('.g_fixHtml5Video')\n videos.forEach(video => {\n video.currentTime = 0\n })\n }\n this.moveTo = time => { this.player.currentTime = time }\n this.getDuration = () => Number(this.player.duration * 1000).toFixed(0)\n this.getCurrentTime = () => Number(this.player.currentTime * 1000).toFixed(0)\n }\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/core/EmbedVideo/EmbedVideo.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.content)?_c('div',{staticClass:\"g_embedVideo\",class:{ v_isPlaying: _vm.isPlaying }},[_c('p',{staticClass:\"g_visually_hidden\",domProps:{\"innerHTML\":_vm._s(_vm.content.title)}}),_vm._v(\" \"),_c('div',{staticClass:\"g_embedVideoPlayer\"},[(_vm.content.type === 'youtube')?_c('div',{ref:\"video\"}):(_vm.content.type === 'youku')?_c('div',{attrs:{\"id\":(\"youkuplayer\" + _vm._uid)}}):(_vm.content.type === 'local')?_c('div',[_c('video',{ref:\"video\",staticClass:\"g_fixHtml5Video\"})]):_vm._e()])]):_vm._e()}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-4333137a\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/gvue/src/core/EmbedVideo/EmbedVideo.vue\n// module id = null\n// module chunks = ","var normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./EmbedVideo.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./EmbedVideo.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-4333137a\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../vue-loader/lib/selector?type=template&index=0!./EmbedVideo.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = null\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/core/EmbedVideo/EmbedVideo.vue\n// module id = null\n// module chunks = ","<style lang=\"sass\">\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n@import sass/paragraph\n@import sass/link\n@import sass/tooltip\n</style>\n\n<script>\nconst TXT_CLASS = 'g_txt_'\nconst TXT_SIZES = ['XS', 'S', 'M', 'L', 'XL']\n\nexport default {\n name: 'paragraph',\n props: {\n content: {\n type: String,\n default: ''\n },\n size: {\n type: String,\n default: 'M',\n validator (value) {\n return !!~TXT_SIZES.indexOf(value)\n }\n },\n sizeMobile: {\n type: String,\n validator (value) {\n return !!~TXT_SIZES.indexOf(value)\n }\n }\n },\n render (createElement) {\n let size = this.size\n let children = this.content\n let attributes = {\n domProps: {\n innerHTML: children\n }\n }\n if (children.charAt(0) === '<' && ['p', 'u', 'o'].indexOf(children.charAt(1)) > -1) {\n children = null\n } else {\n children = [createElement('p', attributes)]\n attributes = {}\n }\n\n if (this.sizeMobile && this.$breakpoint.isS) {\n size = this.sizeMobile\n }\n\n return createElement('div', {\n ...attributes,\n class: ['g_wysiwyg', TXT_CLASS + size]\n }, children)\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/core/Paragraph/Paragraph.vue","function injectStyle (ssrContext) {\n require(\"!!../../../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-7e69063b\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../../vue-loader/lib/selector?type=styles&index=0!./Paragraph.vue\")\n}\nvar normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Paragraph.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Paragraph.vue\"\n/* template */\nvar __vue_template__ = null\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/core/Paragraph/Paragraph.vue\n// module id = null\n// module chunks = ","/* eslint-disable */\n$(function() {\n\n // window.Information = Information;\n\n /**\n * window.formatter namespace\n */\n window.formatter = {};\n\n /**\n *\n */\n window.formatter.buildFileInfo = function(value, lat, lng){\n var phone = value.point_of_interest.phone\n ? value.point_of_interest.phone\n : ''\n ;\n var poi = value.point_of_interest;\n var address = poi.address;\n\n if (window.formatter.isArray(address)) {\n address = address.pop();\n }\n\n if( 'object' === typeof address.postal_code ) {\n address.postal_code = address.postal_code._;\n }\n\n if( 'object' === typeof phone ) {\n phone = phone._;\n }\n\n var storeName = address.name.company_name_type\n ? address.name.company_name_type.name.name\n : ''\n ;\n\n var openingHours = poi.opening_hours_text\n ? poi.opening_hours_text.text\n : window.formatter.buildOpeningHours(value)\n ;\n\n var directionsLink = window.nespresso.google_directions + '?daddr=' + address.address_line + ', ' + address.postal_code + ' ' + address.city.name + '&t=m&hl=' + window.nespresso.google_lang;\n\n var id = arrayGet(value, 'point_of_interest.point_of_interest_id.id');\n\n if (id === null) {\n id = ''\n }\n\n var boutiqueImageUrl = (value[\"point_of_interest\"][\"type\"] == \"BOUTIQUE\"\n && typeof(value[\"point_of_interest\"][\"image\"]) != \"undefined\"\n && value[\"point_of_interest\"][\"image\"])\n ? value[\"point_of_interest\"][\"image\"] : null;\n var retailImageUrl = (value[\"point_of_interest\"][\"type\"] == \"POINT_OF_SALE\"\n && typeof(value[\"point_of_interest\"][\"image\"]) != \"undefined\"\n && value[\"point_of_interest\"][\"image\"])\n ? value[\"point_of_interest\"][\"image\"] : null;\n\n var notStoreStyle = (value.isStore ? '' : ' not-store');\n\n var addrLine = address.postal_code + ' ' + address.city.name;\n\n var countryCode = poi['point_of_interest_id'].id;\n var isCh = countryCode.match(/^CH/); //Restrict to CH location\n var selectShop = null;\n\n var chooseShopTextualLanguage = 'Choisir cette boutique';\n var userLang = navigator.language || navigator.userLanguage;\n switch(userLang){\n case 'en': chooseShopTextualLanguage = 'Choose this Boutique'; break;\n case 'en-US': chooseShopTextualLanguage = 'Choose this Boutique'; break;\n case 'en-GB': chooseShopTextualLanguage = 'Choose this Boutique'; break;\n case 'it': chooseShopTextualLanguage = 'Scegliere questa Boutique'; break;\n case 'de': chooseShopTextualLanguage = 'Diese Boutique auswählen'; break;\n default: chooseShopTextualLanguage = 'Choisir cette boutique';\n }\n\n // if(isCh){\n // selectShop = '<span class=\"wdexpert-buttons wdexpert-buttons-locator\" onclick=\"wdexpert.selectBoutique(\\''+storeName+'\\',\\''+address.address_line+'\\',\\''+addrLine+'\\')\" title=\"'+chooseShopTextualLanguage+'\">'+chooseShopTextualLanguage+'</span>';\n // }\n\n var html =\n '<div class=\"item-details\">' +\n '<a href=\"#\" class=\"close\">×</a>' +\n (boutiqueImageUrl ? '<div class=\"boutique-image\"><img src=\"' + boutiqueImageUrl + '\" /></div>' : '') +\n '<div class=\"first-part' + notStoreStyle + '\">' +\n '<address>' +\n '<strong>' + storeName + '</strong>' +\n '<p>' +\n address.address_line + (addrLine ? ' / ' + addrLine : '') +\n '</p>' +\n '<span class=\"phone\">' + phone + '</span>' +\n '</address>' +\n '<ul class=\"capabilities\">' +\n (value.recycling ? '<li class=\"recycling\" title=\"' + window.nespresso.i18n.service_recycling + '\"></li>' : '') +\n (value.demo ? '<li class=\"demo\" title=\"' + window.nespresso.i18n.service_demo + '\"></li>' : '') +\n (value.wifi ? '<li class=\"wifi\" title=\"' + window.nespresso.i18n.service_wifi + '\"></li>' : '') +\n (value.pickup ? '<li class=\"pickup\" title=\"' + window.nespresso.i18n.service_pickup + '\"></li>' : '') +\n (value.wheelchair ? '<li class=\"wheelchair\" title=\"' + window.nespresso.i18n.service_wheelchair + '\"></li>' : '') +\n (value.cube ? '<li class=\"cube\" title=\"' + window.nespresso.i18n.service_cube + '\"></li>' : '') +\n (value.appointment ? '<li class=\"appointment\" title=\"' + window.nespresso.i18n.service_appointment + '\"></li>' : '') +\n '</ul>'+(selectShop ? '<br>'+ selectShop +'<br>':'') +\n (retailImageUrl ? '<div class=\"retail-image\"><img src=\"' + retailImageUrl + '\" /></div>' : '') +\n (openingHours !== null && openingHours !== ''\n ? '<div class=\"opening-hours\"><strong>' + window.nespresso.i18n.openning_hours + '</strong>' + '<p>' + openingHours + '</p></div>'\n : ''\n ) +\n '<div class=\"nlinks\">' +\n ( 'KR' != window.nespresso.country ? '<a class=\"omnitureGetDirection\" href=\"' + directionsLink + '\" target=\"_blank\">' + window.nespresso.i18n.store_directions_cta + '</a>' : '' ) +\n '<a class=\"print-btn\" href=\"javascript:window.print()\" data-id=\"' + id + '\" target=\"_self\">' + window.nespresso.i18n.print + '</a>' +\n '</div>' +\n '</div>' +\n '</div>'\n ;\n\n return {\n html: html,\n latitude: lat,\n longitude: lng\n };\n };\n\n /**\n *\n */\n window.formatter.buildOpeningHours = function(poi){\n var openingHours;\n\n if (!(openingHours = poi.point_of_interest.opening_hours)){\n return null;\n }\n\n var map = {\n 'monday': 0,\n 'tuesday': 1,\n 'wednesday': 2,\n 'thursday': 3,\n 'friday': 4,\n 'saturday': 5,\n 'sunday': 6\n };\n\n var lines = [];\n\n // sometimes, we get an array !\n if (window.formatter.isArray(openingHours)) {\n openingHours = openingHours.shift();\n }\n\n $.each(openingHours.weekly_timetable, function(day, value) {\n if (!window.formatter.isArray(value)) {\n if (window.formatter.isArray(value.time_slot)) {\n var dayHours = [];\n\n $.each(value.time_slot, function(index, timeSlot) {\n dayHours.push(window.formatter.formatHour(timeSlot.start) + '-' + window.formatter.formatHour(timeSlot.end));\n });\n\n lines[map[day]] = dayHours.join(' / ');\n } else {\n lines[map[day]] = window.formatter.formatHour(value.time_slot.start) + '-' + window.formatter.formatHour(value.time_slot.end);\n }\n }\n });\n\n $.each(map, function(day, index) {\n if (lines[index] !== void 0) {\n lines[index] = day + ' ' + lines[index];\n }\n });\n\n return lines.join('<br />');\n };\n\n window.formatter.formatHour = function(hour){\n return hour.split(':').splice(0, 2).join(':');\n };\n\n window.formatter.isArray = function(object){\n return object.hasOwnProperty('length');\n };\n\n window.arrayGet = function(array, path){\n var segments = path.split('.'),\n prop = segments.shift(),\n value = null\n ;\n\n if (array[prop]) {\n value = array[prop];\n\n if (segments.length) {\n value = arrayGet(value, segments.join('.'));\n }\n }\n\n return value;\n };\n\n let _uniqId = 0;\n\n window.uniqId = function() {\n return _uniqId++;\n };\n});\n\n\n\nclass Information {\n\n constructor(html, marker){\n this.el = $(html)[0]\n this.marker = marker\n\n $.extend(this, new google.maps.OverlayView())\n };\n\n onAdd() {\n const panes = this.getPanes()\n\n if (panes.floatPane) {\n panes.floatPane.appendChild(this.el)\n }\n\n // catch mouse events and stop them propogating to the Map\n google.maps.event.addDomListener(this.el, 'mousedown', this._stopPropagation)\n google.maps.event.addDomListener(this.el, 'dblclick', this._stopPropagation)\n google.maps.event.addDomListener(this.el, 'DOMMouseScroll', this._stopPropagation)\n google.maps.event.addDomListener(this.el, 'mousewheel', this._stopPropagation)\n google.maps.event.addDomListener(this.el, 'wheel', this._stopPropagation)\n google.maps.event.addDomListener(this.el, 'MozMousePixelScroll', this._stopPropagation)\n $('.opening-hours', this.el).jScrollPane()\n }\n\n _stopPropagation(e) {\n if (navigator.userAgent.toLowerCase().indexOf('msie') != -1 && document.all) {\n window.event.cancelBubble = true\n window.event.returnValue = false\n } else {\n e.stopPropagation()\n }\n }\n\n getElement(){\n return this.el\n }\n\n getMarker(){\n return this.marker\n }\n\n draw(){\n const projection = this.getProjection()\n const point = projection.fromLatLngToDivPixel(this.marker.position)\n this.el.style.left = (point.x - (this.el.offsetWidth / 2)) + 'px'\n this.el.style.top = (point.y - this.el.offsetHeight - 59) + 'px'\n }\n\n remove(){\n this.el.parentNode.removeChild(this.el)\n this.el = null\n this.marker.onMouseOut_.apply(this.marker.div)\n }\n\n}\n\n\n\nexport default class Marker {\n\n // Custom marker to show non-store items\n constructor(position, className, id, label) {\n this.position = position\n this.__id = id\n this.__className = className\n this.__label = label\n this.div = document.createElement('div')\n this.div.innerHTML = this.__label || \"\"\n this.div.className = this.__className\n this.div.marker = this\n\n $.extend(this, new google.maps.OverlayView())\n }\n\n onAdd() {\n this.getPanes().overlayMouseTarget.appendChild(this.div)\n this.listeners = [\n google.maps.event.addDomListener(this.div, 'click', this.onClick_),\n google.maps.event.addDomListener(this.div, 'mouseover', this.onMouseOver_),\n google.maps.event.addDomListener(this.div, 'mouseout', this.onMouseOut_)\n ]\n }\n\n onMouseOver_() {\n $(this).addClass('over').css('zIndex',9999)\n this.marker.draw()\n }\n\n onMouseOut_() {\n if (window.currentMarker != this.marker) {\n $(this).removeClass('over').css('zIndex','')\n this.marker.draw()\n }\n }\n\n click() {\n this.onClick_.apply(this.div,[{}, true])\n }\n\n onClick_(e, noScroll) {\n if (window.geoloc.box) window.geoloc.box.setMap(null)\n\n const information = new Information(this.marker.info.html, this.marker)\n $(information.getElement()).find('.close').on('click', function(event) {\n information.setMap(null)\n if (window.currentMarker == this.marker) window.currentMarker = null\n return false\n })\n information.setMap(window.map)\n window.centerMapOffset(this.marker)\n\n window.geoloc.box = information\n this.marker.onMouseOver_.apply(this)\n if (window.currentMarker) {\n try {\n const oldMarker = window.currentMarker\n window.currentMarker = this.marker\n oldMarker.onMouseOut_.apply(oldMarker.div)\n } catch(e) {}\n }\n window.currentMarker = this.marker\n }\n\n getElement() {\n return this.div\n }\n\n getDraggable() {\n return false\n }\n\n getPosition() {\n return this.position\n }\n\n draw() {\n const p = this.getProjection()\n if (p != null) {\n const point = p.fromLatLngToDivPixel(this.position)\n this.div.style.left = point.x - $(this.div).width()/2 + 'px'\n this.div.style.top = point.y - $(this.div).height()/2 + 'px'\n }\n }\n\n remove() {\n if (this.listeners) {\n for (let i = 0, l = this.listeners.length; i < l; ++i) {\n google.maps.event.removeListener(this.listeners[i])\n }\n }\n if (this.div.parentNode) {\n this.div.parentNode.removeChild(this.div)\n }\n this.listeners = []\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Map/locator/nespresso.tools.js","<style lang=\"sass\">\n @import ~nespresso-bi/utilities\n @import sass/services\n</style>\n<template>\n <Zone\n :id=\"data.id\"\n :dataLabel=\"data.dataLabel\"\n :contrast=\"contrast\"\n autoHeight\n class=\"g_services\">\n <h2\n v-html=\"data.title\"\n class=\"g_visually_hidden\" />\n <slot\n name=\"before\"\n slot=\"before\" />\n <slot />\n <ServicesItems\n :data=\"data\"\n :folderSuffix=\"folderSuffix\" />\n <slot\n name=\"after\"\n slot=\"insideRestrict\"/>\n </Zone>\n</template>\n\n<script>\n// Core components\nimport Zone from '../../core/Zone'\n\nexport default {\n name: 'Services',\n components: {\n Zone,\n ServicesItems: () => import(/* webpackChunkName: \"ServicesItems\" */ './ServicesItems.vue')\n },\n props: {\n data: {\n type: Object,\n required: true\n },\n contrast: {\n type: String,\n default: 'dark'\n },\n folderSuffix: {\n type: String,\n default: ''\n }\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/components/Services/Services.vue","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Zone',{staticClass:\"g_services\",attrs:{\"id\":_vm.data.id,\"dataLabel\":_vm.data.dataLabel,\"contrast\":_vm.contrast,\"autoHeight\":\"\"}},[_c('h2',{staticClass:\"g_visually_hidden\",domProps:{\"innerHTML\":_vm._s(_vm.data.title)}}),_vm._v(\" \"),_vm._t(\"before\",null,{\"slot\":\"before\"}),_vm._v(\" \"),_vm._t(\"default\"),_vm._v(\" \"),_c('ServicesItems',{attrs:{\"data\":_vm.data,\"folderSuffix\":_vm.folderSuffix}}),_vm._v(\" \"),_vm._t(\"after\",null,{\"slot\":\"insideRestrict\"})],2)}\nvar staticRenderFns = []\nvar esExports = { render: render, staticRenderFns: staticRenderFns }\nexport default esExports\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/vue-loader/lib/template-compiler?{\"id\":\"data-v-379cfd91\",\"hasScoped\":false,\"transformToRequire\":{\"video\":[\"src\",\"poster\"],\"source\":\"src\",\"img\":\"src\",\"image\":\"xlink:href\"},\"buble\":{\"transforms\":{}}}!./node_modules/vue-loader/lib/selector.js?type=template&index=0!./node_modules/gvue/src/components/Services/Services.vue\n// module id = null\n// module chunks = ","function injectStyle (ssrContext) {\n require(\"!!../../../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-379cfd91\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../../vue-loader/lib/selector?type=styles&index=0!./Services.vue\")\n}\nvar normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Services.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Services.vue\"\n/* template */\nimport __vue_template__ from \"!!../../../../vue-loader/lib/template-compiler/index?{\\\"id\\\":\\\"data-v-379cfd91\\\",\\\"hasScoped\\\":false,\\\"transformToRequire\\\":{\\\"video\\\":[\\\"src\\\",\\\"poster\\\"],\\\"source\\\":\\\"src\\\",\\\"img\\\":\\\"src\\\",\\\"image\\\":\\\"xlink:href\\\"},\\\"buble\\\":{\\\"transforms\\\":{}}}!../../../../vue-loader/lib/selector?type=template&index=0!./Services.vue\"\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/components/Services/Services.vue\n// module id = null\n// module chunks = ","<style lang=\"sass\">\n@import ~nespresso-bi/utilities\n@import ~nespresso-bi/brand/variables\n@import sass/variables\n@import sass/heading\n</style>\n<script>\nfunction isHeadingLevel (value) {\n return value <= 6 || !value\n}\n\nexport default {\n name: 'heading',\n props: {\n content: {\n type: String,\n default: ''\n },\n level: {\n type: Number,\n default: 2,\n validator: isHeadingLevel\n },\n levelClass: {\n type: Number,\n default: null,\n validator: isHeadingLevel\n },\n fake: Boolean,\n noMargin: Boolean,\n hidden: Boolean\n },\n render: function (createElement) {\n let el = `h${this.level}`\n let className = `g_${el}`\n\n // If we have an H1 in hero\n if (this.level === 1) {\n el = 'h2'\n className = `g_h1`\n } else {\n // Overwrte default classe lvl\n if (this.levelClass) {\n className = `g_h${this.levelClass}`\n }\n }\n\n if (this.noMargin) {\n className += '_nomargin'\n }\n\n if (this.hidden) {\n className += ` g_visually_hidden`\n }\n\n if (this.fake) {\n el = 'p'\n }\n\n return createElement(\n el,\n {\n attrs: {\n class: className.trim()\n }\n },\n [this.$slots.default, this.content]\n )\n }\n}\n</script>\n\n\n\n// WEBPACK FOOTER //\n// node_modules/gvue/src/core/Heading/Heading.vue","function injectStyle (ssrContext) {\n require(\"!!../../../../extract-text-webpack-plugin/dist/loader.js?{\\\"omit\\\":1,\\\"remove\\\":true}!vue-style-loader!css-loader?{\\\"sourceMap\\\":true}!../../../../vue-loader/lib/style-compiler/index?{\\\"vue\\\":true,\\\"id\\\":\\\"data-v-83fd8ac6\\\",\\\"scoped\\\":false,\\\"hasInlineConfig\\\":false}!sass-loader?{\\\"indentedSyntax\\\":true,\\\"sourceMap\\\":true}!sass-resources-loader?{\\\"resources\\\":\\\"/Users/nnkandelad1/Applications/nespresso/projects/recycling-2019/src/assets/sass/_variables.sass\\\"}!../../../../vue-loader/lib/selector?type=styles&index=0!./Heading.vue\")\n}\nvar normalizeComponent = require(\"!../../../../vue-loader/lib/component-normalizer\")\n/* script */\nexport * from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Heading.vue\"\nimport __vue_script__ from \"!!babel-loader!../../../../vue-loader/lib/selector?type=script&index=0!./Heading.vue\"\n/* template */\nvar __vue_template__ = null\n/* template functional */\nvar __vue_template_functional__ = false\n/* styles */\nvar __vue_styles__ = injectStyle\n/* scopeId */\nvar __vue_scopeId__ = null\n/* moduleIdentifier (server only) */\nvar __vue_module_identifier__ = null\nvar Component = normalizeComponent(\n __vue_script__,\n __vue_template__,\n __vue_template_functional__,\n __vue_styles__,\n __vue_scopeId__,\n __vue_module_identifier__\n)\n\nexport default Component.exports\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/gvue/src/core/Heading/Heading.vue\n// module id = null\n// module chunks = ","import loadGoogleMapsAPI from 'load-google-maps-api'\n\nexport default class GoogleMaps {\n constructor () {\n // console.log('GoogleMaps > constructor()', typeof google)\n // Vars\n this.dataBeforeLoaded = null\n this.locatorScript = null\n // Load Google Maps\n if (!this.isGoogleVarDefined()) {\n this.loadGoogleMaps()\n }\n // Load Google Maps script\n this.loadGoogleMapsScript()\n }\n\n loadGoogleMaps () {\n // console.log('GoogleMaps > loadGoogleMaps()')\n const pathname = window.location.pathname.split('/').filter(path => !!path)\n const currentCountry = pathname[0].toUpperCase()\n loadGoogleMapsAPI({\n key: 'AIzaSyBAPBdzwjIeuhhNMl8OauQrHyfj1k3JwWs',\n sensor: false,\n libraries: 'places',\n language: currentCountry === 'KR' ? 'KO' : pathname[1].toUpperCase(),\n region: currentCountry\n }).then((googleMaps) => {\n // console.log('GoogleMaps > loadGoogleMaps() > loaded !', googleMaps)\n if (this.dataBeforeLoaded) {\n this.loadData(this.dataBeforeLoaded)\n }\n }).catch((err) => {\n console.error(err)\n })\n }\n\n loadGoogleMapsScript () {\n // console.log('GoogleMaps > loadGoogleMapsScript()')\n const _that = this\n const interval = setInterval(function () {\n if (_that.isJqueryDefined()) {\n // jQuery is loaded\n // Kill the setInterval\n clearInterval(interval)\n // Require script\n _that.locatorScript = require('./script')\n // Load data\n if (_that.dataBeforeLoaded) {\n _that.loadData(_that.dataBeforeLoaded)\n }\n }\n }, 100)\n }\n\n loadData (data) {\n if (this.isGoogleVarDefined() && this.isScriptDefined()) {\n this.locatorScript.init(data)\n } else {\n this.dataBeforeLoaded = data\n }\n }\n\n isGoogleVarDefined () {\n // console.log('GoogleMaps > isGoogleVarDefined()', typeof google != 'undefined')\n return (typeof google !== 'undefined')\n }\n\n isJqueryDefined () {\n // console.log('GoogleMaps > isJqueryDefined()', typeof $ === 'function')\n return (typeof $ === 'function')\n }\n\n isScriptDefined () {\n // console.log('GoogleMaps > isScriptDefined()', this.locatorScript)\n return !!this.locatorScript\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Map/locator/googlemaps.js"],"sourceRoot":""}