{"version":3,"sources":["webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/components/component.capdropdown.tpl","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/plugins/jquery.equalheights.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/index.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/plugins/spin.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Quotation/import/service.quotation.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/plugins/jquery.lightgallery.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Payment/import/alma.service.js","webpack:///./App/import/js/components/addtocart/component.addtocart.js","webpack:///./App/Modules/Finder/import/service.parse.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Finder/import/service.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/app.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/plugins/detect.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/tab.html.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/tabset.html.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/tabs.js","webpack:///./App/js/routing.js","webpack:///./App/js/routing-listeners.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/angular-toastr.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/toast.tpl","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/toast_message.tpl","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/toast_progressbar.tpl","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/toast_addtocart.tpl","webpack:///./App/import/js/libs/bootstrap-angular-validation/bootstrap-angular-validation.js","webpack:///./App/js/controllers/controller.modal.js","webpack:///./App/js/directives/directive.photoslurp.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.breadcrumb.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.page.head.js","webpack:///./App/js/modules/module.modal.js","webpack:///./App/js/modules/module.products.grid.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/modules/module.gtm.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/modules/module.netwave.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/modules/module.spinner.js","webpack:///./App/Modules/Account/js/account-check.directive.js","webpack:///./App/Modules/Authentication/js/directive.minilogin.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Authentication/import/toast_authentication.tpl","webpack:///./App/Modules/Cart/js/directive.be2bill-embedded.js","webpack:///./App/Modules/Category/import/facet.accordion.tpl","webpack:///./App/Modules/Category/import/facet.accordion.group.tpl","webpack:///./App/Modules/Product/js/directive.carrousel.zoom.js","webpack:///./App/Modules/Shared/Header/js/directive.header.js","webpack:///./App/Modules/Shared/Menu/js/directive.nav.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Cart/js/directive.mini-cart.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Shared/Autocomplete/import/autocomplete.product.tpl","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Shared/Comparator/import/toast_comparator.tpl","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Finder/import/directive.autocomplete.finder.js","webpack:///./App/import/js/components/addtocart/component.addtocart.quantity.custom.tpl","webpack:///./App/import/js/components/addtocart/component.addtocart.quantity.tpl","webpack:///./App/import/js/components/addtocart/component.addtocart.tpl","webpack:///./App/Build/routes.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/controllers/controller.main.js","webpack:///./App/js/directives/directive.bxslider.js","webpack:///./App/js/directives/directive.countdown.js","webpack:///./App/js/directives/directives.form.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.clearuibtab.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.fb-connect.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.infinitescroll.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.owl-carousel.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.scrolltop.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.selectpicker.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.stop.propagation.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.togglePasswordVisibility.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/directives/directive.visibleonscroll.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/filters/filter.decimal.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/filters/filter.discount.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/filters/filter.format.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/filters/filter.phone.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/filters/filter.price.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/filters/filter.truncate.date.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/modules/module.cdn.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/modules/module.lazy.js","webpack:///./App/js/services/service.cp.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.account.js","webpack:///./App/import/js/services/cart.postprocess.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.app.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.authentication.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.availability.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.country.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.date.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.gmap.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.http.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.price.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.responsive.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.string.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.window-events.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/js/services/service.youtube.js","webpack:///./App/Modules/Category/js/directive.filters.js","webpack:///./App/Modules/Payment/js/directive.quotation-payment.js","webpack:///./App/Modules/Product/js/component.customization.extra.js","webpack:///./App/Modules/Product/js/directive.delivery.tomorrow.js","webpack:///./App/Modules/Product/js/directive.kit.js","webpack:///./App/Modules/Product/js/directive.max.length.js","webpack:///./App/Modules/Product/js/directive.product.elementaries.js","webpack:///./App/Modules/Product/js/module.product.js","webpack:///./App/Modules/Reviews/js/module.reviews.js","webpack:///./App/Modules/Shared/Footer/js/controller.newsletter.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Account/js/check.identity.service.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Account/js/directive.check.identity.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Authentication/js/controllers.authentication.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Category/js/directive.truncate.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Category/js/module.category.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Form/js/jobs.form.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Form/js/section.form.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/PasswordRecovery/js/password.recovery.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Payment/js/confirmation.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Payment/js/directive.mty.tpe.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Product/js/component.customization.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Product/js/directive.price.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Product/js/directive.product.gallery.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Product/js/directive.share.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Search/js/search.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Shared/Autocomplete/js/directive.autocomplete.product.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Shared/Payment/Alma/js/directive.alma.widget.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Stores/js/controller.modal.store.choice.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Stores/js/directive.infos.store.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Stores/js/directive.store.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Stores/js/directive.store.map.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Stores/js/directive.stores.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Wishlist/js/directive.wishlist.js","webpack:///./App/js/dependencies.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/directives/sticky/directive.sticky.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/directives/video/directive.video.player.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/directives/tab/directive.tab.equalheights.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/directives/flip/directive.flip.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/directives/truncate/directive.truncate.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Shared/Comparator/import/component.comparator.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Shared/Comparator/import/directive.compare.checkbox.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Shared/Comparator/import/service.compare.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/Finder/import/finder.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/directives/nicescroll/directive.nicescroll.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/helpers/capdropdown.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/components/component.cap-search-locality.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/components/component.cap-search-city.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/components/component.cap-search-street.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/directives/cap-form.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/directives/cap-country.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/directives/cap-trigger.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/directives/cap-place.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/directives/cap-building.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/services/service.capadresse.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/Modules/CapAdresse/module.capadresse.js","webpack:///./App/js/project.js","webpack:///./App/import/js/components/addtocart/component.addtocart.quantity.custom.js","webpack:///./App/import/js/components/addtocart/component.addtocart.quantity.js","webpack:///./App/import/js/components/input.quantity/component.input.quantity.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/components/addtowishlist/component.addtowishlist.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/components/addtoquotation/component.addtoquotation.advanced.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/directives/collapsemenu/directive.collapse.menu.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/directives/rzslider/directive.rzslider.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/directives/dropzone/directive.dropzone.js","webpack:///./App/js/components.js","webpack:///C:/Git/WEB7/Framework/Core/Front/App/import/js/plugins/format.js"],"names":["path","window","angular","module","run","c","put","exports","jQuery","fn","equalHeights","h","$elems","this","css","each","Math","max","$","outerHeight","Spinner","useCssAnimations","sheet","prefixes","animations","createEl","tag","prop","n","el","document","createElement","ins","parent","i","arguments","length","appendChild","addAnimation","alpha","trail","lines","name","join","start","z","prefix","substring","indexOf","toLowerCase","pre","insertRule","cssRules","vendor","pp","s","style","undefined","charAt","toUpperCase","slice","merge","obj","def","defaults","width","radius","scale","corners","color","opacity","rotate","direction","speed","fps","zIndex","className","top","left","shadow","hwaccel","position","o","opts","prototype","spin","target","stop","self","insertBefore","firstChild","setAttribute","f","ostep","astep","anim","j","timeout","setTimeout","clearTimeout","parentNode","removeChild","seg","idx","fill","height","background","boxShadow","transformOrigin","transform","borderRadius","animation","val","childNodes","type","head","styleSheet","probe","behavior","factory","HttpService","getQuotations","get","url","cache","addToQuotation","idProduct","idQuotation","object","quantity","post","data","IdProduct","IdQuotation","Object","Quantity","removeQuotationLine","idLine","IdLine","mode","cssEasing","easing","addClass","startClass","backdropDuration","hideBarsDelay","useLeft","closable","loop","escKey","keyPress","controls","slideEndAnimatoin","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","showAfterLoad","selector","selectWithin","nextHtml","prevHtml","fullscreenHtml","closeHtml","index","iframeMaxWidth","download","counter","appendCounterTo","swipeThreshold","enableSwipe","enableDrag","dynamic","dynamicEl","galleryId","Plugin","element","options","$el","extend","constructor","Array","modules","lGalleryOn","lgBusy","hideBartimeout","isTouch","documentElement","$items","find","children","$slide","$outer","init","_this","_hash","location","hash","parseInt","split","hasClass","build","trigger","on","event","preventDefault","er","returnValue","structure","lightGallery","key","slide","arrow","closeGallery","removeClass","template","list","subHtmlCont","append","setTop","eq","doCss","$inner","prevScrollTop","scrollTop","wH","$lGallery","transition","root","support","isVideo","src","html","attr","html5","youtube","match","vimeo","dailymotion","vk","addHtml","subHtmlUrl","$currentEle","subHtml","first","fL","load","loadContent","rec","delay","_$img","_src","_poster","_srcset","_sizes","_html","_hasPoster","getResponsiveSrc","srcItms","rsWidth","rsSrc","__src","splice","push","wWidth","poster","responsive","srcset","sizes","iframe","_isVideo","prepend","videoClass","picturefill","elements","e","_speed","fromTouch","fromThumb","_prevIndex","_length","_time","_next","_prev","downloadUrl","arrowDisable","touchPrev","touchNext","text","goToNextSlide","goToPrevSlide","keyCode","destroy","removeAttr","setTranslate","xValue","yValue","touchMove","startCoords","endCoords","distance","abs","touchEnd","not","isMoved","manageSwipeClass","originalEvent","targetTouches","pageX","isDraging","scrollLeft","deltaY","mousedown","is","d","off","removeData","remove","err","fullScreen","Fullscreen","core","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","toggleClass","msFullscreenElement","fullscreen","thumbnail","animateThumb","currentPagerPosition","thumbWidth","thumbContHeight","thumbMargin","exThumbImage","showThumbByDefault","toogleThumb","pullCaptionUp","enableThumbDrag","enableThumbSwipe","loadYoutubeThumbnail","youtubeThumbSize","loadVimeoThumbnail","vimeoThumbSize","loadDailymotionThumbnail","Thumbnail","$thumbOuter","thumbOuterWidth","thumbTotalWidth","thumbIndex","thumbClickable","toogle","thumbkeyPress","$thumb","thumbList","vimeoErrorThumbSize","getThumb","thumb","thumbImg","item","icon","$this","vimeoVideoId","getJSON","format","_$this","value","animate","tempLeft","videoMaxWidth","youtubePlayerParams","vimeoPlayerParams","dailymotionPlayerParams","vkPlayerParams","videojs","videojsOptions","Video","videoLoaded","loadVideo","play","loadOnClick","youtubePlayer","vimeoPlayer","dailymotionPlayer","html5Player","contentWindow","postMessage","$f","api","_loadVideo","$tempImg","prevIndex","$videoSlide","vkPlayer","pause","replace","noposter","video","autoplay","a","param","b","g","call","l","m","p","fix","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaX","deltaMode","q","r","k","settings","normalizeOffset","getBoundingClientRect","clientX","clientY","deltaFactor","offsetX","offsetY","unshift","dispatch","handle","apply","adjustOldDeltas","documentMode","fixHooks","mouseHooks","special","version","setup","addEventListener","onmousewheel","getLineHeight","getPageHeight","teardown","removeEventListener","bind","unmousewheel","unbind","RoutesService","$window","paymentResponse","apiInfo","idFolder","isFromCart","paymentCtrl","async","ctrl","id","isCart","getUrlByName","getPaymentData","getApiInfo","eligibilities","eligibilityResponse","then","response","status","results","Eligibilities","catch","error","getEligibility","almaEligibilities","filter","Boolean","eligible","submit","paymentInfo","amount","prePaymentRequest","payment","purchase_amount","toString","href","redirectToError","paymentForm","pay","component","require","productCtrl","comparatorCtrl","bindings","isProductButton","isHoverButton","isCartButton","action","btnClass","commentLine","productQuantity","productUnit","isPrimary","addToCartActive","allowAddToCart","price","designation","img","distrimageSrc","titleAdd","titleAlert","tooltip","modalCtrl","min","step","device","templateUrl","controller","$scope","$element","$injector","$onInit","loadNewModules","default","$filter","parse","search","items","map","designationHtml","Designation","htmlReduction","Price","HasDiscount","Discount","htmlPrice","HTMLShortDescription","isComparable","Themes","some","th","KeyTheme","AllowAddToCart","ReviewsInfo","Count","Average","isFlash","flags","Text1","IDTheme","gift","Properties","KeyProperty","Html","Value","colors","properties","isNew","Date","CreationDate","KeyWebAspect","IDProduct","URL","IDPicture","MainPicture","IsGroupingProduct","IsCustomizable","theme","Availability","MinSaleQuantity","ModuloSaleQuantity","$http","$q","$cacheFactory","FinderParseService","deferred","defer","capacity","QueryType","setCtrl","getCtrl","params","resolve","TextQuery","query","From","from","size","Size","FiltersSelected","FacetsSelected","facets","NegativeTermsQuery","FieldName","FieldValue","NegativeBoost","toJson","cached","method","headers","promise","products","count","cloneDeep","reject","cancel","$sce","str","matches","reg","tmp","forEach","word","RegExp","trustAsHtml","valueOf","constant","_ENV_","config","$provide","decorator","$delegate","keys","includes","getKeys","$compileProvider","Environment","commentDirectivesEnabled","cssClassDirectivesEnabled","debugInfoEnabled","lazyConfigProvider","setOptions","offset","errorClass","successClass","AppService","bsValidationConfig","getParams","getTranslate","translate","entries","forms","setMessages","suppressWarnings","onunload","onpageshow","persisted","reload","injector","bootstrap","strictDi","isBot","Error","origin","protocol","hostname","port","pattern","test","navigator","userAgent","isCache","$templateCache","oldIndex","destroyed","findTabIndex","tabs","select","evt","previousIndex","previousSelected","tab","onDeselect","$event","$selectedIndex","isDefaultPrevented","active","selected","onSelect","isDefined","addTab","sort","t1","t2","newActiveIndex","removeTab","newActiveTabIndex","$watch","$on","directive","transclude","scope","bindToController","controllerAs","attrs","link","vertical","$parent","$eval","justified","centered","$parse","heading","classes","elm","tabsetCtrl","disabled","disable","hide","isUndefined","t","$transcludeFn","restrict","uibTabContentTransclude","contents","node","tagName","hasAttribute","isTabHeading","headingElement","routes","routingService","$routeProvider","$locationProvider","$httpProvider","Routes","useApplyAsync","common","interceptors","when","route","ngRoute","Name","Controller","kebabCase","authorize","authService","result","AccountService","getReturnFolders","getShippingAddresses","getLocation","cart","isOnePage","body","getCacheBusting","html5Mode","enabled","requireBase","rewriteLinks","otherwise","routesMap","routesService","set","getOwnPropertyNames","arr","getMap","$rootScope","$timeout","$location","$route","routing","scrollCache","cacheBusting","getRoute","getPath","windowScroll","getScrollPos","updateCacheBusting","forceReload","currentRoute","to","pageYOffset","$broadcast","getTime","pathname","substr","service","IsLogged","HasCart","res","responseError","rejection","RoutingService","Cart","CartIdentification","CartShipping","CartPayment","CartValidation","CartOnePageCheckout","$anchorScroll","ModalService","toastr","currentLocation","yOffset","update","notReplace","routeToKeep","current","unsubscribe","next","router","_routes","stepTo","stepFrom","originalPath","ex","previous","message","warning","errors","ErrorHasOccurred","allowHtml","extraData","Localization","UseLogs","loadedTemplateUrl","stack","Key","Message","ngRouter","findRoute","hasOwnProperty","close","categoryId","backToStore","newLocation","popstate","dataLayer","initRouter","productId","sellerId","$animate","$document","toastrConfig","container","toasts","previousToastMessage","openToasts","containerDefer","clear","toast","toastId","title","optionsOverride","_getOptions","iconClasses","_buildNotification","info","success","refreshTimer","newTime","isOpened","wasClicked","findToast","deleting","leave","onHidden","$destroy","maxOpened","open","isObject","isDuplicateOfLast","preventDuplicates","isDuplicateOpen","preventOpenDuplicates","shouldExit","newToast","$new","iconClass","cleanOptionsOverride","typeClass","toastType","toastIcon","extendedTimeOut","messageClass","onShown","generateEvent","onTap","progressBar","tapToDismiss","timeOut","titleClass","toastClass","closeButton","createScope","angularDomEl","$compile","createToastEl","badOptions","createToast","autoDismiss","ifMaxOpenedAndAutoDismiss","oldToasts","len","containerId","positionClass","querySelector","enter","_createOrGetContainer","newestOnTop","sibling","lastChild","_notify","$inject","templates","progressbar","toastCtrl","intervalId","currentTimeOut","hideTime","updateProgress","percentage","duration","clearInterval","parseFloat","setInterval","startProgressBar","stopProgressBar","$interval","wantsCloseButton","button","createTimeout","time","tapToast","isFunction","stopPropagation","$apply","bsValidationService","priority","compile","$formElement","$formAttributes","isValidationDisabled","addDirective","ngSubmit","formElement","$attr","formController","$showValidation","$setSubmitted","showValidationState","$hideValidation","$setPristine","$resetValidation","markPristineAfterSubmit","attributes","$invalid","focus","submitHandler","$commitViewValue","stopImmediatePropagation","controllers","ngModelController","ngFormController","$formGroupElement","getFormGroupElement","displayValidationState","shouldValidateOnBlur","shouldValidateOnDisplay","shouldValidateOnSubmit","displayErrorAs","displayErrorPreference","validationMessageService","getValidationMessageService","getValidators","validator","attrValue","addValidator","watchBlur","$submitted","submitted","displayOrHideValidationState","showValidation","$valid","$$attr","required","hideSuccess","hideError","blur","$setUntouched","destroyMessage","displayError","addErrorClass","showErrorMessage","hideErrorMessage","displaySuccess","validators","$validators","$asyncValidators","hasValidation","isNotEmpty","$viewValue","addSuccessClass","removeSuccessClass","toggleErrorKeyClasses","$error","dewatcher","$touched","lostFocus","provider","validateFieldsOn","displayErrorsAs","messageFilters","shouldValidateOn","isString","global","errorMessagePrefix","tooltipPlacement","tooltipAppendToBody","messages","setValidateFieldsOn","isArray","setDisplayErrorsAs","useMessageFilters","filters","$get","getDisplayErrorsAs","getErrorMessagePrefix","getMessageFilters","getTooltipPlacement","shouldAddSuccessClass","$interpolate","_genericValidators","validateFn","equalto","range","getTrigger","triggerEvent","parentForm","parents","String","camelCaseToDash","$1","selectors","meta","getMetaInformation","metaInformation","validateableElements","removeErrorClass","modelValue","viewValue","$isEmpty","addGenericValidator","genericValidationObject","attrName","$parentForm","getErrorMessage","firstErrorKey","resolveMessage","formGroupElement","displayType","has","matchers","attrKey","validValue","validValue1","validValue2","regx","getErrorContainer","$errorContainer","insertAfter","groupElement","errorContainerHTML","after","getErrorTooltip","tooltipID","floor","random","getElementID","tooltipElement","getElementById","$errorTooltip","placement","appendToBody","$position","ttPosition","positionElements","positionArrow","smoothScroll","showLoader","onLoad","deleteQuantity","dataDelete","IDLine","RemovedQuantity","isBtnMainDisabled","$close","goTo","suggestionsUrl","restToPay","RestToPay","$$phase","$digest","Recipients","modalTitle","addRecipient","removeRecipient","Email","Visitor","FirstName","LastName","loading","resultMessage","TryLater","messageTitle","messageText","successMessage","$uibModalInstance","cropper","rendered","tmpId","aspectRatio","movable","cropBoxResizable","rotatable","ready","plus","zoom","minus","save","dropzone","ctrlFrom","dzMethods","getDropzone","croppedFile","dataURI","byteString","atob","ab","ArrayBuffer","ia","Uint8Array","charCodeAt","Blob","dataURItoBlob","getCroppedCanvas","fillColor","imageSmoothingEnabled","imageSmoothingQuality","toDataURL","tmpFileName","removeAllFiles","addFile","deleteTmpFile","serverName","isActive","metadata","description","checkout","$emit","modal","$uibModal","modalInstance","show","ctrlAs","onClosed","onOpened","_modal","windowClass","backdrop","keyboard","closed","$$state","opened","closeCurrent","openModal","class","openCmsModal","autoScroll","modalAutoScroll","$modalDialog","closest","$scrollContainer","maxHeight","WindowEventsService","ProductsGridService","click","ev","getId","resize","resizeGrid","listen","elemId","lazy","$divs","nb","targ","comp","clientWidth","reverse","breakpoint","col","$cookies","DateService","inject","script","innerHTML","getContent","expires","nextYear","content","GtmService","netwaveInfos","NetwaveService","isNetwaveEnable","getNetWaveInfo","initializeNetWaveInfo","netwaveEnable","netInfos","getIdProduct","product","getPrice","IsKit","KitUnitTTCPrice","round","Product","TTCAmount","qty","TTCDiscountedPrice","TTCPrice","costTTC","getProducts","ProductsIds","updateFilters","BrandsSelected","filterBrandsSelected","brands","Id","ReviewsSelected","filterReviewsSelected","reviews","ProductTypesSelected","filterProductTypesSelected","types","words","PriceRange","prices","Values","isScriptLoaded","wsbProperties","filterFacet","categoryCtrl","idCategory","values","emptyCart","removeArticleFromCart","removeArticle","getCategory","pdt","wsb","addArticleToCart","addArticle","getCategoryResponse","emptyWishList","line","updateWishList","addToWishList","addToWishlist","removeFromWishlist","Promise","requestAnimationFrame","tabsCtrl","AvailabilityService","PriceService","zone","unwatch","publishingZones","publishingZone","_","publishingZoneId","sortedZones","sortBy","json","findIndex","isOpen","catchphrase","bannerName","bannerUrl","bannerLink","Link","imgWsbPublishingZone","querySelectorAll","linkWsbPublishingZone","domId","Pictogrammes","KeyRegrouping","Background","Color","Text2","Site","DisplayAvailabilityOnListPage","IsOmnichannelOrder","formatMessage","Detail","modalData","$onDestroy","classList","add","loaded","netwaveLoaded","wsbZonePrefix","tags","camelize","wsbDisplay","wsbCustomTemplating","recommendations","zoneId","isZoneExistInDom","wsbPublishCustomTemplating","launchNetWaveCallBack","langage","stateLoggedIn","clientId","stockLocation","dataPage","searchRequestArray","orderId","customerId","total","articles","reset","language","loggedIn","searchRequest","article","defineProperty","getOwnPropertyDescriptor","setupNetwaveGlobalParameters","Langage","StateLoggedIn","ClientId","StockLocation","DataPage","CategoryId","ProductId","SearchRequestArray","OrderId","CustomerId","Total","Articles","_getMessageQueue","_addMessage","_currentPage","_config","_themes","_delay","setDefaults","setTheme","setDelay","themes","usSpinnerConfig","spinner","appendTo","spinnerTheme","spinnerOn","modelCtrl","std","regexPhone","spe","1089","1199","1159","1211","1100","1108","1156","1256","1178","1195","spePhoneMessages","27","8","114","72","215","189","watcher","accountPhone","idCountry","country","$setValidity","$set","$validate","ngModel","assign","phone","regexMobile","regexByCountryId","1035","speMobileMessage","countryCodeAndIdMapping","$watchGroup","accountMobile","shippingMobile","newValues","visitorCountryId","shippingCountryCode","shippingCountryId","concat","refreshField","mobile","titleVisitor","titleLogin","titleLogout","LogService","links","getLinks","visitor","$body","toggle","onBodyClick","contains","refresh","isLogged","sellerUrl","FullName","CardType","KeyCardType","IDCard","setManagement","login","logout","updateParams","VisitorContext","fields","endpoint","ajax","dataType","be2bill","hostedFields","APIKeyId","APIKeyValue","card","placeholder","enableAutospacing","onInput","hiddencard","expiry","hiddenexpiry","cryptogram","hiddencryptogram","owl","$thisBis","$nav","padding","origSize","menuStyle","resizeMenus","desktop","psOpen","slider","hover","psClose","closeDone","openDone","MenuService","$animateCss","mainNavCtrl","hoverintent","expandMenu","reduceMenu","interval","initMenu","$menu","expandDone","scrollHeight","finally","categories","collapseDone","openMenu","siblings","end","backMenu","closeMenu","tplTranslate","getCart","withRefresh","cartIsActive","Agent","Mobility","Params","UseSaleAsCart","Profile","AllModules","ModuleKey","IsActive","hasCart","Products","cartLink","showTTCPrice","ShowTTCPrice","TradeActions","tradeAction","isGift","cartProducts","reduce","deleteLine","DistrimageSrc","titleDeleteOk","removedProducts","ClearCartOK","FinderService","goSearch","searchStr","Search","encodeURIComponent","inputChangeHandler","fromBtn","which","DeviceService","loadModalAddToCart","visitorContext","showPageLoader","setDevice","getSize","xxs","onChange","xs","sm","md","lg","ios","isIOS","isIe","isIE","ieVersion","isWebp","webp","navHeight","bxslider","initBxSlider","destroySlider","sc","innerWidth","bxSlider","minSlides","slideMargin","slideWidth","pager","prevSelector","nextSelector","prevText","nextText","moveSlides","infiniteLoop","preventDefaultSwipeX","preventDefaultSwipeY","onSliderLoad","today","epochMicrotimeDiff","UTC","setFullYear","startDate","endDate","startLag","getTimezoneOffset","endLag","dayDate","day","hourDate","hour","minDate","secDate","sec","label","ngRequired","$wrapper","input","optRequired","$label","onInputChange","trim","ngModelInit","noZoomDirective","viewport","removeParentIfEmpty","UseFacebookConnect","infiniteScroll","infiniteScrollDistance","infiniteScrollDisabled","infiniteScrollGrandParent","lastPos","handler","isNaN","innerHeight","togglePasswordVisibility","inputPasswordFieldID","triggerElementID","inputPasswordField","triggerElement","hidePassword","discountFilter","loc","DiscountHTMLFormat","DiscountFormat","DiscountDecimalSeparator","DiscountThousandSeparator","getDiscountFilter","$stateful","args","arg","num","priceFilter","ttc","PriceHTMLFormatVATincluded","PriceHTMLFormatVATexcluded","HTAmount","HTDiscountedPrice","TTCTotalPrice","HTTotalPrice","EcoContribution","remainder","priceValue","getConditioningPrice","HTPrice","priceFormat","PriceFormat","separators","PriceThousandSeparator","PriceDecimalSeparator","strMontant","separatorIndex","Currency","Symbol","ISOCode","getPriceFilter","extension","quality","absolute","crop","transparent","split1","UrlImages","split2","PlatformEnvironment","URLSite","TradeName","queryParams","deburr","CdnService","cdnId","cdnSize","cdnDesignation","cdnExtension","cdnQuality","cdnAbsolute","cdnCrop","cdnTransparent","cdnChangeable","observerCdnId","$observe","processImage","_element","_attrs","setSrc","lazyHelpers","photo","intersectionListener","observe","$elem","unobserve","env","intersectionObserverSupport","noop","IntersectionObserver","observer","entry","isIntersecting","intersectionRatio","parentElement","source","yallFlipDataAttrs","newImageElement","Image","asyncDecodeSupport","replaceWithSupport","getAttribute","decode","ignoredImgAttributes","replaceWith","removeAttribute","loadElement","rootMargin","refElement","sourceDataset","dataset","dataAttribute","acceptedDataAttributes","lazyConfig","lazyObserver","winDimensions","isListening","images","getOptions","$win","getWinDimensions","saveWinOffsetT","throttle","containers","checkImagesT","checkImages","image","isElementInView","loadImage","stopListening","startListening","onerror","onError","onload","loadingClass","onSuccess","onLoading","Photo","setSource","removeImage","addContainer","removeContainer","_options","testImage","elem","rect","bottomline","right","bottom","threshhold","last","deferTimer","context","now","IntersectionObserverEntry","LazyMagic","lazyImage","deregister","newSource","eventsDeregister","getPostCodeInput","idHtml","controllerObject","PostCode","formData","startsWith","changeValueFromCodePoste","idHtmlElement","selectHtmlComponent","selectCountry","CountryCode","IDCountry","Country","Account","Delegation","hasServices","DelegationUsed","AutoriseModifierInfosPerso","IsManagementGiftCards","IsManagementCredits","IsManagementDedicatedProducts","IsManagementLoyaltyPoints","IsManagementWishlistTracking","IsManagementMultiWishlist","AutoriseVisualiserWishList","IsManagementSponsorShip","IsManagementVouchers","hasOrders","IsManagementOrderTracking","AutoriseVisualiserCommandes","IsManagementInvoicesAndCreditsTracking","AutoriseVisualiserFactures","IsManagementWebCartTracking","IsManagementReturns","IsManagementComplaint","IsManagementNumericProducts","IsManagementQuotationTracking","AutoriseVisualiserDevis","cartPostProcess","isCherryCheckout","appPromise","cartRequests","MobilityVisitorContext","resetParams","addToCart","checkCumulativeProduct","productsToCart","CheckCumulativeProduct","Reference","Comment","Elements","Customization","CustomizablePrice","pullAllBy","imgSrc","fromCart","deleteLineCallback","itemQuantityInCart","checkAvailability","getProductPrice","priceObj","DegressivePrice","Number","inRange","updateStore","Store","updateKey","emailExists","email","errorKey","Errors","ErrorMessage","mailRecognized","exists","copy","MTYVisitorContext","isPro","IsCardPro","clearTemplateCache","noevent","en","removeAll","AccountUpdate","AccountHome","redirect","days","ceil","stringToDate","date","ShippingToday","endsWith","getMessage","countries","fr","es","getCountry","lang","dateToISO","getFullYear","getMonth","getDate","toISOString","minISODate","tomorrow","dateDay","addressCache","gpsCache","getDefer","getGeoCode","address","google","maps","Geocoder","geocode","address_components","long_name","Latitude","geometry","lat","Longitude","lng","getGeoCodeByGps","gps","strGps","locality","postalcode","streetnumber","short_name","City","Address","formatted_address","GMAPKey","gMapsInit","_request","$post","$put","$delete","successNotity","errorNotity","reduction","priceFrom","priceOld","IsPriceFrom","PriceFrom","priceNew","bool","DocumentTouch","rule","callback","docOverflow","docElement","div","fake","getBody","cssText","createTextNode","overflow","ret","offsetHeight","testStyles","offsetTop","touchevents","MSStream","_el","isOpera","isIE9","isIE10","isIE11","isIEEdge","isSelfscanning","isMobility","that","safeApply","phase","$root","assureList","getCurrentMatch","getComputedStyle","getPropertyValue","currentStyle","fontFamily","listenerFunc","currentMatch","previousMatch","wasPreviousMatch","doesCurrentMatch","feature","lossy","checkWebp","findMatchString","throttleTime","isOn","debounceTime","listenerType","patterns","exec","tokens","getThumbnail","medium","high","uiAccordion","searchQuery","facetsBtns","exclude","webaspect","scroll","categoryLevel","localeSensitiveComparator","v1","v2","localeCompare","initFilters","initModule","model","trustAsResourceUrl","today15h","isWeekEnd","getDay","countdownHtml","delta","hours","minutes","seconds","dayName","idKit","idGroup","initKit","hasError","maxlength","span","lastElementChild","insertAdjacentHTML","unavailable","urlGroup","isKit","showComponents","customizablePrice","customizablePriceTooltip","keyWebAspect","costHT","customizationCostTTC","customizationCostHT","mark","initGradualReviews","openReview","token","messageOK","initForm","NewsletterOK","form","newsletterConnect","loadRegex","localization","configPath","CheckIdentityService","regex","regexp","identitySelectElement","inputText","selectedIndex","refreshRegex","onchange","identity","getImport","initAuthentication","initLoginForm","initModalLogin","initNewClientForm","initNewClientWithoutRecognitionForm","initForgotPassword","initEmail","restore","lastCart","IDFolder","ellipsis","truncate","webAspect","currentPage","totalProducts","nbPerPage","maxPage","sortTitle","isFiltered","iScrollMaxPages","iScrollAuto","iScrollText","isMessage","nbProducts","uibRating","Attachments","dzOptions","paramName","acceptedFiles","uploadMultiple","renameFilename","dzCallbacks","successmultiple","files","file","ServerName","removedfile","targetCtrl","infos","ref","ville","department","onInit","sectionForm","CustomerPro","isTokenValid","initCustomization","jsonPrice","txtFirstRange","txtRange","txtLastRange","txtConditioning","initPrice","initGallery","socialshare","socialshareUrl","socialshareText","socialshareMedia","socialshareHashtags","socialshareEmail","appId","FacebookAppID","initShare","advices","txtAddToList","txtViewAndChoose","onlyAllowAddToCart","excludeDilicom","UseElasticCore","idCard","AlmaService","Alma","AlmaWidgets","Widgets","widget","isInit","setupWidget","PaymentPlans","purchaseAmount","locale","hideIfNotEligible","transitionDelay","plans","Plans","IsProd","ApiMode","LIVE","TEST","initialize","MerchantID","$onChanges","changes","isFirstChange","selectStore","idStore","isAccountUpdate","isAccountCreate","IDStore","IsAccountCreate","setStore","availability","msgExclu","storeSelected","setStoreData","deliveryOutOfQuantity","Delivery","CentralStock","DeliveryMessage","messageDeliveryOutOfQuantity","DeliveryMessageClass","pickUpOutOfQuantity","PickUp","StoreStock","PickUpMessage","messagePickUpOutOfQuantity","PickUpMessageClass","hideRazorAvailability","restoreQuickView","tempUrl","PickUpDate","selectAvailableStore","openStoreChoice","productOpenStoreChoice","availableFilter","store","latitude","longitude","daysModel","strOneTime","strTwoTimes","strClosed","cartCtrl","records","record","targetInfo","boundingClientRect","rootBoundsInfo","rootBounds","threshold","_sentinel","stick","enable","youtubeUrl","getYouTubeIdFromUrl","pPlayer","youtubeVideoId","adapter","showinfo","features","resizeVideo","afterInit","$mainVideo","flip","flipped","inter","titleRemove","titleFull","CompareService","getChecked","unwatchEvent","maxItems","checked","putObject","getObject","promises","updateCookie","cancelPromises","getNbProducts","pull","empty","getProduct","canceller","btnFilters","rangeFilters","priceStep","maxFilters","rangeText","nicescrollConfig","loadCode","nicescrollOptions","zindex","autohidemode","cursordragontouch","cursorborder","cursorborderradius","cursorcolor","cursorwidth","enableobserver","horizrailenabled","niceScroll","firstTime","niceTimeout","niceScrollInitEvent","niceOption","loadPlugin","niceScrollEvent","getNiceScroll","CapDropdown","$transclude","targeted","selection","cleared","clone","$overrideModelOptions","debounce","$viewChangeListeners","listenerIndex","$setViewValue","$render","option","inputOutput","parseOption","afterSelection","afterClear","fetchList","isSelected","onArrowKey","up","limit","nextIndex","onSelection","onEnter","onKeyDown","onLeave","displayOption","CapSearchLocality","capAdresseService","super","capService","formCtrl","capSearchLocality","setOption","getOption","initField","linkFields","$modelValue","postalCode","linkedFields","field","userInput","capCountry","countryId","fetchLocalities","capSearchCity","capSearchStreet","CapSearchCity","specificCountries","setPlace","additionalInfo_7","place","placeFieldLoaded","capPlace","setValue","capTrigger","CapSearchStreet","selectingNumber","isIncomplete","fetchStreetNumbers","localityId","fetchStreets","streetId","numbers","selectedValue","street","streetNumber","streetName","streetNumberExt","selectNumber","setBuilding","buildingName","building","buildingFieldLoaded","capBuilding","capFormCtrl","elt","validated","$pristine","validateForm","_elt","triggers","triggerVariable","invert","write","shift","Set","inline","localities","streets","uiDatepickerPopup","uiRating","usSpinnerConfigProvider","bsValidationConfigProvider","parallelUploads","maxFilesize","addRemoveLinks","dictRemoveFile","idStatus","availableQuantity","btnTooltip","unit","moduloLabel","moduloTotal","quotationCtrl","isQuotationButton","isModalButton","isElementaryButton","modalItem","msgMin","titleDetail","titleModifyOk","watchDisabled","keyEnter","loadTemplate","tooltipAdd","tooltipYet","tooltipChoice","titleTxt","clickMenu","showMenu","hideMenu","rzSliderModel","rzSliderHigh","rzSliderOptions","RzSlider","callbacks","methods","mask","isNegative","decimal","group","posLeadZero","posTrailZero","posSeparator","part","szSep","integer","indx","suffix","toFixed","lastIndexOf"],"mappings":"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","file":"main.c72481ed971218101223.js","sourcesContent":["var _module_exports = \"
{{ $ctrl.displayOption(option) }}
\";;\nvar path = 'Modules/CapAdresse/components/component.capdropdown.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","(function ($) {\r\n $.fn.equalHeights = function () {\r\n var h = 0;\r\n var $elems = this.css('height', '').each(function () {\r\n h = Math.max(h, $(this).outerHeight());\r\n });\r\n return !h ? $elems : $elems.outerHeight(h);\r\n };\r\n})(jQuery);\r\n","require('./tab.html.js');\r\nrequire('./tabset.html.js');\r\nrequire('./tabs');\r\n\r\nvar MODULE_NAME = 'ui.bootstrap.module.tabs';\r\n\r\nangular.module(MODULE_NAME, ['ui.bootstrap.tabs', 'uib/template/tabs/tab.html', 'uib/template/tabs/tabset.html']);\r\n\r\nmodule.exports = MODULE_NAME;\r\n","/**\r\n * Copyright (c) 2011-2014 Felix Gnass\r\n * Licensed under the MIT license\r\n * http://spin.js.org/\r\n *\r\n * Example:\r\n var opts = {\r\n lines: 12 // The number of lines to draw\r\n , length: 7 // The length of each line\r\n , width: 5 // The line thickness\r\n , radius: 10 // The radius of the inner circle\r\n , scale: 1.0 // Scales overall size of the spinner\r\n , corners: 1 // Roundness (0..1)\r\n , color: '#000' // #rgb or #rrggbb\r\n , opacity: 1/4 // Opacity of the lines\r\n , rotate: 0 // Rotation offset\r\n , direction: 1 // 1: clockwise, -1: counterclockwise\r\n , speed: 1 // Rounds per second\r\n , trail: 100 // Afterglow percentage\r\n , fps: 20 // Frames per second when using setTimeout()\r\n , zIndex: 2e9 // Use a high z-index by default\r\n , className: 'spinner' // CSS class to assign to the element\r\n , top: '50%' // center vertically\r\n , left: '50%' // center horizontally\r\n , shadow: false // Whether to render a shadow\r\n , hwaccel: false // Whether to use hardware acceleration (might be buggy)\r\n , position: 'absolute' // Element positioning\r\n }\r\n var target = document.getElementById('foo')\r\n var spinner = new Spinner(opts).spin(target)\r\n */\r\n;(function (root, factory) {\r\n root.Spinner = factory()\r\n}(this, function () {\r\n \"use strict\"\r\n\r\n var prefixes = ['webkit', 'moz', 'ms', 'o'] /* Vendor prefixes */\r\n , animations = {} /* Animation rules keyed by their name */\r\n , useCssAnimations /* Whether to use CSS animations or setTimeout */\r\n , sheet /* A stylesheet to hold the @keyframe or VML rules. */\r\n\r\n /**\r\n * Utility function to create elements. If no tag name is given,\r\n * a DIV is created. Optionally properties can be passed.\r\n */\r\n function createEl (tag, prop) {\r\n var el = document.createElement(tag || 'div')\r\n , n\r\n\r\n for (n in prop) el[n] = prop[n]\r\n return el\r\n }\r\n\r\n /**\r\n * Appends children and returns the parent.\r\n */\r\n function ins (parent /* child1, child2, ...*/) {\r\n for (var i = 1, n = arguments.length; i < n; i++) {\r\n parent.appendChild(arguments[i])\r\n }\r\n\r\n return parent\r\n }\r\n\r\n /**\r\n * Creates an opacity keyframe animation rule and returns its name.\r\n * Since most mobile Webkits have timing issues with animation-delay,\r\n * we create separate rules for each line/segment.\r\n */\r\n function addAnimation (alpha, trail, i, lines) {\r\n var name = ['opacity', trail, ~~(alpha * 100), i, lines].join('-')\r\n , start = 0.01 + i/lines * 100\r\n , z = Math.max(1 - (1-alpha) / trail * (100-start), alpha)\r\n , prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()\r\n , pre = prefix && '-' + prefix + '-' || ''\r\n\r\n if (!animations[name]) {\r\n sheet.insertRule(\r\n '@' + pre + 'keyframes ' + name + '{' +\r\n '0%{opacity:' + z + '}' +\r\n start + '%{opacity:' + alpha + '}' +\r\n (start+0.01) + '%{opacity:1}' +\r\n (start+trail) % 100 + '%{opacity:' + alpha + '}' +\r\n '100%{opacity:' + z + '}' +\r\n '}', sheet.cssRules.length)\r\n\r\n animations[name] = 1\r\n }\r\n\r\n return name\r\n }\r\n\r\n /**\r\n * Tries various vendor prefixes and returns the first supported property.\r\n */\r\n function vendor (el, prop) {\r\n var s = el.style\r\n , pp\r\n , i\r\n\r\n prop = prop.charAt(0).toUpperCase() + prop.slice(1)\r\n if (s[prop] !== undefined) return prop\r\n for (i = 0; i < prefixes.length; i++) {\r\n pp = prefixes[i]+prop\r\n if (s[pp] !== undefined) return pp\r\n }\r\n }\r\n\r\n /**\r\n * Sets multiple style properties at once.\r\n */\r\n function css (el, prop) {\r\n for (var n in prop) {\r\n el.style[vendor(el, n) || n] = prop[n]\r\n }\r\n\r\n return el\r\n }\r\n\r\n /**\r\n * Fills in default values.\r\n */\r\n function merge (obj) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var def = arguments[i]\r\n for (var n in def) {\r\n if (obj[n] === undefined) obj[n] = def[n]\r\n }\r\n }\r\n return obj\r\n }\r\n\r\n /**\r\n * Returns the line color from the given string or array.\r\n */\r\n function getColor (color, idx) {\r\n return typeof color == 'string' ? color : color[idx % color.length]\r\n }\r\n\r\n // Built-in defaults\r\n\r\n var defaults = {\r\n lines: 12 // The number of lines to draw\r\n , length: 7 // The length of each line\r\n , width: 5 // The line thickness\r\n , radius: 10 // The radius of the inner circle\r\n , scale: 1.0 // Scales overall size of the spinner\r\n , corners: 1 // Roundness (0..1)\r\n , color: '#000' // #rgb or #rrggbb\r\n , opacity: 1/4 // Opacity of the lines\r\n , rotate: 0 // Rotation offset\r\n , direction: 1 // 1: clockwise, -1: counterclockwise\r\n , speed: 1 // Rounds per second\r\n , trail: 100 // Afterglow percentage\r\n , fps: 20 // Frames per second when using setTimeout()\r\n , zIndex: 2e9 // Use a high z-index by default\r\n , className: 'spinner' // CSS class to assign to the element\r\n , top: '50%' // center vertically\r\n , left: '50%' // center horizontally\r\n , shadow: false // Whether to render a shadow\r\n , hwaccel: false // Whether to use hardware acceleration (might be buggy)\r\n , position: 'absolute' // Element positioning\r\n }\r\n\r\n /** The constructor */\r\n function Spinner (o) {\r\n this.opts = merge(o || {}, Spinner.defaults, defaults)\r\n }\r\n\r\n // Global defaults that override the built-ins:\r\n Spinner.defaults = {}\r\n\r\n merge(Spinner.prototype, {\r\n /**\r\n * Adds the spinner to the given target element. If this instance is already\r\n * spinning, it is automatically removed from its previous target b calling\r\n * stop() internally.\r\n */\r\n spin: function (target) {\r\n this.stop()\r\n\r\n var self = this\r\n , o = self.opts\r\n , el = self.el = createEl(null, {className: o.className})\r\n\r\n css(el, {\r\n position: o.position\r\n , width: 0\r\n , zIndex: o.zIndex\r\n , left: o.left\r\n , top: o.top\r\n })\r\n\r\n if (target) {\r\n target.insertBefore(el, target.firstChild || null)\r\n }\r\n\r\n el.setAttribute('role', 'progressbar')\r\n self.lines(el, self.opts)\r\n\r\n if (!useCssAnimations) {\r\n // No CSS animation support, use setTimeout() instead\r\n var i = 0\r\n , start = (o.lines - 1) * (1 - o.direction) / 2\r\n , alpha\r\n , fps = o.fps\r\n , f = fps / o.speed\r\n , ostep = (1 - o.opacity) / (f * o.trail / 100)\r\n , astep = f / o.lines\r\n\r\n ;(function anim () {\r\n i++\r\n for (var j = 0; j < o.lines; j++) {\r\n alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)\r\n\r\n self.opacity(el, j * o.direction + start, alpha, o)\r\n }\r\n self.timeout = self.el && setTimeout(anim, ~~(1000 / fps))\r\n })()\r\n }\r\n return self\r\n }\r\n\r\n /**\r\n * Stops and removes the Spinner.\r\n */\r\n , stop: function () {\r\n var el = this.el\r\n if (el) {\r\n clearTimeout(this.timeout)\r\n if (el.parentNode) el.parentNode.removeChild(el)\r\n this.el = undefined\r\n }\r\n return this\r\n }\r\n\r\n /**\r\n * Internal method that draws the individual lines. Will be overwritten\r\n * in VML fallback mode below.\r\n */\r\n , lines: function (el, o) {\r\n var i = 0\r\n , start = (o.lines - 1) * (1 - o.direction) / 2\r\n , seg\r\n\r\n function fill (color, shadow) {\r\n return css(createEl(), {\r\n position: 'absolute'\r\n , width: o.scale * (o.length + o.width) + 'px'\r\n , height: o.scale * o.width + 'px'\r\n , background: color\r\n , boxShadow: shadow\r\n , transformOrigin: 'left'\r\n , transform: 'rotate(' + ~~(360/o.lines*i + o.rotate) + 'deg) translate(' + o.scale*o.radius + 'px' + ',0)'\r\n , borderRadius: (o.corners * o.scale * o.width >> 1) + 'px'\r\n })\r\n }\r\n\r\n for (; i < o.lines; i++) {\r\n seg = css(createEl(), {\r\n position: 'absolute'\r\n , top: 1 + ~(o.scale * o.width / 2) + 'px'\r\n , transform: o.hwaccel ? 'translate3d(0,0,0)' : ''\r\n , opacity: o.opacity\r\n , animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1 / o.speed + 's linear infinite'\r\n })\r\n\r\n if (o.shadow) ins(seg, css(fill('#000', '0 0 4px #000'), {top: '2px'}))\r\n ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)')))\r\n }\r\n return el\r\n }\r\n\r\n /**\r\n * Internal method that adjusts the opacity of a single line.\r\n * Will be overwritten in VML fallback mode below.\r\n */\r\n , opacity: function (el, i, val) {\r\n if (i < el.childNodes.length) el.childNodes[i].style.opacity = val\r\n }\r\n\r\n })\r\n\r\n if (typeof document !== 'undefined') {\r\n sheet = (function () {\r\n var el = createEl('style', {type : 'text/css'})\r\n document.head.insertBefore(el, document.head.firstChild);\r\n return el.sheet || el.styleSheet\r\n }())\r\n\r\n var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})\r\n\r\n useCssAnimations = vendor(probe, 'animation')\r\n }\r\n\r\n return Spinner\r\n\r\n}));","import 'Modules/Quotation/import/quotation.less';\r\n\r\nexport default angular\r\n .module('service.quotation', [])\r\n\r\n /* @ngInject */\r\n .factory('QuotationService', function (HttpService) {\r\n const service = {\r\n getQuotations,\r\n addToQuotation,\r\n removeQuotationLine\r\n };\r\n return service;\r\n\r\n ////////////\r\n function getQuotations() {\r\n return HttpService.get({\r\n url: '/AccountQuotations/Get',\r\n cache: false\r\n });\r\n }\r\n function addToQuotation(idProduct, idQuotation, object, quantity) {\r\n return HttpService.post({\r\n url: '/Quotation/AddToQuotation',\r\n data: {\r\n IdProduct: idProduct,\r\n IdQuotation: idQuotation,\r\n Object: object,\r\n Quantity: quantity\r\n }\r\n });\r\n }\r\n function removeQuotationLine(idLine, idQuotation) {\r\n return HttpService.post({\r\n url: '/Quotation/RemoveQuotationLine',\r\n data: {\r\n IdLine: idLine,\r\n IdQuotation: idQuotation\r\n }\r\n });\r\n }\r\n });\r\n","/* lightgallery - v1.2.22 - 2016-07-20\r\n * http://sachinchoolur.github.io/lightGallery/\r\n * Copyright (c) 2016 Sachin N; Licensed Apache 2.0 */\r\n\r\n(function($, window, document, undefined) {\r\n\r\n 'use strict';\r\n\r\n var defaults = {\r\n\r\n mode: 'lg-slide',\r\n\r\n // Ex : 'ease'\r\n cssEasing: 'ease',\r\n\r\n //'for jquery animation'\r\n easing: 'linear',\r\n speed: 600,\r\n height: '100%',\r\n width: '100%',\r\n addClass: '',\r\n startClass: 'lg-start-zoom',\r\n backdropDuration: 150,\r\n hideBarsDelay: 6000,\r\n\r\n useLeft: false,\r\n\r\n closable: true,\r\n loop: true,\r\n escKey: true,\r\n keyPress: true,\r\n controls: true,\r\n slideEndAnimatoin: true,\r\n hideControlOnEnd: false,\r\n mousewheel: true,\r\n\r\n getCaptionFromTitleOrAlt: true,\r\n\r\n // .lg-item || '.lg-sub-html'\r\n appendSubHtmlTo: '.lg-sub-html',\r\n\r\n subHtmlSelectorRelative: false,\r\n\r\n /**\r\n * @desc number of preload slides\r\n * will exicute only after the current slide is fully loaded.\r\n *\r\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\r\n * slide will be loaded in the background after the 4th slide is fully loaded..\r\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\r\n *\r\n */\r\n preload: 1,\r\n showAfterLoad: true,\r\n selector: '',\r\n selectWithin: '',\r\n\r\n nextHtml: '',\r\n prevHtml: '',\r\n fullscreenHtml: '',\r\n closeHtml: '',\r\n\r\n // 0, 1\r\n index: false,\r\n\r\n iframeMaxWidth: '100%',\r\n\r\n download: false,\r\n counter: false,\r\n appendCounterTo: '.lg-toolbar',\r\n\r\n swipeThreshold: 50,\r\n enableSwipe: true,\r\n enableDrag: true,\r\n\r\n dynamic: false,\r\n dynamicEl: [],\r\n galleryId: 1\r\n };\r\n\r\n function Plugin(element, options) {\r\n\r\n // Current lightGallery element\r\n this.el = element;\r\n\r\n // Current jquery element\r\n this.$el = $(element);\r\n\r\n // lightGallery settings\r\n this.s = $.extend({}, defaults, options);\r\n\r\n // When using dynamic mode, ensure dynamicEl is an array\r\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\r\n throw ('When using dynamic mode, you must also define dynamicEl as an Array.');\r\n }\r\n\r\n // lightGallery modules\r\n this.modules = {};\r\n\r\n // false when lightgallery complete first slide;\r\n this.lGalleryOn = false;\r\n\r\n this.lgBusy = false;\r\n\r\n // Timeout function for hiding controls;\r\n this.hideBartimeout = false;\r\n\r\n // To determine browser supports for touch events;\r\n this.isTouch = ('ontouchstart' in document.documentElement);\r\n\r\n // Disable hideControlOnEnd if sildeEndAnimation is true\r\n if (this.s.slideEndAnimatoin) {\r\n this.s.hideControlOnEnd = false;\r\n }\r\n\r\n // Gallery items\r\n if (this.s.dynamic) {\r\n this.$items = this.s.dynamicEl;\r\n } else {\r\n if (this.s.selector === 'this') {\r\n this.$items = this.$el;\r\n } else if (this.s.selector !== '') {\r\n if (this.s.selectWithin) {\r\n this.$items = $(this.s.selectWithin).find(this.s.selector);\r\n } else {\r\n this.$items = this.$el.find($(this.s.selector));\r\n }\r\n } else {\r\n this.$items = this.$el.children();\r\n }\r\n }\r\n\r\n // .lg-item\r\n this.$slide = '';\r\n\r\n // .lg-outer\r\n this.$outer = '';\r\n\r\n this.init();\r\n\r\n return this;\r\n }\r\n\r\n Plugin.prototype.init = function() {\r\n\r\n var _this = this;\r\n\r\n // s.preload should not be more than $item.length\r\n if (_this.s.preload > _this.$items.length) {\r\n _this.s.preload = _this.$items.length;\r\n }\r\n\r\n // if dynamic option is enabled execute immediately\r\n var _hash = window.location.hash;\r\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\r\n\r\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\r\n\r\n $('body').addClass('lg-from-hash');\r\n if (!$('body').hasClass('lg-on')) {\r\n setTimeout(function() {\r\n _this.build(_this.index);\r\n });\r\n $('body').addClass('lg-on');\r\n }\r\n }\r\n\r\n if (_this.s.dynamic) {\r\n\r\n _this.$el.trigger('onBeforeOpen.lg');\r\n\r\n _this.index = _this.s.index || 0;\r\n\r\n // prevent accidental double execution\r\n if (!$('body').hasClass('lg-on')) {\r\n setTimeout(function() {\r\n _this.build(_this.index);\r\n $('body').addClass('lg-on');\r\n });\r\n }\r\n } else {\r\n\r\n // Using different namespace for click because click event should not unbind if selector is same object('this')\r\n _this.$items.on('click.lgcustom', function(event) {\r\n\r\n // For IE8\r\n try {\r\n event.preventDefault();\r\n event.preventDefault();\r\n } catch (er) {\r\n event.returnValue = false;\r\n }\r\n\r\n _this.$el.trigger('onBeforeOpen.lg');\r\n\r\n _this.index = _this.s.index || _this.$items.index(this);\r\n\r\n // prevent accidental double execution\r\n if (!$('body').hasClass('lg-on')) {\r\n _this.build(_this.index);\r\n $('body').addClass('lg-on');\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n Plugin.prototype.build = function(index) {\r\n\r\n var _this = this;\r\n\r\n _this.structure();\r\n\r\n // module constructor\r\n $.each($.fn.lightGallery.modules, function(key) {\r\n _this.modules[key] = new $.fn.lightGallery.modules[key](_this.el);\r\n });\r\n\r\n // initiate slide function\r\n _this.slide(index, false, false);\r\n\r\n if (_this.s.keyPress) {\r\n _this.keyPress();\r\n }\r\n\r\n if (_this.$items.length > 1) {\r\n\r\n _this.arrow();\r\n\r\n setTimeout(function() {\r\n _this.enableDrag();\r\n _this.enableSwipe();\r\n }, 50);\r\n\r\n if (_this.s.mousewheel) {\r\n _this.mousewheel();\r\n }\r\n }\r\n\r\n _this.counter();\r\n\r\n _this.closeGallery();\r\n\r\n _this.$el.trigger('onAfterOpen.lg');\r\n\r\n // Hide controllers if mouse doesn't move for some period\r\n _this.$outer.on('mousemove.lg click.lg touchstart.lg', function() {\r\n\r\n _this.$outer.removeClass('lg-hide-items');\r\n\r\n clearTimeout(_this.hideBartimeout);\r\n\r\n // Timeout will be cleared on each slide movement also\r\n _this.hideBartimeout = setTimeout(function() {\r\n _this.$outer.addClass('lg-hide-items');\r\n }, _this.s.hideBarsDelay);\r\n\r\n });\r\n\r\n };\r\n\r\n Plugin.prototype.structure = function() {\r\n var list = '';\r\n var controls = '';\r\n var i = 0;\r\n var subHtmlCont = '';\r\n var template;\r\n var _this = this;\r\n\r\n $('body').append('
');\r\n $('.lg-backdrop').css('transition-duration', this.s.backdropDuration + 'ms');\r\n\r\n // Create gallery items\r\n for (i = 0; i < this.$items.length; i++) {\r\n list += '
';\r\n }\r\n\r\n // Create controlls\r\n if (this.s.controls && this.$items.length > 1) {\r\n controls = '
' +\r\n '
' + this.s.prevHtml + '
' +\r\n '
' + this.s.nextHtml + '
' +\r\n '
';\r\n }\r\n\r\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\r\n subHtmlCont = '
';\r\n }\r\n\r\n template = '
' +\r\n '
' +\r\n '
' + list + '
' +\r\n '
' +\r\n '' + this.s.closeHtml + '' +\r\n '
' +\r\n controls +\r\n subHtmlCont +\r\n '
' +\r\n '
';\r\n\r\n $('body').append(template);\r\n this.$outer = $('.lg-outer');\r\n this.$slide = this.$outer.find('.lg-item');\r\n\r\n if (this.s.useLeft) {\r\n this.$outer.addClass('lg-use-left');\r\n\r\n // Set mode lg-slide if use left is true;\r\n this.s.mode = 'lg-slide';\r\n } else {\r\n this.$outer.addClass('lg-use-css3');\r\n }\r\n\r\n // For fixed height gallery\r\n _this.setTop();\r\n $(window).on('resize.lg orientationchange.lg', function() {\r\n setTimeout(function() {\r\n _this.setTop();\r\n }, 100);\r\n });\r\n\r\n // add class lg-current to remove initial transition\r\n this.$slide.eq(this.index).addClass('lg-current');\r\n\r\n // add Class for css support and transition mode\r\n if (this.doCss()) {\r\n this.$outer.addClass('lg-css3');\r\n } else {\r\n this.$outer.addClass('lg-css');\r\n\r\n // Set speed 0 because no animation will happen if browser doesn't support css3\r\n this.s.speed = 0;\r\n }\r\n\r\n this.$outer.addClass(this.s.mode);\r\n\r\n if (this.s.enableDrag && this.$items.length > 1) {\r\n this.$outer.addClass('lg-grab');\r\n }\r\n\r\n if (this.s.showAfterLoad) {\r\n this.$outer.addClass('lg-show-after-load');\r\n }\r\n\r\n if (this.doCss()) {\r\n var $inner = this.$outer.find('.lg-inner');\r\n $inner.css('transition-timing-function', this.s.cssEasing);\r\n $inner.css('transition-duration', this.s.speed + 'ms');\r\n }\r\n\r\n setTimeout(function() {\r\n $('.lg-backdrop').addClass('in');\r\n });\r\n\r\n setTimeout(function() {\r\n _this.$outer.addClass('lg-visible');\r\n }, this.s.backdropDuration);\r\n\r\n if (this.s.download) {\r\n this.$outer.find('.lg-toolbar').append('');\r\n }\r\n\r\n // Store the current scroll top value to scroll back after closing the gallery..\r\n this.prevScrollTop = $(window).scrollTop();\r\n\r\n };\r\n\r\n // For fixed height gallery\r\n Plugin.prototype.setTop = function() {\r\n if (this.s.height !== '100%') {\r\n var wH = $(window).height();\r\n var top = (wH - parseInt(this.s.height, 10)) / 2;\r\n var $lGallery = this.$outer.find('.lg');\r\n if (wH >= parseInt(this.s.height, 10)) {\r\n $lGallery.css('top', top + 'px');\r\n } else {\r\n $lGallery.css('top', '0px');\r\n }\r\n }\r\n };\r\n\r\n // Find css3 support\r\n Plugin.prototype.doCss = function() {\r\n // check for css animation support\r\n var support = function() {\r\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\r\n var root = document.documentElement;\r\n var i = 0;\r\n for (i = 0; i < transition.length; i++) {\r\n if (transition[i] in root.style) {\r\n return true;\r\n }\r\n }\r\n };\r\n\r\n if (support()) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n /**\r\n * @desc Check the given src is video\r\n * @param {String} src\r\n * @return {Object} video type\r\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\r\n */\r\n Plugin.prototype.isVideo = function(src, index) {\r\n\r\n var html;\r\n if (this.s.dynamic) {\r\n html = this.s.dynamicEl[index].html;\r\n } else {\r\n html = this.$items.eq(index).attr('data-html');\r\n }\r\n\r\n if (!src && html) {\r\n return {\r\n html5: true\r\n };\r\n }\r\n\r\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\r\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\r\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\r\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\r\n\r\n if (youtube) {\r\n return {\r\n youtube: youtube\r\n };\r\n } else if (vimeo) {\r\n return {\r\n vimeo: vimeo\r\n };\r\n } else if (dailymotion) {\r\n return {\r\n dailymotion: dailymotion\r\n };\r\n } else if (vk) {\r\n return {\r\n vk: vk\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * @desc Create image counter\r\n * Ex: 1/10\r\n */\r\n Plugin.prototype.counter = function() {\r\n if (this.s.counter) {\r\n $(this.s.appendCounterTo).append('
' + (parseInt(this.index, 10) + 1) + ' / ' + this.$items.length + '
');\r\n }\r\n };\r\n\r\n /**\r\n * @desc add sub-html into the slide\r\n * @param {Number} index - index of the slide\r\n */\r\n Plugin.prototype.addHtml = function(index) {\r\n var subHtml = null;\r\n var subHtmlUrl;\r\n var $currentEle;\r\n if (this.s.dynamic) {\r\n if (this.s.dynamicEl[index].subHtmlUrl) {\r\n subHtmlUrl = this.s.dynamicEl[index].subHtmlUrl;\r\n } else {\r\n subHtml = this.s.dynamicEl[index].subHtml;\r\n }\r\n } else {\r\n $currentEle = this.$items.eq(index);\r\n if ($currentEle.attr('data-sub-html-url')) {\r\n subHtmlUrl = $currentEle.attr('data-sub-html-url');\r\n } else {\r\n subHtml = $currentEle.attr('data-sub-html');\r\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\r\n subHtml = $currentEle.attr('title') || $currentEle.find('img').first().attr('alt');\r\n }\r\n }\r\n }\r\n\r\n if (!subHtmlUrl) {\r\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\r\n\r\n // get first letter of subhtml\r\n // if first letter starts with . or # get the html form the jQuery object\r\n var fL = subHtml.substring(0, 1);\r\n if (fL === '.' || fL === '#') {\r\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\r\n subHtml = $currentEle.find(subHtml).html();\r\n } else {\r\n subHtml = $(subHtml).html();\r\n }\r\n }\r\n } else {\r\n subHtml = '';\r\n }\r\n }\r\n\r\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\r\n\r\n if (subHtmlUrl) {\r\n this.$outer.find(this.s.appendSubHtmlTo).load(subHtmlUrl);\r\n } else {\r\n this.$outer.find(this.s.appendSubHtmlTo).html(subHtml);\r\n }\r\n\r\n } else {\r\n\r\n if (subHtmlUrl) {\r\n this.$slide.eq(index).load(subHtmlUrl);\r\n } else {\r\n this.$slide.eq(index).append(subHtml);\r\n }\r\n }\r\n\r\n // Add lg-empty-html class if title doesn't exist\r\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\r\n if (subHtml === '') {\r\n this.$outer.find(this.s.appendSubHtmlTo).addClass('lg-empty-html');\r\n } else {\r\n this.$outer.find(this.s.appendSubHtmlTo).removeClass('lg-empty-html');\r\n }\r\n }\r\n\r\n this.$el.trigger('onAfterAppendSubHtml.lg', [index]);\r\n };\r\n\r\n /**\r\n * @desc Preload slides\r\n * @param {Number} index - index of the slide\r\n */\r\n Plugin.prototype.preload = function(index) {\r\n var i = 1;\r\n var j = 1;\r\n for (i = 1; i <= this.s.preload; i++) {\r\n if (i >= this.$items.length - index) {\r\n break;\r\n }\r\n\r\n this.loadContent(index + i, false, 0);\r\n }\r\n\r\n for (j = 1; j <= this.s.preload; j++) {\r\n if (index - j < 0) {\r\n break;\r\n }\r\n\r\n this.loadContent(index - j, false, 0);\r\n }\r\n };\r\n\r\n /**\r\n * @desc Load slide content into slide.\r\n * @param {Number} index - index of the slide.\r\n * @param {Boolean} rec - if true call loadcontent() function again.\r\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\r\n */\r\n Plugin.prototype.loadContent = function(index, rec, delay) {\r\n\r\n var _this = this;\r\n var _hasPoster = false;\r\n var _$img;\r\n var _src;\r\n var _poster;\r\n var _srcset;\r\n var _sizes;\r\n var _html;\r\n var getResponsiveSrc = function(srcItms) {\r\n var rsWidth = [];\r\n var rsSrc = [];\r\n for (var i = 0; i < srcItms.length; i++) {\r\n var __src = srcItms[i].split(' ');\r\n\r\n // Manage empty space\r\n if (__src[0] === '') {\r\n __src.splice(0, 1);\r\n }\r\n\r\n rsSrc.push(__src[0]);\r\n rsWidth.push(__src[1]);\r\n }\r\n\r\n var wWidth = $(window).width();\r\n for (var j = 0; j < rsWidth.length; j++) {\r\n if (parseInt(rsWidth[j], 10) > wWidth) {\r\n _src = rsSrc[j];\r\n break;\r\n }\r\n }\r\n };\r\n\r\n if (_this.s.dynamic) {\r\n\r\n if (_this.s.dynamicEl[index].poster) {\r\n _hasPoster = true;\r\n _poster = _this.s.dynamicEl[index].poster;\r\n }\r\n\r\n _html = _this.s.dynamicEl[index].html;\r\n _src = _this.s.dynamicEl[index].src;\r\n\r\n if (_this.s.dynamicEl[index].responsive) {\r\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\r\n getResponsiveSrc(srcDyItms);\r\n }\r\n\r\n _srcset = _this.s.dynamicEl[index].srcset;\r\n _sizes = _this.s.dynamicEl[index].sizes;\r\n\r\n } else {\r\n\r\n if (_this.$items.eq(index).attr('data-poster')) {\r\n _hasPoster = true;\r\n _poster = _this.$items.eq(index).attr('data-poster');\r\n }\r\n\r\n _html = _this.$items.eq(index).attr('data-html');\r\n _src = _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src');\r\n\r\n if (_this.$items.eq(index).attr('data-responsive')) {\r\n var srcItms = _this.$items.eq(index).attr('data-responsive').split(',');\r\n getResponsiveSrc(srcItms);\r\n }\r\n\r\n _srcset = _this.$items.eq(index).attr('data-srcset');\r\n _sizes = _this.$items.eq(index).attr('data-sizes');\r\n\r\n }\r\n\r\n //if (_src || _srcset || _sizes || _poster) {\r\n\r\n var iframe = false;\r\n if (_this.s.dynamic) {\r\n if (_this.s.dynamicEl[index].iframe) {\r\n iframe = true;\r\n }\r\n } else {\r\n if (_this.$items.eq(index).attr('data-iframe') === 'true') {\r\n iframe = true;\r\n }\r\n }\r\n\r\n var _isVideo = _this.isVideo(_src, index);\r\n if (!_this.$slide.eq(index).hasClass('lg-loaded')) {\r\n if (iframe) {\r\n _this.$slide.eq(index).prepend('
');\r\n } else if (_hasPoster) {\r\n var videoClass = '';\r\n if (_isVideo && _isVideo.youtube) {\r\n videoClass = 'lg-has-youtube';\r\n } else if (_isVideo && _isVideo.vimeo) {\r\n videoClass = 'lg-has-vimeo';\r\n } else {\r\n videoClass = 'lg-has-html5';\r\n }\r\n\r\n _this.$slide.eq(index).prepend('
');\r\n\r\n } else if (_isVideo) {\r\n _this.$slide.eq(index).prepend('
');\r\n _this.$el.trigger('hasVideo.lg', [index, _src, _html]);\r\n } else {\r\n _this.$slide.eq(index).prepend('
');\r\n }\r\n\r\n _this.$el.trigger('onAferAppendSlide.lg', [index]);\r\n\r\n _$img = _this.$slide.eq(index).find('.lg-object');\r\n if (_sizes) {\r\n _$img.attr('sizes', _sizes);\r\n }\r\n\r\n if (_srcset) {\r\n _$img.attr('srcset', _srcset);\r\n try {\r\n picturefill({\r\n elements: [_$img[0]]\r\n });\r\n } catch (e) {\r\n console.error('Make sure you have included Picturefill version 2');\r\n }\r\n }\r\n\r\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\r\n _this.addHtml(index);\r\n }\r\n\r\n _this.$slide.eq(index).addClass('lg-loaded');\r\n }\r\n\r\n _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() {\r\n\r\n // For first time add some delay for displaying the start animation.\r\n var _speed = 0;\r\n\r\n // Do not change the delay value because it is required for zoom plugin.\r\n // If gallery opened from direct url (hash) speed value should be 0\r\n if (delay && !$('body').hasClass('lg-from-hash')) {\r\n _speed = delay;\r\n }\r\n\r\n setTimeout(function() {\r\n _this.$slide.eq(index).addClass('lg-complete');\r\n _this.$el.trigger('onSlideItemLoad.lg', [index, delay || 0]);\r\n }, _speed);\r\n\r\n });\r\n\r\n // @todo check load state for html5 videos\r\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\r\n _this.$slide.eq(index).addClass('lg-complete');\r\n }\r\n\r\n if (rec === true) {\r\n if (!_this.$slide.eq(index).hasClass('lg-complete')) {\r\n _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() {\r\n _this.preload(index);\r\n });\r\n } else {\r\n _this.preload(index);\r\n }\r\n }\r\n\r\n //}\r\n };\r\n\r\n /**\r\n * @desc slide function for lightgallery\r\n ** Slide() gets call on start\r\n ** ** Set lg.on true once slide() function gets called.\r\n ** Call loadContent() on slide() function inside setTimeout\r\n ** ** On first slide we do not want any animation like slide of fade\r\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\r\n ** ** Else loadContent() should wait for the transition to complete.\r\n ** ** So set timeout s.speed + 50\r\n <=> ** loadContent() will load slide content in to the particular slide\r\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\r\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\r\n ** ** avoid simultaneous image load\r\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\r\n ** loadContent() <====> Preload();\r\n\r\n * @param {Number} index - index of the slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\r\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\r\n */\r\n Plugin.prototype.slide = function(index, fromTouch, fromThumb) {\r\n\r\n var _prevIndex = this.$outer.find('.lg-current').index();\r\n var _this = this;\r\n\r\n // Prevent if multiple call\r\n // Required for hsh plugin\r\n if (_this.lGalleryOn && (_prevIndex === index)) {\r\n return;\r\n }\r\n\r\n var _length = this.$slide.length;\r\n var _time = _this.lGalleryOn ? this.s.speed : 0;\r\n var _next = false;\r\n var _prev = false;\r\n\r\n if (!_this.lgBusy) {\r\n\r\n if (this.s.download) {\r\n var _src;\r\n if (_this.s.dynamic) {\r\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\r\n } else {\r\n _src = _this.$items.eq(index).attr('data-download-url') !== 'false' && (_this.$items.eq(index).attr('data-download-url') || _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src'));\r\n\r\n }\r\n\r\n if (_src) {\r\n $('#lg-download').attr('href', _src);\r\n _this.$outer.removeClass('lg-hide-download');\r\n } else {\r\n _this.$outer.addClass('lg-hide-download');\r\n }\r\n }\r\n\r\n this.$el.trigger('onBeforeSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);\r\n\r\n _this.lgBusy = true;\r\n\r\n clearTimeout(_this.hideBartimeout);\r\n\r\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\r\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\r\n\r\n // wait for slide animation to complete\r\n setTimeout(function() {\r\n _this.addHtml(index);\r\n }, _time);\r\n }\r\n\r\n this.arrowDisable(index);\r\n\r\n if (!fromTouch) {\r\n\r\n // remove all transitions\r\n _this.$outer.addClass('lg-no-trans');\r\n\r\n this.$slide.removeClass('lg-prev-slide lg-next-slide');\r\n\r\n if (index < _prevIndex) {\r\n _prev = true;\r\n if ((index === 0) && (_prevIndex === _length - 1) && !fromThumb) {\r\n _prev = false;\r\n _next = true;\r\n }\r\n } else if (index > _prevIndex) {\r\n _next = true;\r\n if ((index === _length - 1) && (_prevIndex === 0) && !fromThumb) {\r\n _prev = true;\r\n _next = false;\r\n }\r\n }\r\n\r\n if (_prev) {\r\n\r\n //prevslide\r\n this.$slide.eq(index).addClass('lg-prev-slide');\r\n this.$slide.eq(_prevIndex).addClass('lg-next-slide');\r\n } else if (_next) {\r\n\r\n // next slide\r\n this.$slide.eq(index).addClass('lg-next-slide');\r\n this.$slide.eq(_prevIndex).addClass('lg-prev-slide');\r\n }\r\n\r\n // give 50 ms for browser to add/remove class\r\n setTimeout(function() {\r\n _this.$slide.removeClass('lg-current');\r\n\r\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\r\n _this.$slide.eq(index).addClass('lg-current');\r\n\r\n // reset all transitions\r\n _this.$outer.removeClass('lg-no-trans');\r\n }, 50);\r\n } else {\r\n\r\n var touchPrev = index - 1;\r\n var touchNext = index + 1;\r\n\r\n if ((index === 0) && (_prevIndex === _length - 1)) {\r\n\r\n // next slide\r\n touchNext = 0;\r\n touchPrev = _length - 1;\r\n } else if ((index === _length - 1) && (_prevIndex === 0)) {\r\n\r\n // prev slide\r\n touchNext = 0;\r\n touchPrev = _length - 1;\r\n }\r\n\r\n this.$slide.removeClass('lg-prev-slide lg-current lg-next-slide');\r\n _this.$slide.eq(touchPrev).addClass('lg-prev-slide');\r\n _this.$slide.eq(touchNext).addClass('lg-next-slide');\r\n _this.$slide.eq(index).addClass('lg-current');\r\n }\r\n\r\n if (_this.lGalleryOn) {\r\n setTimeout(function() {\r\n _this.loadContent(index, true, 0);\r\n }, this.s.speed + 50);\r\n\r\n setTimeout(function() {\r\n _this.lgBusy = false;\r\n _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);\r\n }, this.s.speed);\r\n\r\n } else {\r\n _this.loadContent(index, true, _this.s.backdropDuration);\r\n\r\n _this.lgBusy = false;\r\n _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);\r\n }\r\n\r\n _this.lGalleryOn = true;\r\n\r\n if (this.s.counter) {\r\n $('#lg-counter-current').text(index + 1);\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n /**\r\n * @desc Go to next slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n */\r\n Plugin.prototype.goToNextSlide = function(fromTouch) {\r\n var _this = this;\r\n if (!_this.lgBusy) {\r\n if ((_this.index + 1) < _this.$slide.length) {\r\n _this.index++;\r\n _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]);\r\n _this.slide(_this.index, fromTouch, false);\r\n } else {\r\n if (_this.s.loop) {\r\n _this.index = 0;\r\n _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]);\r\n _this.slide(_this.index, fromTouch, false);\r\n } else if (_this.s.slideEndAnimatoin) {\r\n _this.$outer.addClass('lg-right-end');\r\n setTimeout(function() {\r\n _this.$outer.removeClass('lg-right-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * @desc Go to previous slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n */\r\n Plugin.prototype.goToPrevSlide = function(fromTouch) {\r\n var _this = this;\r\n if (!_this.lgBusy) {\r\n if (_this.index > 0) {\r\n _this.index--;\r\n _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]);\r\n _this.slide(_this.index, fromTouch, false);\r\n } else {\r\n if (_this.s.loop) {\r\n _this.index = _this.$items.length - 1;\r\n _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]);\r\n _this.slide(_this.index, fromTouch, false);\r\n } else if (_this.s.slideEndAnimatoin) {\r\n _this.$outer.addClass('lg-left-end');\r\n setTimeout(function() {\r\n _this.$outer.removeClass('lg-left-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n\r\n Plugin.prototype.keyPress = function() {\r\n var _this = this;\r\n if (this.$items.length > 1) {\r\n $(window).on('keyup.lg', function(e) {\r\n if (_this.$items.length > 1) {\r\n if (e.keyCode === 37) {\r\n e.preventDefault();\r\n _this.goToPrevSlide();\r\n }\r\n\r\n if (e.keyCode === 39) {\r\n e.preventDefault();\r\n _this.goToNextSlide();\r\n }\r\n }\r\n });\r\n }\r\n\r\n $(window).on('keydown.lg', function(e) {\r\n if (_this.s.escKey === true && e.keyCode === 27) {\r\n e.preventDefault();\r\n if (!_this.$outer.hasClass('lg-thumb-open')) {\r\n _this.destroy();\r\n } else {\r\n _this.$outer.removeClass('lg-thumb-open');\r\n }\r\n }\r\n });\r\n };\r\n\r\n Plugin.prototype.arrow = function() {\r\n var _this = this;\r\n this.$outer.find('.lg-prev').on('click.lg', function() {\r\n _this.goToPrevSlide();\r\n });\r\n\r\n this.$outer.find('.lg-next').on('click.lg', function() {\r\n _this.goToNextSlide();\r\n });\r\n };\r\n\r\n Plugin.prototype.arrowDisable = function(index) {\r\n\r\n // Disable arrows if s.hideControlOnEnd is true\r\n if (!this.s.loop && this.s.hideControlOnEnd) {\r\n if ((index + 1) < this.$slide.length) {\r\n this.$outer.find('.lg-next').removeAttr('disabled').removeClass('disabled');\r\n } else {\r\n this.$outer.find('.lg-next').attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n\r\n if (index > 0) {\r\n this.$outer.find('.lg-prev').removeAttr('disabled').removeClass('disabled');\r\n } else {\r\n this.$outer.find('.lg-prev').attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n }\r\n };\r\n\r\n Plugin.prototype.setTranslate = function($el, xValue, yValue) {\r\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\r\n if (this.s.useLeft) {\r\n $el.css('left', xValue);\r\n } else {\r\n $el.css({\r\n transform: 'translate3d(' + (xValue) + 'px, ' + yValue + 'px, 0px)'\r\n });\r\n }\r\n };\r\n\r\n Plugin.prototype.touchMove = function(startCoords, endCoords) {\r\n\r\n var distance = endCoords - startCoords;\r\n\r\n if (Math.abs(distance) > 15) {\r\n // reset opacity and transition duration\r\n this.$outer.addClass('lg-dragging');\r\n\r\n // move current slide\r\n this.setTranslate(this.$slide.eq(this.index), distance, 0);\r\n\r\n // move next and prev slide with current slide\r\n this.setTranslate($('.lg-prev-slide'), -this.$slide.eq(this.index).width() + distance, 0);\r\n this.setTranslate($('.lg-next-slide'), this.$slide.eq(this.index).width() + distance, 0);\r\n }\r\n };\r\n\r\n Plugin.prototype.touchEnd = function(distance) {\r\n var _this = this;\r\n\r\n // keep slide animation for any mode while dragg/swipe\r\n if (_this.s.mode !== 'lg-slide') {\r\n _this.$outer.addClass('lg-slide');\r\n }\r\n\r\n this.$slide.not('.lg-current, .lg-prev-slide, .lg-next-slide').css('opacity', '0');\r\n\r\n // set transition duration\r\n setTimeout(function() {\r\n _this.$outer.removeClass('lg-dragging');\r\n if ((distance < 0) && (Math.abs(distance) > _this.s.swipeThreshold)) {\r\n _this.goToNextSlide(true);\r\n } else if ((distance > 0) && (Math.abs(distance) > _this.s.swipeThreshold)) {\r\n _this.goToPrevSlide(true);\r\n } else if (Math.abs(distance) < 5) {\r\n\r\n // Trigger click if distance is less than 5 pix\r\n _this.$el.trigger('onSlideClick.lg');\r\n }\r\n\r\n _this.$slide.removeAttr('style');\r\n });\r\n\r\n // remove slide class once drag/swipe is completed if mode is not slide\r\n setTimeout(function() {\r\n if (!_this.$outer.hasClass('lg-dragging') && _this.s.mode !== 'lg-slide') {\r\n _this.$outer.removeClass('lg-slide');\r\n }\r\n }, _this.s.speed + 100);\r\n\r\n };\r\n\r\n Plugin.prototype.enableSwipe = function() {\r\n var _this = this;\r\n var startCoords = 0;\r\n var endCoords = 0;\r\n var isMoved = false;\r\n\r\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\r\n\r\n _this.$slide.on('touchstart.lg', function(e) {\r\n if (!_this.$outer.hasClass('lg-zoomed') && !_this.lgBusy) {\r\n e.preventDefault();\r\n _this.manageSwipeClass();\r\n startCoords = e.originalEvent.targetTouches[0].pageX;\r\n }\r\n });\r\n\r\n _this.$slide.on('touchmove.lg', function(e) {\r\n if (!_this.$outer.hasClass('lg-zoomed')) {\r\n e.preventDefault();\r\n endCoords = e.originalEvent.targetTouches[0].pageX;\r\n _this.touchMove(startCoords, endCoords);\r\n isMoved = true;\r\n }\r\n });\r\n\r\n _this.$slide.on('touchend.lg', function() {\r\n if (!_this.$outer.hasClass('lg-zoomed')) {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords - startCoords);\r\n } else {\r\n _this.$el.trigger('onSlideClick.lg');\r\n }\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n Plugin.prototype.enableDrag = function() {\r\n var _this = this;\r\n var startCoords = 0;\r\n var endCoords = 0;\r\n var isDraging = false;\r\n var isMoved = false;\r\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\r\n _this.$slide.on('mousedown.lg', function(e) {\r\n // execute only on .lg-object\r\n if (!_this.$outer.hasClass('lg-zoomed')) {\r\n if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) {\r\n e.preventDefault();\r\n\r\n if (!_this.lgBusy) {\r\n _this.manageSwipeClass();\r\n startCoords = e.pageX;\r\n isDraging = true;\r\n\r\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\r\n _this.$outer.scrollLeft += 1;\r\n _this.$outer.scrollLeft -= 1;\r\n\r\n // *\r\n\r\n _this.$outer.removeClass('lg-grab').addClass('lg-grabbing');\r\n\r\n _this.$el.trigger('onDragstart.lg');\r\n }\r\n\r\n }\r\n }\r\n });\r\n\r\n $(window).on('mousemove.lg', function(e) {\r\n if (isDraging) {\r\n isMoved = true;\r\n endCoords = e.pageX;\r\n _this.touchMove(startCoords, endCoords);\r\n _this.$el.trigger('onDragmove.lg');\r\n }\r\n });\r\n\r\n $(window).on('mouseup.lg', function(e) {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords - startCoords);\r\n _this.$el.trigger('onDragend.lg');\r\n } else if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) {\r\n _this.$el.trigger('onSlideClick.lg');\r\n }\r\n\r\n // Prevent execution on click\r\n if (isDraging) {\r\n isDraging = false;\r\n _this.$outer.removeClass('lg-grabbing').addClass('lg-grab');\r\n }\r\n });\r\n\r\n }\r\n };\r\n\r\n Plugin.prototype.manageSwipeClass = function() {\r\n var touchNext = this.index + 1;\r\n var touchPrev = this.index - 1;\r\n var length = this.$slide.length;\r\n if (this.s.loop) {\r\n if (this.index === 0) {\r\n touchPrev = length - 1;\r\n } else if (this.index === length - 1) {\r\n touchNext = 0;\r\n }\r\n }\r\n\r\n this.$slide.removeClass('lg-next-slide lg-prev-slide');\r\n if (touchPrev > -1) {\r\n this.$slide.eq(touchPrev).addClass('lg-prev-slide');\r\n }\r\n\r\n this.$slide.eq(touchNext).addClass('lg-next-slide');\r\n };\r\n\r\n Plugin.prototype.mousewheel = function() {\r\n var _this = this;\r\n _this.$outer.on('mousewheel.lg', function(e) {\r\n\r\n if (!e.deltaY) {\r\n return;\r\n }\r\n\r\n if (e.deltaY > 0) {\r\n _this.goToPrevSlide();\r\n } else {\r\n _this.goToNextSlide();\r\n }\r\n\r\n e.preventDefault();\r\n });\r\n\r\n };\r\n\r\n Plugin.prototype.closeGallery = function() {\r\n\r\n var _this = this;\r\n var mousedown = false;\r\n this.$outer.find('.lg-close').on('click.lg', function() {\r\n _this.destroy();\r\n });\r\n\r\n if (_this.s.closable) {\r\n\r\n // If you drag the slide and release outside gallery gets close on chrome\r\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\r\n _this.$outer.on('mousedown.lg', function(e) {\r\n\r\n if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap')) {\r\n mousedown = true;\r\n } else {\r\n mousedown = false;\r\n }\r\n\r\n });\r\n\r\n _this.$outer.on('mouseup.lg', function(e) {\r\n\r\n if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap') && mousedown) {\r\n if (!_this.$outer.hasClass('lg-dragging')) {\r\n _this.destroy();\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n Plugin.prototype.destroy = function(d) {\r\n\r\n var _this = this;\r\n\r\n if (!d) {\r\n _this.$el.trigger('onBeforeClose.lg');\r\n }\r\n\r\n //$(window).scrollTop(_this.prevScrollTop);\r\n\r\n /**\r\n * if d is false or undefined destroy will only close the gallery\r\n * plugins instance remains with the element\r\n *\r\n * if d is true destroy will completely remove the plugin\r\n */\r\n\r\n if (d) {\r\n if (!_this.s.dynamic) {\r\n // only when not using dynamic mode is $items a jquery collection\r\n this.$items.off('click.lg click.lgcustom');\r\n }\r\n\r\n $.removeData(_this.el, 'lightGallery');\r\n }\r\n\r\n // Unbind all events added by lightGallery\r\n this.$el.off('.lg.tm');\r\n\r\n // Distroy all lightGallery modules\r\n $.each($.fn.lightGallery.modules, function(key) {\r\n if (_this.modules[key]) {\r\n _this.modules[key].destroy();\r\n }\r\n });\r\n\r\n this.lGalleryOn = false;\r\n\r\n clearTimeout(_this.hideBartimeout);\r\n this.hideBartimeout = false;\r\n $(window).off('.lg');\r\n $('body').removeClass('lg-on lg-from-hash');\r\n\r\n if (_this.$outer) {\r\n _this.$outer.removeClass('lg-visible');\r\n }\r\n\r\n $('.lg-backdrop').removeClass('in');\r\n\r\n setTimeout(function() {\r\n if (_this.$outer) {\r\n _this.$outer.remove();\r\n }\r\n\r\n $('.lg-backdrop').remove();\r\n\r\n if (!d) {\r\n _this.$el.trigger('onCloseAfter.lg');\r\n }\r\n\r\n }, _this.s.backdropDuration + 50);\r\n };\r\n\r\n $.fn.lightGallery = function(options) {\r\n return this.each(function() {\r\n if (!$.data(this, 'lightGallery')) {\r\n $.data(this, 'lightGallery', new Plugin(this, options));\r\n } else {\r\n try {\r\n $(this).data('lightGallery').init();\r\n } catch (err) {\r\n console.error('lightGallery has not initiated properly');\r\n }\r\n }\r\n });\r\n };\r\n\r\n $.fn.lightGallery.modules = {};\r\n\r\n})(jQuery, window, document);\r\n\r\n/* FULLSCREEN */\r\n(function($, window, document, undefined) {\r\n\r\n 'use strict';\r\n\r\n var defaults = {\r\n fullScreen: true\r\n };\r\n\r\n var Fullscreen = function(element) {\r\n\r\n // get lightGallery core plugin data\r\n this.core = $(element).data('lightGallery');\r\n\r\n this.$el = $(element);\r\n\r\n // extend module defalut settings with lightGallery core settings\r\n this.core.s = $.extend({}, defaults, this.core.s);\r\n\r\n this.init();\r\n\r\n return this;\r\n };\r\n\r\n Fullscreen.prototype.init = function() {\r\n var fullScreen = '';\r\n if (this.core.s.fullScreen) {\r\n\r\n // check for fullscreen browser support\r\n if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled &&\r\n !document.mozFullScreenEnabled && !document.msFullscreenEnabled) {\r\n return;\r\n } else {\r\n fullScreen = '' + this.core.s.fullscreenHtml + '';\r\n this.core.$outer.find('.lg-toolbar').append(fullScreen);\r\n this.fullScreen();\r\n }\r\n }\r\n };\r\n\r\n Fullscreen.prototype.requestFullscreen = function() {\r\n var el = document.documentElement;\r\n if (el.requestFullscreen) {\r\n el.requestFullscreen();\r\n } else if (el.msRequestFullscreen) {\r\n el.msRequestFullscreen();\r\n } else if (el.mozRequestFullScreen) {\r\n el.mozRequestFullScreen();\r\n } else if (el.webkitRequestFullscreen) {\r\n el.webkitRequestFullscreen();\r\n }\r\n };\r\n\r\n Fullscreen.prototype.exitFullscreen = function() {\r\n if (document.fullscreenElement ||\r\n document.webkitFullscreenElement ||\r\n document.mozFullScreenElement) {\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n } else if (document.msExitFullscreen) {\r\n document.msExitFullscreen();\r\n } else if (document.mozCancelFullScreen) {\r\n document.mozCancelFullScreen();\r\n } else if (document.webkitExitFullscreen) {\r\n document.webkitExitFullscreen();\r\n }\r\n }\r\n };\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\r\n Fullscreen.prototype.fullScreen = function() {\r\n var _this = this;\r\n\r\n $(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', function() {\r\n _this.core.$outer.toggleClass('lg-fullscreen-on');\r\n });\r\n\r\n this.core.$outer.find('.lg-fullscreen').on('click.lg', function() {\r\n if (!document.fullscreenElement &&\r\n !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) {\r\n _this.requestFullscreen();\r\n } else {\r\n _this.exitFullscreen();\r\n }\r\n });\r\n\r\n };\r\n\r\n Fullscreen.prototype.destroy = function() {\r\n\r\n // exit from fullscreen if activated\r\n this.exitFullscreen();\r\n\r\n $(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg');\r\n };\r\n\r\n $.fn.lightGallery.modules.fullscreen = Fullscreen;\r\n\r\n})(jQuery, window, document);\r\n\r\n/* THUMBNAIL */\r\n(function($, window, document, undefined) {\r\n\r\n 'use strict';\r\n\r\n var defaults = {\r\n thumbnail: true,\r\n\r\n animateThumb: true,\r\n currentPagerPosition: 'middle',\r\n\r\n thumbWidth: 80,\r\n thumbContHeight: 100,\r\n thumbMargin: 5,\r\n\r\n exThumbImage: false,\r\n showThumbByDefault: true,\r\n toogleThumb: true,\r\n pullCaptionUp: true,\r\n\r\n enableThumbDrag: true,\r\n enableThumbSwipe: true,\r\n swipeThreshold: 50,\r\n\r\n loadYoutubeThumbnail: true,\r\n youtubeThumbSize: 1,\r\n\r\n loadVimeoThumbnail: true,\r\n vimeoThumbSize: 'thumbnail_small',\r\n\r\n loadDailymotionThumbnail: true\r\n };\r\n\r\n var Thumbnail = function(element) {\r\n\r\n // get lightGallery core plugin data\r\n this.core = $(element).data('lightGallery');\r\n\r\n // extend module default settings with lightGallery core settings\r\n this.core.s = $.extend({}, defaults, this.core.s);\r\n\r\n this.$el = $(element);\r\n this.$thumbOuter = null;\r\n this.thumbOuterWidth = 0;\r\n this.thumbTotalWidth = (this.core.$items.length * (this.core.s.thumbWidth + this.core.s.thumbMargin));\r\n this.thumbIndex = this.core.index;\r\n\r\n // Thumbnail animation value\r\n this.left = 0;\r\n\r\n this.init();\r\n\r\n return this;\r\n };\r\n\r\n Thumbnail.prototype.init = function() {\r\n var _this = this;\r\n if (this.core.s.thumbnail && this.core.$items.length > 1) {\r\n if (this.core.s.showThumbByDefault) {\r\n setTimeout(function(){\r\n _this.core.$outer.addClass('lg-thumb-open');\r\n }, 700);\r\n }\r\n\r\n if (this.core.s.pullCaptionUp) {\r\n this.core.$outer.addClass('lg-pull-caption-up');\r\n }\r\n\r\n this.build();\r\n if (this.core.s.animateThumb) {\r\n if (this.core.s.enableThumbDrag && !this.core.isTouch && this.core.doCss()) {\r\n this.enableThumbDrag();\r\n }\r\n\r\n if (this.core.s.enableThumbSwipe && this.core.isTouch && this.core.doCss()) {\r\n this.enableThumbSwipe();\r\n }\r\n\r\n this.thumbClickable = false;\r\n } else {\r\n this.thumbClickable = true;\r\n }\r\n\r\n this.toogle();\r\n this.thumbkeyPress();\r\n }\r\n };\r\n\r\n Thumbnail.prototype.build = function() {\r\n var _this = this;\r\n var thumbList = '';\r\n var vimeoErrorThumbSize = '';\r\n var $thumb;\r\n var html = '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n switch (this.core.s.vimeoThumbSize) {\r\n case 'thumbnail_large':\r\n vimeoErrorThumbSize = '640';\r\n break;\r\n case 'thumbnail_medium':\r\n vimeoErrorThumbSize = '200x150';\r\n break;\r\n case 'thumbnail_small':\r\n vimeoErrorThumbSize = '100x75';\r\n }\r\n\r\n _this.core.$outer.addClass('lg-has-thumb');\r\n\r\n _this.core.$outer.find('.lg').append(html);\r\n\r\n _this.$thumbOuter = _this.core.$outer.find('.lg-thumb-outer');\r\n _this.thumbOuterWidth = _this.$thumbOuter.width();\r\n\r\n if (_this.core.s.animateThumb) {\r\n _this.core.$outer.find('.lg-thumb').css({\r\n width: _this.thumbTotalWidth + 'px',\r\n position: 'relative'\r\n });\r\n }\r\n\r\n if (this.core.s.animateThumb) {\r\n _this.$thumbOuter.css('height', _this.core.s.thumbContHeight + 'px');\r\n }\r\n\r\n function getThumb(src, thumb, index) {\r\n var isVideo = _this.core.isVideo(src, index) || {},\r\n thumbImg,\r\n vimeoId = '',\r\n item = '',\r\n icon = '';\r\n\r\n if (isVideo.youtube || isVideo.vimeo || isVideo.dailymotion) {\r\n if (isVideo.youtube) {\r\n if (_this.core.s.loadYoutubeThumbnail) {\r\n thumbImg = '//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg';\r\n } else {\r\n thumbImg = thumb;\r\n }\r\n } else if (isVideo.vimeo) {\r\n if (_this.core.s.loadVimeoThumbnail) {\r\n thumbImg = '//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg';\r\n vimeoId = isVideo.vimeo[1];\r\n item = 'data-vimeo-id=\"' + vimeoId + '\" ';\r\n } else {\r\n thumbImg = thumb;\r\n }\r\n } else if (isVideo.dailymotion) {\r\n if (_this.core.s.loadDailymotionThumbnail) {\r\n thumbImg = '//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1];\r\n } else {\r\n thumbImg = thumb;\r\n }\r\n }\r\n var icon = '';\r\n } else {\r\n thumbImg = thumb;\r\n }\r\n\r\n thumbList += '
' + icon + '
';\r\n vimeoId = '';\r\n }\r\n\r\n if (_this.core.s.dynamic) {\r\n for (var i = 0; i < _this.core.s.dynamicEl.length; i++) {\r\n getThumb(_this.core.s.dynamicEl[i].src, _this.core.s.dynamicEl[i].thumb, i);\r\n }\r\n } else {\r\n _this.core.$items.each(function(i) {\r\n\r\n if (!_this.core.s.exThumbImage) {\r\n getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).find('img').attr('src'), i);\r\n } else {\r\n getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).attr(_this.core.s.exThumbImage), i);\r\n }\r\n\r\n });\r\n }\r\n\r\n _this.core.$outer.find('.lg-thumb').html(thumbList);\r\n\r\n $thumb = _this.core.$outer.find('.lg-thumb-item');\r\n\r\n // Load vimeo thumbnails\r\n $thumb.each(function() {\r\n var $this = $(this);\r\n var vimeoVideoId = $this.attr('data-vimeo-id');\r\n\r\n if (vimeoVideoId) {\r\n $.getJSON('//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=?', {\r\n format: 'json'\r\n }, function(data) {\r\n $this.find('img').attr('src', data[0][_this.core.s.vimeoThumbSize]);\r\n });\r\n }\r\n });\r\n\r\n // manage active class for thumbnail\r\n $thumb.eq(_this.core.index).addClass('active');\r\n _this.core.$el.on('onBeforeSlide.lg.tm', function() {\r\n $thumb.removeClass('active');\r\n $thumb.eq(_this.core.index).addClass('active');\r\n });\r\n\r\n $thumb.on('click.lg touchend.lg', function() {\r\n var _$this = $(this);\r\n setTimeout(function() {\r\n\r\n // In IE9 and bellow touch does not support\r\n // Go to slide if browser does not support css transitions\r\n if ((_this.thumbClickable && !_this.core.lgBusy) || !_this.core.doCss()) {\r\n _this.core.index = _$this.index();\r\n _this.core.slide(_this.core.index, false, true);\r\n }\r\n }, 50);\r\n });\r\n\r\n _this.core.$el.on('onBeforeSlide.lg.tm', function() {\r\n _this.animateThumb(_this.core.index);\r\n });\r\n\r\n $(window).on('resize.lg.thumb orientationchange.lg.thumb', function() {\r\n setTimeout(function() {\r\n _this.animateThumb(_this.core.index);\r\n _this.thumbOuterWidth = _this.$thumbOuter.width();\r\n }, 200);\r\n });\r\n\r\n };\r\n\r\n Thumbnail.prototype.setTranslate = function(value) {\r\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\r\n this.core.$outer.find('.lg-thumb').css({\r\n transform: 'translate3d(-' + (value) + 'px, 0px, 0px)'\r\n });\r\n };\r\n\r\n Thumbnail.prototype.animateThumb = function(index) {\r\n this.core.$outer.find('.lg-inner').css('height', ($(window).height() - this.core.s.thumbContHeight) + 'px');\r\n var $thumb = this.core.$outer.find('.lg-thumb');\r\n if (this.core.s.animateThumb) {\r\n var position;\r\n switch (this.core.s.currentPagerPosition) {\r\n case 'left':\r\n position = 0;\r\n break;\r\n case 'middle':\r\n position = (this.thumbOuterWidth / 2) - (this.core.s.thumbWidth / 2);\r\n break;\r\n case 'right':\r\n position = this.thumbOuterWidth - this.core.s.thumbWidth;\r\n }\r\n this.left = ((this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1) - position;\r\n if (this.left > (this.thumbTotalWidth - this.thumbOuterWidth)) {\r\n this.left = this.thumbTotalWidth - this.thumbOuterWidth;\r\n }\r\n\r\n if (this.left < 0) {\r\n this.left = 0;\r\n }\r\n\r\n if (this.core.lGalleryOn) {\r\n if (!$thumb.hasClass('on')) {\r\n this.core.$outer.find('.lg-thumb').css('transition-duration', this.core.s.speed + 'ms');\r\n }\r\n\r\n if (!this.core.doCss()) {\r\n $thumb.animate({\r\n left: -this.left + 'px'\r\n }, this.core.s.speed);\r\n }\r\n } else {\r\n if (!this.core.doCss()) {\r\n $thumb.css('left', -this.left + 'px');\r\n }\r\n }\r\n\r\n this.setTranslate(this.left);\r\n\r\n }\r\n };\r\n\r\n // Enable thumbnail dragging and swiping\r\n Thumbnail.prototype.enableThumbDrag = function() {\r\n\r\n var _this = this;\r\n var startCoords = 0;\r\n var endCoords = 0;\r\n var isDraging = false;\r\n var isMoved = false;\r\n var tempLeft = 0;\r\n\r\n _this.$thumbOuter.addClass('lg-grab');\r\n\r\n _this.core.$outer.find('.lg-thumb').on('mousedown.lg.thumb', function(e) {\r\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\r\n // execute only on .lg-object\r\n e.preventDefault();\r\n startCoords = e.pageX;\r\n isDraging = true;\r\n\r\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\r\n _this.core.$outer.scrollLeft += 1;\r\n _this.core.$outer.scrollLeft -= 1;\r\n\r\n // *\r\n _this.thumbClickable = false;\r\n _this.$thumbOuter.removeClass('lg-grab').addClass('lg-grabbing');\r\n }\r\n });\r\n\r\n $(window).on('mousemove.lg.thumb', function(e) {\r\n if (isDraging) {\r\n tempLeft = _this.left;\r\n isMoved = true;\r\n endCoords = e.pageX;\r\n\r\n _this.$thumbOuter.addClass('lg-dragging');\r\n\r\n tempLeft = tempLeft - (endCoords - startCoords);\r\n\r\n if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) {\r\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\r\n }\r\n\r\n if (tempLeft < 0) {\r\n tempLeft = 0;\r\n }\r\n\r\n // move current slide\r\n _this.setTranslate(tempLeft);\r\n\r\n }\r\n });\r\n\r\n $(window).on('mouseup.lg.thumb', function() {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.$thumbOuter.removeClass('lg-dragging');\r\n\r\n _this.left = tempLeft;\r\n\r\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\r\n _this.thumbClickable = true;\r\n }\r\n\r\n } else {\r\n _this.thumbClickable = true;\r\n }\r\n\r\n if (isDraging) {\r\n isDraging = false;\r\n _this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');\r\n }\r\n });\r\n\r\n };\r\n\r\n Thumbnail.prototype.enableThumbSwipe = function() {\r\n var _this = this;\r\n var startCoords = 0;\r\n var endCoords = 0;\r\n var isMoved = false;\r\n var tempLeft = 0;\r\n\r\n _this.core.$outer.find('.lg-thumb').on('touchstart.lg', function(e) {\r\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\r\n e.preventDefault();\r\n startCoords = e.originalEvent.targetTouches[0].pageX;\r\n _this.thumbClickable = false;\r\n }\r\n });\r\n\r\n _this.core.$outer.find('.lg-thumb').on('touchmove.lg', function(e) {\r\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\r\n e.preventDefault();\r\n endCoords = e.originalEvent.targetTouches[0].pageX;\r\n isMoved = true;\r\n\r\n _this.$thumbOuter.addClass('lg-dragging');\r\n\r\n tempLeft = _this.left;\r\n\r\n tempLeft = tempLeft - (endCoords - startCoords);\r\n\r\n if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) {\r\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\r\n }\r\n\r\n if (tempLeft < 0) {\r\n tempLeft = 0;\r\n }\r\n\r\n // move current slide\r\n _this.setTranslate(tempLeft);\r\n\r\n }\r\n });\r\n\r\n _this.core.$outer.find('.lg-thumb').on('touchend.lg', function() {\r\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\r\n\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.$thumbOuter.removeClass('lg-dragging');\r\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\r\n _this.thumbClickable = true;\r\n }\r\n\r\n _this.left = tempLeft;\r\n } else {\r\n _this.thumbClickable = true;\r\n }\r\n } else {\r\n _this.thumbClickable = true;\r\n }\r\n });\r\n\r\n };\r\n\r\n Thumbnail.prototype.toogle = function() {\r\n var _this = this;\r\n if (_this.core.s.toogleThumb) {\r\n _this.core.$outer.addClass('lg-can-toggle');\r\n _this.$thumbOuter.append('');\r\n _this.core.$outer.find('.lg-toogle-thumb').on('click.lg', function() {\r\n _this.core.$outer.toggleClass('lg-thumb-open');\r\n });\r\n }\r\n };\r\n\r\n Thumbnail.prototype.thumbkeyPress = function() {\r\n var _this = this;\r\n $(window).on('keydown.lg.thumb', function(e) {\r\n if (e.keyCode === 38) {\r\n e.preventDefault();\r\n _this.core.$outer.addClass('lg-thumb-open');\r\n } else if (e.keyCode === 40) {\r\n e.preventDefault();\r\n _this.core.$outer.removeClass('lg-thumb-open');\r\n }\r\n });\r\n };\r\n\r\n Thumbnail.prototype.destroy = function() {\r\n if (this.core.s.thumbnail && this.core.$items.length > 1) {\r\n $(window).off('resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb');\r\n this.$thumbOuter.remove();\r\n this.core.$outer.removeClass('lg-has-thumb');\r\n }\r\n };\r\n\r\n $.fn.lightGallery.modules.Thumbnail = Thumbnail;\r\n\r\n})(jQuery, window, document);\r\n\r\n/* VIDEO */\r\n(function($, window, document, undefined) {\r\n\r\n 'use strict';\r\n\r\n var defaults = {\r\n videoMaxWidth: '855px',\r\n youtubePlayerParams: false,\r\n vimeoPlayerParams: false,\r\n dailymotionPlayerParams: false,\r\n vkPlayerParams: false,\r\n videojs: false,\r\n videojsOptions: {}\r\n };\r\n\r\n var Video = function(element) {\r\n\r\n this.core = $(element).data('lightGallery');\r\n\r\n this.$el = $(element);\r\n this.core.s = $.extend({}, defaults, this.core.s);\r\n this.videoLoaded = false;\r\n\r\n this.init();\r\n\r\n return this;\r\n };\r\n\r\n Video.prototype.init = function() {\r\n var _this = this;\r\n\r\n // Event triggered when video url found without poster\r\n _this.core.$el.on('hasVideo.lg.tm', function(event, index, src, html) {\r\n _this.core.$slide.eq(index).find('.lg-video').append(_this.loadVideo(src, 'lg-object', true, index, html));\r\n if (html) {\r\n if (_this.core.s.videojs) {\r\n try {\r\n videojs(_this.core.$slide.eq(index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function() {\r\n if (!_this.videoLoaded) {\r\n this.play();\r\n }\r\n });\r\n } catch (e) {\r\n console.error('Make sure you have included videojs');\r\n }\r\n } else {\r\n _this.core.$slide.eq(index).find('.lg-html5').get(0).play();\r\n }\r\n }\r\n });\r\n\r\n // Set max width for video\r\n _this.core.$el.on('onAferAppendSlide.lg.tm', function(event, index) {\r\n _this.core.$slide.eq(index).find('.lg-video-cont').css('max-width', _this.core.s.videoMaxWidth);\r\n _this.videoLoaded = true;\r\n });\r\n\r\n var loadOnClick = function($el) {\r\n // check slide has poster\r\n if ($el.find('.lg-object').hasClass('lg-has-poster') && $el.find('.lg-object').is(':visible')) {\r\n\r\n // check already video element present\r\n if (!$el.hasClass('lg-has-video')) {\r\n\r\n $el.addClass('lg-video-playing lg-has-video');\r\n\r\n var _src;\r\n var _html;\r\n var _loadVideo = function(_src, _html) {\r\n\r\n $el.find('.lg-video').append(_this.loadVideo(_src, '', false, _this.core.index, _html));\r\n\r\n if (_html) {\r\n if (_this.core.s.videojs) {\r\n try {\r\n videojs(_this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function() {\r\n this.play();\r\n });\r\n } catch (e) {\r\n console.error('Make sure you have included videojs');\r\n }\r\n } else {\r\n _this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0).play();\r\n }\r\n }\r\n\r\n };\r\n\r\n if (_this.core.s.dynamic) {\r\n\r\n _src = _this.core.s.dynamicEl[_this.core.index].src;\r\n _html = _this.core.s.dynamicEl[_this.core.index].html;\r\n\r\n _loadVideo(_src, _html);\r\n\r\n } else {\r\n\r\n _src = _this.core.$items.eq(_this.core.index).attr('href') || _this.core.$items.eq(_this.core.index).attr('data-src');\r\n _html = _this.core.$items.eq(_this.core.index).attr('data-html');\r\n\r\n _loadVideo(_src, _html);\r\n\r\n }\r\n\r\n var $tempImg = $el.find('.lg-object');\r\n $el.find('.lg-video').append($tempImg);\r\n\r\n // @todo loading icon for html5 videos also\r\n // for showing the loading indicator while loading video\r\n if (!$el.find('.lg-video-object').hasClass('lg-html5')) {\r\n $el.removeClass('lg-complete');\r\n $el.find('.lg-video-object').on('load.lg error.lg', function() {\r\n $el.addClass('lg-complete');\r\n });\r\n }\r\n\r\n } else {\r\n\r\n var youtubePlayer = $el.find('.lg-youtube').get(0);\r\n var vimeoPlayer = $el.find('.lg-vimeo').get(0);\r\n var dailymotionPlayer = $el.find('.lg-dailymotion').get(0);\r\n var html5Player = $el.find('.lg-html5').get(0);\r\n if (youtubePlayer) {\r\n youtubePlayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*');\r\n } else if (vimeoPlayer) {\r\n try {\r\n $f(vimeoPlayer).api('play');\r\n } catch (e) {\r\n console.error('Make sure you have included froogaloop2 js');\r\n }\r\n } else if (dailymotionPlayer) {\r\n dailymotionPlayer.contentWindow.postMessage('play', '*');\r\n\r\n } else if (html5Player) {\r\n if (_this.core.s.videojs) {\r\n try {\r\n videojs(html5Player).play();\r\n } catch (e) {\r\n console.error('Make sure you have included videojs');\r\n }\r\n } else {\r\n html5Player.play();\r\n }\r\n }\r\n\r\n $el.addClass('lg-video-playing');\r\n\r\n }\r\n }\r\n };\r\n\r\n if (_this.core.doCss() && _this.core.$items.length > 1 && ((_this.core.s.enableSwipe && _this.core.isTouch) || (_this.core.s.enableDrag && !_this.core.isTouch))) {\r\n _this.core.$el.on('onSlideClick.lg.tm', function() {\r\n var $el = _this.core.$slide.eq(_this.core.index);\r\n loadOnClick($el);\r\n });\r\n } else {\r\n\r\n // For IE 9 and bellow\r\n _this.core.$slide.on('click.lg', function() {\r\n loadOnClick($(this));\r\n });\r\n }\r\n\r\n _this.core.$el.on('onBeforeSlide.lg.tm', function(event, prevIndex, index) {\r\n\r\n var $videoSlide = _this.core.$slide.eq(prevIndex);\r\n var youtubePlayer = $videoSlide.find('.lg-youtube').get(0);\r\n var vimeoPlayer = $videoSlide.find('.lg-vimeo').get(0);\r\n var dailymotionPlayer = $videoSlide.find('.lg-dailymotion').get(0);\r\n var vkPlayer = $videoSlide.find('.lg-vk').get(0);\r\n var html5Player = $videoSlide.find('.lg-html5').get(0);\r\n if (youtubePlayer) {\r\n youtubePlayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\r\n } else if (vimeoPlayer) {\r\n try {\r\n $f(vimeoPlayer).api('pause');\r\n } catch (e) {\r\n console.error('Make sure you have included froogaloop2 js');\r\n }\r\n } else if (dailymotionPlayer) {\r\n dailymotionPlayer.contentWindow.postMessage('pause', '*');\r\n\r\n } else if (html5Player) {\r\n if (_this.core.s.videojs) {\r\n try {\r\n videojs(html5Player).pause();\r\n } catch (e) {\r\n console.error('Make sure you have included videojs');\r\n }\r\n } else {\r\n html5Player.pause();\r\n }\r\n } if (vkPlayer) {\r\n $(vkPlayer).attr('src', $(vkPlayer).attr('src').replace('&autoplay', '&noplay'));\r\n }\r\n\r\n var _src;\r\n if (_this.core.s.dynamic) {\r\n _src = _this.core.s.dynamicEl[index].src;\r\n } else {\r\n _src = _this.core.$items.eq(index).attr('href') || _this.core.$items.eq(index).attr('data-src');\r\n\r\n }\r\n\r\n var _isVideo = _this.core.isVideo(_src, index) || {};\r\n if (_isVideo.youtube || _isVideo.vimeo || _isVideo.dailymotion || _isVideo.vk) {\r\n _this.core.$outer.addClass('lg-hide-download');\r\n }\r\n\r\n //$videoSlide.addClass('lg-complete');\r\n\r\n });\r\n\r\n _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex) {\r\n _this.core.$slide.eq(prevIndex).removeClass('lg-video-playing');\r\n });\r\n };\r\n\r\n Video.prototype.loadVideo = function(src, addClass, noposter, index, html) {\r\n var video = '';\r\n var autoplay = 1;\r\n var a = '';\r\n var isVideo = this.core.isVideo(src, index) || {};\r\n\r\n // Enable autoplay for first video if poster doesn't exist\r\n if (noposter) {\r\n if (this.videoLoaded) {\r\n autoplay = 0;\r\n } else {\r\n autoplay = 1;\r\n }\r\n }\r\n\r\n if (isVideo.youtube) {\r\n\r\n a = '?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1';\r\n if (this.core.s.youtubePlayerParams) {\r\n a = a + '&' + $.param(this.core.s.youtubePlayerParams);\r\n }\r\n\r\n video = '';\r\n\r\n } else if (isVideo.vimeo) {\r\n\r\n a = '?autoplay=' + autoplay + '&api=1';\r\n if (this.core.s.vimeoPlayerParams) {\r\n a = a + '&' + $.param(this.core.s.vimeoPlayerParams);\r\n }\r\n\r\n video = '';\r\n\r\n } else if (isVideo.dailymotion) {\r\n\r\n a = '?wmode=opaque&autoplay=' + autoplay + '&api=postMessage';\r\n if (this.core.s.dailymotionPlayerParams) {\r\n a = a + '&' + $.param(this.core.s.dailymotionPlayerParams);\r\n }\r\n\r\n video = '';\r\n\r\n } else if (isVideo.html5) {\r\n var fL = html.substring(0, 1);\r\n if (fL === '.' || fL === '#') {\r\n html = $(html).html();\r\n }\r\n\r\n video = html;\r\n\r\n } else if (isVideo.vk) {\r\n\r\n a = '&autoplay=' + autoplay;\r\n if (this.core.s.vkPlayerParams) {\r\n a = a + '&' + $.param(this.core.s.vkPlayerParams);\r\n }\r\n\r\n video = '';\r\n\r\n }\r\n\r\n return video;\r\n };\r\n\r\n Video.prototype.destroy = function() {\r\n this.videoLoaded = false;\r\n };\r\n\r\n $.fn.lightGallery.modules.video = Video;\r\n\r\n})(jQuery, window, document);\r\n\r\n/*!\r\n * jQuery Mousewheel 3.1.13\r\n *\r\n * Copyright 2015 jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type=\"mousewheel\",\"detail\"in g&&(m=-1*g.detail),\"wheelDelta\"in g&&(m=g.wheelDelta),\"wheelDeltaY\"in g&&(m=g.wheelDeltaY),\"wheelDeltaX\"in g&&(l=-1*g.wheelDeltaX),\"axis\"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,\"deltaY\"in g&&(m=-1*g.deltaY,j=m),\"deltaX\"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,\"mousewheel-line-height\");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,\"mousewheel-page-height\");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?\"floor\":\"ceil\"](j/f),l=Math[l>=1?\"floor\":\"ceil\"](l/f),m=Math[m>=1?\"floor\":\"ceil\"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&\"mousewheel\"===a.type&&b%120===0}var e,f,g=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],h=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:\"3.1.12\",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,\"mousewheel-line-height\",k.getLineHeight(this)),a.data(this,\"mousewheel-page-height\",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,\"mousewheel-line-height\"),a.removeData(this,\"mousewheel-page-height\")},getLineHeight:function(b){var c=a(b),d=c[\"offsetParent\"in a.fn?\"offsetParent\":\"parent\"]();return d.length||(d=a(\"body\")),parseInt(d.css(\"fontSize\"),10)||parseInt(c.css(\"fontSize\"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind(\"mousewheel\",a):this.trigger(\"mousewheel\")},unmousewheel:function(a){return this.unbind(\"mousewheel\",a)}})});","export default angular\r\n .module('service.alma', [])\r\n\r\n /* @ngInject */\r\n .factory('AlmaService', function (HttpService, RoutesService, $window) {\r\n let paymentResponse;\r\n let apiInfo;\r\n let paymentForm;\r\n let idFolder;\r\n let isFromCart;\r\n let paymentCtrl;\r\n\r\n const service = {\r\n init,\r\n submit,\r\n getApiInfo\r\n };\r\n\r\n return service;\r\n\r\n /**\r\n * Fonction d'initialisation du service Alma\r\n * @param {any} ctrl Le controller auquel on intègre Alma\r\n */\r\n\r\n async function init(ctrl, id, isCart) {\r\n paymentCtrl = ctrl;\r\n idFolder = id;\r\n isFromCart = isCart;\r\n paymentResponse = await getPaymentData();\r\n apiInfo = (await getApiInfo());\r\n const eligibilities = await getEligibility();\r\n paymentCtrl.almaEligibilities = eligibilities.filter(e => Boolean(e.eligible));\r\n\r\n }\r\n\r\n\r\n /**\r\n * Envoi de la requête de paiement\r\n * Effectue une pré-requête à nos serveur pour mettre à jour les dossiers et vérifier le montant, puis lance la requête Alma\r\n */\r\n async function submit() {\r\n const data = paymentResponse.results.paymentInfo;\r\n const response = await prePaymentRequest(data.payment.purchase_amount);\r\n if (response.status === 'KO') {\r\n // le montant du paiement et du dossier ne sont pas identiques\r\n redirectToError();\r\n return;\r\n }\r\n paymentForm.pay();\r\n }\r\n\r\n function redirectToError() {\r\n let url = '';\r\n if (isFromCart) {\r\n url = RoutesService.getUrlByName('CartPaymentError');\r\n } else {\r\n url = RoutesService.getUrlByName('QuotationPaymentError').replace(/\\{.*\\}/, idFolder.toString());\r\n }\r\n $window.location.href = url;\r\n }\r\n\r\n /**\r\n * Récupère les informations de disponibilité des différentes échéances\r\n */\r\n async function getEligibility() {\r\n let url = RoutesService.getUrlByName('AlmaCheckEligibility');\r\n url += `?IDFolder=${idFolder}`;\r\n let eligibilityResponse;\r\n await HttpService.get({\r\n url,\r\n cache: false\r\n })\r\n .then(response => {\r\n if (response.status === 'OK') {\r\n eligibilityResponse = response.results.Eligibilities;\r\n }\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n return eligibilityResponse;\r\n }\r\n\r\n /**\r\n * Récupère les informations de paiement\r\n */\r\n async function getPaymentData() {\r\n let url = RoutesService.getUrlByName('AlmaGetPaymentInfos');\r\n url += `?IDFolder=${idFolder}`;\r\n return HttpService.get({\r\n url,\r\n cache: false\r\n });\r\n }\r\n\r\n /**\r\n * Récupère les infos api\r\n */\r\n async function getApiInfo() {\r\n if (!apiInfo) {\r\n const url = RoutesService.getUrlByName('AlmaGetApiInfos');\r\n await HttpService.get({\r\n url,\r\n cache: true\r\n })\r\n .then(response => { apiInfo = response.results.apiInfo; })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n return apiInfo;\r\n }\r\n\r\n /**\r\n * Fonction d'initialisation du service Alma\r\n * @param {number} IDFolder\r\n * @param {decimal} montant à payer\r\n */\r\n async function prePaymentRequest(amount) {\r\n let url = RoutesService.getUrlByName('AlmaPrePaymentRequest');\r\n url += `?IDFolder=${idFolder}&Amount=${amount}&IsCart=${isFromCart}`;\r\n return HttpService.get({\r\n url,\r\n cache: false\r\n });\r\n }\r\n });\r\n","import 'import/js/components/addtocart/component.addtocart.tpl';\r\n\r\nexport default angular\r\n .module('component.addtocart', [])\r\n\r\n .component('buttonAddToCart', {\r\n require: {\r\n productCtrl: '?^^productDetail',\r\n comparatorCtrl: '?^^comparator'\r\n },\r\n bindings: {\r\n isProductButton: ' {\r\n const response = await import(/* webpackChunkName: \"component.addtocart-init\" */ 'import/js/components/addtocart/component.addtocart.init.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('InitComponentAddtocart');\r\n service.init(ctrl, $scope);\r\n };\r\n }\r\n });\r\n","export default angular\r\n .module('finder.service.parse', [])\r\n\r\n /* @ngInject */\r\n .factory('FinderParseService', function ($filter) {\r\n const service = {\r\n parse\r\n };\r\n return service;\r\n\r\n ////////////\r\n function parse(search, items) {\r\n return items.map(item => {\r\n const obj = {};\r\n obj.designationHtml = $filter('matchstring')(item.Designation, search);\r\n obj.htmlReduction = !item.Price.HasDiscount ? '' : `-${$filter('discount')(item.Price.Discount)}`;\r\n obj.htmlPrice = `${$filter('price')(item.Price, 'final-price')}`;\r\n if (item.Price.HasDiscount) {\r\n obj.htmlPrice = `${$filter('price')(item.Price)}${obj.htmlPrice}`;\r\n }\r\n obj.HTMLShortDescription = item.HTMLShortDescription;\r\n obj.isComparable = item.Themes.some(th => th.KeyTheme === 'Comparateur');\r\n obj.AllowAddToCart = item.AllowAddToCart;\r\n obj.ReviewsInfo = item.ReviewsInfo ? { Count: item.ReviewsInfo.Count, Average: item.ReviewsInfo.Average } : null;\r\n obj.isFlash = item.Themes.some(th => th.KeyTheme === 'Ventes_Flash');\r\n obj.flags = item.Themes?.filter(th => th.Text1 === 'Madein')?.map(th => ({ id: th.IDTheme, img: `/img/flags/${th.KeyTheme.toLowerCase()}.svg` }));\r\n obj.gift = item.Properties?.filter(pp => pp.KeyProperty === 'Cadeau')?.map(pp => ({ Html: `${pp.Designation}${pp.Value}` }));\r\n obj.colors = item.Properties?.filter(pp => pp.KeyProperty === 'Nb coloris')?.map(pp => `${pp.Value}`);\r\n obj.properties = item.Properties?.filter(\r\n pp =>\r\n pp.KeyProperty === 'Echantillon' ||\r\n pp.KeyProperty === 'Nb pelotes' ||\r\n pp.KeyProperty === 'Rendement' ||\r\n pp.KeyProperty === 'Composition' ||\r\n pp.KeyProperty === 'Outillage'\r\n )?.map(pp => ({ value: pp.Value }));\r\n obj.isNew = new Date() - new Date(item.CreationDate) <= 7776000000 ? true : false; // 7776000000ms = 90jrs\r\n obj.KeyWebAspect = item.KeyWebAspect;\r\n return {\r\n IDProduct: item.IDProduct,\r\n Designation: item.Designation,\r\n URL: item.URL,\r\n IDPicture: item.MainPicture ? item.MainPicture.IDPicture : item.IDPicture,\r\n Price: item.Price,\r\n IsGroupingProduct: item.IsGroupingProduct,\r\n IsCustomizable: !item.IsCustomizable,\r\n Themes: item.Themes.filter(theme => theme.KeyTheme === 'Nouveaute' || theme.KeyTheme === 'Promotion'),\r\n Availability: item.Availability,\r\n min: item.MinSaleQuantity,\r\n step: item.ModuloSaleQuantity,\r\n ...obj\r\n };\r\n });\r\n }\r\n });\r\n","import { cloneDeep } from 'lodash-es';\r\nimport 'Modules/Finder/import/service.parse.js';\r\n\r\nexport default angular\r\n .module('finder.service', ['finder.service.parse'])\r\n\r\n /* @ngInject */\r\n .factory('FinderService', function ($http, $q, $cacheFactory, FinderParseService) {\r\n let deferred = $q.defer();\r\n let ctrl;\r\n const cache = $cacheFactory('finderFiltersCache', { capacity: 30 });\r\n\r\n const QueryType = {\r\n BoolQuery: 0,\r\n BoostingQuery: 1,\r\n TermQuery: 2,\r\n MatchQuery: 3,\r\n MultiMatchQuery: 4,\r\n RangeQuery: 5,\r\n NestedQuery: 6,\r\n MatchPhraseQuery: 7,\r\n MatchPhrasePrefixQuery: 8\r\n };\r\n\r\n const service = {\r\n setCtrl,\r\n getCtrl,\r\n get,\r\n cancel\r\n };\r\n return service;\r\n\r\n ////////////\r\n function setCtrl(value) {\r\n ctrl = value;\r\n }\r\n\r\n function getCtrl() {\r\n return ctrl;\r\n }\r\n\r\n async function get(params) {\r\n deferred.resolve('cancel');\r\n deferred = $q.defer();\r\n\r\n const data = {\r\n TextQuery: params.query,\r\n From: params.from * params.size,\r\n Size: params.size,\r\n FiltersSelected: [],\r\n FacetsSelected: params.facets,\r\n QueryType: QueryType.BoostingQuery,\r\n NegativeTermsQuery:\r\n [\r\n {\r\n FieldName: 'KeyWebAspect',\r\n FieldValue: 'Advice'\r\n },\r\n {\r\n FieldName: 'KeyWebAspect',\r\n FieldValue: 'Content'\r\n }\r\n ],\r\n NegativeBoost: 0.5\r\n };\r\n\r\n const hash = angular.toJson(data);\r\n const cached = cache.get(`filters_${hash}`);\r\n if (cached) {\r\n deferred.resolve(cached);\r\n } else {\r\n try {\r\n const { data: response } = await $http({\r\n url: '/elssearch/query',\r\n method: 'POST',\r\n headers: {\r\n 'Content-type': 'application/json',\r\n 'X-Requested-With': 'jsonHttpRequest'\r\n },\r\n data,\r\n timeout: deferred.promise\r\n });\r\n const items = await FinderParseService.parse(params.query, response.products);\r\n const results = {\r\n count: response.count,\r\n facets: response.facets,\r\n items\r\n };\r\n cache.put(`filters_${hash}`, cloneDeep(results));\r\n deferred.resolve(results);\r\n } catch (error) {\r\n console.error(error);\r\n deferred.reject(error);\r\n }\r\n }\r\n\r\n return deferred.promise;\r\n }\r\n\r\n function cancel() {\r\n deferred.resolve('cancel');\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .filter('matchstring', function ($sce) {\r\n return (value, str) => {\r\n if (!value || !str) {\r\n return;\r\n }\r\n if (!value.match || !value.replace) {\r\n value = value.toString();\r\n }\r\n let matches, reg;\r\n\r\n const words = str.split(' ');\r\n let tmp;\r\n words.forEach(word => {\r\n tmp = word.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n if (tmp.length > 2) {\r\n reg = new RegExp(tmp, 'ig');\r\n matches = value.match(reg);\r\n if (matches) {\r\n value = value.split(reg).join(`#|#${matches[0]}#/#`);\r\n }\r\n }\r\n });\r\n\r\n value = value.split('#|#').join('').split('#/#').join('');\r\n return $sce.trustAsHtml(value).valueOf();\r\n };\r\n });\r\n","import 'import/js/plugins/detect.js';\r\nimport 'js/dependencies.js';\r\nimport 'js/project.js';\r\nimport 'js/components.js';\r\n\r\n/**\r\n * @namespace angular\r\n */\r\nangular\r\n .module('app', ['dependencies', 'project', 'components'])\r\n\r\n .constant('Environment', _ENV_)\r\n\r\n /* @ngInject */\r\n .config(function ($provide) {\r\n // monkey-patches $templateCache to have a keys() method\r\n /* @ngInject */\r\n $provide.decorator('$templateCache', function ($delegate) {\r\n const keys = [];\r\n const put = $delegate.put;\r\n const remove = $delegate.remove;\r\n\r\n $delegate.put = function (key, value) {\r\n if (!keys.includes(key)) {\r\n keys.push(key);\r\n }\r\n return put(key, value);\r\n };\r\n\r\n $delegate.remove = function (key) {\r\n keys.splice(keys.indexOf(key), 1);\r\n return remove(key);\r\n };\r\n\r\n $delegate.getKeys = function () {\r\n return keys;\r\n };\r\n\r\n return $delegate;\r\n });\r\n })\r\n\r\n /* @ngInject */\r\n .config(function ($compileProvider, Environment) {\r\n // $qProvider.errorOnUnhandledRejections(false);\r\n $compileProvider.commentDirectivesEnabled(false);\r\n $compileProvider.cssClassDirectivesEnabled(false);\r\n if (Environment === 'prod') {\r\n $compileProvider.debugInfoEnabled(false);\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .config(function (lazyConfigProvider) {\r\n lazyConfigProvider.setOptions({\r\n offset: 200,\r\n errorClass: 'error',\r\n successClass: 'loaded'\r\n });\r\n })\r\n\r\n /* @ngInject */\r\n .run(function (AppService, bsValidationConfig) {\r\n AppService.getParams();\r\n\r\n AppService.getTranslate()\r\n .then(translate => {\r\n Object.entries(translate.forms).forEach(element => {\r\n translate.forms[element[0]] = element[1]\r\n .replace('{0}', '{{0}}')\r\n .replace('{1}', '{{1}}')\r\n .replace('{validValue}', '{{validValue}}')\r\n .replace('{validValue1}', '{{validValue1}}')\r\n .replace('{validValue2}', '{{validValue2}}')\r\n .replace('{matchName}', '{{matchName}}');\r\n });\r\n bsValidationConfig.setMessages(translate.forms);\r\n bsValidationConfig.suppressWarnings = true;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n\r\n window.onunload = () => {};\r\n window.onpageshow = function (event) {\r\n if (event.persisted) {\r\n window.location.reload();\r\n }\r\n };\r\n });\r\n\r\nangular.element(() => {\r\n if (!$(document).injector()) {\r\n angular.bootstrap(document, ['app'], {\r\n strictDi: true\r\n });\r\n }\r\n});\r\n\r\nif (module.hot) {\r\n module.hot.accept();\r\n}\r\n","/* eslint-disable */\r\n(function () {\r\n 'use strict';\r\n if (window.isBot) {\r\n throw new Error(\"\");\r\n }\r\n if (!window.location.origin) {\r\n window.location.origin = window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\r\n }\r\n var pattern = new RegExp('bot|crawl|yahoo|facebook|google', 'i');\r\n window.isBot = !('onscroll' in window) || pattern.test(navigator.userAgent);\r\n window.isCache = window.location.origin.indexOf('webcache.googleusercontent') !== -1 || window.location.origin.indexOf('bingj.com') !== -1;\r\n})();\r\n","angular.module(\"uib/template/tabs/tab.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tab.html\",\r\n \"
  • \\n\" +\r\n \" {{heading}}\\n\" +\r\n \"
  • \\n\" +\r\n \"\");\r\n}]);\r\n","angular.module(\"uib/template/tabs/tabset.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tabset.html\",\r\n \"
    \\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n","angular.module('ui.bootstrap.tabs', [])\r\n\r\n.controller('UibTabsetController', ['$scope', function ($scope) {\r\n var ctrl = this,\r\n oldIndex;\r\n ctrl.tabs = [];\r\n\r\n ctrl.select = function(index, evt) {\r\n if (!destroyed) {\r\n var previousIndex = findTabIndex(oldIndex);\r\n var previousSelected = ctrl.tabs[previousIndex];\r\n if (previousSelected) {\r\n previousSelected.tab.onDeselect({\r\n $event: evt,\r\n $selectedIndex: index\r\n });\r\n if (evt && evt.isDefaultPrevented()) {\r\n return;\r\n }\r\n previousSelected.tab.active = false;\r\n }\r\n\r\n var selected = ctrl.tabs[index];\r\n if (selected) {\r\n selected.tab.onSelect({\r\n $event: evt\r\n });\r\n selected.tab.active = true;\r\n ctrl.active = selected.index;\r\n oldIndex = selected.index;\r\n } else if (!selected && angular.isDefined(oldIndex)) {\r\n ctrl.active = null;\r\n oldIndex = null;\r\n }\r\n }\r\n };\r\n\r\n ctrl.addTab = function addTab(tab) {\r\n ctrl.tabs.push({\r\n tab: tab,\r\n index: tab.index\r\n });\r\n ctrl.tabs.sort(function(t1, t2) {\r\n if (t1.index > t2.index) {\r\n return 1;\r\n }\r\n\r\n if (t1.index < t2.index) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n if (tab.index === ctrl.active || !angular.isDefined(ctrl.active) && ctrl.tabs.length === 1) {\r\n var newActiveIndex = findTabIndex(tab.index);\r\n ctrl.select(newActiveIndex);\r\n }\r\n };\r\n\r\n ctrl.removeTab = function removeTab(tab) {\r\n var index;\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].tab === tab) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (ctrl.tabs[index].index === ctrl.active) {\r\n var newActiveTabIndex = index === ctrl.tabs.length - 1 ?\r\n index - 1 : index + 1 % ctrl.tabs.length;\r\n ctrl.select(newActiveTabIndex);\r\n }\r\n\r\n ctrl.tabs.splice(index, 1);\r\n };\r\n\r\n $scope.$watch('tabset.active', function(val) {\r\n if (angular.isDefined(val) && val !== oldIndex) {\r\n ctrl.select(findTabIndex(val));\r\n }\r\n });\r\n\r\n var destroyed;\r\n $scope.$on('$destroy', function() {\r\n destroyed = true;\r\n });\r\n\r\n function findTabIndex(index) {\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].index === index) {\r\n return i;\r\n }\r\n }\r\n }\r\n}])\r\n\r\n.directive('uibTabset', function() {\r\n return {\r\n transclude: true,\r\n replace: true,\r\n scope: {},\r\n bindToController: {\r\n active: '=?',\r\n type: '@'\r\n },\r\n controller: 'UibTabsetController',\r\n controllerAs: 'tabset',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tabset.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n scope.vertical = angular.isDefined(attrs.vertical) ?\r\n scope.$parent.$eval(attrs.vertical) : false;\r\n scope.justified = angular.isDefined(attrs.justified) ?\r\n scope.$parent.$eval(attrs.justified) : false;\r\n scope.centered = angular.isDefined(attrs.centered) ?\r\n scope.$parent.$eval(attrs.centered) : false;\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTab', ['$parse', function($parse) {\r\n return {\r\n require: '^uibTabset',\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tab.html';\r\n },\r\n transclude: true,\r\n scope: {\r\n heading: '@',\r\n index: '=?',\r\n classes: '@?',\r\n onSelect: '&select', //This callback is called in contentHeadingTransclude\r\n //once it inserts the tab's content into the dom\r\n onDeselect: '&deselect'\r\n },\r\n controller: function() {\r\n //Empty controller so other directives can require being 'under' a tab\r\n },\r\n controllerAs: 'tab',\r\n link: function(scope, elm, attrs, tabsetCtrl, transclude) {\r\n scope.disabled = false;\r\n if (attrs.disable) {\r\n scope.$parent.$watch($parse(attrs.disable), function(value) {\r\n scope.disabled = !! value;\r\n });\r\n }\r\n\r\n scope.hide = false;\r\n if (attrs.hide) {\r\n scope.$parent.$watch($parse(attrs.hide), function(value) {\r\n scope.hide = !! value;\r\n });\r\n }\r\n\r\n if (angular.isUndefined(attrs.index)) {\r\n if (tabsetCtrl.tabs && tabsetCtrl.tabs.length) {\r\n scope.index = Math.max.apply(null, tabsetCtrl.tabs.map(function(t) { return t.index; })) + 1;\r\n } else {\r\n scope.index = 0;\r\n }\r\n }\r\n\r\n if (angular.isUndefined(attrs.classes)) {\r\n scope.classes = '';\r\n }\r\n\r\n scope.select = function(evt) {\r\n if (!scope.disabled) {\r\n var index;\r\n for (var i = 0; i < tabsetCtrl.tabs.length; i++) {\r\n if (tabsetCtrl.tabs[i].tab === scope) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n tabsetCtrl.select(index, evt);\r\n }\r\n };\r\n\r\n tabsetCtrl.addTab(scope);\r\n scope.$on('$destroy', function() {\r\n tabsetCtrl.removeTab(scope);\r\n });\r\n\r\n //We need to transclude later, once the content container is ready.\r\n //when this link happens, we're inside a tab heading.\r\n scope.$transcludeFn = transclude;\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibTabHeadingTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTab',\r\n link: function(scope, elm) {\r\n scope.$watch('headingElement', function updateHeadingElement(heading) {\r\n if (heading) {\r\n elm.html('');\r\n elm.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTabContentTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTabset',\r\n link: function(scope, elm, attrs) {\r\n var tab = scope.$eval(attrs.uibTabContentTransclude).tab;\r\n\r\n //Now our tab is ready to be transcluded: both the tab heading area\r\n //and the tab content area are loaded. Transclude 'em both.\r\n tab.$transcludeFn(tab.$parent, function(contents) {\r\n angular.forEach(contents, function(node) {\r\n if (isTabHeading(node)) {\r\n //Let tabHeadingTransclude know.\r\n tab.headingElement = node;\r\n } else {\r\n elm.append(node);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n function isTabHeading(node) {\r\n return node.tagName && (\r\n node.hasAttribute('uib-tab-heading') ||\r\n node.hasAttribute('data-uib-tab-heading') ||\r\n node.hasAttribute('x-uib-tab-heading') ||\r\n node.tagName.toLowerCase() === 'uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'data-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'x-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'uib:tab-heading'\r\n );\r\n }\r\n});\r\n","import { kebabCase } from 'lodash-es';\r\n\r\nconst routes = {};\r\nlet routingService;\r\n\r\nexport default angular\r\n .module('app.routing', [])\r\n\r\n /* @ngInject */\r\n .config(function ($routeProvider, $locationProvider, $httpProvider, Routes) {\r\n $httpProvider.useApplyAsync(true);\r\n $httpProvider.defaults.headers.common['X-Requested-With'] = 'userHttpRequest';\r\n $httpProvider.interceptors.push('HttpRequestInterceptor');\r\n\r\n const when = (route, config) => {\r\n let ngRoute;\r\n if (route) {\r\n ngRoute = `/${route[_LNG_].URL.replace(/\\:(\\S+?)\\}/g, '}').replace(/\\{(\\S+?)\\}/g, ':$1')}`;\r\n routes[route.Name] = { url: route[_LNG_].URL, route: ngRoute };\r\n }\r\n // désactivation du routing pour Google\r\n if (window.isBot || window.isCache || !config) return;\r\n $routeProvider.when(ngRoute, config);\r\n };\r\n\r\n Routes.forEach(route => {\r\n if (route.Controller.indexOf('Account') === 0) {\r\n // Compte\r\n const component = kebabCase(route.Name);\r\n const resolve = {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(),\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const deferred = $q.defer();\r\n import(/* webpackChunkName: \"account.module\" */ 'Modules/Account/import/module.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n return deferred.promise;\r\n }\r\n };\r\n let bindings = '';\r\n if (route.Name === 'AccountReturns') {\r\n /* @ngInject */\r\n resolve.result = AccountService => AccountService.getReturnFolders();\r\n bindings = ' result=\"$resolve.result\"';\r\n } else if (route.Name === 'AccountUpdate') {\r\n /* @ngInject */\r\n resolve.result = AccountService => AccountService.getShippingAddresses();\r\n bindings = ' result=\"$resolve.result\"';\r\n }\r\n when(route, {\r\n template: `<${component}${bindings} device=\"device\">`,\r\n resolve,\r\n name: route.Controller,\r\n ngRoute: true\r\n });\r\n } else if (route.Controller.indexOf('Cart') !== -1) {\r\n // Panier\r\n if (route.Name === 'CartToken' || route.Name === 'CartPaymentError' || route.Name === 'CartPaymentRedirect') {\r\n // On ne change rien pour cette route\r\n when(route, {\r\n templateUrl: () => routingService.getLocation(),\r\n name: route.Name\r\n });\r\n } else if (route.Name === 'QuickOrder') {\r\n when(route, {\r\n templateUrl: '/Template/Cart/QuickOrderView',\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const isOnePage = $(document.body).data('cart') === true;\r\n const deferred = $q.defer();\r\n if (isOnePage) {\r\n import(/* webpackChunkName: \"cart.onepage.display\" */ 'Modules/Cart/import/onepage/display.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n } else {\r\n import(/* webpackChunkName: \"cart.steps.display\" */ 'Modules/Cart/import/steps/display.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n }\r\n return deferred.promise;\r\n }\r\n },\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'Cart' || route.Name === 'CartRecognition') {\r\n when(route, {\r\n templateUrl: () => {\r\n const isOnePage = $(document.body).data('cart') === true;\r\n return `/Template/Cart/${isOnePage ? 'OnePageCheckout' : 'StepsCheckout'}/Display`;\r\n },\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const isOnePage = $(document.body).data('cart') === true;\r\n const deferred = $q.defer();\r\n if (isOnePage) {\r\n import(/* webpackChunkName: \"cart.onepage.display\" */ 'Modules/Cart/import/onepage/display.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n } else {\r\n import(/* webpackChunkName: \"cart.steps.display\" */ 'Modules/Cart/import/steps/display.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n }\r\n return deferred.promise;\r\n }\r\n },\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartIdentification') {\r\n when(route, {\r\n templateUrl: `/Template/Cart/${route.Name.split('Cart')[1]}`,\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const isOnePage = $(document.body).data('cart') === true;\r\n const deferred = $q.defer();\r\n if (isOnePage) {\r\n import(/* webpackChunkName: \"cart.onepage.identification\" */ 'Modules/Cart/import/onepage/identification.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n } else {\r\n import(/* webpackChunkName: \"cart.steps.identification\" */ 'Modules/Cart/import/steps/identification.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n }\r\n return deferred.promise;\r\n }\r\n },\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartOnePageCheckout') {\r\n when(route, {\r\n templateUrl: () => `/Template/Cart/OnePageCheckout/${route.Name.split('Cart')[1]}?t${routingService.getCacheBusting()}`,\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(true),\r\n /* @ngInject */\r\n load: ($q, $injector, $templateCache) => {\r\n const deferred = $q.defer();\r\n import('Modules/Cart/import/onepage/gmap.html').then(html => {\r\n $templateCache.put('Modules/Cart/import/onepage/gmap.html', html.default);\r\n import(/* webpackChunkName: \"cart.onepage\" */ 'Modules/Cart/import/onepage/onePageCkeckout.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n authorize: true,\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartOnePageCheckoutPayment') {\r\n when(route, {\r\n templateUrl: '/Template/Cart/OnePageCheckout/OnePageCheckout?payment',\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(true),\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const deferred = $q.defer();\r\n import(/* webpackChunkName: \"cart.onepage\" */ 'Modules/Cart/import/onepage/onePageCkeckout.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n authorize: true,\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartShipping') {\r\n when(route, {\r\n templateUrl: `/Template/Cart/StepsCheckout/${route.Name.split('Cart')[1]}`,\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(true),\r\n /* @ngInject */\r\n load: ($q, $injector, $templateCache) => {\r\n const deferred = $q.defer();\r\n import('Modules/Cart/import/steps/gmap.html').then(html => {\r\n $templateCache.put('Modules/Cart/import/steps/gmap.html', html.default);\r\n import(/* webpackChunkName: \"cart.steps.shipping\" */ 'Modules/Cart/import/steps/shipping.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n authorize: true,\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartPayment') {\r\n when(route, {\r\n templateUrl: `/Template/Cart/StepsCheckout/${route.Name.split('Cart')[1]}`,\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(true),\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const deferred = $q.defer();\r\n import(/* webpackChunkName: \"cart.steps.payment\" */ 'Modules/Cart/import/steps/payment.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n authorize: true,\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartValidation') {\r\n when(route, {\r\n templateUrl: `/Template/Cart/StepsCheckout/${route.Name.split('Cart')[1]}`,\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(true),\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const deferred = $q.defer();\r\n import(/* webpackChunkName: \"cart.steps.validation\" */ 'Modules/Cart/import/steps/validation.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n authorize: true,\r\n ngRoute: true\r\n });\r\n }\r\n } else if (route.Name === 'CartQuotationPaymentList' || route.Name === 'CartOrderPaymentList') {\r\n when(route, {\r\n templateUrl: () => routingService.getLocation(),\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const deferred = $q.defer();\r\n import(/* webpackChunkName: \"cart.steps.payment\" */ 'Modules/Cart/import/steps/payment.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n ngRoute: true\r\n });\r\n } else {\r\n when(route, {\r\n templateUrl: () => routingService.getLocation(),\r\n name: route.Name\r\n });\r\n }\r\n });\r\n\r\n if (window.isBot || window.isCache) {\r\n $locationProvider.html5Mode({\r\n enabled: true,\r\n requireBase: true,\r\n rewriteLinks: false\r\n });\r\n // désactivation du routing pour Google\r\n return;\r\n }\r\n\r\n $routeProvider.otherwise({\r\n templateUrl: () => routingService.getLocation()\r\n });\r\n\r\n $routeProvider.when('/404', {\r\n templateUrl: '/Template/Error/Error',\r\n name: '404'\r\n });\r\n\r\n $locationProvider.html5Mode({\r\n enabled: true,\r\n requireBase: false\r\n });\r\n })\r\n\r\n /* @ngInject */\r\n .factory('RoutesService', () => {\r\n let routesService = {};\r\n let routesMap;\r\n return {\r\n set: value => {\r\n if (Object.getOwnPropertyNames(routesService).length > 0) return;\r\n routesService = value;\r\n routesMap = Object.entries(routesService).map(arr => ({\r\n name: arr[0],\r\n url: arr[1].url,\r\n route: arr[1].route\r\n }));\r\n return routesService;\r\n },\r\n get: () => routesService,\r\n getMap: () => routesMap,\r\n getUrlByName: name => (routesService[name] && routesService[name].url ? routesService[name].url : '')\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .factory('RoutingService', function ($rootScope, $timeout, $location, $window, $route) {\r\n let routing = {};\r\n const scrollCache = {};\r\n let cacheBusting = '';\r\n const service = {\r\n set,\r\n get,\r\n getLocation,\r\n getRoute,\r\n getPath,\r\n windowScroll,\r\n scrollCache,\r\n getCacheBusting,\r\n updateCacheBusting,\r\n forceReload\r\n };\r\n return service;\r\n\r\n ////////////\r\n function set(value) {\r\n routing = value;\r\n }\r\n\r\n function get() {\r\n return routing;\r\n }\r\n\r\n function getLocation() {\r\n return `${$location.path()}?t${cacheBusting}`;\r\n }\r\n\r\n function getCacheBusting() {\r\n return cacheBusting;\r\n }\r\n\r\n function updateCacheBusting() {\r\n cacheBusting = new Date().getTime();\r\n }\r\n\r\n function getRoute(url) {\r\n return `/${url.replace(/\\:(\\S+?)\\}/g, '}').replace(/\\{(\\S+?)\\}/g, ':$1')}`;\r\n }\r\n\r\n function getPath(url) {\r\n let path = url || $window.location.pathname;\r\n path = path.includes('http') && $window.location?.origin ? path.substr($window.location.origin.length).split('?')[0] : path;\r\n // Pour les articles, on récupère l'url du regroupement\r\n if (path.includes('-p-') && path.indexOf('-p-') > path.indexOf('-c-')) {\r\n const arr = path.split('-p-');\r\n path = `${arr[0]}-p-${arr[1].split('/')[0]}`;\r\n }\r\n return path;\r\n }\r\n\r\n function windowScroll(getScrollPos) {\r\n const top = !getScrollPos ? 0 : scrollCache[getPath()] || 0;\r\n $('html, body').scrollTop(top);\r\n $timeout(() => {\r\n $('html, body').scrollTop(top);\r\n }, 400);\r\n }\r\n\r\n function forceReload() {\r\n const currentRoute = routing.to;\r\n\r\n // Pour les routes hors Compte et Panier, on enregistre la position du scroll\r\n if (!currentRoute.name || (currentRoute.name && currentRoute.name.indexOf('Account') !== 0 && currentRoute.name.indexOf('Cart') !== 0)) {\r\n scrollCache[getPath(null)] = $window.pageYOffset;\r\n }\r\n\r\n updateCacheBusting();\r\n $rootScope.$broadcast('showPageLoader', true);\r\n $route.reload();\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .service('authService', function (AppService) {\r\n this.authorize = isCart =>\r\n AppService.getParams().then(params => {\r\n if (params.IsLogged && (!isCart || (isCart && params.HasCart))) return true;\r\n throw new Error(isCart && !params.HasCart ? 'noCart' : '');\r\n });\r\n })\r\n\r\n /* @ngInject */\r\n .factory('HttpRequestInterceptor', function ($q, $location, $injector, $rootScope) {\r\n return {\r\n response: res => {\r\n if (res.status === 210) {\r\n $rootScope.$broadcast('cartUpdateWithRefresh');\r\n }\r\n return res;\r\n },\r\n responseError: rejection => {\r\n if (rejection.status === 404 && rejection.config.headers['X-Requested-With'] !== 'jsonHttpRequest') {\r\n $injector.get('RoutingService').set({\r\n to: undefined,\r\n from: undefined\r\n });\r\n $location.path('/404/');\r\n } else if (rejection.status === 409) {\r\n // utilisé pour cart multi device\r\n window.location = window.location.href;\r\n $rootScope.$broadcast('cartUpdateWithRefresh');\r\n }\r\n return $q.reject(rejection);\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .run((RoutesService, RoutingService) => {\r\n if (routes.Cart) {\r\n routes.Cart.step = 1;\r\n if (routes.CartIdentification) routes.CartIdentification.step = 2;\r\n routes.CartShipping.step = 3;\r\n routes.CartPayment.step = 4;\r\n routes.CartValidation.step = 5;\r\n if (routes.CartOnePageCheckout) routes.CartOnePageCheckout.step = 2;\r\n }\r\n RoutesService.set(routes);\r\n\r\n routingService = RoutingService;\r\n });\r\n","import { merge } from 'lodash-es';\r\n\r\nexport default angular\r\n .module('app.routing-listeners', [])\r\n\r\n /* @ngInject */\r\n .run(($rootScope, $location, $timeout, $route, $window, $anchorScroll, RoutesService, RoutingService, ModalService, HttpService, AppService, toastr) => {\r\n // désactivation du routing pour Google\r\n if (window.isBot || window.isCache) return;\r\n\r\n $anchorScroll.yOffset = 50;\r\n\r\n $location.update = ({ path, search, notReplace }) => {\r\n let routeToKeep = $route.current;\r\n let unsubscribe = $rootScope.$on('$locationChangeSuccess', () => {\r\n if (routeToKeep) {\r\n $route.current = routeToKeep;\r\n routeToKeep = null;\r\n $rootScope.$broadcast('showPageLoader', false);\r\n }\r\n unsubscribe();\r\n unsubscribe = null;\r\n });\r\n if (path) {\r\n $location.path(path);\r\n }\r\n if (search) {\r\n $location.search(search);\r\n }\r\n if (!notReplace) {\r\n $location.replace();\r\n }\r\n };\r\n\r\n let currentLocation;\r\n\r\n $rootScope.$on('$routeChangeStart', (event, next, current) => {\r\n if (!$rootScope.router) {\r\n $rootScope.router = true;\r\n // si le statut 404 est renvoyé par la vue\r\n if ($(document.body).data('status') === 404) {\r\n RoutingService.set({\r\n to: {\r\n name: '404'\r\n }\r\n });\r\n return;\r\n }\r\n }\r\n\r\n $rootScope.animation = null;\r\n\r\n // Animations dans le panier en fonction des étapes\r\n if (next.cart) {\r\n $rootScope.animation = 'page-transition';\r\n const _routes = RoutesService.get();\r\n let stepTo = 1;\r\n let stepFrom = 0;\r\n\r\n try {\r\n stepFrom = Object.entries(_routes).find(o => o[1].route === current.originalPath)[1].step;\r\n stepTo = Object.entries(_routes).find(o => o[1].route === next.originalPath)[1].step;\r\n } catch (ex) {}\r\n\r\n if (stepFrom === 0 && stepTo === 1) {\r\n $rootScope.animation = 'page-transition-first';\r\n } else if (stepTo < stepFrom) {\r\n $rootScope.animation = 'page-transition-back';\r\n }\r\n }\r\n\r\n if (!next.name) {\r\n const route = Object.entries(RoutesService.getMap()).find(r => r[1].route === next.originalPath);\r\n if (route) next.name = route[1].name;\r\n }\r\n\r\n RoutingService.set({\r\n to: next,\r\n from: current || next\r\n });\r\n });\r\n\r\n // eslint-disable-next-line\r\n $rootScope.$on('$routeChangeError', function (event, current, previous, rejection) {\r\n if (rejection.message && rejection.message.indexOf('HTTP status: -1') !== -1) return;\r\n\r\n if (current.name && current.name.indexOf('Account') === 0) {\r\n $location.path(RoutesService.getUrlByName('Login'));\r\n } else if (current.name && current.name.indexOf('Cart') === 0) {\r\n $location.path(rejection.message === 'noCart' ? RoutesService.getUrlByName('Cart') : RoutesService.getUrlByName('CartIdentification'));\r\n } else {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n AppService.getTranslate().then(translate => {\r\n toastr.warning('', translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n });\r\n AppService.getParams().then(params => {\r\n if (!params.Localization.UseLogs) return;\r\n let message =\r\n $location.path() +\r\n (current && current.loadedTemplateUrl ? ` | current: ${current.loadedTemplateUrl}` : '') +\r\n (previous && previous.loadedTemplateUrl ? ` | previous: ${previous.loadedTemplateUrl}` : '');\r\n if (rejection) {\r\n message += ` | rejection: ${rejection.message} | stack: ${rejection.stack}`;\r\n }\r\n HttpService.post({\r\n url: '/Log',\r\n data: {\r\n Key: '$routeChangeError',\r\n Message: message\r\n }\r\n });\r\n });\r\n $window.location.href = $window.location.href;\r\n }\r\n });\r\n\r\n // eslint-disable-next-line\r\n $rootScope.$on('$locationChangeStart', (event, next, current) => {\r\n const routing = RoutingService.get();\r\n\r\n // Pour les routes hors Compte et Panier, on enregistre la position du scroll\r\n if (!routing.to.name || (routing.to.name && routing.to.name.indexOf('Account') !== 0 && routing.to.name.indexOf('Cart') !== 0)) {\r\n RoutingService.scrollCache[RoutingService.getPath(current)] = $window.pageYOffset;\r\n }\r\n\r\n // si première route de l'application, on annule le traitement pour les routes hors Compte et Panier (sans variable ngRoute)\r\n if (!$rootScope.ngRouter && routing.to && !routing.to.ngRoute) {\r\n $rootScope.ngRouter = true;\r\n let findRoute = Object.entries($route.routes).find(o => o[1].hasOwnProperty('name') && o[1].name === routing.to.name);\r\n findRoute = findRoute ? findRoute[1] : {};\r\n $route.current = merge({}, findRoute, { params: routing.to.params });\r\n if ($location.hash()) $timeout($anchorScroll, 1000);\r\n\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n ModalService.close();\r\n\r\n // init des menus\r\n $('#navMenu, #navSecondary, #navAside').find('li.active').removeClass('active');\r\n $rootScope.$broadcast('searchClose');\r\n\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n if (routing.from && routing.from.name && routing.to && routing.to.name) {\r\n // Si on sort d'une catégorie, on supprime les query (facettes)\r\n if (\r\n (routing.from.name.indexOf('Category') === 0 || routing.from.name.indexOf('SortedCategory') === 0) &&\r\n ((routing.to.name.indexOf('Category') !== 0 && routing.to.name.indexOf('SortedCategory') !== 0) ||\r\n (routing.from.params && routing.to.params && routing.from.params.categoryId !== routing.to.params.categoryId))\r\n ) {\r\n $location.search({});\r\n }\r\n\r\n // Si on sort d'une recherche, on supprime les query (facettes)\r\n if (\r\n routing.from.name.indexOf('Search') !== -1 &&\r\n (routing.to.name.indexOf('Search') === -1 || (routing.from.params && routing.to.params && routing.from.params.q !== routing.to.params.q))\r\n ) {\r\n $location.search({});\r\n }\r\n }\r\n\r\n if (!$rootScope.ngRouter) {\r\n $rootScope.backToStore = '/';\r\n $rootScope.ngRouter = true;\r\n } else if (!routing.from.name || routing.from.name.indexOf('Cart') !== 0) {\r\n $rootScope.backToStore = current;\r\n }\r\n });\r\n\r\n $rootScope.$on('$locationChangeSuccess', () => {\r\n currentLocation = $location.url();\r\n });\r\n\r\n $rootScope.$watch(\r\n () => $location.url(),\r\n newLocation => {\r\n $rootScope.popstate = currentLocation === newLocation;\r\n }\r\n );\r\n\r\n $rootScope.$on('$viewContentLoaded', () => {\r\n window.dataLayer = window.dataLayer || [];\r\n // eslint-disable-next-line\r\n dataLayer.push({\r\n event: 'pageView',\r\n url: $location.path()\r\n });\r\n\r\n $rootScope.initRouter = true;\r\n\r\n $rootScope.$broadcast('showPageLoader', false);\r\n $rootScope.$broadcast('lazy:refresh');\r\n\r\n if ($location.hash()) {\r\n $anchorScroll();\r\n } else {\r\n setTimeout(() => {\r\n let getScrollPos = true;\r\n const routing = RoutingService.get();\r\n if (routing.from.name === undefined && routing.to.name === undefined) {\r\n getScrollPos = false;\r\n } else if (routing.from.name !== routing.to.name) {\r\n getScrollPos = false;\r\n } else if (routing.from.name.indexOf('Product') === 0 && routing.from.params.productId !== routing.to.params.productId) {\r\n getScrollPos = false;\r\n } else if (routing.from.name === 'SellerPage' && routing.from.params.sellerId !== routing.to.params.sellerId) {\r\n getScrollPos = false;\r\n } else if (routing.to.name.indexOf('Category') === 0 && routing.from.params.categoryId !== routing.to.params.categoryId) {\r\n getScrollPos = false;\r\n }\r\n RoutingService.windowScroll(getScrollPos);\r\n });\r\n }\r\n });\r\n });\r\n","/*\r\nVersion 2.1.1\r\nhttps://github.com/Foxandxss/angular-toastr\r\n*/\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr', [])\r\n .factory('toastr', toastr);\r\n\r\n toastr.$inject = ['$animate', '$injector', '$document', '$rootScope', '$sce', 'toastrConfig', '$q'];\r\n\r\n function toastr($animate, $injector, $document, $rootScope, $sce, toastrConfig, $q) {\r\n var container;\r\n var index = 0;\r\n var toasts = [];\r\n\r\n var previousToastMessage = '';\r\n var openToasts = {};\r\n\r\n var containerDefer = $q.defer();\r\n\r\n var toast = {\r\n active: active,\r\n clear: clear,\r\n error: error,\r\n info: info,\r\n remove: remove,\r\n success: success,\r\n warning: warning,\r\n refreshTimer: refreshTimer\r\n };\r\n\r\n return toast;\r\n\r\n /* Public API */\r\n function active() {\r\n return toasts.length;\r\n }\r\n\r\n function clear(toast) {\r\n // Bit of a hack, I will remove this soon with a BC\r\n if (arguments.length === 1 && !toast) { return; }\r\n\r\n if (toast) {\r\n remove(toast.toastId);\r\n } else {\r\n for (var i = 0; i < toasts.length; i++) {\r\n remove(toasts[i].toastId);\r\n }\r\n }\r\n }\r\n\r\n function error(message, title, optionsOverride) {\r\n var type = _getOptions().iconClasses.error[0];\r\n var icon = _getOptions().iconClasses.error[1];\r\n return _buildNotification(type, icon, message, title, optionsOverride);\r\n }\r\n\r\n function info(message, title, optionsOverride) {\r\n var type = _getOptions().iconClasses.info[0];\r\n var icon = _getOptions().iconClasses.info[1];\r\n return _buildNotification(type, icon, message, title, optionsOverride);\r\n }\r\n\r\n function success(message, title, optionsOverride) {\r\n var type = _getOptions().iconClasses.success[0];\r\n var icon = _getOptions().iconClasses.success[1];\r\n return _buildNotification(type, icon, message, title, optionsOverride);\r\n }\r\n\r\n function warning(message, title, optionsOverride) {\r\n var type = _getOptions().iconClasses.warning[0];\r\n var icon = _getOptions().iconClasses.warning[1];\r\n return _buildNotification(type, icon, message, title, optionsOverride);\r\n }\r\n\r\n function refreshTimer(toast, newTime) {\r\n if (toast && toast.isOpened && toasts.indexOf(toast) >= 0) {\r\n toast.scope.refreshTimer(newTime);\r\n }\r\n }\r\n\r\n function remove(toastId, wasClicked) {\r\n var toast = findToast(toastId);\r\n\r\n if (toast && ! toast.deleting) { // Avoid clicking when fading out\r\n toast.deleting = true;\r\n toast.isOpened = false;\r\n $animate.leave(toast.el).then(function() {\r\n if (toast.scope.options.onHidden) {\r\n toast.scope.options.onHidden(!!wasClicked, toast);\r\n }\r\n toast.scope.$destroy();\r\n var index = toasts.indexOf(toast);\r\n delete openToasts[toast.scope.message];\r\n toasts.splice(index, 1);\r\n var maxOpened = toastrConfig.maxOpened;\r\n if (maxOpened && toasts.length >= maxOpened) {\r\n toasts[maxOpened - 1].open.resolve();\r\n }\r\n if (lastToast()) {\r\n container.remove();\r\n container = null;\r\n containerDefer = $q.defer();\r\n }\r\n });\r\n }\r\n\r\n function findToast(toastId) {\r\n for (var i = 0; i < toasts.length; i++) {\r\n if (toasts[i].toastId === toastId) {\r\n return toasts[i];\r\n }\r\n }\r\n }\r\n\r\n function lastToast() {\r\n return !toasts.length;\r\n }\r\n }\r\n\r\n /* Internal functions */\r\n function _buildNotification(type, icon, message, title, optionsOverride) {\r\n if (angular.isObject(title)) {\r\n optionsOverride = title;\r\n title = null;\r\n }\r\n\r\n return _notify({\r\n typeClass: type,\r\n iconClass: icon,\r\n message: message,\r\n optionsOverride: optionsOverride,\r\n title: title\r\n });\r\n }\r\n\r\n function _getOptions() {\r\n return angular.extend({}, toastrConfig);\r\n }\r\n\r\n function _createOrGetContainer(options) {\r\n if(container) { return containerDefer.promise; }\r\n\r\n container = angular.element('
    ');\r\n container.attr('id', options.containerId);\r\n container.addClass(options.positionClass);\r\n container.css({'pointer-events': 'auto'});\r\n\r\n var target = angular.element(document.querySelector(options.target));\r\n\r\n if ( ! target || ! target.length) {\r\n throw 'Target for toasts doesn\\'t exist';\r\n }\r\n\r\n $animate.enter(container, target).then(function() {\r\n containerDefer.resolve();\r\n });\r\n\r\n return containerDefer.promise;\r\n }\r\n\r\n function _notify(map) {\r\n var options = _getOptions();\r\n\r\n if (shouldExit()) { return; }\r\n\r\n var newToast = createToast();\r\n\r\n toasts.push(newToast);\r\n\r\n if (ifMaxOpenedAndAutoDismiss()) {\r\n var oldToasts = toasts.slice(0, (toasts.length - options.maxOpened));\r\n for (var i = 0, len = oldToasts.length; i < len; i++) {\r\n remove(oldToasts[i].toastId);\r\n }\r\n }\r\n\r\n if (maxOpenedNotReached()) {\r\n newToast.open.resolve();\r\n }\r\n\r\n newToast.open.promise.then(function() {\r\n _createOrGetContainer(options).then(function() {\r\n newToast.isOpened = true;\r\n if (options.newestOnTop) {\r\n $animate.enter(newToast.el, container).then(function() {\r\n newToast.scope.init();\r\n });\r\n } else {\r\n var sibling = container[0].lastChild ? angular.element(container[0].lastChild) : null;\r\n $animate.enter(newToast.el, container, sibling).then(function() {\r\n newToast.scope.init();\r\n });\r\n }\r\n });\r\n });\r\n\r\n return newToast;\r\n\r\n function ifMaxOpenedAndAutoDismiss() {\r\n return options.autoDismiss && options.maxOpened && toasts.length > options.maxOpened;\r\n }\r\n\r\n function createScope(toast, map, options) {\r\n if (options.allowHtml) {\r\n toast.scope.allowHtml = true;\r\n toast.scope.title = $sce.trustAsHtml(map.title);\r\n toast.scope.message = $sce.trustAsHtml(map.message);\r\n } else {\r\n toast.scope.title = map.title;\r\n toast.scope.message = map.message;\r\n }\r\n\r\n toast.scope.toastType = toast.typeClass;\r\n toast.scope.toastIcon = toast.iconClass;\r\n toast.scope.toastId = toast.toastId;\r\n toast.scope.extraData = options.extraData;\r\n\r\n toast.scope.options = {\r\n extendedTimeOut: options.extendedTimeOut,\r\n messageClass: options.messageClass,\r\n onHidden: options.onHidden,\r\n onShown: generateEvent('onShown'),\r\n onTap: generateEvent('onTap'),\r\n progressBar: options.progressBar,\r\n tapToDismiss: options.tapToDismiss,\r\n timeOut: options.timeOut,\r\n titleClass: options.titleClass,\r\n toastClass: options.toastClass\r\n };\r\n\r\n if (options.closeButton) {\r\n toast.scope.options.closeHtml = options.closeHtml;\r\n }\r\n\r\n function generateEvent(event) {\r\n if (options[event]) {\r\n return function() {\r\n options[event](toast);\r\n };\r\n }\r\n }\r\n }\r\n\r\n function createToast() {\r\n var newToast = {\r\n toastId: index++,\r\n isOpened: false,\r\n scope: $rootScope.$new(),\r\n open: $q.defer()\r\n };\r\n newToast.iconClass = map.iconClass;\r\n if (map.optionsOverride) {\r\n angular.extend(options, cleanOptionsOverride(map.optionsOverride));\r\n newToast.iconClass = map.optionsOverride.iconClass || newToast.iconClass;\r\n }\r\n newToast.typeClass = map.typeClass;\r\n if (map.optionsOverride) {\r\n angular.extend(options, cleanOptionsOverride(map.optionsOverride));\r\n newToast.typeClass = map.optionsOverride.typeClass || newToast.typeClass;\r\n }\r\n\r\n createScope(newToast, map, options);\r\n\r\n newToast.el = createToastEl(newToast.scope);\r\n\r\n return newToast;\r\n\r\n function cleanOptionsOverride(options) {\r\n var badOptions = ['containerId', 'iconClasses', 'maxOpened', 'newestOnTop',\r\n 'positionClass', 'preventDuplicates', 'preventOpenDuplicates', 'templates'];\r\n for (var i = 0, l = badOptions.length; i < l; i++) {\r\n delete options[badOptions[i]];\r\n }\r\n\r\n return options;\r\n }\r\n }\r\n\r\n function createToastEl(scope) {\r\n var angularDomEl = angular.element('
    '),\r\n $compile = $injector.get('$compile');\r\n return $compile(angularDomEl)(scope);\r\n }\r\n\r\n function maxOpenedNotReached() {\r\n return options.maxOpened && toasts.length <= options.maxOpened || !options.maxOpened;\r\n }\r\n\r\n function shouldExit() {\r\n var isDuplicateOfLast = options.preventDuplicates && map.message === previousToastMessage;\r\n var isDuplicateOpen = options.preventOpenDuplicates && openToasts[map.message];\r\n\r\n if (isDuplicateOfLast || isDuplicateOpen) {\r\n return true;\r\n }\r\n\r\n previousToastMessage = map.message;\r\n openToasts[map.message] = true;\r\n\r\n return false;\r\n }\r\n }\r\n }\r\n}());\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr')\r\n .constant('toastrConfig', {\r\n allowHtml: false,\r\n autoDismiss: false,\r\n closeButton: false,\r\n closeHtml: '',\r\n containerId: 'toast-container',\r\n extendedTimeOut: 1000,\r\n iconClasses: {\r\n error: ['toast-error', ''],\r\n info: ['toast-info', ''],\r\n success: ['toast-success', ''],\r\n warning: ['toast-warning', '']\r\n },\r\n maxOpened: 0,\r\n messageClass: 'toast-message',\r\n newestOnTop: true,\r\n onHidden: null,\r\n onShown: null,\r\n onTap: null,\r\n positionClass: 'toast-top-right',\r\n preventDuplicates: false,\r\n preventOpenDuplicates: false,\r\n progressBar: false,\r\n tapToDismiss: true,\r\n target: 'body',\r\n templates: {\r\n toast: 'directives/toast/toast.html',\r\n progressbar: 'directives/progressbar/progressbar.html'\r\n },\r\n timeOut: 5000,\r\n titleClass: 'toast-title',\r\n toastClass: 'toast'\r\n });\r\n}());\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr')\r\n .directive('progressBar', progressBar);\r\n\r\n progressBar.$inject = ['toastrConfig'];\r\n\r\n function progressBar(toastrConfig) {\r\n return {\r\n require: '^toast',\r\n templateUrl: function() {\r\n return toastrConfig.templates.progressbar;\r\n },\r\n link: linkFunction\r\n };\r\n\r\n function linkFunction(scope, element, attrs, toastCtrl) {\r\n var intervalId, currentTimeOut, hideTime;\r\n\r\n toastCtrl.progressBar = scope;\r\n\r\n scope.start = function(duration) {\r\n if (intervalId) {\r\n clearInterval(intervalId);\r\n }\r\n\r\n currentTimeOut = parseFloat(duration);\r\n hideTime = new Date().getTime() + currentTimeOut;\r\n intervalId = setInterval(updateProgress, 10);\r\n };\r\n\r\n scope.stop = function() {\r\n if (intervalId) {\r\n clearInterval(intervalId);\r\n }\r\n };\r\n\r\n function updateProgress() {\r\n var percentage = ((hideTime - (new Date().getTime())) / currentTimeOut) * 100;\r\n element.css('width', percentage + '%');\r\n }\r\n\r\n scope.$on('$destroy', function() {\r\n // Failsafe stop\r\n clearInterval(intervalId);\r\n });\r\n }\r\n }\r\n}());\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr')\r\n .controller('ToastController', ToastController);\r\n\r\n function ToastController() {\r\n this.progressBar = null;\r\n\r\n this.startProgressBar = function(duration) {\r\n if (this.progressBar) {\r\n this.progressBar.start(duration);\r\n }\r\n };\r\n\r\n this.stopProgressBar = function() {\r\n if (this.progressBar) {\r\n this.progressBar.stop();\r\n }\r\n };\r\n }\r\n}());\r\n\r\n(function() {\r\n 'use strict';\r\n\r\n angular.module('toastr')\r\n .directive('toast', toast);\r\n\r\n toast.$inject = ['$injector', '$interval', 'toastrConfig', 'toastr'];\r\n\r\n function toast($injector, $interval, toastrConfig, toastr) {\r\n return {\r\n templateUrl: function() {\r\n return toastrConfig.templates.toast;\r\n },\r\n controller: 'ToastController',\r\n link: toastLinkFunction\r\n };\r\n\r\n function toastLinkFunction(scope, element, attrs, toastCtrl) {\r\n var timeout;\r\n\r\n scope.toastClass = scope.options.toastClass;\r\n scope.titleClass = scope.options.titleClass;\r\n scope.messageClass = scope.options.messageClass;\r\n scope.progressBar = scope.options.progressBar;\r\n\r\n if (wantsCloseButton()) {\r\n var button = angular.element(scope.options.closeHtml),\r\n $compile = $injector.get('$compile');\r\n button.addClass('toast-close-button');\r\n button.attr('ng-click', 'close(true, $event)');\r\n $compile(button)(scope);\r\n element.children().prepend(button);\r\n }\r\n\r\n scope.init = function() {\r\n if (scope.options.timeOut) {\r\n timeout = createTimeout(scope.options.timeOut);\r\n }\r\n if (scope.options.onShown) {\r\n scope.options.onShown();\r\n }\r\n };\r\n\r\n element.on('mouseenter', function() {\r\n hideAndStopProgressBar();\r\n if (timeout) {\r\n $interval.cancel(timeout);\r\n }\r\n });\r\n\r\n scope.tapToast = function () {\r\n if (angular.isFunction(scope.options.onTap)) {\r\n scope.options.onTap();\r\n }\r\n if (scope.options.tapToDismiss) {\r\n scope.close(true);\r\n }\r\n };\r\n\r\n scope.close = function (wasClicked, $event) {\r\n if ($event && angular.isFunction($event.stopPropagation)) {\r\n $event.stopPropagation();\r\n }\r\n toastr.remove(scope.toastId, wasClicked);\r\n };\r\n\r\n scope.refreshTimer = function(newTime) {\r\n if (timeout) {\r\n $interval.cancel(timeout);\r\n timeout = createTimeout(newTime || scope.options.timeOut);\r\n }\r\n };\r\n\r\n element.on('mouseleave', function() {\r\n if (scope.options.timeOut === 0 && scope.options.extendedTimeOut === 0) { return; }\r\n scope.$apply(function() {\r\n scope.progressBar = scope.options.progressBar;\r\n });\r\n timeout = createTimeout(scope.options.extendedTimeOut);\r\n });\r\n\r\n function createTimeout(time) {\r\n toastCtrl.startProgressBar(time);\r\n return $interval(function() {\r\n toastCtrl.stopProgressBar();\r\n toastr.remove(scope.toastId);\r\n }, time, 1);\r\n }\r\n\r\n function hideAndStopProgressBar() {\r\n scope.progressBar = false;\r\n toastCtrl.stopProgressBar();\r\n }\r\n\r\n function wantsCloseButton() {\r\n return scope.options.closeHtml;\r\n }\r\n }\r\n }\r\n}());\r\n","var _module_exports = \"
    {{::title}}
    {{::message}}
    \";;\nvar path = 'import/js/libs/angular-toastr/toast.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"
    \";;\nvar path = 'import/js/libs/angular-toastr/toast_message.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"
    \";;\nvar path = 'import/js/libs/angular-toastr/toast_progressbar.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"
    {{::title}}
    {{::message}}
    \";;\nvar path = 'import/js/libs/angular-toastr/toast_addtocart.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","/*\r\n * Bootstrap Validation\r\n * Version 1.0.7\r\n * Modified from .\r\n **/\r\n\r\n/* eslint-disable */\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('bootstrap.angular.validation', [])\r\n\r\n .directive('form', [\r\n '$parse',\r\n 'bsValidationService',\r\n function ($parse, bsValidationService) {\r\n return {\r\n restrict: 'E',\r\n require: 'form',\r\n priority: 1000, // Setting a higher priority so that this directive compiles first.\r\n compile: function ($formElement, $formAttributes) {\r\n if (bsValidationService.isValidationDisabled($formElement)) {\r\n return;\r\n }\r\n\r\n // Disable HTML5 validation display\r\n $formElement.attr('novalidate', 'novalidate');\r\n bsValidationService.addDirective($formElement);\r\n\r\n var ngSubmit = $formAttributes.ngSubmit;\r\n /*\r\n * Removing ngSubmit attribute if any since ngSubmit by default doesn't respects the validation errors\r\n * on the input fields.\r\n */\r\n delete $formAttributes.ngSubmit;\r\n\r\n var preLinkFunction = function ($scope, formElement, $attr, formController) {\r\n // Expose a method to manually show the validation state\r\n formController.$showValidation = function () {\r\n formController.$setSubmitted();\r\n // Tell form elements to show validation state\r\n $scope.$broadcast('onBsValidationStateChange', { showValidationState: true });\r\n };\r\n\r\n formController.$hideValidation = function () {\r\n formController.$setPristine();\r\n // Tell form elements to hide validation state\r\n $scope.$broadcast('onBsValidationStateChange', { showValidationState: false });\r\n };\r\n formController.$resetValidation = function () {\r\n $scope.$broadcast('onBsValidationReset');\r\n };\r\n\r\n var markPristineAfterSubmit = formElement[0].attributes.hasOwnProperty('bs-pristine-on-submit');\r\n\r\n formElement.on('submit', function (event) {\r\n // If any of the form element has not passed the validation\r\n if (formController.$invalid) {\r\n // Then focus the first invalid element\r\n formElement[0].querySelector('.ng-invalid[ng-model]').focus();\r\n return false;\r\n }\r\n\r\n // Parse the handler of ng-submit & execute it\r\n var submitHandler = $parse(ngSubmit);\r\n $scope.$apply(function () {\r\n submitHandler($scope, { $event: event });\r\n\r\n formController.$commitViewValue();\r\n formController.$setSubmitted();\r\n\r\n if (markPristineAfterSubmit) {\r\n formController.$hideValidation();\r\n }\r\n });\r\n\r\n if (markPristineAfterSubmit) {\r\n /**\r\n * Prevent other submit event listener registered via Angular so that we can mark the form with\r\n * the pristine state. Otherwise, that Angular's listener is getting called at the last and is again\r\n * setting form to the submitted.\r\n *\r\n * https://api.jquery.com/event.stopimmediatepropagation/\r\n */\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n\r\n return true;\r\n });\r\n };\r\n\r\n return {\r\n pre: preLinkFunction\r\n };\r\n }\r\n };\r\n }\r\n ])\r\n\r\n .directive('bsValidation', [\r\n 'bsValidationService',\r\n 'bsValidationConfig',\r\n function (bsValidationService, bsValidationConfig) {\r\n return {\r\n restrict: 'A',\r\n require: ['?ngModel', '?^^form'],\r\n link: function ($scope, $element, $attr, controllers) {\r\n if (bsValidationService.isValidationDisabled($element)) {\r\n return;\r\n }\r\n\r\n // Initialize controllers\r\n var ngModelController = controllers[0];\r\n var ngFormController = controllers[1];\r\n\r\n if (!ngModelController) {\r\n if (!bsValidationConfig.suppressWarnings) {\r\n console.warn('ng-model directive is required for the bs-validation directive to work.');\r\n }\r\n return;\r\n }\r\n\r\n var $formGroupElement = bsValidationService.getFormGroupElement($element);\r\n if (!$formGroupElement) {\r\n if (!bsValidationConfig.suppressWarnings) {\r\n console.warn('No parent form group element found for input element');\r\n }\r\n return;\r\n }\r\n\r\n var displayValidationState = false;\r\n var shouldValidateOnBlur = bsValidationService.shouldValidateOnBlur($element);\r\n var shouldValidateOnDisplay = bsValidationService.shouldValidateOnDisplay($element);\r\n var shouldValidateOnSubmit = bsValidationService.shouldValidateOnSubmit($element);\r\n\r\n var displayErrorAs = bsValidationService.displayErrorPreference($element, $attr);\r\n var validationMessageService = bsValidationService.getValidationMessageService(displayErrorAs);\r\n\r\n // Register generic custom validators if added to element\r\n angular.forEach(bsValidationService.getValidators(), function (validator) {\r\n var key = validator.name;\r\n var attrValue = $element.attr(key);\r\n if ($attr[key] || (angular.isDefined(attrValue) && attrValue !== false)) {\r\n bsValidationService.addValidator($scope, $element, $attr, ngModelController, validator);\r\n }\r\n });\r\n\r\n function addErrorClass() {\r\n bsValidationService.addErrorClass($formGroupElement);\r\n }\r\n\r\n function removeSuccessClass() {\r\n bsValidationService.removeSuccessClass($formGroupElement);\r\n }\r\n\r\n function displayError() {\r\n addErrorClass();\r\n validationMessageService.showErrorMessage($element, $attr, ngModelController, $formGroupElement);\r\n\r\n if ($element.hasClass('show-and-hide')) {\r\n setTimeout(function () {\r\n $element.blur();\r\n hideSuccess();\r\n hideError();\r\n ngModelController.$setUntouched();\r\n ngModelController.$setPristine();\r\n watchBlur();\r\n }, 3000);\r\n }\r\n }\r\n\r\n function hideError() {\r\n validationMessageService.hideErrorMessage($element, $formGroupElement);\r\n }\r\n\r\n function addSuccessClass() {\r\n const validators = {\r\n ...ngModelController.$validators,\r\n ...ngModelController.$asyncValidators\r\n };\r\n\r\n const hasValidation = Object.keys(validators).length > 0;\r\n const isNotEmpty = ngModelController.$viewValue && ngModelController.$viewValue.length;\r\n\r\n if (hasValidation && isNotEmpty) {\r\n bsValidationService.addSuccessClass($formGroupElement);\r\n }\r\n\r\n return hideError();\r\n }\r\n\r\n function displaySuccess() {\r\n addSuccessClass();\r\n }\r\n\r\n function hideSuccess() {\r\n removeSuccessClass();\r\n }\r\n\r\n function displayOrHideValidationState() {\r\n //if (!ngModelController.$$attr.required && !ngModelController.$$attr.pattern) return;\r\n\r\n bsValidationService.toggleErrorKeyClasses($formGroupElement, ngModelController.$error);\r\n\r\n if (!displayValidationState) {\r\n hideSuccess();\r\n return hideError();\r\n }\r\n\r\n if (ngModelController.$valid) {\r\n return displaySuccess();\r\n }\r\n if (ngModelController.$invalid) {\r\n return displayError();\r\n }\r\n }\r\n\r\n function showValidation() {\r\n displayValidationState = true;\r\n displayOrHideValidationState();\r\n }\r\n\r\n function hideValidation() {\r\n displayValidationState = false;\r\n displayOrHideValidationState();\r\n }\r\n\r\n function watchBlur() {\r\n var dewatcher = $scope.$watch(\r\n function () {\r\n return ngModelController.$touched;\r\n },\r\n function (lostFocus) {\r\n if (lostFocus) {\r\n displayValidationState = true;\r\n displayOrHideValidationState();\r\n dewatcher();\r\n }\r\n }\r\n );\r\n }\r\n\r\n if (shouldValidateOnBlur) {\r\n watchBlur();\r\n }\r\n\r\n if (shouldValidateOnSubmit && ngFormController) {\r\n // register watchers for submission touch and valid\r\n $scope.$watch(\r\n function () {\r\n return ngFormController.$submitted;\r\n },\r\n function (submitted) {\r\n displayValidationState = submitted;\r\n displayOrHideValidationState();\r\n }\r\n );\r\n }\r\n\r\n if (shouldValidateOnDisplay) {\r\n showValidation();\r\n }\r\n\r\n // TODO Find alternative for this watch\r\n /*$scope.$watch(function () {\r\n return ngModelController.$error;\r\n }, displayOrHideValidationState, true);*/\r\n\r\n $scope.$watch(\r\n function () {\r\n return ngModelController.$valid;\r\n },\r\n displayOrHideValidationState,\r\n true\r\n );\r\n\r\n $scope.$watch(\r\n function () {\r\n return ngModelController.$$attr.required;\r\n },\r\n function () {\r\n hideSuccess();\r\n hideError();\r\n displayOrHideValidationState();\r\n },\r\n true\r\n );\r\n\r\n $scope.$on('onBsValidationStateChange', function (event, data) {\r\n displayValidationState = data.showValidationState;\r\n displayOrHideValidationState();\r\n });\r\n\r\n $scope.$on('onBsValidationReset', function (event) {\r\n $element.blur();\r\n hideSuccess();\r\n hideError();\r\n ngModelController.$setUntouched();\r\n ngModelController.$setPristine();\r\n watchBlur();\r\n });\r\n\r\n $scope.$on('$destroy', function () {\r\n validationMessageService.destroyMessage($element);\r\n });\r\n\r\n ngModelController.$showValidation = showValidation;\r\n ngModelController.$hideValidation = hideValidation;\r\n }\r\n };\r\n }\r\n ])\r\n\r\n .provider('bsValidationConfig', function () {\r\n // Can be a string or list of any combination of \"blur\", \"submit\" & \"display\"\r\n var validateFieldsOn = 'blur';\r\n // Display the validation error message below the `input` field with class \"help-block\"\r\n var displayErrorsAs = 'simple';\r\n\r\n // Can be a string or list of any combination of filters; will be applied in order\r\n // For example: 'lowercase' or ['lowercase', 'reverse'] (So long as the filter(s) exists)\r\n var messageFilters = [];\r\n\r\n function shouldValidateOn(event) {\r\n if (angular.isString(validateFieldsOn)) {\r\n return validateFieldsOn === event;\r\n }\r\n\r\n return validateFieldsOn.indexOf(event) !== -1;\r\n }\r\n\r\n var _this = this;\r\n this.global = {};\r\n this.global.addSuccessClass = true;\r\n this.global.errorClass = 'has-error';\r\n this.global.successClass = 'has-success';\r\n this.global.errorMessagePrefix = '';\r\n this.global.tooltipPlacement = 'bottom-left';\r\n this.global.tooltipAppendToBody = false;\r\n this.global.suppressWarnings = false;\r\n\r\n this.global.messages = {};\r\n\r\n this.setMessages = function (data) {\r\n _this.global.messages = data;\r\n };\r\n\r\n this.global.setValidateFieldsOn = function (event) {\r\n if (!event) {\r\n throw 'Please provide an string or list of events to validate fields on';\r\n }\r\n\r\n if (!angular.isString(event) && !angular.isArray(event)) {\r\n throw 'Event should either be a string or a list';\r\n }\r\n\r\n validateFieldsOn = event;\r\n };\r\n\r\n this.global.setDisplayErrorsAs = function (type) {\r\n if (!type) {\r\n throw 'Please provide the way validation error should be displayed. In-built options are \"simple\" & \"tooltip\".';\r\n }\r\n\r\n displayErrorsAs = type;\r\n };\r\n\r\n this.global.useMessageFilters = function (filters) {\r\n if (!filters) {\r\n throw 'Please provide a string or list of filters to apply to messages';\r\n }\r\n\r\n if (!angular.isString(filters) && !angular.isArray(filters)) {\r\n throw 'Filters should either be a string or a list';\r\n }\r\n\r\n messageFilters = filters;\r\n\r\n if (!angular.isArray(messageFilters)) {\r\n messageFilters = [messageFilters];\r\n }\r\n };\r\n\r\n this.$get = [\r\n function () {\r\n return {\r\n messages: function (key) {\r\n return _this.global.messages[key];\r\n },\r\n errorClass: _this.global.errorClass,\r\n successClass: _this.global.successClass,\r\n suppressWarnings: _this.global.suppressWarnings,\r\n tooltipAppendToBody: _this.global.tooltipAppendToBody,\r\n\r\n getDisplayErrorsAs: function () {\r\n return displayErrorsAs;\r\n },\r\n\r\n getErrorMessagePrefix: function () {\r\n return _this.global.errorMessagePrefix || '';\r\n },\r\n\r\n getMessageFilters: function () {\r\n return messageFilters;\r\n },\r\n\r\n getTooltipPlacement: function () {\r\n return _this.global.tooltipPlacement;\r\n },\r\n\r\n shouldAddSuccessClass: function () {\r\n return _this.global.addSuccessClass;\r\n },\r\n\r\n shouldValidateOn: shouldValidateOn,\r\n\r\n setMessages: function (data) {\r\n return _this.setMessages(data);\r\n }\r\n };\r\n }\r\n ];\r\n })\r\n\r\n .factory('bsValidationService', [\r\n '$interpolate',\r\n '$injector',\r\n '$filter',\r\n 'bsValidationConfig',\r\n function ($interpolate, $injector, $filter, bsValidationConfig) {\r\n var displayErrorAsAttrName = 'bsDisplayErrorAs';\r\n var customFormGroup = '[bs-form-group]';\r\n var formGroupClass = '.form-group';\r\n\r\n var _genericValidators = [\r\n {\r\n name: 'digits',\r\n validateFn: function (value) {\r\n return /^\\d+$/.test(value);\r\n }\r\n },\r\n {\r\n name: 'equalto',\r\n validateFn: function (value, $scope, attr) {\r\n return value + '' === $scope.$eval(attr.equalto) + '';\r\n }\r\n },\r\n {\r\n name: 'number',\r\n validateFn: function (value) {\r\n return /^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test(value);\r\n }\r\n },\r\n {\r\n name: 'min',\r\n validateFn: function (value, $scope, attr) {\r\n return parseFloat(value) >= parseFloat(attr.min);\r\n }\r\n },\r\n {\r\n name: 'max',\r\n validateFn: function (value, $scope, attr) {\r\n return parseFloat(value) <= parseFloat(attr.max);\r\n }\r\n },\r\n {\r\n name: 'range',\r\n validateFn: function (value, $scope, attr) {\r\n return parseFloat(value) >= parseFloat(attr.range.split('|')[0]) && parseFloat(value) <= parseFloat(attr.range.split('|')[1]);\r\n }\r\n },\r\n {\r\n name: 'length',\r\n validateFn: function (value, $scope, attr) {\r\n return value.length === parseInt(attr.length);\r\n }\r\n },\r\n {\r\n name: 'strictemail',\r\n validateFn: function (value) {\r\n return new RegExp(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,63}$/).test(value);\r\n }\r\n }\r\n ];\r\n\r\n function getTrigger($element, triggerEvent) {\r\n var attributeName = 'bs-trigger';\r\n if ($element.attr(attributeName)) {\r\n return $element.attr(attributeName) === triggerEvent;\r\n }\r\n\r\n var parentForm = $element.parents('form');\r\n if (parentForm && parentForm.attr(attributeName)) {\r\n return parentForm.attr(attributeName) === triggerEvent;\r\n }\r\n\r\n // Use the global config\r\n return bsValidationConfig.shouldValidateOn(triggerEvent);\r\n }\r\n\r\n function removeClassByPrefix(element, prefix) {\r\n var regx = new RegExp('\\\\b' + prefix + '.*\\\\b', 'g');\r\n element[0].className = element[0].className.replace(regx, '').replace(/\\s\\s+/g, ' ');\r\n return element;\r\n }\r\n\r\n if (!String.prototype.camelCaseToDash) {\r\n String.prototype.camelCaseToDash = function () {\r\n return this.replace(/([A-Z])/g, function ($1) {\r\n return '-' + $1.toLowerCase();\r\n });\r\n };\r\n }\r\n\r\n var selectors = [];\r\n var elements = ['input', 'select', 'textarea'];\r\n\r\n angular.forEach(elements, function (element) {\r\n selectors.push(element + '[ng-model]');\r\n });\r\n\r\n var selector = selectors.join(',');\r\n var meta = ['matchName'];\r\n\r\n return {\r\n getValidators: function () {\r\n return _genericValidators;\r\n },\r\n\r\n getMetaInformation: function ($element) {\r\n var metaInformation = {};\r\n\r\n angular.forEach(meta, function (key) {\r\n metaInformation[key] = $element.attr(key) || $element.attr(key.camelCaseToDash());\r\n });\r\n\r\n return metaInformation;\r\n },\r\n\r\n addDirective: function ($element) {\r\n var validateableElements = $element.find(selector);\r\n validateableElements.attr('bs-validation', '');\r\n return validateableElements;\r\n },\r\n\r\n addErrorClass: function ($formGroupElement) {\r\n this.removeSuccessClass($formGroupElement);\r\n $formGroupElement.addClass(bsValidationConfig.errorClass);\r\n },\r\n\r\n addSuccessClass: function ($formGroupElement) {\r\n this.removeErrorClass($formGroupElement);\r\n\r\n if (bsValidationConfig.shouldAddSuccessClass()) {\r\n $formGroupElement.addClass(bsValidationConfig.successClass);\r\n }\r\n },\r\n\r\n addValidator: function ($scope, $element, $attr, ngModelController, validator) {\r\n ngModelController.$validators[validator.name] = function (modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n if (ngModelController.$isEmpty(value)) {\r\n return true;\r\n }\r\n\r\n // See https://github.com/sagrawal14/angular-extras/blob/v0.1.3/src/extras/array.js#L91 for \"find\" function\r\n return validator.validateFn(value, $scope, $attr);\r\n };\r\n },\r\n\r\n /**\r\n * Add a custom validator to the list of generic validators.\r\n * @param genericValidationObject for example, to a add a generic validator to accept either \"foo\" or \"bar\":\r\n * {\r\n * name: 'foobar',\r\n * validateFn: function(value, $scope, attr) {\r\n * return value === 'foo' || value === 'bar';\r\n * }\r\n * }\r\n */\r\n addGenericValidator: function (genericValidationObject) {\r\n _genericValidators.push(genericValidationObject);\r\n },\r\n\r\n displayErrorPreference: function ($element, $attr) {\r\n var attrName = displayErrorAsAttrName;\r\n if ($attr[attrName]) {\r\n return $attr[attrName];\r\n } else {\r\n var $parentForm = $element.parents('form');\r\n\r\n // .attr() method not accepting camelCase version of the attribute name. Converting it to dashed-case\r\n attrName = attrName.camelCaseToDash();\r\n\r\n if ($parentForm && $parentForm.attr(attrName)) {\r\n return $parentForm.attr(attrName);\r\n }\r\n }\r\n\r\n // Use the global preference\r\n return bsValidationConfig.getDisplayErrorsAs();\r\n },\r\n\r\n getErrorMessage: function ($element, $attr, ngModelController) {\r\n var firstErrorKey = Object.keys(ngModelController.$error)[0];\r\n return bsValidationConfig.getErrorMessagePrefix() + this.resolveMessage($element, $attr, firstErrorKey);\r\n },\r\n\r\n getFormGroupElement: function ($element) {\r\n // First search for an attribute with 'bs-form-group'\r\n var formGroupElement = $element.parents(customFormGroup);\r\n\r\n if (!formGroupElement || formGroupElement.length === 0) {\r\n // Then search for parent element with class form-group\r\n formGroupElement = $element.parents(formGroupClass);\r\n\r\n if (!formGroupElement || formGroupElement.length === 0) {\r\n return null;\r\n }\r\n }\r\n\r\n return formGroupElement;\r\n },\r\n\r\n getValidationMessageService: function (displayType) {\r\n var validationMessageService;\r\n\r\n try {\r\n validationMessageService = $injector.get(displayType + 'MessageService');\r\n } catch (e) {\r\n throw 'No message service found for type [' + displayType + '].';\r\n }\r\n\r\n if (displayType === 'tooltip' && !$injector.has('$uibPosition')) {\r\n throw '$uibPosition service required from the ui-bootstrap module in order to use the tooltip message.';\r\n }\r\n\r\n return validationMessageService;\r\n },\r\n\r\n isValidationDisabled: function ($element) {\r\n var attribute = 'bs-no-validation';\r\n if ($element[0].attributes.hasOwnProperty(attribute)) {\r\n return true;\r\n }\r\n\r\n var $parentForm = $element.parents('form');\r\n return $parentForm[0] && $parentForm[0].attributes.hasOwnProperty(attribute);\r\n },\r\n\r\n removeErrorClass: function ($formGroupElement) {\r\n $formGroupElement.removeClass(bsValidationConfig.errorClass);\r\n },\r\n\r\n removeSuccessClass: function ($formGroupElement) {\r\n $formGroupElement.removeClass(bsValidationConfig.successClass);\r\n },\r\n\r\n resolveMessage: function ($element, $attr, key) {\r\n var metaInformation = this.getMetaInformation($element);\r\n var messageFilters = $element.attr(key + '-notification-filter') || bsValidationConfig.getMessageFilters();\r\n var message = $element.attr(key + '-notification') || bsValidationConfig.messages(key);\r\n\r\n if (!message) {\r\n console.warn(\r\n 'No message found for the key [' +\r\n key +\r\n ']. Consider adding a global message or element' +\r\n ' specific message using attribute [' +\r\n key +\r\n '-notification=\"My custom message\"]'\r\n );\r\n\r\n message = 'Please fix this field';\r\n }\r\n\r\n if (angular.isDefined(messageFilters)) {\r\n if (!angular.isArray(messageFilters)) {\r\n messageFilters = [messageFilters];\r\n }\r\n\r\n for (var i = 0; i < messageFilters.length; i++) {\r\n message = $filter(messageFilters[i])(message);\r\n }\r\n }\r\n\r\n var attrKey = $attr[key];\r\n var matchers;\r\n if (attrKey && angular.isFunction(attrKey.indexOf)) {\r\n matchers = angular.extend(\r\n {},\r\n {\r\n validValue: attrKey,\r\n validValue1: attrKey.indexOf('|') !== -1 ? attrKey.split('|')[0] : '',\r\n validValue2: attrKey.indexOf('|') !== -1 ? attrKey.split('|')[1] : ''\r\n },\r\n metaInformation\r\n );\r\n } else {\r\n matchers = angular.extend(\r\n {},\r\n {\r\n validValue: attrKey\r\n },\r\n metaInformation\r\n );\r\n }\r\n\r\n return $interpolate(message)(matchers);\r\n },\r\n\r\n shouldValidateOnBlur: function ($element) {\r\n return getTrigger($element, 'blur');\r\n },\r\n\r\n shouldValidateOnDisplay: function ($element) {\r\n return getTrigger($element, 'display');\r\n },\r\n\r\n shouldValidateOnSubmit: function ($element) {\r\n return getTrigger($element, 'submit');\r\n },\r\n\r\n /**\r\n * Add or remove various classes on form-group element. For example, if an input has two errors \"required\" & \"min\"\r\n * then whenever the validation fails, form-group element will have classes like \"bs-has-error-required\" or\r\n * \"bs-has-error-min\".\r\n * @param $formGroupElement jQLite/jQuery form-group element\r\n * @param errors Errors object as returned by ngModelController.$error\r\n */\r\n toggleErrorKeyClasses: function ($formGroupElement, errors) {\r\n removeClassByPrefix($formGroupElement, 'bs-has-error-');\r\n\r\n angular.forEach(errors, function (value, key) {\r\n $formGroupElement.addClass('bs-has-error-' + key);\r\n });\r\n }\r\n };\r\n }\r\n ])\r\n\r\n .factory('simpleMessageService', [\r\n 'bsValidationService',\r\n function (bsValidationService) {\r\n var errorElementClass = '.bs-invalid-msg';\r\n\r\n function getErrorContainer($element, $formGroupElement) {\r\n var $errorContainer;\r\n\r\n // If input element has \"id\" attribute\r\n if ($element.attr('id')) {\r\n // Then first try to find the error container with the same id prefixed with \"bs-error-\"\r\n $errorContainer = $formGroupElement.find('#bs-error-' + $element.attr('id'));\r\n if ($errorContainer && $errorContainer.length) {\r\n return $errorContainer;\r\n }\r\n }\r\n\r\n $errorContainer = $formGroupElement.find(errorElementClass);\r\n if ($errorContainer && $errorContainer.length) {\r\n return $errorContainer;\r\n }\r\n\r\n var insertAfter;\r\n\r\n // Check if the container have any Bootstrap input group then append the error after it\r\n var groupElement = $formGroupElement.find('.input-group');\r\n if (groupElement.length > 0) {\r\n insertAfter = groupElement;\r\n } else {\r\n insertAfter = $element;\r\n }\r\n\r\n var errorContainerHTML = '
    '\r\n );\r\n }\r\n ]);\r\n})();\r\n","export default angular\r\n .module('controller.modal', [])\r\n\r\n /* @ngInject */\r\n .controller('modalCtrl', function (data, device, options, $scope, smoothScroll, HttpService, ModalService, $window) {\r\n const ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n $scope.device = device;\r\n\r\n ctrl.onLoad = () => {\r\n ctrl.showLoader = false;\r\n };\r\n\r\n ctrl.deleteQuantity = function (dataDelete) {\r\n ctrl.data = dataDelete;\r\n\r\n for (let i = 0; i < ctrl.data.length; i++) {\r\n HttpService.post({\r\n url: `/UpdateLineQuantityCart/${ctrl.data[i].IDLine}/${ctrl.data[i].RemovedQuantity}`\r\n }).then(function (response) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n $window.location.reload();\r\n }\r\n });\r\n }\r\n };\r\n\r\n ctrl.action = value => {\r\n if (!ctrl.data.isBtnMainDisabled) {\r\n ctrl.$close();\r\n if (ctrl.data.action) {\r\n ctrl.data.action(value);\r\n } else {\r\n console.log('no action available');\r\n }\r\n }\r\n };\r\n\r\n ctrl.goTo = key => {\r\n smoothScroll(document.getElementById(key), { offset: 70, containerId: 'scrollContainer' });\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalAddToCartCtrl', function (data, device, options, $scope, $rootScope, AppService) {\r\n const ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n $scope.device = device;\r\n\r\n if (ctrl.data.products && ctrl.data.products.length === 1) {\r\n ctrl.suggestionsUrl = `GetProductSuggestions/Modal/ModalAddToCartSuggestions/${ctrl.data.products[0].idProduct}?${new Date().getTime()}`;\r\n }\r\n\r\n if (ctrl.data.products.length === 1) {\r\n ctrl.suggestionsUrl = `GetProductSuggestions/Modal/ModalAddToCartSuggestions/${ctrl.data.products[0].idProduct}?${new Date().getTime()}`;\r\n }\r\n\r\n $scope.$on('cartUpdate', async () => {\r\n const params = await AppService.getParams();\r\n ctrl.data.restToPay = params.Cart.RestToPay;\r\n !$rootScope.$$phase && $scope.$digest();\r\n });\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalSendByEMailCtrl', function (data, device, options, HttpService, AppService, ModalService, toastr) {\r\n const ctrl = this;\r\n\r\n ctrl.data = data;\r\n ctrl.data.Message = '';\r\n ctrl.data.Recipients = [{}];\r\n ctrl.modalTitle = options.modalTitle;\r\n\r\n ctrl.addRecipient = () => {\r\n ctrl.data.Recipients.push({});\r\n };\r\n ctrl.removeRecipient = index => {\r\n ctrl.data.Recipients.splice(index, 1);\r\n };\r\n\r\n AppService.getParams()\r\n .then(params => {\r\n if (params.IsLogged) {\r\n ctrl.data.Email = params.Visitor.Email;\r\n ctrl.data.FirstName = params.Visitor.FirstName;\r\n ctrl.data.LastName = params.Visitor.LastName;\r\n }\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n\r\n ctrl.submit = () => {\r\n ctrl.loading = true;\r\n\r\n HttpService.post({\r\n url: '/SendByEmail',\r\n data: ctrl.data\r\n })\r\n .then(response => {\r\n AppService.getTranslate()\r\n .then(translate => {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', options.resultMessage, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalAvailabilityAlertCtrl', function (data, device, options, ModalService, AppService, HttpService, toastr) {\r\n const ctrl = this;\r\n ctrl.data = data;\r\n ctrl.data.Email = '';\r\n\r\n let messageTitle, messageText;\r\n\r\n ctrl.successMessage = (title, text) => {\r\n messageTitle = title;\r\n messageText = text;\r\n };\r\n\r\n ctrl.submit = () => {\r\n ctrl.loading = true;\r\n HttpService.post({\r\n url: '/Product/AvailabilityAlert',\r\n data: ctrl.data\r\n })\r\n .then(response => {\r\n ctrl.loading = false;\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success(messageText, messageTitle, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n AppService.getTranslate()\r\n .then(translate => {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalQuickViewCtrl', function (data, device, options, $scope) {\r\n const ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n $scope.device = device;\r\n\r\n ctrl.onLoad = () => {\r\n ctrl.showLoader = false;\r\n setTimeout(() => {\r\n $('.modal-quick-view .modal-body').removeAttr('style');\r\n });\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('uploadCropModalCtrl', function (data, device, options, $scope, ModalService, $uibModalInstance) {\r\n const ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n $scope.device = device;\r\n\r\n let cropper;\r\n\r\n $uibModalInstance.rendered.then(async () => {\r\n await init();\r\n });\r\n\r\n ctrl.plus = () => {\r\n cropper.zoom(0.1);\r\n };\r\n ctrl.minus = () => {\r\n cropper.zoom(-0.1);\r\n };\r\n ctrl.rotate = () => {\r\n cropper.rotate(90);\r\n };\r\n\r\n ctrl.save = () => {\r\n const dropzone = ctrl.data.ctrlFrom.dzMethods.getDropzone();\r\n dropzone.options.url = '/Upload';\r\n const blob = cropper\r\n .getCroppedCanvas({\r\n width: 240,\r\n height: 240,\r\n fillColor: '#fff',\r\n imageSmoothingEnabled: true,\r\n imageSmoothingQuality: 'high'\r\n })\r\n .toDataURL('image/jpeg');\r\n const croppedFile = dataURItoBlob(blob);\r\n croppedFile.name = ctrl.data.name;\r\n\r\n ctrl.data.ctrlFrom.tmpFileName = ctrl.data.name;\r\n dropzone.removeAllFiles();\r\n dropzone.addFile(croppedFile);\r\n\r\n ctrl.data.ctrlFrom.deleteTmpFile(ctrl.data.serverName);\r\n ModalService.close();\r\n };\r\n\r\n async function init() {\r\n await import(/* webpackChunkName: \"cropper\" */ 'import/js/directives/dropzone/cropper.less');\r\n const response = await import(/* webpackChunkName: \"cropperjs\" */ 'cropperjs');\r\n ctrl.showLoader = false;\r\n // eslint-disable-next-line\r\n cropper = new response.default(document.getElementById('img_' + ctrl.data.tmpId), {\r\n aspectRatio: 1,\r\n movable: true,\r\n cropBoxResizable: true,\r\n rotatable: true,\r\n ready: function () {\r\n // eslint-disable-next-line\r\n $(this.cropper.cropper).addClass('cropper-circle');\r\n }\r\n });\r\n }\r\n\r\n /*eslint-disable*/\r\n function dataURItoBlob(dataURI) {\r\n const byteString = atob(dataURI.split(',')[1]);\r\n const ab = new ArrayBuffer(byteString.length);\r\n let ia = new Uint8Array(ab),\r\n i;\r\n for (i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n return new Blob([ab], { type: 'image/jpeg' });\r\n }\r\n /*eslint-enable*/\r\n });\r\n","export default angular\r\n .module('directive.photoslurp', [])\r\n\r\n .directive('photoslurp', function () {\r\n return {\r\n restrict: 'E',\r\n scope: true,\r\n controllerAs: 'ctrl',\r\n /* @ngInject */\r\n controller: function ($element) {\r\n const ctrl = this;\r\n ctrl.isActive = function () {\r\n if ($('photoslurp .ps-image')?.length > 0) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.breadcrumb', [])\r\n\r\n /* @ngInject */\r\n .directive('breadcrumb', function () {\r\n return {\r\n restrict: 'A',\r\n link: (scope, element) => {\r\n $('#navMenu, #navSecondary, #navAside').find('li.active').removeClass('active');\r\n\r\n const $items = element.find('.item');\r\n const len = $items.length;\r\n let i, id;\r\n\r\n for (i = 0; i < len; i++) {\r\n id = $($items[i]).data('id');\r\n $('#navMenu, #navSecondary, #navAside').find(`li[data-id=\"${id}\"]`).addClass('active');\r\n }\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.page.head', [])\r\n\r\n /* @ngInject */\r\n .directive('pageHead', function ($location, $window, RoutingService) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n metadata: '@'\r\n },\r\n link: function (scope, element) {\r\n setTimeout(() => {\r\n const routing = RoutingService.get();\r\n if (!routing.from) return;\r\n\r\n const metadata = scope.$eval(scope.metadata);\r\n\r\n if (metadata.url && $window.location.pathname !== '/' && metadata?.url !== `${$window.location.origin}${$window.location.pathname}`) {\r\n $location.update({ path: metadata.url.split(`${$window.location.origin}/`)[1] });\r\n }\r\n\r\n $window.document.title = metadata.title;\r\n\r\n if (angular.isDefined(metadata.description) && metadata.description !== '') {\r\n if (!$('meta[name=\"description\"]').length) {\r\n $(``).insertAfter('title');\r\n } else {\r\n $('meta[name=\"description\"]').attr('content', metadata.description);\r\n }\r\n } else {\r\n $('meta[name=\"description\"]').remove();\r\n }\r\n\r\n if (angular.isUndefined(metadata.checkout)) {\r\n $(document.body).removeClass('checkout');\r\n } else {\r\n $(document.body).addClass('checkout');\r\n }\r\n scope.$emit('pageCheckout', angular.isDefined(metadata.checkout));\r\n });\r\n }\r\n };\r\n });\r\n","/*\r\n * Modal directive from .\r\n **/\r\nimport modal from 'angular-ui-bootstrap/src/modal';\r\n\r\nexport default angular\r\n .module('module.modal', [modal])\r\n\r\n /* @ngInject */\r\n .factory('ModalService', function ($uibModal) {\r\n let modalInstance = [];\r\n return {\r\n show: (template, data, size, ctrl, ctrlAs, device, options, onClosed, onOpened) => {\r\n $(document.body).prepend('
    ');\r\n const _modal = $uibModal.open({\r\n size,\r\n templateUrl: template,\r\n controller: ctrl || 'modalCtrl',\r\n controllerAs: ctrlAs || 'modalCtrl',\r\n bindToController: true,\r\n resolve: {\r\n data: () => data,\r\n device: () => device,\r\n options: () => options\r\n },\r\n windowClass: (data && data.windowClass) || null,\r\n backdrop: (data && data.backdrop) || true,\r\n keyboard: data && angular.isDefined(data.keyboard) ? data.keyboard : true\r\n });\r\n\r\n _modal.result.catch(error => {\r\n if (error !== 'close' && error !== 'cancel' && error !== 'backdrop click' && error !== 'escape key press') {\r\n console.error(error);\r\n }\r\n });\r\n _modal.id = new Date().getTime();\r\n _modal.closed\r\n .then(() => {\r\n modalInstance = modalInstance.filter(o => o.id !== _modal.id);\r\n if (onClosed) {\r\n onClosed(_modal.result.$$state.value);\r\n }\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n _modal.opened\r\n .then(() => {\r\n $('#tmpBackdrop').remove();\r\n if (onOpened) {\r\n onOpened();\r\n }\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n modalInstance.push(_modal);\r\n return _modal;\r\n },\r\n close: () => {\r\n modalInstance.forEach(_modal => {\r\n _modal.close();\r\n });\r\n modalInstance = [];\r\n },\r\n closeCurrent: function () {\r\n modalInstance[modalInstance.length - 1].close();\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('openModal', function (ModalService) {\r\n return {\r\n restrict: 'A',\r\n transclude: true,\r\n replace: true,\r\n template: '{{name}}',\r\n scope: {\r\n openModal: '@',\r\n module: '@',\r\n class: '@',\r\n ctrl: '@?',\r\n data: ' {\r\n scope.open = () => {\r\n ModalService.close();\r\n ModalService.show(\r\n `/Template/${scope.module}/${scope.openModal}`,\r\n scope.data,\r\n scope.size || null,\r\n scope.ctrl || 'modalCtrl',\r\n null,\r\n scope.device,\r\n scope.options,\r\n scope.onClosed || null\r\n );\r\n };\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('openCmsModal', function (ModalService) {\r\n return {\r\n restrict: 'A',\r\n transclude: true,\r\n replace: true,\r\n template: '{{name}}',\r\n scope: {\r\n openCmsModal: '@',\r\n class: '@',\r\n autoScroll: '@?',\r\n title: '@?',\r\n ctrl: '@?',\r\n size: '@?',\r\n device: ' {\r\n scope.open = () => {\r\n ModalService.close();\r\n ModalService.show(\r\n '/Template/Modal/ModalCms',\r\n {\r\n url: `/${scope.openCmsModal}`\r\n },\r\n scope.size || null,\r\n scope.ctrl || 'modalCtrl',\r\n null,\r\n scope.device,\r\n {\r\n modalTitle: scope.title || '',\r\n modalAutoScroll: scope.autoScroll ? true : false\r\n }\r\n );\r\n };\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('modalAutoScroll', function ($timeout) {\r\n return {\r\n restrict: 'A',\r\n link: (scope, element, attrs) => {\r\n if (!scope.$eval(attrs.modalAutoScroll)) return;\r\n\r\n resize();\r\n // $timeout(resize, 3000);\r\n\r\n function resize() {\r\n $timeout(() => {\r\n const $modalDialog = element.closest('.modal-dialog');\r\n const $scrollContainer = element.find('.scroll-container');\r\n let maxHeight = 0;\r\n\r\n maxHeight += parseInt($modalDialog.css('margin-top')) + parseInt($modalDialog.css('margin-bottom'));\r\n maxHeight += $modalDialog.find('.modal-header').outerHeight();\r\n if ($modalDialog.find('.modal-footer').length) {\r\n maxHeight += $modalDialog.find('.modal-footer').outerHeight();\r\n }\r\n if (element.find('.modal-search').length) {\r\n maxHeight += element.find('.modal-search').outerHeight();\r\n }\r\n maxHeight += parseInt(element.css('padding-top')) + parseInt(element.css('padding-bottom'));\r\n maxHeight += $scrollContainer.position().top;\r\n maxHeight += 2;\r\n\r\n $scrollContainer.css({\r\n 'overflow-x': 'hidden',\r\n 'overflow-y': 'auto',\r\n 'max-height': `calc(100vh - ${maxHeight}px)`\r\n });\r\n });\r\n }\r\n }\r\n };\r\n });\r\n","import 'import/js/plugins/jquery.equalheights.js';\r\n\r\nexport default angular\r\n .module('module.products.grid', [])\r\n\r\n /* @ngInject */\r\n .directive('productsGrid', function (WindowEventsService, ProductsGridService) {\r\n return {\r\n restrict: 'A',\r\n link: (scope, element) => {\r\n setTimeout(() => {\r\n element\r\n .find('.owl-nav')\r\n .children()\r\n .click(ev => {\r\n event.stopPropagation();\r\n ev.preventDefault();\r\n });\r\n }, 3000);\r\n\r\n if (!element.children('.row').length) return;\r\n\r\n const tmpId = element.attr('id') || `pg_${ProductsGridService.getId()}`;\r\n element.attr('id', tmpId);\r\n\r\n setTimeout(() => {\r\n WindowEventsService.listen(true, 'resize', resize, 500);\r\n });\r\n\r\n scope.$on('$destroy', () => {\r\n WindowEventsService.listen(false, 'resize', resize);\r\n });\r\n\r\n resize();\r\n\r\n // Functions\r\n function resize() {\r\n setTimeout(() => {\r\n ProductsGridService.resizeGrid(tmpId, scope.device.size, false);\r\n });\r\n }\r\n }\r\n };\r\n })\r\n\r\n .service('ProductsGridService', function () {\r\n let tmpId = 0;\r\n this.getId = () => tmpId++;\r\n this.resizeGrid = (elemId, size, lazy, sizes) => {\r\n const $elem = $(`#${elemId}`);\r\n const $divs = $elem.children('.row').children('.grid:visible');\r\n\r\n if ($divs.length < 2) return;\r\n\r\n if (!lazy) {\r\n $divs.children().addClass('init').find('.content').children().height('');\r\n }\r\n\r\n let nb;\r\n if (!sizes) {\r\n const col = $divs.eq(0).attr('class').split(`col-${size}-`)[1];\r\n if (!col) {\r\n return;\r\n }\r\n nb = 12 / col.split(' ')[0];\r\n } else {\r\n const width = document.body.clientWidth;\r\n [...sizes].reverse().forEach(o => {\r\n if (width < o.breakpoint) {\r\n nb = o.nb;\r\n }\r\n });\r\n }\r\n if (nb === 1) return;\r\n\r\n let i, j, targ, comp;\r\n const len = $divs.find('.product-item').length;\r\n for (i = 0; i < len; i += nb) {\r\n targ = $divs\r\n .slice(i, i + nb)\r\n .children('.init')\r\n .removeClass('init')\r\n .find('.content');\r\n comp = $divs.slice(i, i + nb).find('.compare');\r\n\r\n const n = targ.eq(0).children().length;\r\n for (j = 0; j < n; j++) {\r\n targ.find(`.${$(targ.eq(0).children().eq(j)).attr('class').split(' ')[0]}`).equalHeights();\r\n if (comp.children().length) {\r\n comp = comp.addClass('has-compare');\r\n }\r\n }\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('module.gtm', [])\r\n\r\n /* @ngInject */\r\n .factory('GtmService', function ($cookies, DateService) {\r\n const service = {\r\n inject\r\n };\r\n return service;\r\n\r\n ////////////\r\n function inject(key) {\r\n const script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.innerHTML = getContent(key);\r\n $('head')[0].appendChild(script);\r\n $cookies.put('gtmOK', 'true', {\r\n path: '/',\r\n expires: DateService.nextYear()\r\n });\r\n }\r\n\r\n function getContent(key) {\r\n /* eslint-disable */\r\n return `(function (w, d, s, l, i) {w[l] = w[l] || []; w[l].push({'gtm.start':new Date().getTime(), event: 'gtm.js'}); var f = d.getElementsByTagName(s)[0],j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src ='https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);})(window, document, 'script', 'dataLayer', '${key}');`;\r\n /* eslint-enable */\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .directive('gtm', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n content: '@'\r\n },\r\n /* @ngInject */\r\n controller: function (GtmService) {\r\n const ctrl = this;\r\n\r\n ctrl.$onInit = () => {\r\n GtmService.inject(ctrl.content);\r\n };\r\n }\r\n };\r\n });\r\n","/* eslint-disable no-undef */\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('module.netwave', [])\r\n\r\n .constant('wsbZonePrefix', 'wsbPZ_')\r\n\r\n /* @ngInject */\r\n .factory('NetwaveService', function ($rootScope, HttpService, RoutesService) {\r\n window.NetwaveService = this;\r\n let netwaveInfos;\r\n\r\n const initializeNetWaveInfo = async function () {\r\n if (!netwaveInfos) {\r\n netwaveInfos = await getNetWaveInfo();\r\n }\r\n };\r\n\r\n const isNetwaveEnable = async function () {\r\n await initializeNetWaveInfo();\r\n return netwaveInfos === null ? false : netwaveInfos.netwaveEnable;\r\n };\r\n\r\n const getNetWaveInfo = async function () {\r\n const url = RoutesService.getUrlByName('GetNetWaveInfo');\r\n let netInfos;\r\n await HttpService.get({\r\n url,\r\n cache: true\r\n })\r\n .then(response => { netInfos = response; })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n return netInfos;\r\n };\r\n\r\n const getIdProduct = function (product) {\r\n if (product && product.hasOwnProperty('IDProduct')) {\r\n return product.IDProduct;\r\n } else if (product && product.hasOwnProperty('idProduct')) {\r\n return product.idProduct;\r\n }\r\n return null;\r\n };\r\n\r\n /*\r\n * TODO delete this function when it will be possible to get a price on the product object\r\n * calculate product price\r\n */\r\n const getPrice = function (product) {\r\n let price = 0;\r\n if (product.IsKit && product.KitUnitTTCPrice && product.KitUnitTTCPrice > 0) {\r\n price = Math.round(product.KitUnitTTCPrice * 100) / 100;\r\n } else if (product.Product?.IsKit && product.TTCAmount > 0) {\r\n price = Math.round(product.TTCAmount / product.Quantity * 100) / 100;\r\n } else if (product.step && product.Price.qty) {\r\n price = Math.round(product.Price.TTCDiscountedPrice * product.Price.qty * 100) / 100;\r\n } else if (product.Price?.TTCDiscountedPrice > 0) {\r\n price = product.Price.TTCDiscountedPrice;\r\n } else if (product.Price?.TTCPrice > 0 && product.quantity) {\r\n price = Math.round(product.Price?.TTCPrice / product.quantity * 100) / 100;\r\n } else {\r\n price = (product.Price.TTCDiscountedPrice === null ? 0 : product.Price.TTCDiscountedPrice) + (product.costTTC === undefined ? 0 : product.costTTC);\r\n }\r\n return price;\r\n };\r\n\r\n this.trigger = function (data) {\r\n $rootScope.$broadcast('netwaveUpdate', data);\r\n };\r\n this.getProducts = async function (products) {\r\n return HttpService.post({\r\n url: '/GetProducts',\r\n data: {\r\n ProductsIds: products\r\n }\r\n })\r\n .then(response => response.products\r\n )\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n };\r\n this.updateFilters = function (ctrl) {\r\n const filters = {};\r\n ctrl.BrandsSelected?.forEach(function () {\r\n const filterBrandsSelected = ctrl.filters.brands.find(item => item.Id);\r\n if (filterBrandsSelected) {\r\n filters.brands = filters.brands || [];\r\n filters.brands.push(filterBrandsSelected.Name);\r\n }\r\n });\r\n ctrl.ReviewsSelected?.forEach(function () {\r\n const filterReviewsSelected = ctrl.filters.reviews.find(item => item.Id);\r\n if (filterReviewsSelected) {\r\n filters.reviews = filters.reviews || [];\r\n filters.reviews.push(filterReviewsSelected.Name);\r\n }\r\n });\r\n ctrl.ProductTypesSelected?.forEach(function () {\r\n const filterProductTypesSelected = ctrl.filters.types.find(item => item.Id);\r\n if (filterProductTypesSelected) {\r\n filters.types = filters.types || [];\r\n filters.types.push(filterProductTypesSelected.Name);\r\n }\r\n });\r\n\r\n ctrl.words?.forEach(function () {\r\n filters.search = filters.search || [];\r\n filters.search.push(item);\r\n });\r\n\r\n if (ctrl.PriceRange) {\r\n filters.prices = [ctrl.PriceRange];\r\n }\r\n\r\n const facets = ctrl.FacetsSelected.filter(item => item.Values.length);\r\n\r\n isScriptLoaded().then(filter);\r\n\r\n /**\r\n * Generate a script that retrieves filter information for category and list pages\r\n * where it is embedded and then sends it to Netwave.\r\n * */\r\n function filter() {\r\n const wsbProperties = window.wsbProperties || {};\r\n facets.forEach(function (filterFacet) {\r\n wsbProperties.filter = {\r\n categoryId: ctrl.categoryCtrl.idCategory,\r\n name: (filterFacet.Name).toLowerCase(),\r\n values: filterFacet.Values\r\n };\r\n });\r\n }\r\n };\r\n\r\n /*\r\n * Send delete commands to netwave for all products\r\n */\r\n this.emptyCart = async function (products) {\r\n if (!(await isNetwaveEnable())) return;\r\n\r\n for (const product of products) {\r\n await window.NetwaveService.removeArticleFromCart(product, product.Quantity);\r\n }\r\n };\r\n\r\n /*\r\n * Send delete command to netwave for a product and a quantity\r\n */\r\n this.removeArticleFromCart = async function (product, quantity) {\r\n if (!(await isNetwaveEnable())) return;\r\n\r\n async function removeArticle(pdt, qty) {\r\n await window.wsb.removeArticleFromCart(String(pdt.idCategory), String(getIdProduct(pdt)), qty, getPrice(pdt));\r\n }\r\n\r\n if (!product.idCategory) {\r\n const idCategory = await window.NetwaveService.getCategory(getIdProduct(product));\r\n product.idCategory = idCategory;\r\n await removeArticle(product, quantity);\r\n } else {\r\n await removeArticle(product, quantity);\r\n }\r\n };\r\n\r\n /*\r\n * Send add command to netwave for a product and a quantity\r\n */\r\n this.addArticleToCart = async function (product, quantity) {\r\n if (!(await isNetwaveEnable())) return;\r\n\r\n async function addArticle(pdt, qty) {\r\n await window.wsb.addArticleToCart(String(pdt.idCategory), String(getIdProduct(pdt)), qty, getPrice(pdt));\r\n }\r\n\r\n if (!product.idCategory) {\r\n const idCategory = await window.NetwaveService.getCategory(getIdProduct(product));\r\n product.idCategory = idCategory;\r\n await addArticle(product, quantity);\r\n } else {\r\n await addArticle(product, quantity);\r\n }\r\n };\r\n\r\n /*\r\n * Get product category\r\n */\r\n this.getCategory = async function (productId) {\r\n return HttpService.post({\r\n url: `/GetCategoryProduct/${productId}`,\r\n cache: true\r\n })\r\n .then(getCategoryResponse => getCategoryResponse.idCategory)\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n /*\r\n * Send delete commands to netwave for all products in the wishList\r\n */\r\n this.emptyWishList = async function (lines) {\r\n if (!(await isNetwaveEnable())) return;\r\n if (lines !== null) {\r\n lines.forEach(function (line) {\r\n window.NetwaveService.updateWishList(line.Product.IDProduct, false);\r\n });\r\n }\r\n };\r\n\r\n /*\r\n * Send add/delete commands to netwave for a product\r\n */\r\n this.updateWishList = async function (productId, addToWishList) {\r\n if (!(await isNetwaveEnable())) return;\r\n window.NetwaveService.getCategory(productId).then(function (idCategory) {\r\n if (addToWishList) {\r\n window.wsbProperties.addToWishlist = {\r\n categoryId: idCategory,\r\n productId\r\n };\r\n } else {\r\n window.wsbProperties.removeFromWishlist = {\r\n categoryId: idCategory,\r\n productId\r\n };\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Wait for the netwave script to load to override the function\r\n * */\r\n const isScriptLoaded = async function () {\r\n while (!window.wsbProperties) {\r\n await new Promise(resolve => requestAnimationFrame(resolve));\r\n }\r\n };\r\n\r\n return {\r\n getProducts: this.getProducts,\r\n updateFilters: this.updateFilters,\r\n emptyCart: this.emptyCart,\r\n getCategory: this.getCategory,\r\n updateWishList: this.updateWishList,\r\n emptyWishList: this.emptyWishList,\r\n removeArticleFromCart: this.removeArticleFromCart,\r\n addArticleToCart: this.addArticleToCart\r\n };\r\n })\r\n\r\n\r\n /* @ngInject */\r\n .directive('netWaveTabs', function () {\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n controllerAs: 'netwaveTabsCtrl',\r\n controller: function () { }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('netWave', function () {\r\n return {\r\n restrict: 'A',\r\n require: {\r\n productCtrl: '?^^productDetail',\r\n tabsCtrl: '?^^netWaveTabs'\r\n },\r\n scope: true,\r\n bindToController: {\r\n id: '@'\r\n },\r\n controllerAs: 'netwaveCtrl',\r\n /* @ngInject */\r\n controller: function ($rootScope, $element, $scope, $timeout, NetwaveService, AppService, AvailabilityService, PriceService) {\r\n const ctrl = this;\r\n\r\n // exemple of code zone : wsbPZ_ZH2. We keep ZH2\r\n ctrl.$onInit = function () {\r\n ctrl.zone = ctrl.id.split('_');\r\n ctrl.zone = ctrl.zone[1];\r\n };\r\n\r\n const unwatch = $scope.$on('netwaveUpdate', function (event, publishingZones) {\r\n unwatch();\r\n const publishingZone = _.find(publishingZones, { publishingZoneId: ctrl.zone });\r\n if (publishingZone) {\r\n if (ctrl.tabsCtrl) {\r\n ctrl.tabsCtrl.active = true;\r\n }\r\n const sortedZones = _.sortBy(\r\n _.filter(publishingZones, function (o) {\r\n if (o.json.products === undefined) {\r\n return 0;\r\n }\r\n return o.json.products.length;\r\n }),\r\n ['publishingZoneId']\r\n );\r\n const index = _.findIndex(sortedZones, { publishingZoneId: ctrl.zone });\r\n ctrl.isOpen = index === 0;\r\n ctrl.catchphrase = publishingZone.json.catchphrase;\r\n ctrl.bannerName = publishingZone.json['Banner name'];\r\n ctrl.bannerUrl = publishingZone.json['Banner url'];\r\n ctrl.bannerLink = publishingZone.json.Link;\r\n const imgWsbPublishingZone = angular.element(document.querySelectorAll('.imgWsbPublishingZone'));\r\n const linkWsbPublishingZone = angular.element(document.querySelectorAll('.linkWsbPublishingZone'));\r\n imgWsbPublishingZone.attr('src', ctrl.bannerUrl);\r\n linkWsbPublishingZone.attr('href', ctrl.bannerLink);\r\n if (publishingZone.json.products) {\r\n getProducts(publishingZone.json.products);\r\n }\r\n }\r\n });\r\n\r\n ctrl.$onDestroy = function () {\r\n unwatch();\r\n };\r\n\r\n ctrl.init = function (id) {\r\n setTimeout(function () {\r\n const element = document.getElementById(id);\r\n element.classList.add('wsbRecommendation');\r\n });\r\n };\r\n\r\n ctrl.loaded = function () {\r\n $scope.$broadcast('netwave-loaded');\r\n $scope.netwaveLoaded = true;\r\n };\r\n\r\n function getProducts(products) {\r\n NetwaveService.getProducts(products)\r\n .then(function (response) {\r\n if (!response || !response.length) return;\r\n ctrl.products = response.filter(p => p.IDProduct !== 0);\r\n ctrl.products.forEach(async function (product) {\r\n\r\n product.ReviewsInfo = product.ReviewsInfo ? { Count: product.ReviewsInfo.Count, Average: product.ReviewsInfo.Average } : null;\r\n\r\n product.domId = `wsbR_${product.IDProduct}@${ctrl.zone}`;\r\n\r\n product.isComparable = product.Themes.some(th => th.KeyTheme === 'Comparateur');\r\n product.Pictogrammes = product.Themes?.filter(th => th.KeyRegrouping === 'Pictogrammes')?.map(th => ({\r\n IDTheme: th.IDTheme,\r\n IDPicture: th.IDPicture,\r\n Designation: th.Designation,\r\n Key: th.KeyTheme,\r\n Background: th.Text1,\r\n Color: th.Text2\r\n }));\r\n\r\n if (product.Availability) {\r\n product.Availability = product.Availability;\r\n const { Site } = await AppService.getParams();\r\n if (Site.DisplayAvailabilityOnListPage && Site.IsOmnichannelOrder) {\r\n await AvailabilityService.formatMessage(product.Availability.Detail, 'Delivery');\r\n await AvailabilityService.formatMessage(product.Availability.Detail, 'PickUp');\r\n product.Availability.Detail.modalData = {\r\n idProduct: product.IDProduct,\r\n action: $rootScope.forceReload,\r\n quantity: product.MinSaleQuantity !== 0 ? product.MinSaleQuantity : 1\r\n };\r\n }\r\n }\r\n product.htmlPrice = await PriceService.get(product);\r\n\r\n });\r\n $timeout(function () {\r\n ctrl.active = true;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }\r\n };\r\n })\r\n\r\n /**\r\n *Netwave tags for each page\r\n * */\r\n /* @ngInject */\r\n .directive('netwaveTags', function (wsbZonePrefix) {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n tags: '=tags'\r\n },\r\n link: function (scope) {\r\n if (scope.tags) {\r\n isScriptLoaded().then(init);\r\n }\r\n function init() {\r\n overrideDisplay();\r\n setupNetwaveGlobalParameters(\r\n scope.tags.Langage,\r\n scope.tags.StateLoggedIn,\r\n scope.tags.ClientId,\r\n scope.tags.StockLocation,\r\n scope.tags.DataPage,\r\n scope.tags.CategoryId,\r\n scope.tags.ProductId,\r\n scope.tags.SearchRequestArray,\r\n scope.tags.OrderId,\r\n scope.tags.CustomerId,\r\n scope.tags.Total,\r\n scope.tags.Articles);\r\n\r\n if (scope.tags.DataPage !== 'order' && window.wsb._getMessageQueue().length < 1) {\r\n window.wsb._addMessage('setDataPage', window.wsb._currentPage, 0);\r\n }\r\n }\r\n\r\n /**\r\n * Wait for the netwave script to load to override the function\r\n * */\r\n async function isScriptLoaded() {\r\n while (!window.wsbDisplay) {\r\n await new Promise(resolve => requestAnimationFrame(resolve));\r\n }\r\n }\r\n\r\n /**\r\n * Override of wsbDisplay.display function of the Netwave script in order to manage the recovery of products\r\n * And populates an array (recoElements) with zone product HTML content to send to Netwave.\r\n * */\r\n function overrideDisplay() {\r\n wsbCustomTemplating((publishingZones) => {\r\n if (window.NetwaveService) {\r\n window.NetwaveService.trigger(publishingZones);\r\n }\r\n publishingZones.forEach((recommendations) => {\r\n const zoneId = recommendations.publishingZoneId;\r\n launchNetWaveCallBack(zoneId);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Iteratively, using a promise to check if a zone is currently in the DOM.\r\n * requestAnimationFrame is exactly the same as setTimeOut only a little more performant\r\n * Check the status each time the DOM is refreshed\r\n * @param {any} zone\r\n */\r\n async function isZoneExistInDom(zone) {\r\n while (document.querySelectorAll(`[id$= '@${zone}'][class$='wsbRecommendation']`).length === 0) {\r\n await new Promise(resolve => requestAnimationFrame(resolve));\r\n }\r\n }\r\n /*\r\n * Wait until product dom is built, before launch a callback to netwave indicate that a zone is ready\r\n *\r\n */\r\n async function launchNetWaveCallBack(zoneId) {\r\n await isZoneExistInDom(zoneId);\r\n wsbPublishCustomTemplating(wsbZonePrefix + zoneId);\r\n }\r\n\r\n /**\r\n * Generate a script that retrieves specific information from each page\r\n * where it is embedded and then sends it to Netwave.\r\n * @param {!string} Langage the current language of your website for the user\r\n * @param {!boolean} StateLoggedIn boolean that matches the current user logging state\r\n * @param {!string} ClientId customer id value for the current user\r\n * @param {?string} StockLocation the current stock location the user is on\r\n * @param {?string} DataPage the current page being browsed\r\n * @param {?number[20]} CategoryId id category for product, category and search page. Also can be an array of multiple categories for search page.\r\n * @param {?string[30]} ProductId id produit for product or search page\r\n * @param {?string[]} SearchRequestArray search of the user\r\n * @param {?string} OrderId Unique order identifier (empty string if unknown) for confirmation page\r\n * @param {?number} CustomerId Unique customer identifier for confirmation page\r\n * @param {?number} Total Amount for order (tax,port, discount inclusive) for confirmation page\r\n * @param {?Object} Articles List of ArticleAddToCart, articles ordered\r\n */\r\n function setupNetwaveGlobalParameters(langage, stateLoggedIn, clientId,\r\n stockLocation, dataPage, categoryId, productId, searchRequestArray, orderId, customerId, total, articles) {\r\n\r\n const wsbProperties = window.wsbProperties || {};\r\n window.wsbProperties.reset = true;\r\n wsbProperties.language = langage;\r\n wsbProperties.loggedIn = stateLoggedIn;\r\n wsbProperties.clientId = clientId;\r\n wsbProperties.stockLocation = stockLocation;\r\n\r\n\r\n if (dataPage === 'product') {\r\n wsbProperties[`${dataPage}Page`] = {\r\n categoryId,\r\n productId\r\n };\r\n } else if (dataPage === 'category') {\r\n wsbProperties[`${dataPage}Page`] = categoryId;\r\n } else if (dataPage === 'search') {\r\n let searchRequest = '';\r\n for (let i = 0; i < searchRequestArray.length; i++) {\r\n searchRequest += `${searchRequestArray[i]} `;\r\n }\r\n wsbProperties[`${dataPage}Page`] = {\r\n productId,\r\n categoryId,\r\n searchRequest\r\n };\r\n } else if (dataPage === 'order') {\r\n // Changed property naming to match Netwave naming which is in Camel Case\r\n articles.forEach(function (article) {\r\n Object.keys(article).forEach(function (key) {\r\n if (key !== camelize(key)) {\r\n Object.defineProperty(article, camelize(key),\r\n Object.getOwnPropertyDescriptor(article, key));\r\n delete article[key];\r\n }\r\n });\r\n });\r\n\r\n wsbProperties[`${dataPage}`] = {\r\n articles,\r\n orderId,\r\n customerId,\r\n total\r\n };\r\n } else {\r\n wsbProperties[`${dataPage}Page`] = true;\r\n }\r\n }\r\n\r\n /**\r\n * To change a string into Camel Case\r\n *\r\n * */\r\n function camelize(str) {\r\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\r\n return index === 0 ? word.toLowerCase() : word.toUpperCase();\r\n });\r\n }\r\n }\r\n };\r\n });\r\n\r\n})();\r\n","/**\r\n * angular-spinner version 0.8.1\r\n * https://github.com/urish/angular-spinner\r\n */\r\nimport { Spinner } from 'import/js/plugins/spin.js';\r\n\r\nexport default angular\r\n .module('module.spinner', [])\r\n\r\n .provider('usSpinnerConfig', function () {\r\n let _config = {};\r\n const _themes = {};\r\n let _delay = 0;\r\n\r\n return {\r\n setDefaults: config => {\r\n _config = config || _config;\r\n },\r\n setTheme: (name, config) => {\r\n _themes[name] = config;\r\n },\r\n setDelay: delay => {\r\n _delay = delay;\r\n },\r\n $get: () => ({\r\n config: _config,\r\n themes: _themes,\r\n delay: _delay\r\n })\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('usSpinner', function (usSpinnerConfig) {\r\n return {\r\n scope: true,\r\n link: (scope, element, attr) => {\r\n let timeout;\r\n scope.spinner = null;\r\n\r\n function stopSpinner() {\r\n if (scope.spinner) {\r\n element.children().removeClass('in').addClass('out');\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n if (scope.spinner) {\r\n scope.spinner.stop();\r\n }\r\n element.children('.overlay').remove();\r\n }, scope.delay);\r\n }\r\n }\r\n\r\n scope.spin = () => {\r\n if (scope.spinner) {\r\n element.children().removeClass('out');\r\n scope.spinner.spin(element[0]);\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n element.children().addClass('in');\r\n });\r\n }\r\n $('
    ').appendTo(element);\r\n };\r\n\r\n scope.stop = () => {\r\n stopSpinner();\r\n };\r\n\r\n const options = angular.extend({}, usSpinnerConfig.config, usSpinnerConfig.themes[attr.spinnerTheme]);\r\n scope.delay = usSpinnerConfig.delay;\r\n scope.spinner = new Spinner(options);\r\n if (!scope.key && !attr.spinnerOn) {\r\n scope.spinner.spin(element[0]);\r\n }\r\n\r\n scope.$watch(attr.spinnerOn, spin => {\r\n if (spin) {\r\n scope.spin();\r\n } else {\r\n scope.stop();\r\n }\r\n });\r\n\r\n scope.$on('$destroy', () => {\r\n scope.stop();\r\n scope.spinner = null;\r\n });\r\n }\r\n };\r\n });\r\n","angular\r\n .module('account-check.directive', [])\r\n /* Utilisation de https://regexlib.com/ et https://rgxdb.com/ */\r\n /* @ngInject */\r\n .directive('accountPhone', function ($timeout, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n link: function (scope, element, attrs, modelCtrl) {\r\n const std = /^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/; // N'importe quel numéro de téléphone\r\n let regexPhone = std;\r\n const spe = {\r\n 1089: /^(?:0)\\s*[1-9](?:[\\s.-]*\\d{2}){4}$/, // France métropolitaine (Rascol ne souhaite pas autoriser les dialing codes)\r\n 1199: /^(?:(?:\\+|00|0)((262|692)|(263|693)|508|(5|6)90|(5|6)94|(5|6|7)96|681|687|689))(?:[\\s.-]*\\d{2}){3,4}$/, // La Réunion,\r\n 1159: /^(?:(?:\\+|00|0)((262|692)|(263|693)|508|(5|6)90|(5|6)94|(5|6|7)96|681|687|689))(?:[\\s.-]*\\d{2}){3,4}$/, // Mayotte\r\n 1211: /^(?:(?:\\+|00|0)((262|692)|(263|693)|508|(5|6)90|(5|6)94|(5|6|7)96|681|687|689))(?:[\\s.-]*\\d{2}){3,4}$/, // Saint - Pierre - et - Miquelon\r\n 1100: /^(?:(?:\\+|00|0)((262|692)|(263|693)|508|(5|6)90|(5|6)94|(5|6|7)96|681|687|689))(?:[\\s.-]*\\d{2}){3,4}$/, // Guadeloupe, Saint-Martin et Saint-Barthélemy\r\n 1108: /^(?:(?:\\+|00|0)((262|692)|(263|693)|508|(5|6)90|(5|6)94|(5|6|7)96|681|687|689))(?:[\\s.-]*\\d{2}){3,4}$/, // French Guiana(Guyane)\r\n 1156: /^(?:(?:\\+|00|0)((262|692)|(263|693)|508|(5|6)90|(5|6)94|(5|6|7)96|681|687|689))(?:[\\s.-]*\\d{2}){3,4}$/, // Martinique\r\n 1256: /^(?:(?:\\+|00|0)((262|692)|(263|693)|508|(5|6)90|(5|6)94|(5|6|7)96|681|687|689))(?:[\\s.-]*\\d{2}){3,4}$/, // Wallis-et-Futuna\r\n 1178: /^(?:(?:\\+|00|0)((262|692)|(263|693)|508|(5|6)90|(5|6)94|(5|6|7)96|681|687|689))(?:[\\s.-]*\\d{2}){3,4}$/, // Nouvelle - Calédonie\r\n 1195: /^(?:(?:\\+|00|0)((262|692)|(263|693)|508|(5|6)90|(5|6)94|(5|6|7)96|681|687|689))(?:[\\s.-]*\\d{2}){3,4}$/ // French Polynesia\r\n };\r\n const stdPhoneMessage = 'Le numéro de téléphone renseigné
    ne correspond pas à un numéro
    de téléphone fixe'; // France métropolitaine\r\n const spePhoneMessages = {\r\n 27: 'Le numéro de téléphone renseigné
    ne correspond pas à un numéro
    de téléphone fixe belge', // 27 => Belgique\r\n 8: 'Die eingegebene Telefonnummer
    entspricht keiner Festnetznummer', // 8 => Allemagne\r\n 114: 'Il numero di telefono inserito
    non corrisponde a un numero
    di rete fissa', // 114 => Italie\r\n 72: 'El número de teléfono introducido
    no corresponde a un número
    de teléfono fijo', // 72 => Espagne\r\n 215: 'Le numéro de téléphone renseigné
    ne correspond pas à un numéro
    de téléphone fixe', // 215 => Suisse\r\n 189: 'The telephone number entered
    does not correspond to
    a landline number' // 189 => Royaume-Uni\r\n };\r\n\r\n const watcher = scope.$watch(attrs.accountPhone, function (idCountry) {\r\n regexPhone = (idCountry in spe) ? spe[idCountry] : std;\r\n refreshField(idCountry);\r\n if (attrs.ngModel) {\r\n const val = modelCtrl.$viewValue;\r\n $parse(attrs.ngModel).assign(scope, val);\r\n }\r\n });\r\n\r\n scope.$on('$destroy', function () {\r\n watcher();\r\n });\r\n\r\n modelCtrl.$validators.phone = phoneValidator;\r\n\r\n function phoneValidator(modelValue) {\r\n if (!modelValue) {\r\n return true;\r\n }\r\n\r\n return regexPhone.test(modelValue);\r\n }\r\n\r\n function refreshField(country) {\r\n modelCtrl.$setValidity('phone', true);\r\n $timeout(function () {\r\n scope.$apply(function () {\r\n const message = (country in spePhoneMessages) ? spePhoneMessages[country] : stdPhoneMessage;\r\n attrs.$set('phone-notification', message);\r\n modelCtrl.$validate();\r\n });\r\n });\r\n }\r\n }\r\n };\r\n })\r\n //Regex mobile par pays\r\n // /^(\\+33|0033|\\(\\+33\\)|0)(6|7)( ?\\d){8}$/ // France\r\n // /^(?:\\+324|04)( ?\\d){8}$/, // 27 => Belgique\r\n // /^((01[0-9])\\d{9}$|(1[0-9])\\d{9}$|((00\\d{5,6}|\\+\\d{4,6}|\\+[(]\\d{1,3}[)]\\d{3}))(|[-\\/])\\d{8}$)/, // 8 => Allemagne\r\n // /^([+]39)?((38[{8,9}|0])|(34[{7-9}|0])|(36[6|8|0])|(33[{3-9}|0])|(32[{8,9}]))([\\d]{7})$/, // 114 => Italie\r\n // /^34\\s?(?:6[0-9]|7[1-9])[0-9]\\s?[0-9]{3}\\s?[0-9]{3}$/, // 72 => Espagne\r\n // /^(((\\+41)(\\s?)(\\-?))|(0))(7)(\\d{1})(\\s?)(\\-?)(\\d{3})(\\s?)(\\-?)(\\d{2})(\\s?)(\\-?)(\\d{2})/, // 215 => Suisse\r\n // /^(\\+44\\s?7\\d{3}|\\(?07\\d{3}\\)?)\\s?\\d{3}\\s?\\d{3}$/ // 189 => Royaume-Uni\r\n /* @ngInject */\r\n .directive('accountMobile', function ($timeout, $parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n link: function (scope, element, attrs, modelCtrl) {\r\n const std = /^[\\+]?[(]?[0-9]{3}[)]?[-\\s\\.]?[0-9]{3}[-\\s\\.]?[0-9]{4,6}$/; // N'importe quel numéro de téléphone\r\n let regexMobile = std;\r\n const regexByCountryId = {\r\n //Je double les échappements (anti-slash) car c'est désormais une chaine de caractère qu'on fourni à RegExp\r\n 1089: '(((\\\\+|00)33\\\\s?|0)[67](\\\\s?\\\\d{2}){4})', // France métropolitaine voici l'équivalent non échappé: ((\\+|00)33\\s?|0)[67](\\s?\\d{2}){4})\r\n 1035: '(((\\\\+|00)32\\s?|0)4(60|[789]\\\\d)(\\\\s?\\\\d{2}){3})' //Belgique voici l'équivalent non échappé: ((\\+|00)32\\s?|0)4(60|[789]\\d)(\\s?\\d{2}){3}\r\n };\r\n const stdMobileMessage = 'Le numéro de téléphone renseigné
    ne correspond pas à un numéro
    de téléphone portable'; // France métropolitaine\r\n const speMobileMessage = {\r\n 27: 'Le numéro de téléphone renseigné
    ne correspond pas à un numéro
    de téléphone portable', // 27 => Belgique\r\n 8: 'Die eingegebene Telefonnummer
    entspricht keiner Mobiltelefonnummer', // 8 => Allemagne\r\n 114: 'Il numero di telefono inserito
    non corrisponde a un numero di cellulare', // 114 => Italie\r\n 72: 'El número de teléfono introducido
    no corresponde a un número
    de teléfono móvil', // 72 => Espagne\r\n 215: 'Le numéro de téléphone renseigné
    ne correspond pas à un numéro
    de téléphone portable', // 215 => Suisse\r\n 189: 'The telephone number entered
    does not correspond to a
    mobile telephone number' // 189 => Royaume-Uni\r\n };\r\n\r\n const countryCodeAndIdMapping =\r\n {\r\n 'FR': 1089,\r\n 'BE': 1035\r\n };\r\n\r\n const watcher = scope.$watchGroup([attrs.accountMobile, attrs.shippingMobile], mobileChanged);\r\n\r\n scope.$on('$destroy', function () {\r\n watcher();\r\n });\r\n\r\n modelCtrl.$validators.mobile = mobileValidator;\r\n\r\n function mobileChanged(newValues) {\r\n\r\n const visitorCountryId = newValues[0];\r\n const shippingCountryCode = newValues[1];\r\n\r\n /* If\r\n Add new shipping address\r\n Or create account\r\n */\r\n if (!shippingCountryCode) {\r\n regexMobile = (visitorCountryId in regexByCountryId) ? new RegExp(regexByCountryId[visitorCountryId]) : std;\r\n } else if (visitorCountryId && shippingCountryCode) { /* Else If Fill a phone number from shipping list */\r\n const shippingCountryId = (shippingCountryCode in countryCodeAndIdMapping) ? countryCodeAndIdMapping[shippingCountryCode] : null;\r\n regexMobile = '^';\r\n if (shippingCountryId) {\r\n regexMobile += regexByCountryId[visitorCountryId];\r\n if (visitorCountryId !== shippingCountryId) {\r\n regexMobile += '|'.concat(regexByCountryId[shippingCountryId]);\r\n }\r\n }\r\n regexMobile += '$';\r\n regexMobile = new RegExp(regexMobile);\r\n } else {\r\n regexMobile = std;\r\n }\r\n\r\n refreshField(visitorCountryId);\r\n\r\n if (attrs.ngModel) {\r\n const val = modelCtrl.$viewValue;\r\n $parse(attrs.ngModel).assign(scope, val);\r\n }\r\n }\r\n\r\n function mobileValidator(modelValue) {\r\n if (!modelValue) {\r\n return true;\r\n }\r\n\r\n return regexMobile.test(modelValue);\r\n }\r\n\r\n function refreshField(country) {\r\n modelCtrl.$setValidity('mobile', true);\r\n $timeout(function () {\r\n scope.$apply(function () {\r\n const message = (country in speMobileMessage) ? speMobileMessage[country] : stdMobileMessage;\r\n attrs.$set('mobile-notification', message);\r\n modelCtrl.$validate();\r\n });\r\n });\r\n }\r\n }\r\n };\r\n });\r\n","import { merge, kebabCase } from 'lodash-es';\r\nimport 'Modules/Authentication/import/toast_authentication.tpl';\r\n\r\nexport default angular\r\n .module('directive.minilogin', [])\r\n\r\n /* @ngInject */\r\n .directive('miniLogin', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n title: '@',\r\n titleVisitor: '@',\r\n titleLogin: '@',\r\n titleLogout: '@',\r\n device: '<'\r\n },\r\n controllerAs: 'miniLoginCtrl',\r\n /* @ngInject */\r\n controller: function ($scope, $rootScope, $element, $document, $location, $route, $timeout, toastr, AccountService, LogService, AppService, RoutingService, ModalService) {\r\n const ctrl = this;\r\n\r\n ctrl.links = AccountService.getLinks();\r\n\r\n ctrl.$onInit = () => {\r\n ctrl.visitor = ctrl.titleVisitor;\r\n update();\r\n };\r\n\r\n const $body = $(document.body);\r\n $body.addClass('offcanvas');\r\n\r\n ctrl.toggle = () => {\r\n toggle();\r\n };\r\n\r\n ctrl.login = event => {\r\n if (ctrl.isLogged && ctrl.device.mobile) {\r\n toggle();\r\n return;\r\n }\r\n if (ctrl.isLogged) return;\r\n\r\n event.preventDefault();\r\n ModalService.show('/Template/Authentication/ModalAuthentication', null, null, 'loginModalCtrl');\r\n };\r\n\r\n ctrl.logout = () => {\r\n $timeout(() => {\r\n ctrl.visitor = ctrl.title;\r\n ctrl.isLogged = false;\r\n });\r\n toggle();\r\n $rootScope.$broadcast('showPageLoader', true);\r\n LogService.logout()\r\n .then(response => {\r\n if (response.status === 'OK') {\r\n AppService.updateParams(merge(response.VisitorContext, { IsLogged: false }));\r\n $rootScope.$broadcast('logUpdate', false);\r\n update();\r\n\r\n toastr.success('', ctrl.titleLogout, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'Modules/Authentication/import/toast_authentication.tpl'\r\n }\r\n });\r\n if ($route.current && $route.current.resolve && $route.current.resolve.authorize) {\r\n $location.path('/');\r\n } else if ($location.path() === '/confirmation-de-commande') {\r\n $location.path('/');\r\n } else {\r\n RoutingService.forceReload();\r\n }\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n };\r\n\r\n // Functions\r\n\r\n $scope.$on('userUpdate', () => {\r\n update(true);\r\n });\r\n\r\n $scope.$on('logUpdate', (event, value) => {\r\n if (value) {\r\n toastr.success('', ctrl.titleLogin, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'Modules/Authentication/import/toast_authentication.tpl'\r\n }\r\n });\r\n }\r\n update();\r\n });\r\n\r\n $scope.$on('logout', () => {\r\n ctrl.logout();\r\n });\r\n\r\n // Functions\r\n\r\n function toggle() {\r\n if ($body.hasClass('offcanvas-right')) {\r\n $body.removeClass('offcanvas-right');\r\n $document.off('click', onBodyClick);\r\n } else {\r\n $body.addClass('offcanvas-right');\r\n $document.on('click', onBodyClick);\r\n }\r\n }\r\n\r\n function onBodyClick(event) {\r\n if (!$element[0].contains(event.target)) {\r\n toggle();\r\n }\r\n }\r\n\r\n function update(refresh) {\r\n AppService.getParams(refresh)\r\n .then(params => {\r\n ctrl.isLogged = params.IsLogged;\r\n ctrl.sellerUrl = null;\r\n if (ctrl.isLogged) {\r\n ctrl.visitor = params.Visitor.FullName;\r\n if (params.Visitor.CardType.KeyCardType === 'PERSONNEL') {\r\n ctrl.sellerUrl = `/${kebabCase(params.Visitor.FirstName + params.Visitor.LastName.slice(0, 1))}-v-${params.Visitor.IDCard}`;\r\n }\r\n }\r\n AccountService.setManagement(ctrl);\r\n if (refresh) {\r\n $rootScope.$broadcast('cartUpdate');\r\n }\r\n !$rootScope.$$phase && $scope.$digest();\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n }\r\n };\r\n });\r\n","var _module_exports = \"
    {{::title}}
    {{::message}}
    \";;\nvar path = 'Modules/Authentication/import/toast_authentication.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","export default angular\r\n .module('directive.be2bill-embedded', [])\r\n /* @ngInject */\r\n .directive('octBe2billEmbedded', function ($timeout, HttpService) {\r\n return {\r\n restrict: 'E',\r\n transclude: true,\r\n template: '',\r\n scope: {\r\n fields: '=',\r\n endpoint: '@'\r\n },\r\n bindToController: true,\r\n controller: function () {},\r\n controllerAs: 'ctrl',\r\n link: scope => {\r\n const ctrl = scope.ctrl;\r\n\r\n if (!ctrl.endpoint) {\r\n throw new Error('Be2Bill endpoint must be configured');\r\n }\r\n\r\n $.ajax({\r\n // why ?\r\n url: ctrl.endpoint,\r\n dataType: 'script',\r\n cache: true,\r\n success: initB2Bill,\r\n error() {\r\n console.error('Unable to load Be2Bill scripts');\r\n }\r\n });\r\n\r\n async function initB2Bill() {\r\n const response = await HttpService.get({\r\n url: '/Be2Bill/API/Info',\r\n cache: true\r\n });\r\n\r\n ctrl.fields = be2bill.hostedFields({\r\n // Use your SDK API Key\r\n key: {\r\n id: response.APIKeyId,\r\n value: response.APIKeyValue\r\n },\r\n // Link and configure each hosted input field by providing the corresponding container ID\r\n fields: {\r\n card: {\r\n id: 'card-container',\r\n placeholder: 'XXXX XXXX XXXX XXXX',\r\n enableAutospacing: true,\r\n onInput: event => {\r\n $timeout(() => {\r\n scope.$apply(() => {\r\n ctrl.hiddencard = event.type === 'invalid';\r\n });\r\n });\r\n }\r\n },\r\n expiry: {\r\n id: 'expiry-container',\r\n placeholder: 'MM/AA',\r\n onInput: event => {\r\n $timeout(() => {\r\n scope.$apply(() => {\r\n ctrl.hiddenexpiry = event.type === 'invalid';\r\n });\r\n });\r\n }\r\n },\r\n cryptogram: {\r\n id: 'cryptogram-container',\r\n placeholder: '123',\r\n onInput: event => {\r\n $timeout(() => {\r\n scope.$apply(() => {\r\n ctrl.hiddencryptogram = event.type === 'invalid';\r\n });\r\n });\r\n }\r\n }\r\n },\r\n // Choose the language for error messages\r\n location: 'fr'\r\n });\r\n $timeout(ctrl.fields.load(), 1000); // why ?\r\n }\r\n }\r\n };\r\n });\r\n","var _module_exports = \"
    \";;\nvar path = 'Modules/Category/import/facet.accordion.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"
    \";;\nvar path = 'Modules/Category/import/facet.accordion.group.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","\r\nimport 'import/js/plugins/jquery.lightgallery.js';\r\nimport 'Modules/Product/import/lightgallery.less';\r\n\r\nexport default angular\r\n .module('directive.carrousel.zoom', [])\r\n\r\n .directive('carrouselZoomIn', function () {\r\n return {\r\n restrict: 'A',\r\n controllerAs: 'ctrl',\r\n /* @ngInject */\r\n controller: function ($scope, $element) {\r\n const ctrl = this;\r\n ctrl.$onInit = async () => {\r\n console.log('inti');\r\n const owl = $('.carrousel-zoom-in');\r\n owl\r\n .find('a')\r\n .not('.video')\r\n .each(function () {\r\n const $this = $(this);\r\n $this.click(function () {\r\n const dynamicEl = [];\r\n owl\r\n .find('a')\r\n .not('.video')\r\n .each(function () {\r\n const $thisBis = $(this);\r\n if ($thisBis.data('zoom-thumb-url')) {\r\n dynamicEl.push({ thumb: $thisBis.data('zoom-thumb-url'), src: $thisBis.data('zoom-url') });\r\n }\r\n });\r\n owl\r\n .on('onCloseAfter.lg', event => {\r\n $(event.target).removeData('lightGallery');\r\n })\r\n .lightGallery({\r\n nextHtml: '',\r\n prevHtml: '',\r\n fullscreenHtml: '',\r\n closeHtml: '',\r\n dynamic: true,\r\n dynamicEl,\r\n enableSwipe: true,\r\n index: owl.find('.owl-item.active').find('a').first().data('index'),\r\n mode: 'lg-slide',\r\n thumbnail: navigator.userAgent.toLowerCase().match(/(iphone|ipod)/) ? false : true\r\n });\r\n\r\n });\r\n\r\n });\r\n };\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.header', [])\r\n\r\n .directive('mainHeader', function () {\r\n return {\r\n restrict: 'A',\r\n link: function () {\r\n setTimeout(() => {\r\n const $body = $(document.body);\r\n const $bandeauCovid = window.document.getElementById('bandeauCovid');\r\n\r\n if ($bandeauCovid) {\r\n $body.addClass('covid');\r\n } else {\r\n $body.removeClass('covid');\r\n }\r\n }, 10000);\r\n }\r\n };\r\n });\r\n","import hoverintent from 'hoverintent';\r\n\r\nexport default angular\r\n .module('directive.nav', [])\r\n\r\n /* @ngInject */\r\n .directive('rbMainNav', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: true,\r\n controllerAs: 'mainNavCtrl',\r\n /* @ngInject */\r\n controller: function ($rootScope, $scope, $element, $timeout, WindowEventsService) {\r\n const ctrl = this;\r\n\r\n ctrl.open = false;\r\n ctrl.children = [];\r\n\r\n ctrl.toggle = () => {\r\n ctrl.open = !ctrl.open;\r\n let i;\r\n const len = ctrl.children.length;\r\n for (i = 0; i < len; i++) {\r\n ctrl.children[i].open = false;\r\n }\r\n };\r\n\r\n const $nav = $element.children('.nav');\r\n let size = parseFloat($nav.css('font-size'));\r\n let padding = parseFloat($nav.children().eq(0).children('span').css('padding-left'));\r\n const origSize = size;\r\n ctrl.style = '';\r\n ctrl.menuStyle = '';\r\n resizeMenus();\r\n\r\n // Events\r\n\r\n WindowEventsService.listen(true, 'resize', resize, 500);\r\n\r\n $scope.$on('$destroy', () => {\r\n WindowEventsService.listen(false, 'resize', resize);\r\n });\r\n\r\n $rootScope.$on('toggleNav', () => {\r\n ctrl.toggle();\r\n });\r\n\r\n // Functions\r\n\r\n function resize() {\r\n ctrl.style = '';\r\n ctrl.menuStyle = '';\r\n $timeout(() => {\r\n size = parseFloat($nav.css('font-size'));\r\n padding = parseFloat($nav.children().eq(0).children('span').css('padding-left'));\r\n ctrl.active = false;\r\n size = origSize;\r\n $timeout(resizeMenus);\r\n });\r\n }\r\n\r\n function resizeMenus() {\r\n if ($scope.device.desktop) {\r\n if ($nav.width() > $element.width()) {\r\n if (padding > 5) {\r\n padding -= 1;\r\n ctrl.menuStyle = { 'padding-left': `${padding}px`, 'padding-right': `${padding}px` };\r\n } else {\r\n size -= 0.5;\r\n ctrl.style = { 'font-size': `${size}px` };\r\n }\r\n $timeout(resizeMenus);\r\n } else {\r\n ctrl.active = true;\r\n }\r\n } else {\r\n ctrl.style = '';\r\n ctrl.menuStyle = '';\r\n ctrl.active = true;\r\n }\r\n }\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('rbNav', function ($document, $animate) {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n psOpen: '=?'\r\n },\r\n link: (scope, element) => {\r\n element.addClass('ng-pageslide');\r\n\r\n // DOM manipulation\r\n\r\n const slider = element[0];\r\n const body = document.body;\r\n const $body = $(body);\r\n let to;\r\n\r\n element.hover(\r\n () => {\r\n $('#header').addClass('hover');\r\n $body.addClass('nav-open');\r\n clearTimeout(to);\r\n to = setTimeout(() => {\r\n $body.addClass('nav-open-active');\r\n }, 200);\r\n },\r\n () => {\r\n $('#header').removeClass('hover');\r\n $body.removeClass('nav-open-active');\r\n clearTimeout(to);\r\n to = setTimeout(() => {\r\n $body.removeClass('nav-open');\r\n }, 400);\r\n }\r\n );\r\n\r\n function onBodyClick(e) {\r\n if (scope.psOpen && !slider.contains(e.target)) {\r\n scope.$apply(() => {\r\n scope.psOpen = false;\r\n });\r\n }\r\n }\r\n\r\n $body.addClass('offcanvas');\r\n\r\n if (slider.children.length === 0) {\r\n throw new Error('You need to have content inside the ');\r\n }\r\n\r\n // Closed\r\n function psClose() {\r\n if ($body.hasClass('offcanvas-left')) {\r\n $('.move-out').removeClass('move-out'); // TODO\r\n $animate.removeClass(body, 'offcanvas-left').then(closeDone);\r\n $document.off('click', onBodyClick);\r\n }\r\n }\r\n function closeDone() {\r\n scope.psOpen = false;\r\n }\r\n // Open\r\n function psOpen() {\r\n if (!$body.hasClass('offcanvas-left')) {\r\n $animate.addClass(body, 'offcanvas-left').then(openDone);\r\n $document.on('click', onBodyClick);\r\n }\r\n }\r\n function openDone() {\r\n scope.psOpen = true;\r\n }\r\n\r\n // Watchers\r\n\r\n scope.$watch('psOpen', value => {\r\n if (!!value) {\r\n psOpen();\r\n } else {\r\n psClose();\r\n }\r\n });\r\n\r\n // Events\r\n\r\n scope.$on('$destroy', () => {\r\n if (slider.parentNode === body) {\r\n $document.off('click', onBodyClick);\r\n }\r\n });\r\n\r\n scope.$on('$locationChangeStart', () => {\r\n psClose();\r\n });\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('rbMenu', function ($rootScope, $animate, $injector, $location, MenuService) {\r\n const $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null;\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n link: (scope, element, attrs) => {\r\n scope.mainNavCtrl.children.push(scope);\r\n //\r\n scope.open = false;\r\n scope.element = element;\r\n\r\n initMenu();\r\n initLevelsLinks();\r\n\r\n scope.expandMenu = async () => {\r\n const $menu = element.addClass('in').children('.menu');\r\n element.children('a').addClass('in');\r\n\r\n $menu.addClass('collapsing').attr('aria-expanded', true).attr('aria-hidden', false);\r\n\r\n if (scope.$parent.device.isTouch) {\r\n $('#main-nav').addClass('in');\r\n $menu.after('
    ');\r\n element.children('.backdrop').on('click', function () {\r\n $(this).remove();\r\n scope.reduceMenu();\r\n });\r\n }\r\n\r\n function expandDone() {\r\n $menu.removeClass('collapsing').css({ height: 'auto' });\r\n }\r\n\r\n if ($animateCss) {\r\n $animateCss($menu, {\r\n addClass: 'in',\r\n easing: 'ease',\r\n to: { height: `${$menu[0].scrollHeight}px` }\r\n })\r\n .start()\r\n .finally(expandDone);\r\n } else {\r\n $animate\r\n .addClass($menu, 'in', {\r\n to: { height: `${$menu[0].scrollHeight}px` }\r\n })\r\n .then(expandDone);\r\n }\r\n\r\n setTimeout(() => {\r\n $(window).trigger('scroll');\r\n }, 350);\r\n\r\n if (angular.isDefined(attrs.getLinks) && !scope.links) {\r\n const id = element.data('id');\r\n const { status, categories } = await MenuService.getLinks(id);\r\n if (status === 'OK') {\r\n scope.links = categories.map(link => ({\r\n Designation: link.Designation,\r\n URL: `${link.URL}?fc=${id}`\r\n }));\r\n !$rootScope.$$phase && scope.$digest();\r\n }\r\n }\r\n };\r\n\r\n scope.reduceMenu = () => {\r\n const $menu = element.removeClass('in').children('.menu');\r\n if (!$menu.length) return;\r\n\r\n element.children('a').removeClass('in');\r\n element.children('.backdrop').remove();\r\n $('#main-nav').removeClass('in');\r\n\r\n $menu\r\n .css({ height: `${$menu[0].scrollHeight}px` })\r\n .addClass('collapsing')\r\n .attr('aria-expanded', false)\r\n .attr('aria-hidden', true);\r\n\r\n function collapseDone() {\r\n $menu.css({ height: '0' }).removeClass('collapsing');\r\n }\r\n\r\n if ($animateCss) {\r\n $animateCss($menu, {\r\n removeClass: 'in',\r\n to: { height: '0' }\r\n })\r\n .start()\r\n .finally(collapseDone);\r\n } else {\r\n $animate\r\n .removeClass($menu, 'in', {\r\n to: { height: '0' }\r\n })\r\n .then(collapseDone);\r\n }\r\n\r\n if (scope.$parent.device.isTouch && scope.$parent.device.desktop) {\r\n const to = setTimeout(() => {\r\n document.body.classList.remove('nav-open');\r\n }, 400);\r\n document.getElementById('header').classList.remove('hover');\r\n document.body.classList.remove('nav-open-active');\r\n clearTimeout(to);\r\n }\r\n };\r\n\r\n scope.openMenu = event => {\r\n if (window.isBot || window.isCache) return;\r\n event.preventDefault();\r\n if (!scope.$parent.device.desktop) {\r\n scope.open = !scope.open;\r\n scope.expandMenu();\r\n if (element.hasClass('level3')) {\r\n element\r\n .siblings()\r\n .addClass('move-out')\r\n .end()\r\n .children('a')\r\n .addClass('move-out')\r\n .end()\r\n .closest('.col-md-3')\r\n .siblings()\r\n .addClass('move-out')\r\n .end()\r\n .closest('.nav')\r\n .scrollTop(0)\r\n .end();\r\n $('.move-in').scrollTop(0);\r\n } else {\r\n element.siblings().addClass('move-out').end().closest('.nav').scrollTop(0);\r\n }\r\n } else {\r\n if (scope.$parent.device.isTouch && element.hasClass('level1')) {\r\n const $menu = element.children('.menu');\r\n if (!$menu.hasClass('collapsing') && !$menu.hasClass('in')) {\r\n const ctrl = scope.mainNavCtrl;\r\n let i;\r\n const len = ctrl.children.length;\r\n for (i = 0; i < len; i++) {\r\n if (ctrl.children[i].element !== element && ctrl.children[i].element.children('.menu.in').length) {\r\n ctrl.children[i].reduceMenu();\r\n }\r\n }\r\n scope.expandMenu();\r\n }\r\n return;\r\n }\r\n $location.path(element.children('a').attr('href'));\r\n }\r\n };\r\n\r\n scope.backMenu = event => {\r\n event.preventDefault();\r\n scope.open = !scope.open;\r\n element.siblings().removeClass('move-out');\r\n if (element.hasClass('level3')) {\r\n element.closest('.col-md-3').siblings().removeClass('move-out');\r\n element.children('a').removeClass('move-out');\r\n }\r\n };\r\n\r\n scope.closeMenu = () => {\r\n scope.mainNavCtrl.open = false;\r\n };\r\n\r\n // Functions\r\n\r\n function initMenu() {\r\n if (!scope.$parent.device.desktop || !element.hasClass('level1')) return;\r\n\r\n hoverintent(\r\n element[0],\r\n () => {\r\n scope.expandMenu();\r\n },\r\n () => {\r\n scope.reduceMenu();\r\n }\r\n ).options({\r\n timeout: 200,\r\n interval: 100\r\n });\r\n }\r\n\r\n function initLevelsLinks() {\r\n element.find('.menu-list').on('click', 'a', event => {\r\n if (scope.device.desktop) {\r\n scope.reduceMenu();\r\n }\r\n });\r\n }\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .factory('MenuService', function (HttpService) {\r\n const service = {\r\n getLinks\r\n };\r\n return service;\r\n\r\n ////////////\r\n async function getLinks(id) {\r\n const response = await HttpService.post({\r\n url: '/GetLinkedCatalog',\r\n data: {\r\n categoryId: id\r\n }\r\n });\r\n return response;\r\n }\r\n });\r\n","export default angular\r\n .module('directive.mini-cart', [])\r\n\r\n .directive('miniCart', function () {\r\n return {\r\n restrict: 'E',\r\n /* @ngInject */\r\n controller: function ($scope, $element, $filter, AppService, RoutesService, ModalService) {\r\n const ctrl = this;\r\n\r\n // Translate\r\n const tplTranslate = {};\r\n $element\r\n .children('.translate')\r\n .children()\r\n .each(function () {\r\n const $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n getCart();\r\n\r\n ctrl.emptyCart = () => {\r\n ModalService.show('/Template/Cart/ModalClearCartConfirm', {}, null, 'clearCartConfirmModalCtrl');\r\n };\r\n\r\n ctrl.remove = line => {\r\n const product = {\r\n idProduct: line.Product.IDProduct,\r\n quantity: line.Quantity,\r\n Price: {\r\n TTCPrice: line.TTCAmount\r\n }\r\n };\r\n ModalService.show(\r\n '/Template/Cart/ModalDeleteConfirm',\r\n {\r\n action: () => {\r\n AppService.deleteLine(line.IDLine, product, line.Product.Designation, line.Product.IDPicture, line.Product.DistrimageSrc, tplTranslate.titleDeleteOk);\r\n }\r\n },\r\n null,\r\n 'deleteConfirmModalCtrl'\r\n );\r\n };\r\n\r\n $scope.$on('cartUpdate', () => {\r\n getCart();\r\n });\r\n\r\n $scope.$on('cartUpdateWithRefresh', () => {\r\n getCart(true);\r\n });\r\n\r\n async function getCart(withRefresh) {\r\n ctrl.cartIsActive = true;\r\n const params = await AppService.getParams(withRefresh);\r\n if (params.Agent && params.Mobility.Params.UseSaleAsCart && !params.Mobility.Profile.AllModules.find(p => p.ModuleKey === 'sale')?.IsActive) {\r\n ctrl.cartIsActive = false;\r\n }\r\n ctrl.hasCart = params.HasCart && params.Cart && params.Cart.Products && params.Cart.Products.length;\r\n ctrl.cartLink = !ctrl.hasCart ? '' : `/${RoutesService.getUrlByName('Cart')}`;\r\n ctrl.showTTCPrice = params.Visitor.CardType.ShowTTCPrice;\r\n ctrl.count = 0;\r\n if (ctrl.hasCart) {\r\n ctrl.data = params.Cart;\r\n params.Cart.Products.forEach(line => {\r\n if (params.Cart.TradeActions.find(tradeAction => tradeAction.IDProduct === line.IDProduct)) {\r\n line.isGift = true;\r\n }\r\n });\r\n ctrl.cartProducts = $filter('orderBy')(\r\n params.Cart.Products.filter(line => !line.isGift),\r\n 'LineNumber'\r\n );\r\n ctrl.count = ctrl.cartProducts.reduce((result, line) => result + line.Quantity, 0);\r\n }\r\n !$scope.$$phase && $scope.$digest();\r\n }\r\n },\r\n controllerAs: 'miniCartCtrl'\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('deleteConfirmModalCtrl', function (data, device, options, ModalService) {\r\n const ctrl = this;\r\n\r\n ctrl.submit = () => {\r\n ModalService.close();\r\n data.action();\r\n };\r\n ctrl.cancel = () => {\r\n ModalService.close();\r\n if (data.cancel) data.cancel();\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('clearCartConfirmModalCtrl', function (data, $rootScope, HttpService, AppService, ModalService, toastr, NetwaveService) {\r\n const ctrl = this;\r\n\r\n ctrl.submit = async () => {\r\n ModalService.close();\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n try {\r\n const response = await HttpService.post({\r\n url: 'Cart/ClearCart',\r\n data: {}\r\n });\r\n const { messages, errors } = await AppService.getTranslate();\r\n if (response.status === 'OK') {\r\n await NetwaveService.emptyCart(response.removedProducts);\r\n AppService.updateParams(response.results);\r\n toastr.success('', messages.ClearCartOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n if (data.action) data.action();\r\n } else {\r\n toastr.warning(errors.TryLater, errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n !$rootScope.$$phase && $rootScope.$digest();\r\n };\r\n });\r\n","var _module_exports = \" \";;\nvar path = 'Modules/Shared/Autocomplete/import/autocomplete.product.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"
    {{::title}}
    {{::message}}
    \";;\nvar path = 'Modules/Shared/Comparator/import/toast_comparator.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","import 'Modules/Finder/import/service.js';\r\nimport 'Modules/Finder/import/autocomplete.finder.less';\r\n\r\nexport default angular\r\n .module('directive.autocomplete.finder', ['finder.service'])\r\n\r\n .directive('autoCompleteFinder', function () {\r\n return {\r\n restrict: 'E',\r\n scope: true,\r\n controllerAs: 'searchCtrl',\r\n /* @ngInject */\r\n controller: function ($rootScope, $element, $location, $timeout, RoutesService, FinderService) {\r\n const ctrl = this;\r\n\r\n ctrl.inputChangeHandler = () => {\r\n $rootScope.$broadcast('searchUpdate');\r\n };\r\n\r\n ctrl.goSearch = (event, fromBtn) => {\r\n if (fromBtn) {\r\n event.stopPropagation();\r\n } else {\r\n if (event.which === 13) {\r\n $(event.target).blur();\r\n } else {\r\n return;\r\n }\r\n }\r\n $timeout(goSearch, 600);\r\n };\r\n\r\n ctrl.$onInit = () => {\r\n FinderService.setCtrl(ctrl);\r\n };\r\n\r\n function goSearch() {\r\n if (!ctrl.searchStr || ctrl.searchStr === '') return;\r\n const url = `${RoutesService.get().Search.route}/${encodeURIComponent(ctrl.searchStr).replace(new RegExp('%20', 'g'), '+').replace(new RegExp('%2F', 'g'), '%252F')}`;\r\n $location.path(url);\r\n $rootScope.$broadcast('searchClose');\r\n }\r\n }\r\n };\r\n });\r\n","var _module_exports = \" \";;\nvar path = 'import/js/components/addtocart/component.addtocart.quantity.custom.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \" \";;\nvar path = 'import/js/components/addtocart/component.addtocart.quantity.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \" \";;\nvar path = 'import/js/components/addtocart/component.addtocart.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","/*eslint-disable*/\nimport angular from 'angular';\n\nexport default angular.module('app.routes', []).constant(\"Routes\", [{\"Name\":\"SortedCategoryPage\",\"Controller\":\"CategoryOverride\",\"Action\":\"ShowSortedPage\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}-{page:int}/{sortType:alpha}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}-{page:int}/{sortType:alpha}\"}},{\"Name\":\"SortedCategory\",\"Controller\":\"CategoryOverride\",\"Action\":\"ShowSorted\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}/{sortType:alpha}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}/{sortType:alpha}\"}},{\"Name\":\"CategoryPage\",\"Controller\":\"CategoryOverride\",\"Action\":\"ShowPage\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}-{page:int}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}-{page:int}\"}},{\"Name\":\"Category\",\"Controller\":\"CategoryOverride\",\"Action\":\"Show\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}\"}},{\"Name\":\"CategoryWithElasticSearch\",\"Controller\":\"CategoryOverride\",\"Action\":\"ShowWithElasticSearch\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}/es/{query}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}/es/{query}\"}},{\"Name\":\"SortedCategoryPageWithElasticSearch\",\"Controller\":\"CategoryOverride\",\"Action\":\"ShowSortedPageWithElasticSearch\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}/es/{query}-{page:int}/{sortType:alpha}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}/es/{query}-{page:int}/{sortType:alpha}\"}},{\"Name\":\"CartQuotationPaymentList\",\"fr\":{\"URL\":\"devis/choix-paiement/{idFolder:int}\"},\"en\":{\"URL\":\"quote/payment-choice/{idFolder:int}\"},\"Controller\":\"PaymentOverride\",\"Action\":\"PaymentListQuotation\"},{\"Name\":\"CartOrderPaymentList\",\"fr\":{\"URL\":\"commande/choix-paiement/{idFolder:int}\"},\"en\":{\"URL\":\"order/payment-choice/{idFolder:int}\"},\"Controller\":\"PaymentOverride\",\"Action\":\"PaymentListQuotation\"},{\"Name\":\"Search\",\"Controller\":\"SearchOverride\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche\"},\"en\":{\"URL\":\"research\"}},{\"Name\":\"SearchAngular\",\"Controller\":\"SearchOverride\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}\"},\"en\":{\"URL\":\"research/{q}\"}},{\"Name\":\"SearchPageAngular\",\"Controller\":\"SearchOverride\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}/{p:int}\"},\"en\":{\"URL\":\"research/{q}/{p:int}\"}},{\"Name\":\"SortedSearchPageAngular\",\"Controller\":\"SearchOverride\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}/{p:int}/{sort:alpha}\"},\"en\":{\"URL\":\"research/{q}/{p:int}/{sort:alpha}\"}},{\"Name\":\"SortedSearchAngular\",\"Controller\":\"SearchOverride\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}/{sort:alpha}\"},\"en\":{\"URL\":\"research/{q}/{sort:alpha}\"}},{\"Name\":\"CategoryMessage\",\"Controller\":\"CategoryMessage\",\"Action\":\"Show\",\"fr\":{\"URL\":\"{categoryName}-cmsg-{categoryId:int}\"},\"en\":{\"URL\":\"{categoryName}-cmsg-{categoryId:int}\"}},{\"Name\":\"CategoryMessagePage\",\"Controller\":\"CategoryMessage\",\"Action\":\"ShowPage\",\"fr\":{\"URL\":\"{categoryName}-cmsg-{categoryId:int}-{page:int}\"},\"en\":{\"URL\":\"{categoryName}-cmsg-{categoryId:int}-{page:int}\"}},{\"Name\":\"Product\",\"Controller\":\"Product\",\"Action\":\"Show\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}\"}},{\"Name\":\"Product1Attribute\",\"Controller\":\"Product\",\"Action\":\"Show1Attribute\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}\"}},{\"Name\":\"Product2Attributes\",\"Controller\":\"Product\",\"Action\":\"Show2Attributes\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}\"}},{\"Name\":\"Product3Attributes\",\"Controller\":\"Product\",\"Action\":\"Show3Attributes\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}\"}},{\"Name\":\"ProductWithElasticSearch\",\"Controller\":\"Product\",\"Action\":\"ShowWithElasticSearch\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/es/{query}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/es/{query}\"}},{\"Name\":\"Product1AttributeWithElasticSearch\",\"Controller\":\"Product\",\"Action\":\"Show1AttributeWithElasticSearch\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/es/{query}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/es/{query}\"}},{\"Name\":\"Product2AttributesWithElasticSearch\",\"Controller\":\"Product\",\"Action\":\"Show2AttributesWithElasticSearch\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/es/{query}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/es/{query}\"}},{\"Name\":\"Product3AttributesWithElasticSearch\",\"Controller\":\"Product\",\"Action\":\"Show3AttributesWithElasticSearch\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}/es/{query}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}/es/{query}\"}},{\"Name\":\"Cart\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier\"},\"en\":{\"URL\":\"cart\"}},{\"Name\":\"CartOutdated\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier-expire\"},\"en\":{\"URL\":\"outdated-cart\"}},{\"Name\":\"CartIdentification\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier/identification\"},\"en\":{\"URL\":\"cart/authentification\"}},{\"Name\":\"CartShipping\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier/livraison\"},\"en\":{\"URL\":\"cart/delivery\"}},{\"Name\":\"CartPayment\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier/paiement\"},\"en\":{\"URL\":\"cart/payment\"}},{\"Name\":\"CartValidation\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier/validation\"},\"en\":{\"URL\":\"cart/validation\"}},{\"Name\":\"CartOnePageCheckout\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"commander\"},\"en\":{\"URL\":\"checkout\"}},{\"Name\":\"CartOnePageCheckoutPayment\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"retour-paiement\"},\"en\":{\"URL\":\"back-to-payment\"}},{\"Name\":\"CartPaymentAction\",\"Controller\":\"Payment\",\"Action\":\"Payment\",\"fr\":{\"URL\":\"paiement\"},\"en\":{\"URL\":\"payment\"}},{\"Name\":\"CartRecognition\",\"Controller\":\"Cart\",\"Action\":\"Recognition\",\"fr\":{\"URL\":\"reconnaissance-panier/{idFolder:int}/{token}\"},\"en\":{\"URL\":\"cart-recognition/{idFolder:int}/{token}\"}},{\"Name\":\"CartPaymentRedirect\",\"Controller\":\"Cart\",\"Action\":\"Redirect\",\"fr\":{\"URL\":\"redirection-panier-paiement\"},\"en\":{\"URL\":\"cart-payment-redirect\"}},{\"Name\":\"QuotationPaymentError\",\"Controller\":\"Quotation\",\"Action\":\"PaymentError\",\"fr\":{\"URL\":\"paiement/erreur/{idFolder:int}\"},\"en\":{\"URL\":\"payment/error/{idFolder:int}\"}},{\"Name\":\"CartPaymentError\",\"Controller\":\"Cart\",\"Action\":\"PaymentError\",\"fr\":{\"URL\":\"paiement/erreur\"},\"en\":{\"URL\":\"payment/error\"}},{\"Name\":\"QuickOrder\",\"Controller\":\"Cart\",\"Action\":\"QuickOrder\",\"fr\":{\"URL\":\"commande-par-reference\"},\"en\":{\"URL\":\"order-by-reference\"}},{\"Name\":\"AccountValidationPage\",\"Controller\":\"Authentication\",\"Action\":\"AccountValidationPage\",\"fr\":{\"URL\":\"validation-compte/validation/{EncryptedIdCard}\"},\"en\":{\"URL\":\"account-validation/validate/{EncryptedIdCard}\"}},{\"Name\":\"ResendAccountValidationEmail\",\"Controller\":\"AccountCreate\",\"Action\":\"ResendAccountValidationEmail\",\"fr\":{\"URL\":\"validation-compte/renvoi/{EncryptedIdCard}\"},\"en\":{\"URL\":\"account-validation/resend/{EncryptedIdCard}\"}},{\"Name\":\"AccountValidateEmailToken\",\"Controller\":\"Authentication\",\"Action\":\"AccountValidateEmailToken\",\"fr\":{\"URL\":\"identification/{validEmailToken}\"},\"en\":{\"URL\":\"authentication/{validEmailToken}\"}},{\"Name\":\"Login\",\"Controller\":\"Authentication\",\"Action\":\"Login\",\"fr\":{\"URL\":\"identification\"},\"en\":{\"URL\":\"authentication\"}},{\"Name\":\"LoginFromFacebook\",\"Controller\":\"Authentication\",\"Action\":\"LoginFromFacebook\",\"fr\":{\"URL\":\"identification-facebook\"},\"en\":{\"URL\":\"authentication-facebook\"}},{\"Name\":\"AccountHome\",\"Controller\":\"AccountHome\",\"Action\":\"AccountHome\",\"fr\":{\"URL\":\"mon-compte\"},\"en\":{\"URL\":\"my-account\"}},{\"Name\":\"AccountUpdate\",\"Controller\":\"AccountUpdate\",\"Action\":\"AccountUpdate\",\"fr\":{\"URL\":\"profil\"},\"en\":{\"URL\":\"profile\"}},{\"Name\":\"AccountPasswordReset\",\"Controller\":\"AccountPasswordReset\",\"Action\":\"AccountPasswordReset\",\"fr\":{\"URL\":\"mot-de-passe\"},\"en\":{\"URL\":\"password\"}},{\"Name\":\"AccountOrderTracking\",\"Controller\":\"AccountOrderTracking\",\"Action\":\"AccountOrderTracking\",\"fr\":{\"URL\":\"suivi-de-commande\"},\"en\":{\"URL\":\"order-tracking\"}},{\"Name\":\"AccountInvoices\",\"Controller\":\"AccountInvoices\",\"Action\":\"AccountInvoices\",\"fr\":{\"URL\":\"factures\"},\"en\":{\"URL\":\"invoices\"}},{\"Name\":\"AccountClaim\",\"Controller\":\"AccountClaim\",\"Action\":\"AccountClaim\",\"fr\":{\"URL\":\"reclamation\"},\"en\":{\"URL\":\"claim\"}},{\"Name\":\"AccountReturns\",\"Controller\":\"AccountReturns\",\"Action\":\"AccountReturns\",\"fr\":{\"URL\":\"retours\"},\"en\":{\"URL\":\"returns\"}},{\"Name\":\"AccountSavedCarts\",\"Controller\":\"AccountSavedCarts\",\"Action\":\"AccountSavedCarts\",\"fr\":{\"URL\":\"paniers-sauvegardes\"},\"en\":{\"URL\":\"saved-cart\"}},{\"Name\":\"AccountNumericProducts\",\"Controller\":\"AccountNumericProducts\",\"Action\":\"Index\",\"fr\":{\"URL\":\"produits-numeriques\"},\"en\":{\"URL\":\"digital-products\"}},{\"Name\":\"AccountVouchers\",\"Controller\":\"AccountVouchers\",\"Action\":\"Index\",\"fr\":{\"URL\":\"bons-d-achat\"},\"en\":{\"URL\":\"vouchers\"}},{\"Name\":\"AccountLoyaltyPoints\",\"Controller\":\"AccountLoyaltyPoints\",\"Action\":\"AccountLoyaltyPoints\",\"fr\":{\"URL\":\"points-fidelite\"},\"en\":{\"URL\":\"loyalty-point\"}},{\"Name\":\"AccountWishList\",\"Controller\":\"AccountWishList\",\"Action\":\"WishList\",\"fr\":{\"URL\":\"liste-de-souhaits\"},\"en\":{\"URL\":\"wish-list\"}},{\"Name\":\"AccountMultiWishList\",\"Controller\":\"AccountWishList\",\"Action\":\"WishList\",\"fr\":{\"URL\":\"mes-listes-de-souhaits\"},\"en\":{\"URL\":\"my-wish-list\"}},{\"Name\":\"AccountQuotations\",\"Controller\":\"AccountQuotation\",\"Action\":\"Account\",\"fr\":{\"URL\":\"devis\"},\"en\":{\"URL\":\"quote\"}},{\"Name\":\"AccountAdvancedQuotations\",\"Controller\":\"AccountQuotation\",\"Action\":\"Account\",\"fr\":{\"URL\":\"mes-devis\"},\"en\":{\"URL\":\"my-quote\"}},{\"Name\":\"AccountCredits\",\"Controller\":\"AccountCredits\",\"Action\":\"Show\",\"fr\":{\"URL\":\"avoirs\"},\"en\":{\"URL\":\"credit-note\"}},{\"Name\":\"AccountGiftCards\",\"Controller\":\"AccountGiftCards\",\"Action\":\"AccountGiftCards\",\"fr\":{\"URL\":\"cheques-cadeaux\"},\"en\":{\"URL\":\"gift-voucher\"}},{\"Name\":\"AccountSponsorShip\",\"Controller\":\"AccountSponsorShip\",\"Action\":\"AccountSponsorShip\",\"fr\":{\"URL\":\"parrainage\"},\"en\":{\"URL\":\"sponsorship\"}},{\"Name\":\"SearchProducts\",\"Controller\":\"Search\",\"Action\":\"SearchProducts\",\"fr\":{\"URL\":\"produits\"},\"en\":{\"URL\":\"products\"}},{\"Name\":\"SearchProductsPageAngular\",\"Controller\":\"Search\",\"Action\":\"SearchProducts\",\"fr\":{\"URL\":\"produits/{p:int}\"},\"en\":{\"URL\":\"products/{p:int}\"}},{\"Name\":\"SortedSearchProductsAngular\",\"Controller\":\"Search\",\"Action\":\"SearchProducts\",\"fr\":{\"URL\":\"produits/{sort:alpha}\"},\"en\":{\"URL\":\"products/{sort:alpha}\"}},{\"Name\":\"SortedSearchProductsPageAngular\",\"Controller\":\"Search\",\"Action\":\"SearchProducts\",\"fr\":{\"URL\":\"produits/{p:int}/{sort:alpha}\"},\"en\":{\"URL\":\"products/{p:int}/{sort:alpha}\"}},{\"Name\":\"Stores\",\"Controller\":\"Stores\",\"Action\":\"Stores\",\"fr\":{\"URL\":\"magasins\"},\"en\":{\"URL\":\"stores\"}},{\"Name\":\"StoresWebsite\",\"Controller\":\"Stores\",\"Action\":\"StoresWebsite\",\"fr\":{\"URL\":\"liste-magasins\"},\"en\":{\"URL\":\"stores-list\"}},{\"Name\":\"Contact\",\"Controller\":\"Form\",\"Action\":\"Contact\",\"fr\":{\"URL\":\"contact\"},\"en\":{\"URL\":\"contact\"}},{\"Name\":\"CatalogRequest\",\"Controller\":\"Form\",\"Action\":\"CatalogRequest\",\"fr\":{\"URL\":\"catalogue\"},\"en\":{\"URL\":\"catalogue\"}},{\"Name\":\"Jobs\",\"Controller\":\"Form\",\"Action\":\"Jobs\",\"fr\":{\"URL\":\"jobs\"},\"en\":{\"URL\":\"jobs\"}},{\"Name\":\"MessageCatalogRequest\",\"Controller\":\"Message\",\"Action\":\"CatalogRequest\",\"fr\":{\"URL\":\"Message/Catalogue\"},\"en\":{\"URL\":\"Message/Catalog\"}},{\"Name\":\"MessageContact\",\"Controller\":\"Message\",\"Action\":\"Contact\",\"fr\":{\"URL\":\"Message/Contact\"},\"en\":{\"URL\":\"Message/Contact\"}},{\"Name\":\"MessageAccountClaim\",\"Controller\":\"Message\",\"Action\":\"Claim\",\"fr\":{\"URL\":\"Message/Claim\"},\"en\":{\"URL\":\"Message/Claim\"}},{\"Name\":\"MessageContactAdd\",\"Controller\":\"Message\",\"Action\":\"AddContact\",\"fr\":{\"URL\":\"Message/Add/Contact\"},\"en\":{\"URL\":\"Message/Add/Contact\"}},{\"Name\":\"MessageCatalogRequestAdd\",\"Controller\":\"Message\",\"Action\":\"AddCatalogRequest\",\"fr\":{\"URL\":\"Message/Add/CatalogRequest\"},\"en\":{\"URL\":\"Message/Add/CatalogRequest\"}},{\"Name\":\"MessageAccountClaimAdd\",\"Controller\":\"Message\",\"Action\":\"AddClaim\",\"fr\":{\"URL\":\"Message/Add/Reclamation\"},\"en\":{\"URL\":\"Message/Add/Claim\"}},{\"Name\":\"PaymentListAdvance\",\"Controller\":\"Payment\",\"Action\":\"PaymentListAdvance\",\"fr\":{\"URL\":\"acompte/choix-paiement/{idFolder:int}/{idAdvance:int}\"},\"en\":{\"URL\":\"advance/payment-choice/{idFolder:int}/{idAdvance:int}\"}},{\"Name\":\"SellerPage\",\"Controller\":\"Seller\",\"Action\":\"Seller\",\"fr\":{\"URL\":\"{sellerName}-v-{sellerId:int}/{keyMessageType?}\"},\"en\":{\"URL\":\"{sellerName}-v-{sellerId:int}/{keyMessageType?}\"}},{\"Name\":\"AdvancedReviewsForm\",\"Controller\":\"AccountAdvancedReviews\",\"Action\":\"Form\",\"fr\":{\"URL\":\"avis-articles/{token}\"},\"en\":{\"URL\":\"product-reviews/{token}\"}},{\"Name\":\"AccountAdvancedReviews\",\"Controller\":\"AccountAdvancedReviews\",\"Action\":\"AccountAdvancedReviews\",\"fr\":{\"URL\":\"avis-articles\"},\"en\":{\"URL\":\"product-reviews\"}},{\"Name\":\"AccountDedicatedProducts\",\"Controller\":\"AccountDedicatedProducts\",\"Action\":\"Show\",\"fr\":{\"URL\":\"produits-personnalises\"},\"en\":{\"URL\":\"dedicated-products\"}},{\"Name\":\"UpdateLineQuantityCart\",\"Controller\":\"Cart\",\"Action\":\"UpdateLineQuantityCart\",\"fr\":{\"URL\":\"UpdateLineQuantityCart/{idLine:int}/{RemovedQuantity:int}\"},\"en\":{\"URL\":\"UpdateLineQuantityCart/{idLine:int}/{RemovedQuantity:int}\"}},{\"Name\":\"Click2Call\",\"Controller\":\"OVH\",\"Action\":\"Click2Call\",\"fr\":{\"URL\":\"clickToCall\"},\"en\":{\"URL\":\"clickToCall\"}},{\"Name\":\"AlmaCheckEligibility\",\"Controller\":\"Alma\",\"Action\":\"AlmaCheckEligibility\",\"fr\":{\"URL\":\"AlmaCheckEligibility\"},\"en\":{\"URL\":\"AlmaCheckEligibility\"}},{\"Name\":\"AlmaGetPaymentInfos\",\"Controller\":\"Alma\",\"Action\":\"AlmaGetPaymentInfos\",\"fr\":{\"URL\":\"AlmaGetPaymentInfos\"},\"en\":{\"URL\":\"AlmaGetPaymentInfos\"}},{\"Name\":\"AlmaGetApiInfos\",\"Controller\":\"Alma\",\"Action\":\"AlmaGetApiInfos\",\"fr\":{\"URL\":\"AlmaGetApiInfos\"},\"en\":{\"URL\":\"AlmaGetApiInfos\"}},{\"Name\":\"AlmaPrePaymentRequest\",\"Controller\":\"Alma\",\"Action\":\"AlmaPrePaymentRequest\",\"fr\":{\"URL\":\"AlmaPrePaymentRequest\"},\"en\":{\"URL\":\"AlmaPrePaymentRequest\"}},{\"Name\":\"AlmaConfirm\",\"Controller\":\"Alma\",\"Action\":\"AlmaConfirm\",\"fr\":{\"URL\":\"AlmaConfirm\"},\"en\":{\"URL\":\"AlmaConfirm\"}},{\"Name\":\"AlmaAsyncResponse\",\"Controller\":\"Alma\",\"Action\":\"AlmaAsyncResponse\",\"fr\":{\"URL\":\"AlmaAsyncResponse\"},\"en\":{\"URL\":\"AlmaAsyncResponse\"}},{\"Name\":\"NetWaveGetProducts\",\"Controller\":\"Netwave\",\"Action\":\"GetProducts\",\"fr\":{\"URL\":\"GetProducts\"},\"en\":{\"URL\":\"GetProducts\"}},{\"Name\":\"NetWaveGetCategoryProduct\",\"Controller\":\"Netwave\",\"Action\":\"GetCategoryProduct\",\"fr\":{\"URL\":\"GetCategoryProduct/{productId:int}\"},\"en\":{\"URL\":\"GetCategoryProduct/{productId:int}\"}},{\"Name\":\"GetNetWaveInfo\",\"Controller\":\"Netwave\",\"Action\":\"GetNetWaveInfo\",\"fr\":{\"URL\":\"GetNetWaveInfo\"},\"en\":{\"URL\":\"GetNetWaveInfo\"}}]);","export default angular\r\n .module('controller.main', [])\r\n\r\n /* @ngInject */\r\n .controller('mainController', function ($scope, $rootScope, $timeout, $templateCache, DeviceService, HttpService, RoutingService, ModalService) {\r\n const ctrl = this;\r\n\r\n setTimeout(() => {\r\n loadModalAddToCart();\r\n });\r\n\r\n $scope.$on('updateVisitorContext', (event, value) => {\r\n $scope.visitorContext = value;\r\n });\r\n\r\n $scope.$on('pageCheckout', (event, checkout) => {\r\n $timeout(() => {\r\n ctrl.checkout = checkout;\r\n });\r\n });\r\n\r\n $scope.showPageLoader = false;\r\n $scope.$on('showPageLoader', (event, value) => {\r\n $scope.showPageLoader = value;\r\n });\r\n\r\n $rootScope.forceReload = () => {\r\n ModalService.close();\r\n $rootScope.$broadcast('searchClose');\r\n RoutingService.forceReload();\r\n };\r\n\r\n setDevice($scope);\r\n\r\n function setDevice(scope) {\r\n $scope.device = {};\r\n if (DeviceService.get().length > 3) {\r\n $timeout(() => {\r\n setDevice(scope);\r\n }, 10);\r\n return;\r\n }\r\n\r\n $scope.device.size = DeviceService.getSize($scope, size => {\r\n $scope.device.size = size;\r\n $scope.$emit('lazy:refresh');\r\n });\r\n\r\n $scope.device.xxs = DeviceService.onChange($scope, 'xxs', match => {\r\n $scope.device.xxs = match;\r\n });\r\n $scope.device.xs = DeviceService.onChange($scope, 'xs', match => {\r\n $scope.device.xs = match;\r\n });\r\n $scope.device.sm = DeviceService.onChange($scope, 'sm', match => {\r\n $scope.device.sm = match;\r\n });\r\n $scope.device.md = DeviceService.onChange($scope, 'md', match => {\r\n $scope.device.md = match;\r\n });\r\n $scope.device.lg = DeviceService.onChange($scope, 'lg', match => {\r\n $scope.device.lg = match;\r\n });\r\n\r\n $scope.device.desktop = DeviceService.onChange($scope, 'md, lg', match => {\r\n $scope.device.desktop = match;\r\n });\r\n $scope.device.mobile = DeviceService.onChange($scope, 'xxs, xs', match => {\r\n $scope.device.mobile = match;\r\n });\r\n\r\n $scope.device.isTouch = DeviceService.isTouch();\r\n\r\n $scope.device.ios = DeviceService.isIOS();\r\n\r\n $scope.device.isIe = DeviceService.isIE().isIE;\r\n $scope.device.ieVersion = DeviceService.isIE().isIE ? `ie${DeviceService.isIE().version}` : null;\r\n\r\n DeviceService.isWebp().then(result => {\r\n $scope.device.webp = result;\r\n });\r\n }\r\n\r\n async function loadModalAddToCart() {\r\n try {\r\n const data = await HttpService.get({\r\n url: '/Template/Modal/ModalAddToCart',\r\n cache: true\r\n });\r\n $templateCache.put('/Template/Modal/ModalAddToCart', data);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n });\r\n","export default angular\r\n .module('directive.bxslider', [])\r\n\r\n /* @ngInject */\r\n .directive('bxslider', function (WindowEventsService) {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n device: '<'\r\n },\r\n link: function (scope, element, attrs) {\r\n if (scope.device && scope.device.mobile) return;\r\n\r\n const navHeight = scope.$eval(attrs.bxslider) * 2;\r\n\r\n import('bxslider/dist/jquery.bxslider.js').then(function () {\r\n WindowEventsService.listen(true, 'resize', initBxSlider, 500);\r\n\r\n scope.$on('$destroy', function () {\r\n WindowEventsService.listen(false, 'resize', initBxSlider);\r\n if (scope.slider) {\r\n scope.slider.destroySlider();\r\n }\r\n });\r\n\r\n initBxSlider();\r\n });\r\n\r\n function initBxSlider() {\r\n if (scope.slider) {\r\n scope.slider.destroySlider();\r\n element.hide().parent().css({\r\n height: '',\r\n width: ''\r\n });\r\n element.find('.bx-prev, .bx-next').remove();\r\n }\r\n if (scope.device && scope.device.mobile) return;\r\n\r\n setTimeout(function () {\r\n let nb = 4;\r\n nb = scope.device.md ? 4 : nb;\r\n nb = scope.device.sm ? 3 : nb;\r\n\r\n const margin = 15;\r\n const sc = element.closest('.d-table-cell');\r\n\r\n const width = Math.floor(sc.innerWidth() - 25);\r\n const height = Math.floor(sc.parent().height() - 50);\r\n //nb = Math.floor(height / width);\r\n\r\n element.show().parent().css({\r\n height,\r\n width\r\n });\r\n\r\n scope.slider = element.bxSlider({\r\n mode: 'vertical',\r\n minSlides: nb,\r\n responsive: false,\r\n slideMargin: margin,\r\n slideWidth: width,\r\n pager: false,\r\n prevSelector: '.bxslider-prev',\r\n nextSelector: '.bxslider-next',\r\n prevText: '',\r\n nextText: '',\r\n moveSlides: 1,\r\n infiniteLoop: false,\r\n preventDefaultSwipeX: false,\r\n preventDefaultSwipeY: true,\r\n controls: true,\r\n onSliderLoad: function () {\r\n element\r\n .show()\r\n .parent()\r\n .css({\r\n height: height - navHeight\r\n })\r\n .closest('.bxslider-container')\r\n .addClass('in');\r\n }\r\n });\r\n }, 100);\r\n }\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.countdown', [])\r\n\r\n /* @ngInject */\r\n .directive('countdown', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n start: '@start',\r\n end: '@end'\r\n },\r\n /* @ngInject */\r\n controller: function ($interval) {\r\n const ctrl = this;\r\n ctrl.$onInit = async () => {\r\n $interval(counter, 1000);\r\n };\r\n\r\n function counter() {\r\n const today = new Date();\r\n const epochMicrotimeDiff = Math.abs(new Date(Date.UTC(0, 0, 1)).setFullYear(1));\r\n const startDate = parseInt(ctrl.start) / 10000 - epochMicrotimeDiff;\r\n const endDate = parseInt(ctrl.end) / 10000 - epochMicrotimeDiff;\r\n const startLag = new Date(startDate).getTimezoneOffset() * 60 * 1000;\r\n const endLag = new Date(endDate).getTimezoneOffset() * 60 * 1000;\r\n const start = new Date(startDate + startLag);\r\n const end = new Date(endDate + endLag);\r\n\r\n ctrl.status = today < end && today > start ? 'inProgress' : 'noActive';\r\n\r\n const dateDiff = end - today;\r\n const dayDate = dateDiff / (1000 * 3600 * 24);\r\n const day = Math.floor(dayDate);\r\n const hourDate = (dayDate - day) * 24;\r\n const hour = Math.floor(hourDate);\r\n const minDate = (hourDate - hour) * 60;\r\n const min = Math.floor(minDate);\r\n const secDate = (minDate - min) * 60;\r\n const sec = Math.floor(secDate);\r\n\r\n ctrl.day = day;\r\n ctrl.hour = hour;\r\n ctrl.min = min;\r\n ctrl.sec = sec;\r\n }\r\n },\r\n controllerAs: 'countdownCtrl'\r\n };\r\n });\r\n","/* From http://cesardeazevedo.github.io/ng-input/ */\r\nexport default angular\r\n .module('directives.form', [])\r\n\r\n /* @ngInject */\r\n .directive('rbInput', function () {\r\n const template = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n ''\r\n ].join('');\r\n\r\n return {\r\n restrict: 'A',\r\n /* require: 'ngModel',*/\r\n priority: 200,\r\n scope: {\r\n theme: '@',\r\n label: '@?',\r\n icon: '@',\r\n color: '@',\r\n ngRequired: '='\r\n /* ngRequired: '@valRequired',\r\n ngPattern: '@',\r\n ngMinlength: '=valMinlengthMin',\r\n ngMaxlength: '=',\r\n ngChange: '&ngChange',\r\n ngTrim: '=',\r\n ngModel: '=',\r\n trigger : '@focus'*/\r\n },\r\n link: (scope, element, attrs) => {\r\n const $wrapper = angular.element(template);\r\n element.after($wrapper);\r\n $wrapper.prepend(element);\r\n\r\n scope.input = element;\r\n\r\n // Default options\r\n attrs.theme = attrs.theme || 'hoshi';\r\n attrs.type = attrs.type || 'text';\r\n attrs.color = attrs.color || '1';\r\n const optRequired = attrs.optRequired === 'true' ? ' opt-required' : '';\r\n\r\n const inputClass = 'input-filled';\r\n\r\n element.addClass(`form-control input-field input-field-${attrs.theme}`).parent().addClass(`input-${attrs.theme}${optRequired}`);\r\n\r\n const $label = element.parent().find('label');\r\n $label.attr('for', attrs.id).addClass(`input-label-${attrs.theme}`).find('.input-label-content').addClass(`input-label-content-${attrs.theme}`);\r\n\r\n if (angular.isDefined(attrs.label)) {\r\n if (attrs.required) {\r\n scope.label = `${scope.label} *`;\r\n }\r\n $label.find('.input-label-content').html(scope.label);\r\n }\r\n\r\n if (angular.isDefined(attrs.placeholder)) {\r\n if (attrs.required) {\r\n element.attr('placeholder', `${attrs.placeholder} *`);\r\n }\r\n }\r\n\r\n if (scope.icon && scope.icon !== '') {\r\n element.addClass('with-icon');\r\n $label.prepend(``);\r\n }\r\n\r\n onInputChange();\r\n scope.input.on('focus', onInputFocus);\r\n scope.input.on('blur', onInputBlur);\r\n\r\n // To detect browser autofill\r\n scope.input.on('change', onInputChange);\r\n\r\n if (angular.isDefined(attrs.ngRequired)) {\r\n scope.$watch(\r\n () => scope.ngRequired,\r\n value => {\r\n if (angular.isDefined(attrs.label)) {\r\n scope.label = !value ? attrs.label : `${attrs.label} *`;\r\n $label.find('.input-label-content').html(scope.label);\r\n }\r\n }\r\n );\r\n }\r\n\r\n scope.$watch(\r\n () => scope.input.val(),\r\n () => {\r\n onInputChange();\r\n }\r\n );\r\n\r\n function onInputChange() {\r\n if (scope.input.val().trim() !== '') addClass();\r\n }\r\n\r\n function onInputFocus() {\r\n addClass();\r\n }\r\n\r\n function onInputBlur() {\r\n if (scope.input.val().trim() === '') removeClass();\r\n }\r\n\r\n function addClass() {\r\n $wrapper.addClass(inputClass);\r\n }\r\n\r\n function removeClass() {\r\n $wrapper.removeClass(inputClass);\r\n }\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('ngModelInit', function ($parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n link: (scope, element, attrs) => {\r\n let value = attrs.ngModelInit || attrs.value || element.text();\r\n value = String(value).toLowerCase() === 'false' ? false : value;\r\n value = String(value).toLowerCase() === 'true' ? true : value;\r\n $parse(attrs.ngModel).assign(scope, value);\r\n }\r\n };\r\n })\r\n\r\n .directive('input', noZoomDirective)\r\n .directive('textarea', noZoomDirective)\r\n .directive('select', noZoomDirective);\r\n\r\nfunction noZoomDirective() {\r\n const viewport = window.document.getElementById('viewport');\r\n const content = viewport.content;\r\n const maxScale = ',maximum-scale=';\r\n\r\n return {\r\n link: (scope, element) => {\r\n element.on('focus blur', event => {\r\n viewport.content = event.type === 'blur' ? content : content + maxScale + 1;\r\n });\r\n }\r\n };\r\n}\r\n","export default angular\r\n .module('directive.clearuibtab', [])\r\n\r\n .directive('uibTabset', function () {\r\n return {\r\n priority: 0,\r\n // eslint-disable-next-line\r\n link: (scope, element, attrs) => {\r\n if (!element.find('uib-tab').length) {\r\n const $parent = element.parent();\r\n element.remove();\r\n if (angular.isDefined(attrs.removeParentIfEmpty)) {\r\n $parent.remove();\r\n }\r\n }\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.fb-connect', [])\r\n\r\n /* @ngInject */\r\n .directive('fbConnect', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n content: '@'\r\n },\r\n /* @ngInject */\r\n controller: function ($scope, $injector, AppService) {\r\n const ctrl = this;\r\n\r\n ctrl.$onDestroy = () => {};\r\n\r\n ctrl.$onInit = async () => {\r\n const params = await AppService.getParams();\r\n if (params.Localization.UseFacebookConnect && !params.IsLogged) {\r\n const response = await import(/* webpackChunkName: \"fb-connect\" */ 'import/js/directives/fb-connect/fb-connect.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('ImportFbConnect');\r\n service.init(ctrl, $scope);\r\n }\r\n };\r\n },\r\n controllerAs: 'fbConnectCtrl'\r\n };\r\n });\r\n","/* ng-infinite-scroll - v1.3.0 - 2016-06-30 from https://github.com/sroze/ngInfiniteScroll */\r\nexport default angular\r\n .module('directive.infinitescroll', [])\r\n\r\n .value('THROTTLE_MILLISECONDS', 250)\r\n\r\n /* @ngInject */\r\n .directive('infiniteScroll', function ($injector) {\r\n return {\r\n scope: {\r\n infiniteScroll: '&',\r\n infiniteScrollDistance: '=',\r\n infiniteScrollDisabled: '=',\r\n infiniteScrollGrandParent: '='\r\n },\r\n restrict: 'A',\r\n link: async (scope, element, attrs) => {\r\n const response = await import(/* webpackChunkName: \"infinitescroll\" */ 'import/js/directives/infinitescroll/directive.infinitescroll.init.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('InfiniteScroll');\r\n service.init(scope, element, attrs);\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.owl-carousel', [])\r\n\r\n /* @ngInject */\r\n .directive('owlCarousel', function ($injector) {\r\n return {\r\n restrict: 'A',\r\n link: async (scope, element, attrs) => {\r\n const response = await import(/* webpackChunkName: \"owlcarousel\" */ 'import/js/directives/owlcarousel/owlcarousel.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('CarouselService');\r\n service.init(scope, element, attrs);\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.scrolltop', [])\r\n\r\n .directive('backToTop', function () {\r\n return {\r\n restrict: 'A',\r\n controllerAs: 'backToTopCtrl',\r\n /* @ngInject */\r\n controller: function ($scope, $window, WindowEventsService) {\r\n const ctrl = this;\r\n let lastPos;\r\n ctrl.active = false;\r\n\r\n ctrl.$onDestroy = () => {\r\n WindowEventsService.listen(false, 'resize', handler);\r\n };\r\n\r\n WindowEventsService.listen(true, 'scroll', handler, 500);\r\n\r\n function handler() {\r\n const sc = isNaN(window.pageYOffset) ? document.documentElement.scrollTop : window.pageYOffset;\r\n $scope.$apply(() => {\r\n ctrl.active = sc > $window.innerHeight && sc < lastPos ? true : false;\r\n });\r\n lastPos = sc;\r\n }\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.selectpicker', [])\r\n\r\n /* @ngInject */\r\n .directive('selectpicker', function ($injector) {\r\n return {\r\n restrict: 'A',\r\n scope: false,\r\n link: async (scope, element, attrs) => {\r\n scope.$eval(`${attrs.ngModel}=\"${element.val()}\"`);\r\n\r\n const response = await import(/* webpackChunkName: \"selectpicker\" */ 'import/js/directives/selectpicker/selectpicker.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('ImportSelectpicker');\r\n service.init(scope, element, attrs);\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.stop.propagation', [])\r\n\r\n /* @ngInject */\r\n .directive('stopPropagation', function () {\r\n return {\r\n restrict: 'A',\r\n link: (scope, element, attrs) => {\r\n element.click(event => {\r\n event.stopPropagation();\r\n if (attrs.preventDefault) {\r\n event.preventDefault();\r\n }\r\n });\r\n scope.$on('$destroy', () => {\r\n element.off('click');\r\n });\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.togglePasswordVisibility', [])\r\n\r\n .directive('togglePasswordVisibility', function () {\r\n return {\r\n restrict: 'A',\r\n /* @ngInject */\r\n controller: function ($scope, $timeout) {\r\n $scope.togglePasswordVisibility = function (inputPasswordFieldID, triggerElementID) {\r\n const inputPasswordField = angular.element((`#${inputPasswordFieldID}`));\r\n const triggerElement = angular.element((`#${triggerElementID}`));\r\n\r\n function showPassword() {\r\n triggerElement.removeClass('glyphicon-open-eye');\r\n triggerElement.addClass('glyphicon-closed-eye');\r\n inputPasswordField.attr('type', 'text');\r\n\r\n $timeout(() => {\r\n hidePassword();\r\n }, 15000);\r\n\r\n }\r\n\r\n function hidePassword() {\r\n triggerElement.removeClass('glyphicon-closed-eye');\r\n triggerElement.addClass('glyphicon-open-eye');\r\n inputPasswordField.attr('type', 'password');\r\n }\r\n\r\n if (inputPasswordField.attr('type') === 'password') {\r\n showPassword();\r\n } else {\r\n hidePassword();\r\n }\r\n };\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.visibleonscroll', [])\r\n\r\n .directive('visibleOnScroll', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n offset: '<'\r\n },\r\n controllerAs: '$ctrl',\r\n /* @ngInject */\r\n controller: function ($timeout, WindowEventsService) {\r\n const ctrl = this;\r\n\r\n ctrl.$onDestroy = () => {\r\n WindowEventsService.listen(false, 'resize', handler);\r\n };\r\n\r\n WindowEventsService.listen(true, 'scroll', handler, 500);\r\n\r\n function handler() {\r\n const sc = isNaN(window.pageYOffset) ? document.documentElement.scrollTop : window.pageYOffset;\r\n $timeout(() => {\r\n ctrl.active = sc > ctrl.offset;\r\n });\r\n }\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('filter.decimal', [])\r\n\r\n .filter('decimal', function () {\r\n return value => String(value).replace('.', ',');\r\n });\r\n","import format from 'import/js/plugins/format.js';\r\n\r\nexport default angular\r\n .module('filter.discount', [])\r\n\r\n /* @ngInject */\r\n .filter('discount', function (AppService) {\r\n let params = null;\r\n\r\n function discountFilter(value) {\r\n if (value === null) return value;\r\n\r\n if (params !== null) {\r\n return !angular.isFunction(params.then) ? getDiscountFilter(value) : undefined;\r\n }\r\n params = AppService.getParams()\r\n .then(data => {\r\n params = data;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getDiscountFilter(value) {\r\n if (!angular.isFunction(format)) return value;\r\n\r\n const loc = params.Localization;\r\n const template = loc.DiscountHTMLFormat;\r\n const render = template\r\n .replace('[%amount%]', format(loc.DiscountFormat, parseFloat(value)))\r\n .replace(',', '##DiscountTSep##')\r\n .replace('.', loc.DiscountDecimalSeparator)\r\n .replace('##DiscountTSep##', loc.DiscountThousandSeparator);\r\n return render;\r\n }\r\n\r\n discountFilter.$stateful = true;\r\n return discountFilter;\r\n });\r\n","export default angular\r\n .module('filter.format', [])\r\n\r\n /* @ngInject */\r\n .filter('format', function () {\r\n return (value, ...args) => {\r\n if (!value) return value;\r\n\r\n args.forEach((arg, i) => {\r\n const reg = new RegExp(`\\\\{${i}\\\\}`, 'g');\r\n value = value.replace(reg, arg);\r\n });\r\n\r\n return value;\r\n };\r\n });\r\n","export default angular\r\n .module('filter.phone', [])\r\n\r\n .filter('phoneNumber', function () {\r\n return num => {\r\n if (num === null) return num;\r\n return num.replace(/\\./g, ' ');\r\n };\r\n });\r\n","import format from 'import/js/plugins/format.js';\r\n\r\nexport default angular\r\n .module('filter.price', [])\r\n\r\n /* @ngInject */\r\n .filter('price', function ($rootScope, AppService) {\r\n let params = null;\r\n\r\n function priceFilter(prices, str, ttc) {\r\n if (prices === null || angular.isUndefined(prices) || (!angular.isObject(prices) && isNaN(prices))) return prices;\r\n ttc = ttc === 'ht' ? false : true;\r\n\r\n if (params !== null) {\r\n return !angular.isFunction(params.then) ? getPriceFilter(prices, str, ttc) : undefined;\r\n }\r\n params = AppService.getParams()\r\n .then(data => {\r\n params = data;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n /**\r\n * Return calculated conditionning total price for a product\r\n * @param {Object} item product with at least prices and quantity fields\r\n */\r\n function getConditioningPrice(item) {\r\n let quantity = item.quantity;\r\n\r\n const prices = item.prices;\r\n prices.sort((a, b) => b.qty - a.qty);\r\n\r\n return prices.reduce((result, price) => {\r\n if (quantity === 0) {\r\n return result;\r\n }\r\n\r\n const remainder = quantity % price.qty;\r\n const priceValue = params.Visitor.CardType.ShowTTCPrice ? price.TTCDiscountedPrice : price.HTDiscountedPrice;\r\n\r\n result += (quantity - remainder) * priceValue;\r\n quantity = remainder;\r\n\r\n return result;\r\n }, 0);\r\n }\r\n\r\n function getPriceFilter(prices, str, ttc) {\r\n if (!angular.isFunction(format)) return prices;\r\n\r\n const loc = params.Localization;\r\n let value;\r\n let template = params.Visitor.CardType.ShowTTCPrice ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n\r\n switch (str) {\r\n case 'value':\r\n case 'round-value':\r\n value = prices;\r\n template = ttc ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n break;\r\n case 'amount-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCAmount : prices.HTAmount;\r\n break;\r\n case 'final-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCDiscountedPrice : prices.HTDiscountedPrice;\r\n break;\r\n case 'total-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCTotalPrice : prices.HTTotalPrice;\r\n break;\r\n case 'eco':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.EcoContribution.TTCAmount : prices.EcoContribution.HTAmount;\r\n break;\r\n case 'conditioning-price':\r\n value = getConditioningPrice(prices);\r\n break;\r\n default:\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCPrice : prices.HTPrice;\r\n }\r\n if (angular.isUndefined(value)) return;\r\n\r\n // Format de base : #.##0,00\r\n // Formats spéciaux :\r\n // - # ##0,00\r\n // - # ##0.00\r\n // - #,##0.00\r\n // On récupère le format défini dans la conf\r\n let priceFormat = loc.PriceFormat;\r\n // On récupère les différents séparateurs\r\n const separators = priceFormat.match(/[^\\d#]/g);\r\n if (separators.length > 1) {\r\n // S'il y a deux séparateurs (cas normal : décimales et milliers) on les remplace avec les séparateurs définis dans la conf\r\n priceFormat = priceFormat.replace(separators[0], loc.PriceThousandSeparator)\r\n .replace(separators[1], loc.PriceDecimalSeparator);\r\n } else {\r\n // S'il y a qu'un seul séparateur (cas étrange : décimales ) on le remplace avec le séparateur défini dans la conf\r\n priceFormat = priceFormat.replace(separators[0], loc.PriceDecimalSeparator);\r\n }\r\n\r\n const strMontant = format(priceFormat, parseFloat(Math.round(parseFloat(value) * 100) / 100));\r\n const separatorIndex = strMontant.indexOf(loc.PriceDecimalSeparator);\r\n\r\n if (str === 'round-value' && Math.floor(value) === value) {\r\n template = template.replace('[%decimal-separator%]', '');\r\n template = template.replace('[%amount-dec%]', '');\r\n }\r\n\r\n const render = template\r\n .replace('[%amount%]', strMontant)\r\n .replace('[%amount-int%]', separatorIndex !== -1 ? strMontant.substring(0, separatorIndex) : strMontant)\r\n .replace('[%amount-dec%]', separatorIndex !== -1 ? strMontant.substring(separatorIndex + 1) : '')\r\n .replace('[%decimal-separator%]', loc.PriceDecimalSeparator)\r\n .replace('[%currency%]', params.Currency.Symbol)\r\n .replace('[%currencyCode%]', params.Currency.ISOCode);\r\n\r\n return render;\r\n }\r\n\r\n $rootScope.$on('logUpdate', () => {\r\n params = null;\r\n });\r\n\r\n priceFilter.$stateful = true;\r\n return priceFilter;\r\n });\r\n","export default angular\r\n .module('filter.truncate.date', [])\r\n\r\n /* @ngInject */\r\n .filter('truncateDate', function () {\r\n return value => {\r\n if (angular.isString(value) && value.indexOf('h00') === value.length - 3) {\r\n return value.slice(0, -2);\r\n }\r\n return value;\r\n };\r\n });\r\n","import { deburr, kebabCase } from 'lodash-es';\r\n\r\nexport default angular\r\n .module('module.cdn', [])\r\n\r\n /* @ngInject */\r\n .factory('CdnService', function (AppService) {\r\n return {\r\n get: async (id, size, designation, extension, quality, absolute, crop, transparent) => {\r\n if (angular.isUndefined(size)) {\r\n size = '1200x1200';\r\n }\r\n if (angular.isUndefined(designation)) {\r\n designation = 'Image';\r\n }\r\n if (angular.isUndefined(extension)) {\r\n extension = 'jpg';\r\n }\r\n if (angular.isUndefined(quality)) {\r\n quality = 80;\r\n }\r\n if (angular.isUndefined(absolute)) {\r\n absolute = false;\r\n }\r\n\r\n const params = await AppService.getParams();\r\n const split1 = params.Localization.UrlImages.substr(0, params.Localization.UrlImages.indexOf('.'));\r\n const split2 = params.Localization.UrlImages.substr(params.Localization.UrlImages.indexOf('.') + 1);\r\n let url = '';\r\n if (params.Site.PlatformEnvironment.toLowerCase() === 'saas04') {\r\n url = split1 === '' ? split2 : `${split1 + (id % 5)}.${split2}`;\r\n } else {\r\n url = split1 === '' ? split2 : `${split1}.${split2}`;\r\n }\r\n\r\n if (absolute && url.substr(0, 6) === '/Image') {\r\n url = params.Localization.URLSite.substr(0, params.Localization.URLSite.length - 1) + url;\r\n }\r\n\r\n if (quality <= 0) {\r\n quality = 1;\r\n }\r\n if (quality > 100) {\r\n quality = 100;\r\n }\r\n\r\n if (designation === '') {\r\n designation = `${params.Localization.TradeName} ${id}`;\r\n }\r\n\r\n const queryParams = [];\r\n if (quality !== 80) {\r\n queryParams.push(`quality=${quality}`);\r\n }\r\n\r\n if (crop) {\r\n queryParams.push('crop');\r\n }\r\n\r\n if (transparent) {\r\n queryParams.push('transparent');\r\n }\r\n\r\n url = `${url}/${id}/${size}/${kebabCase(deburr(designation))}.${extension}`;\r\n\r\n if (queryParams.length) {\r\n url += `?${queryParams.join('&')}`;\r\n }\r\n\r\n return url;\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('cdn', function (CdnService) {\r\n return {\r\n restrict: 'A',\r\n priority: 100,\r\n scope: {\r\n cdnId: '@?',\r\n cdnSize: '@?',\r\n cdnDesignation: '@?',\r\n cdnExtension: '@?',\r\n cdnQuality: '@?',\r\n cdnAbsolute: '@?',\r\n cdnCrop: '@?',\r\n cdnTransparent: '@?',\r\n cdnChangeable: '@?'\r\n },\r\n link: (scope, element, attrs) => {\r\n if (scope.cdnId === '0' && attrs.distrimageSrc && attrs.distrimageSrc !== '') return;\r\n\r\n if (angular.isDefined(attrs.cdnChangeable)) {\r\n const observerCdnId = attrs.$observe('cdnId', () => {\r\n processImage();\r\n });\r\n scope.$on('$destroy', observerCdnId);\r\n } else {\r\n processImage();\r\n }\r\n\r\n async function processImage() {\r\n const res = await CdnService.get(\r\n scope.cdnId,\r\n scope.cdnSize,\r\n scope.cdnDesignation,\r\n scope.cdnExtension,\r\n scope.cdnQuality,\r\n scope.cdnAbsolute,\r\n scope.cdnCrop,\r\n scope.cdnTransparent\r\n );\r\n setSrc(element, attrs, res);\r\n }\r\n\r\n function setSrc(_element, _attrs, res) {\r\n if (_element[0].tagName.toLowerCase() === 'img') {\r\n if (angular.isDefined(_attrs.lazy) && !_element.hasClass('loaded')) {\r\n _attrs.$set('lazy', res);\r\n } else if (angular.isDefined(_element.data('src')) && !_element.hasClass('loaded') && !_element.hasClass('owl-lazy')) {\r\n _element.attr('data-src', res);\r\n } else {\r\n _element.attr('src', res);\r\n\r\n if (_element.hasClass('owl-lazy')) {\r\n _element.attr('style', 'opacity: 1');\r\n }\r\n }\r\n } else {\r\n if (angular.isDefined(_element.data('srcset')) && !_element.parent().children('img').hasClass('loaded') && !_element.parent().children('img').hasClass('owl-lazy')) {\r\n _element.attr('data-srcset', res);\r\n } else {\r\n _element.attr('srcset', res);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n });\r\n","/*\r\n * angular-lazy-load\r\n * base https://github.com/Pentiado/angular-lazy-img\r\n */\r\n\r\nexport default angular\r\n .module('module.lazy', [])\r\n\r\n /* @ngInject */\r\n .factory('lazyObserver', function (lazyHelpers) {\r\n const service = {\r\n add,\r\n remove\r\n };\r\n let env, intersectionListener;\r\n init();\r\n return service;\r\n\r\n ////////////\r\n function init() {\r\n env = lazyHelpers.env;\r\n if (env.intersectionObserverSupport !== true) return angular.noop;\r\n\r\n intersectionListener = new IntersectionObserver(\r\n (entries, observer) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting === true || entry.intersectionRatio > 0) {\r\n const element = entry.target;\r\n observer.unobserve(element);\r\n loadElement(element);\r\n }\r\n });\r\n },\r\n {\r\n rootMargin: '200px 0%'\r\n }\r\n );\r\n }\r\n\r\n function loadElement(element) {\r\n if (element.tagName.toLowerCase() === 'img') {\r\n const parentElement = element.parentNode;\r\n\r\n // if the parent element is \r\n if (parentElement.tagName.toLowerCase() === 'picture') {\r\n [].slice.call(parentElement.querySelectorAll('source')).forEach(source => yallFlipDataAttrs(source));\r\n yallFlipDataAttrs(element);\r\n return;\r\n }\r\n\r\n const newImageElement = new Image();\r\n if (env.asyncDecodeSupport === true && env.replaceWithSupport === true) {\r\n newImageElement.src = element.getAttribute('lazy');\r\n\r\n newImageElement\r\n .decode()\r\n .then(() => {\r\n for (let i = 0; i < element.attributes.length; i++) {\r\n const attrName = element.attributes[i].name;\r\n const attrValue = element.attributes[i].value;\r\n\r\n if (!env.ignoredImgAttributes.includes(attrName)) {\r\n newImageElement.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n element.replaceWith(newImageElement);\r\n newImageElement.removeAttribute('lazy');\r\n newImageElement.classList.add('loaded');\r\n })\r\n .catch(() => {\r\n yallFlipDataAttrs(element);\r\n });\r\n } else {\r\n yallFlipDataAttrs(element);\r\n }\r\n } else if (element.tagName.toLowerCase() === 'iframe') {\r\n // Lazy load