{"version":3,"sources":["webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/components/component.capdropdown.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/functions.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/services/cart.postprocess.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/plugins/jquery.equalheights.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/index.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/plugins/spin.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Quotation/import/service.quotation.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Cart/import/quick.order.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtocart/component.addtocart.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/input.quantity/component.input.quantity.js","webpack:///./App/Modules/Finder/import/service.parse.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Finder/import/service.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/app.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/plugins/detect.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/tab.html.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/tabset.html.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/tabs.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Filters/import/facet.accordion.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Filters/import/facet.accordion.group.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/routing.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/routing-listeners.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/angular-toastr/angular-toastr.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/angular-toastr/toast.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/angular-toastr/toast_message.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/angular-toastr/toast_progressbar.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/angular-toastr/toast_addtocart.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/libs/bootstrap-angular-validation/bootstrap-angular-validation.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/accordions/accordion.group.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/controllers/controller.modal.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.breadcrumb.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.page.head.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/modules/module.gtm.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/modules/module.modal.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/modules/module.netwave.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/modules/module.products.grid.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/modules/module.spinner.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.app.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.ga4.js","webpack:///./App/Modules/Account/js/account-check.directive.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/import/component.product-bottom.tpl","webpack:///./App/Modules/Shared/Header/js/directive.top.promos.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Authentication/js/directive.minilogin.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Authentication/import/toast_authentication.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Cart/js/directive.mini-cart.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Catalog/js/directive.catalog-list.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/import/component.customizable-price-slider.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/import/component.product-bottom-tabs.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Autocomplete/import/autocomplete.equipment.search.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Autocomplete/import/autocomplete.product.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Footer/js/controller.newsletter.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Menu/js/directive.nav.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Menu/import/menu.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Comparator/import/toast_comparator.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Cart/import/quick.order.popover.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Autocomplete/import/autocomplete.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Finder/import/directive.autocomplete.finder.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/popuponeshot/directive.popuponeshot.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/components/component.cap-validate-email.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtocart/component.addtocart.modulo.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtocart/component.addtocart.quantity.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtocart/component.addtocart.classic.tpl","webpack:///./App/import/js/components/addtocart/component.addtocart.mini.tpl","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtocart/component.addtocart.tpl","webpack:///./App/Build/routes.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/controllers/controller.main.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.bxslider.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.clearuibtab.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.fb-connect.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.flockler.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.infinitescroll.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.owl-carousel.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.scrolltop.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.selectpicker.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.stop.propagation.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.togglePasswordVisibility.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directive.visibleonscroll.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/directives/directives.form.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/filters/filter.decimal.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/filters/filter.discount.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/filters/filter.format.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/filters/filter.phone.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/filters/filter.price.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/filters/filter.truncate.date.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/modules/module.cdn.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/modules/module.lazy.js","webpack:///./App/js/services/service.account.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.account.invoices.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.authentication.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.availability.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.cart.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.country.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.cp.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.date.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.gmap.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.gtm-enhanced.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.http.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.phone.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.price.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.responsive.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.string.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.window-events.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/services/service.youtube.js","webpack:///./App/Modules/Authentication/js/controllers.authentication.js","webpack:///./App/Modules/Category/js/directive.filters.js","webpack:///./App/Modules/Category/js/directive.goto.js","webpack:///./App/Modules/Category/js/module.category.js","webpack:///./App/Modules/Product/js/component.product-bottom.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Account/js/check.identity.service.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Account/js/directive.check.identity.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Category/js/directive.truncate.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Form/js/jobs.form.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Form/js/section.form.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/PasswordRecovery/js/password.recovery.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Payment/js/confirmation.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Payment/js/directive.mty.tpe.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/js/component.customizable-price-slider.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/js/component.customization.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/js/component.product-bottom-tabs.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/js/directive.bottom-section.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/js/directive.kit.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/js/directive.price.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/js/directive.product.gallery.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/js/directive.share.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/js/module.product.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Reviews/js/module.reviews.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Search/js/search.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Autocomplete/js/directive.autocomplete.equipmentsearch.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Autocomplete/js/directive.autocomplete.product.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Payment/import/alma.service.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Payment/Alma/js/directive.alma.widget.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Stores/js/controller.modal.store.choice.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Stores/js/directive.infos.store.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Stores/js/directive.store.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Stores/js/directive.store.map.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Stores/js/directive.stores.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Wishlist/js/directive.wishlist.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/dependencies.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/sticky/directive.sticky.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/video/directive.video.player.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/tab/directive.tab.equalheights.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/flip/directive.flip.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Comparator/import/component.comparator.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Comparator/import/directive.compare.checkbox.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Shared/Comparator/import/service.compare.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Finder/import/finder.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/nicescroll/directive.nicescroll.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/helpers/capdropdown.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/components/component.cap-search-locality.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/components/component.cap-search-city.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/components/component.cap-search-street.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/components/component.cap-validate-email.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/components/component.cap-validate-phone.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/directives/cap-form.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/directives/cap-country.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/directives/cap-trigger.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/directives/cap-place.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/directives/cap-building.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/directives/cap-warning-mobile.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/directives/cap-warning-phone.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/services/service.capency.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Capency/module.capency.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/project.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtocart/component.addtocart.modulo.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtocart/component.addtocart.quantity.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtocart/component.addtocart.classic.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtocart/component.addtocart.mini.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtowishlist/component.addtowishlist.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/addtoquotation/component.addtoquotation.advanced.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/notlogged/component.notlogged.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/collapsemenu/directive.collapse.menu.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/rzslider/directive.rzslider.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/dropzone/directive.dropzone.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/directives/swiper/directive.swiper.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/js/components.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/plugins/format.js"],"names":["path","window","angular","module","run","c","put","exports","getObjectPropertyFromKey","key","object","includes","parentKey","childrenKey","split","value","toLowerCase","join","cartPostProcess","cart","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","start","z","prefix","substring","indexOf","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","quantity","post","data","IdProduct","IdQuotation","Object","Quantity","removeQuotationLine","idLine","IdLine","component","require","productCtrl","comparatorCtrl","bindings","isProductButton","isFinderButton","isCompositionType","idCompositionType","isCartButton","action","btnClass","commentLine","id","isGift","productAvailability","productAvailabilityMessage","productQuantity","isPrimary","addToCartActive","allowAddToCart","min","step","price","designation","img","distrimageSrc","titleAdd","titleAlert","tooltip","modalCtrl","device","templateUrl","controller","$scope","$element","$injector","ctrl","$onInit","async","response","loadNewModules","default","init","maxWidth","size","keyEnter","quickOrderInput","titleDeleteOk","titleModifyOk","template","$compile","$onDestroy","html","contents","loadTemplate","$rootScope","$filter","AppService","PriceService","AvailabilityService","parse","search","items","Promise","all","map","_item$KeyWebAspect","_item$Themes","_item$Themes$filter","_item$MainPicture","designationHtml","item","Designation","_obj$SubPictures$find","Reference","ReviewsInfo","Count","Average","round","HTMLShortDescription","Price","MinSaleQuantity","ModuloSaleQuantity","IsGroupingProduct","IsNumeric","IsCustomizable","AllowAddToCart","Themes","KeyWebAspect","KeyProductType","CompositionType","Unit","UnitDesignation","Properties","reduce","result","KeyProperty","Value","isComparable","some","th","KeyTheme","Pictogrammes","filter","KeyRegrouping","IDTheme","IDPicture","Key","Background","Text1","Color","Text2","IDVignettePicture","SubPictures","find","sp","ProductPictureType","Availability","Site","getParams","DisplayAvailabilityOnListPage","IsOmnichannelOrder","formatMessage","Detail","modalData","IDProduct","forceReload","Attributes","CountAttributes","Values","NbProduct","isModulo","htmlPrice","Author","Publisher","URL","MainPicture","$q","$cacheFactory","FinderParseService","GA4Service","deferred","defer","capacity","QueryType","setCtrl","getCtrl","params","resolve","TextQuery","query","From","from","Size","FiltersSelected","FacetsSelected","facets","NegativeTermsQuery","FieldName","FieldValue","NegativeBoost","hash","toJson","cached","searchEventGa4","affiliation","keepDataObject","promise","products","iDProductOutofPrint","results","count","cloneDeep","error","reject","cancel","textQuery","$sce","str","matches","reg","match","replace","toString","tmp","forEach","word","RegExp","trustAsHtml","valueOf","constant","_ENV_","config","$provide","decorator","$delegate","keys","remove","push","splice","getKeys","$compileProvider","Environment","commentDirectivesEnabled","cssClassDirectivesEnabled","debugInfoEnabled","lazyConfigProvider","setOptions","offset","errorClass","successClass","bsValidationConfig","getTranslate","then","translate","entries","forms","element","setMessages","suppressWarnings","catch","onunload","onpageshow","event","persisted","location","reload","injector","bootstrap","strictDi","isBot","Error","origin","protocol","hostname","port","pattern","test","navigator","userAgent","isCache","$templateCache","oldIndex","destroyed","findTabIndex","index","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","apply","t","$transcludeFn","restrict","append","uibTabContentTransclude","node","tagName","hasAttribute","isTabHeading","headingElement","routes","routingService","$routeProvider","$locationProvider","$httpProvider","Routes","useApplyAsync","headers","common","interceptors","when","route","ngRoute","routeLNG","_LNG_","Name","Controller","kebabCase","authorize","authService","load","AccountService","getReturnFolders","$inject","getShippingAddresses","getLocation","_response","getCacheBusting","isCartWithRecap","body","html5Mode","enabled","requireBase","rewriteLinks","otherwise","routesMap","routesService","set","getOwnPropertyNames","arr","getMap","getUrlByName","$timeout","$location","$window","$route","routing","scrollCache","cacheBusting","getRoute","getPath","windowScroll","getScrollPos","scrollTop","updateCacheBusting","currentRoute","to","pageYOffset","$broadcast","Date","getTime","_$window$location","pathname","substr","service","isCart","isAccount","IsLogged","HasCart","hasCard","Cart","Card","CardType","KeyCardType","res","status","responseError","rejection","href","RoutesService","RoutingService","CartIdentification","CartShipping","CartPayment","CartValidation","CartOnePageCheckout","$anchorScroll","ModalService","toastr","currentLocation","yOffset","update","notReplace","routeToKeep","current","unsubscribe","next","router","originalPath","r","_routes","stepTo","stepFrom","ex","previous","message","warning","errors","ErrorHasOccurred","allowHtml","extraData","Localization","UseLogs","loadedTemplateUrl","stack","Message","ngRouter","findRoute","hasOwnProperty","preventDefault","close","removeClass","categoryId","q","backToStore","newLocation","popstate","dataLayer","initRouter","productId","sellerId","$animate","$document","toastrConfig","container","toasts","previousToastMessage","openToasts","containerDefer","clear","toast","toastId","title","optionsOverride","_getOptions","iconClasses","icon","_buildNotification","info","success","refreshTimer","newTime","isOpened","wasClicked","findToast","deleting","leave","options","onHidden","$destroy","maxOpened","open","isObject","isDuplicateOfLast","preventDuplicates","isDuplicateOpen","preventOpenDuplicates","shouldExit","newToast","$new","iconClass","extend","cleanOptionsOverride","typeClass","toastType","toastIcon","extendedTimeOut","messageClass","onShown","generateEvent","onTap","progressBar","tapToDismiss","timeOut","titleClass","toastClass","closeButton","closeHtml","createScope","angularDomEl","createToastEl","badOptions","l","createToast","autoDismiss","ifMaxOpenedAndAutoDismiss","oldToasts","len","attr","containerId","addClass","positionClass","querySelector","enter","_createOrGetContainer","newestOnTop","sibling","lastChild","_notify","templates","progressbar","toastCtrl","intervalId","currentTimeOut","hideTime","updateProgress","percentage","duration","clearInterval","parseFloat","setInterval","startProgressBar","stopProgressBar","$interval","wantsCloseButton","button","children","prepend","createTimeout","time","on","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","hasClass","hideErrorMessage","displaySuccess","addSuccessClass","removeSuccessClass","toggleErrorKeyClasses","$error","dewatcher","$touched","lostFocus","provider","validateFieldsOn","displayErrorsAs","messageFilters","shouldValidateOn","isString","_this","global","errorMessagePrefix","tooltipPlacement","tooltipAppendToBody","messages","setValidateFieldsOn","isArray","setDisplayErrorsAs","useMessageFilters","filters","$get","getDisplayErrorsAs","getErrorMessagePrefix","getMessageFilters","getTooltipPlacement","shouldAddSuccessClass","$interpolate","_genericValidators","validateFn","equalto","range","parseInt","getTrigger","triggerEvent","parentForm","parents","String","camelCaseToDash","$1","selectors","selector","meta","getMetaInformation","metaInformation","validateableElements","removeErrorClass","$validators","modelValue","viewValue","$isEmpty","addGenericValidator","genericValidationObject","attrName","$parentForm","getErrorMessage","firstErrorKey","resolveMessage","formGroupElement","displayType","e","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","showWarningWait","withWaitingClass","hideWarningWait","smoothScroll","showLoader","onLoad","deleteQuantity","dataQtd","IDLine","RemovedQuantity","isBtnMainDisabled","$close","goTo","suggestionsUrl","Recipients","modalTitle","addRecipient","removeRecipient","Email","Visitor","FirstName","LastName","submit","loading","resultMessage","TryLater","messageTitle","messageText","successMessage","text","emailChanged","form","emailExists","email","openModal","show","Token","IsCrmV2","Errors","ErrorMessage","onInit","removeAttr","$uibModalInstance","cropper","rendered","tmpId","aspectRatio","movable","cropBoxResizable","rotatable","ready","plus","zoom","minus","save","dropzone","ctrlFrom","croppedFile","dataURI","byteString","atob","ab","ArrayBuffer","ia","Uint8Array","charCodeAt","Blob","dataURItoBlob","getCroppedCanvas","fillColor","imageSmoothingEnabled","imageSmoothingQuality","toDataURL","tmpFileName","removeAllFiles","addFile","deleteTmpFile","serverName","isLogged","NumberToCall","MobilePhone","Phone","$items","metadata","description","checkout","$emit","homepage","$cookies","DateService","inject","script","innerHTML","getContent","expires","nextYear","content","GtmService","modal","$uibModal","modalInstance","ctrlAs","onClosed","onOpened","_modal","windowClass","backdrop","keyboard","closed","$$state","opened","closeCurrent","class","openCmsModal","autoScroll","modalAutoScroll","$modalDialog","closest","$scrollContainer","maxHeight","netwaveInfos","NetwaveService","isNetwaveEnable","getNetWaveInfo","initializeNetWaveInfo","netwaveEnable","netInfos","getIdProduct","product","getPrice","_product$Product","_product$Price","_product$Price2","IsKit","KitUnitTTCPrice","Product","TTCAmount","qty","TTCDiscountedPrice","TTCPrice","_product$Price3","costTTC","trigger","getProducts","ProductsIds","updateFilters","_ctrl$BrandsSelected","_ctrl$ReviewsSelected","_ctrl$ProductTypesSel","_ctrl$words","BrandsSelected","filterBrandsSelected","brands","Id","ReviewsSelected","filterReviewsSelected","reviews","ProductTypesSelected","filterProductTypesSelected","types","words","PriceRange","prices","isScriptLoaded","wsbProperties","filterFacet","categoryCtrl","idCategory","values","emptyCart","removeArticleFromCart","removeArticle","getCategory","pdt","wsb","addArticleToCart","addArticle","getCategoryResponse","emptyWishList","line","updateWishList","addToWishList","addToWishlist","removeFromWishlist","requestAnimationFrame","tabsCtrl","zone","unwatch","publishingZones","publishingZone","_","publishingZoneId","sortedZones","sortBy","json","findIndex","isOpen","catchphrase","bannerName","bannerUrl","bannerLink","Link","imgWsbPublishingZone","querySelectorAll","linkWsbPublishingZone","p","_product$Themes","_product$Themes$filte","domId","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","WindowEventsService","ProductsGridService","getId","onResize","resizeGrid","listen","elemId","lazy","sizes","$divs","resetInitialHeight","nb","colClass","eq","clientWidth","acc","breakpoint","calculateColumnCount","productItems","$itemsSlice","targ","comp","contentChildren","adjustHeights","_config","_themes","_delay","setDefaults","setTheme","setDelay","delay","themes","usSpinnerConfig","spinner","appendTo","spinnerTheme","spinnerOn","appPromise","allParams","resetParams","updateParams","noevent","Mobility","MobilityVisitorContext","Store","VisitorContext","getProductPrice","priceObj","HasDiscount","Discount","HTDiscountedPrice","HTPrice","DegressivePrice","Number","inRange","updateStore","visitorContext","updateKey","errorKey","mailRecognized","exists","updateSecurityToken","token","hSecurityToken","getAllParams","searchedParameter","findParam","paramName","refresh","timestamp","copy","MTYVisitorContext","clearTemplateCache","ga4Enable","getItem","categories","coupon","_product","_product2","_product2$Price","parentProduct","item_id","getReference","item_name","getDesignation","discount","item_brand","getBrand","abs","getQuantity","item_category","item_category2","item_category3","item_category4","item_category5","item_variant","IDGroupingProduct","properties","Brand","brand","reference","getSumOfPriceProducts","previousValue","currentValue","pushToDataLayer","ecommerce","addPaymentInfo","TradeActions","TradeActionPromoCode","Products","currency","ProductTotalTTC","payment_type","PaymentMethod","addShippingInfo","viewItem","viewItemList","item_list_name","addToCart","tradeActions","totalTTC","removeFromCart","searchTerm","search_term","viewCart","NetToPay","beginCheckout","purchase","transaction_id","tax","shipping","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","$viewValue","assign","phone","regexMobile","regexByCountryId","1","26","speMobileMessage","countryCodeAndIdMapping","$watchGroup","accountMobile","shippingMobile","newValues","visitorCountryId","shippingCountryCode","shippingCountryId","concat","refreshField","mobile","bind","regexPostcode","spePostcodeMessage","accountPostcode","postcode","interval","startAnimate","stopAnimate","resize","bodyFontSize","fontSizeEm","cookiesTopPromos","now","exp","getFullYear","getMonth","getDate","titleVisitor","titleLogin","titleLogout","LogService","links","getLinks","clientIsActive","_params$Mobility$Prof","Agent","AgentId","Profile","AllModules","ModuleKey","IsActive","visitor","$body","$header","toggle","off","onBodyClick","contains","sellerUrl","FullName","IDCard","setManagement","$$phase","$digest","showMobiClient","lexic","web","MOBI_Clients_Connection","MOBI_Clients_Choice","isWeb","buttonPrimary","login","navMenuElement","logout","isAddtocartNotlogged","MiniCartController","constructor","CartService","tplTranslate","getCart","withRefresh","cartIsActive","cartPath","hasCart","cartLink","showTTCPrice","ShowTTCPrice","addtocartOK","tradeAction","cartProducts","toFixed","$this","deleteLine","DistrimageSrc","_response$results","_response$results$Cur","_response$results2","_response$results2$Lo","Currency","ISOCode","removedProducts","TradeName","ClearCartOK","goToSlide","slideNumber","formData","NewsletterOK","redirect","newsletterConnect","NewsletterDejaOK","msg","MenuService","hoverListeners","nicescrollOptions","horizrailenabled","autohidemode","cursorwidth","cursorcolor","cursorborder","cursorborderradius","railpadding","right","bottom","zindex","getNicescrollOptionsByStep","alignLeft","railalign","$nav","padding","origSize","menuStyle","resizeMenus","desktop","showDefaultSubmenu","navMenu","initDesktopNavBySteps","$menuItems","elmt","$menuItem","$menus","$menuHover","listener","hoverintent","$subMenuHover","showMenuHover","addEventListener","subMenuHovers","subMenuHover","menu","setSubMenuHoverPosition","passive","psOpen","$mainNav","$navMenu","slider","psClose","closeDone","openDone","$animateCss","mainNavCtrl","isTouch","expandMenu","reduceMenu","initMenu","$menu","$nicescrollbar","expandDone","overflow","visibility","easing","scrollHeight","finally","collapseDone","openMenu","siblings","end","backMenu","closeMenu","first","menuOffsetTop","getBoundingClientRect","child","subChild","subChildTotalHeight","offsetHeight","childHeight","sensitivity","menuHover","fullHeight","menuByStep","prev","menuByStepMargins","hoverMargins","subMenuHoverMargins","forceLeftPosition","FinderService","goSearch","searchStr","Search","encodeURIComponent","inputChangeHandler","fromBtn","which","nbClick","popupOneShot","inc","tomorrow","samesite","onClick","DeviceService","loadModalAddToCart","showPageLoader","setDevice","getSize","xxs","onChange","xs","sm","md","lg","tablet","ios","isIOS","isIe","isIE","ieVersion","version","isWebp","webp","navHeight","bxslider","initBxSlider","destroySlider","sc","innerWidth","bxSlider","mode","minSlides","responsive","slideMargin","slideWidth","pager","prevSelector","nextSelector","prevText","nextText","moveSlides","infiniteLoop","preventDefaultSwipeX","preventDefaultSwipeY","controls","onSliderLoad","removeParentIfEmpty","UseFacebookConnect","infiniteScroll","infiniteScrollDistance","infiniteScrollDisabled","infiniteScrollGrandParent","handler","isNaN","documentElement","innerHeight","click","togglePasswordVisibility","inputPasswordFieldID","triggerElementID","inputPasswordField","triggerElement","hidePassword","theme","label","ngRequired","_id","_template","$wrapper","input","optRequired","$label","onInputChange","trim","placeholder","requiredStarDisabled","ngModelInit","noZoomDirective","viewport","discountFilter","format","loc","DiscountHTMLFormat","DiscountFormat","DiscountDecimalSeparator","DiscountThousandSeparator","getDiscountFilter","$stateful","args","arg","num","priceFilter","ttc","PriceHTMLFormatVATincluded","PriceHTMLFormatVATexcluded","HTAmount","TTCTotalPrice","HTTotalPrice","EcoContribution","a","b","remainder","priceValue","getConditioningPrice","priceFormat","PriceFormat","separators","PriceThousandSeparator","PriceDecimalSeparator","strMontant","separatorIndex","Symbol","getPriceFilter","extension","quality","absolute","crop","transparent","split1","UrlImages","split2","PlatformEnvironment","URLSite","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","call","source","yallFlipDataAttrs","newImageElement","Image","asyncDecodeSupport","replaceWithSupport","src","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","is","isElementInView","loadImage","stopListening","param","startListening","onerror","onError","onload","srcset","loadingClass","onSuccess","onLoading","Photo","setSource","unshift","removeImage","addContainer","removeContainer","_options","testImage","elem","rect","bottomline","threshhold","last","deferTimer","context","IntersectionObserverEntry","LazyMagic","lazyImage","deregister","newSource","eventsDeregister","_params$Delegation","_params$Delegation2","_params$Delegation3","_params$Delegation4","_params$Delegation5","_params$Delegation6","_params$Delegation7","_params$Delegation8","_params$Delegation9","_params$Delegation10","_params$Delegation11","_params$Delegation12","_params$Delegation13","_params$Delegation14","_params$Delegation15","_params$Delegation16","_params$Delegation17","_params$Delegation18","Account","Delegation","ProCardTypes","ProfessionalCardTypes","CardTypes","IDCardType","Terms","IsRestrictClientAccount","PaymentTermsClientAccountExcluded","IDPayment","hasListDelegue","hasServices","DelegationUsed","AutoriseModifierInfosPerso","IsManagementGiftCards","IsManagementCredits","IsManagementDedicatedProducts","IsManagementLoyaltyPoints","IsManagementWishlistTracking","IsManagementMultiWishlist","AutoriseVisualiserWishList","IsManagementSponsorShip","IsManagementVouchers","hasOrders","IsManagementOrderTracking","AutoriseVisualiserCommandes","IsManagementInvoicesAndCreditsTracking","AutoriseVisualiserFactures","IsManagementWebCartTracking","IsManagementReturns","IsManagementComplaint","IsManagementNumericProducts","IsManagementQuotationTracking","AutoriseVisualiserDevis","subscriptions","getVisitorHasSubscriptions","hasSubscriptions","HasSubscriptions","APIService","getInvoicesToPayFromBack","cardID","getInvoicesToPay","documentType","getCredit","getPaymentMethods","postTransaction","documentIds","$post","defineUrl","en","routeName","removeAll","AccountUpdate","AccountHome","date","isPickUp","UnavailablePickUp","UnavailableDelivery","daysDifference","ceil","stringToDate","ShippingToday","endsWith","getMessage","cartRequests","checkCumulativeProduct","productsToCart","Comment","Elements","Customization","CustomizablePrice","CheckCumulativeProduct","_products$","pullAllBy","_response$data","_response$data$result","_response$data$result2","_response$data2","_response$data2$resul","_response$data2$resul2","_response$data3","_response$data4","_response$data4$resul","_response$data4$resul2","_response$data5","_response$data5$resul","_response$data5$resul2","_response$data6","imgSrc","fromCart","deleteLineCallback","itemQuantityInCart","checkAvailability","checkCartEnable","countries","fr","es","getCountry","lang","getPostCodeInput","idHtml","UsePostalCodeCheck","controllerObject","PostCode","startsWith","changeValueFromCodePoste","clearPostalCode","UseRefreshPostalCode","idHtmlElement","selectHtmlComponent","selectCountry","CountryCode","IDCountry","Country","dateToISO","UTC","toISOString","minISODate","today","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","clickState","pushEnhancedClick","checkModuleEnable","actionField","list","category","eventCallback","switchClickState","pushEnhancedImpression","enhancedProducts","AbsoluteURL","currencyCode","impressions","pushEnhancedAddToCart","pushEnhancedRemoveFromCart","cartQuantity","pushEnhancedCheckout","option","getGTMData","keyList","gtmData","propertiesToGetKeyList","numberOfKeysRemoved","k","toSend","v","UseEnhancedEcommerce","$http","defaultHttpHeaders","method","patch","delete","defaultAPIHeaders","baseURL","APIToken","isAPIActive","urlPromise","Api","URLV2","_auth","err","_request","$put","$patch","$delete","isURLWhole","httpResponse","printAPIErrorResponse","authHeader","Authorization","errorMessage","statusText","detail","capencyService","standardRegexPhone","regexMobilePhone","regexLandline","useLibphonenumber","useCapPhone","parsePhoneNumberFromString","isSupportedCountry","getCountryCode","IDZoneCountry","isNumber","isValidPhoneWithLibPhoneNumber","phoneNumber","countryCode","isMobile","libphonenumber","loadLibphonenumberModules","isValidMobilePhone","isValidLandline","phoneObj","extract","isPossible","isValid","getType","isValidPhoneWithCapPhone","validatePhone","isValidPhone","phoneTypeValidation","reduction","priceFrom","priceOld","IsPriceFrom","PriceFrom","priceNew","bool","DocumentTouch","rule","callback","docOverflow","docElement","div","fake","getBody","cssText","createTextNode","ret","testStyles","offsetTop","touchevents","MSStream","_el","d","isOpera","isIE9","documentMode","isIE10","isIE11","isIEEdge","isSelfscanning","isMobility","that","safeApply","phase","$root","assureList","getCurrentMatch","getComputedStyle","getPropertyValue","currentStyle","fontFamily","listenerFunc","currentMatch","previousMatch","wasPreviousMatch","doesCurrentMatch","feature","lossy","checkWebp","findMatchString","api","throttleTime","isOn","debounceTime","listenerType","patterns","exec","tokens","getThumbnail","medium","high","getImport","initAuthentication","initLoginForm","initModalLogin","initNewClientForm","initNewClientWithoutRecognitionForm","initForgotPassword","loadingProfile","initEmail","restore","lastCart","IDFolder","searchQuery","scroll","btnFilters","rangeFilters","isTransversal","genericExclude","automaticFilter","automaticFilterKey","automaticFilterValue","priceStep","maxFilters","rangeText","forceShowAll","initFilters","authSpan","onclick","authorUrl","onauxclick","oncontextmenu","publiSpan","publisherUrl","webAspect","currentPage","totalProducts","nbPerPage","maxPage","sortTitle","isFiltered","iScrollMaxPages","iScrollAuto","iScrollText","isMessage","redirectToURL","nbProducts","initModule","biography","booksellerReview","advices","suggestions","sellerFavorite","alike","appurtenances","isTabs","isAccordions","$transclude","slots","sections","sectionSet","addSection","section","slot","isSlotFilled","getLabel","_ctrl$sections$find","loadRegex","localization","configPath","CheckIdentityService","regex","regexp","identitySelectElement","inputText","selectedIndex","refreshRegex","onchange","identity","ellipsis","truncate","uibRating","Attachments","dzOptions","acceptedFiles","uploadMultiple","renameFilename","dzCallbacks","successmultiple","files","file","ServerName","removedfile","targetCtrl","infos","ref","ville","department","sectionForm","CustomerPro","isTokenValid","idFolder","valueChange","showSelectionBar","onEnd","_sliderId","model","trustAsResourceUrl","initCustomization","anchor","_elt","productBottomCtrl","bottomSection","idKit","idGroup","initKit","jsonPrice","txtFirstRange","txtRange","txtLastRange","txtConditioning","initPrice","initGallery","socialshare","socialshareUrl","socialshareText","socialshareMedia","socialshareHashtags","socialshareEmail","appId","FacebookAppID","initShare","urlGroup","isKit","isGiftCard","showComponents","customizablePrice","customizablePriceTooltip","costHT","customizationCostTTC","customizationCostHT","scrollToElement","topOffset","modalContent","modalContentPosition","modalContentOffsetTop","targetElementPosition","animate","linkForm","openReview","pageContext","messageOK","initForm","txtAddToList","txtViewAndChoose","txtAlreadyPresent","textAllResults","textCategories","textAdvices","UseElasticCore","txtColop","onlyAllowAddToCart","excludeDilicom","paymentResponse","apiInfo","isFromCart","paymentCtrl","getPaymentData","getApiInfo","eligibilities","eligibilityResponse","Eligibilities","getEligibility","almaEligibilities","Boolean","eligible","paymentInfo","amount","prePaymentRequest","payment","purchase_amount","redirectToError","paymentForm","pay","idCard","AlmaService","Alma","AlmaWidgets","Widgets","widget","isInit","setupWidget","PaymentPlans","purchaseAmount","locale","hideIfNotEligible","transitionDelay","IsProd","ApiMode","LIVE","TEST","initialize","MerchantID","$onChanges","changes","isFirstChange","selectStore","idStore","isAccountUpdate","isAccountCreate","IDStore","IsAccountCreate","_$rootScope$$eval","setStore","availability","msgExclu","storeSelected","setStoreData","shippingProducts","_shippingProducts$fin","_ctrl$availability","_ctrl$availability2","hideRazorAvailability","deliveryOutOfQuantity","Delivery","CentralStock","DeliveryMessage","messageDeliveryOutOfQuantity","DeliveryMessageClass","pickUpOutOfQuantity","PickUp","StoreStock","PickUpMessage","messagePickUpOutOfQuantity","PickUpMessageClass","noDelivery","every","_p$Availability$Detai","noPickup","_p$Availability$Detai2","allDeliveryActive","_p$Availability$Detai3","allPickupActive","_p$Availability$Detai4","restoreQuickView","tempUrl","PickUpDate","stock","selectAvailableStore","openStoreChoice","productOpenStoreChoice","availableFilter","_ctrl$productCtrl","store","latitude","longitude","daysModel","strOneTime","strTwoTimes","strClosed","cartCtrl","storeUrlName","records","record","targetInfo","boundingClientRect","rootBoundsInfo","rootBounds","threshold","root","_sentinel","stick","enable","autoplay","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","nbCol","nicescrollConfig","loadCode","cursordragontouch","enableobserver","nicescrollMobile","niceScroll","firstTime","niceTimeout","niceScrollInitEvent","niceOption","loadPlugin","niceScrollEvent","_element$getNiceScrol","getNiceScroll","CapDropdown","targeted","selection","cleared","clone","$overrideModelOptions","debounce","$viewChangeListeners","listenerIndex","$setViewValue","$render","inputOutput","parseOption","afterSelection","afterClear","fetchList","isSelected","onArrowKey","up","keyCode","limit","nextIndex","onSelection","onEnter","onKeyDown","onLeave","displayOption","CapSearchLocality","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","CapValidateEmail","tooltipMessageService","isCapEmailEnable","showWait","hideWait","parentCtrl","newClientCtrl","$ctrl","onBlur","userInteracted","strictemail","capValidated","invalidMessage","hasSuggestions","checkMailProp","fromJson","iRet","Mail","sMail","optionsTitle","optionsTitleWarning","optionsConfirm","optionsSelect","CapValidatePhone","capValidatePhone","validPhoneList","sTel","capFormCtrl","elt","validated","$pristine","validateForm","getSelectedCountryId","triggers","triggerVariable","invert","write","shift","PhoneService","capWarningMobile","capWarningPhone","Set","capencyInfos","initializeCapencyInfos","getCapencyInfos","isCapAdressEnable","CapAdresseEnable","CapEmailEnable","isCapPhoneEnable","CapPhoneEnable","inline","localities","streets","uiDatepickerPopup","usSpinnerConfigProvider","nicescrollConfigProvider","bsValidationConfigProvider","parallelUploads","maxFilesize","addRemoveLinks","dictRemoveFile","idStatus","availableQuantity","btnTooltip","unit","moduloFormat","moduloCaption","moduloTotal","showQteMin","labelQteMin","labelQteMax","labelQteVente","labelPlusInfo","quotationCtrl","showQuickView","isQuotationButton","isModalButton","modalItem","msgMin","titleDetail","inputClass","tooltipAlert","tooltipProductIsOutOfPrint","titleResultOk","productIsOutOfPrint","tooltipAdd","tooltipYet","tooltipChoice","titleTxt","titleConnect","tooltipConnect","clickMenu","showMenu","hideMenu","rzSliderModel","rzSliderHigh","rzSliderOptions","RzSlider","callbacks","methods","mask","isNegative","decimal","group","posLeadZero","posTrailZero","posSeparator","part","szSep","integer","reverse","indx","suffix","lastIndexOf"],"mappings":"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","file":"main.876c14d94d650eb09b5a.js","sourcesContent":["var _module_exports = \"
{{ $ctrl.displayOption(option) }}
\";;\nvar path = 'Modules/Capency/components/component.capdropdown.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","/**\r\n * Fonction utilitaire permettant d'aller chercher des propriétés dans un objet\r\n * en fonction d'un clé donnée\r\n * @param {string} key La clé de la propriété dont on veut chercher la valeur\r\n * @param {any} object L'objet dans lequel chercher\r\n */\r\nexport function getObjectPropertyFromKey(key, object) {\r\n if (key.includes('.')) {\r\n const [parentKey, ...childrenKey] = key.split('.');\r\n\r\n //on teste de récupérer la valeur avec la clé telle quelle ou en lowercase\r\n const value = object && (object[parentKey] || object[parentKey.toLowerCase()]);\r\n\r\n return getObjectPropertyFromKey(childrenKey.join('.'), value);\r\n }\r\n\r\n return object && (object[key] || object[key.toLowerCase()]);\r\n}\r\n","const cartPostProcess = cart => cart;\r\n\r\nexport default cartPostProcess;\r\n","(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","var _module_exports = \"
= 1}\\\">
\";;\nvar path = 'Modules/Cart/import/quick.order.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","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('component.input.quantity', [])\r\n\r\n .component('inputQuantity', {\r\n require: {\r\n productCtrl: '?^^productDetail'\r\n },\r\n bindings: {\r\n id: ' { };\r\n\r\n ctrl.$onInit = () => {\r\n loadTemplate();\r\n };\r\n\r\n async function loadTemplate() {\r\n const response = await import(/* webpackChunkName: \"input.quantity\" */ 'import/js/components/input.quantity/component.input.quantity.html');\r\n $element.html(response.default);\r\n $compile($element.contents())($scope);\r\n init();\r\n }\r\n\r\n async function init() {\r\n const response = await import(/* webpackChunkName: \"input.quantity.init\" */ 'import/js/components/input.quantity/component.input.quantity.init.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('InitInputQuantity');\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 ($rootScope, $filter, AppService, PriceService, AvailabilityService) {\r\n const service = {\r\n parse\r\n };\r\n return service;\r\n\r\n ////////////\r\n async function parse(search, items) {\r\n return Promise.all(\r\n items.map(async item => {\r\n const obj = {\r\n designationHtml: $filter('matchstring')(item.Designation, search)\r\n };\r\n obj.Designation = item.Designation;\r\n obj.Reference = item.Reference;\r\n obj.ReviewsInfo = item.ReviewsInfo ? { Count: item.ReviewsInfo.Count, Average: Math.round(item.ReviewsInfo.Average) } : null;\r\n obj.HTMLShortDescription = item.HTMLShortDescription;\r\n obj.Price = item.Price;\r\n obj.MinSaleQuantity = item.MinSaleQuantity !== 0 ? item.MinSaleQuantity : 1;\r\n obj.ModuloSaleQuantity = item.ModuloSaleQuantity !== 0 ? item.ModuloSaleQuantity : 1;\r\n obj.IsGroupingProduct = item.IsGroupingProduct;\r\n obj.IsNumeric = item.IsNumeric;\r\n obj.IsCustomizable = item.IsCustomizable;\r\n obj.AllowAddToCart = item.AllowAddToCart;\r\n obj.Themes = item.Themes;\r\n obj.KeyWebAspect = item.KeyWebAspect?.toUpperCase() || '';\r\n obj.KeyProductType = item.KeyProductType;\r\n obj.CompositionType = item.CompositionType;\r\n obj.isCompositionType = item.CompositionType !== 0 ? true : false;\r\n obj.Unit = item.Unit;\r\n obj.UnitDesignation = item.UnitDesignation.toLowerCase();\r\n obj.Properties = item.Properties.reduce((result, prop) => {\r\n result[prop.KeyProperty] = prop.Value;\r\n return result;\r\n }, {});\r\n\r\n obj.isComparable = item.Themes.some(th => th.KeyTheme === 'Comparateur');\r\n obj.Pictogrammes = item.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 obj.IDVignettePicture = 0;\r\n if (item.SubPictures.length > 0) {\r\n obj.SubPictures = item.SubPictures;\r\n obj.IDVignettePicture = obj.SubPictures.find(sp => sp.ProductPictureType === 'Vignette')?.IDPicture;\r\n if (obj.IDVignettePicture === null || obj.IDVignettePicture === undefined) {\r\n obj.IDVignettePicture = 0;\r\n }\r\n }\r\n\r\n if (item.Availability) {\r\n obj.Availability = item.Availability;\r\n const { Site } = await AppService.getParams();\r\n if (Site.DisplayAvailabilityOnListPage && Site.IsOmnichannelOrder) {\r\n await AvailabilityService.formatMessage(obj.Availability.Detail, 'Delivery');\r\n await AvailabilityService.formatMessage(obj.Availability.Detail, 'PickUp');\r\n obj.Availability.Detail.modalData = {\r\n idProduct: item.IDProduct,\r\n action: $rootScope.forceReload,\r\n quantity: item.MinSaleQuantity !== 0 ? item.MinSaleQuantity : 1\r\n };\r\n }\r\n }\r\n\r\n obj.Attributes = item.Attributes;\r\n obj.CountAttributes = 0;\r\n if (obj.Attributes.length > 0) {\r\n obj.CountAttributes = obj.Attributes[0].Values[0].NbProduct;\r\n }\r\n\r\n obj.isModulo = item.ModuloSaleQuantity !== 1 && item.ModuloSaleQuantity !== 0 || item.MinSaleQuantity !== 1 && item.MinSaleQuantity !== 0 ? 'true' : 'false';\r\n\r\n obj.htmlPrice = await PriceService.get(item);\r\n\r\n //SPECIFIQUE DPF : affichage Auteur et Editeur sur les vignettes\r\n obj.Author = item.Author;\r\n obj.Publisher = item.Publisher;\r\n\r\n return {\r\n IDProduct: item.IDProduct,\r\n URL: item.URL,\r\n IDPicture: item.MainPicture?.IDPicture || item.IDPicture,\r\n ...obj\r\n };\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 (HttpService, $q, $cacheFactory, FinderParseService, GA4Service) {\r\n let deferred = $q.defer();\r\n let ctrl;\r\n const cache = $cacheFactory('finderFiltersCache', { capacity: 30 });\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 function searchEventGa4(textQuery, products, affiliation) {\r\n try {\r\n GA4Service.search(textQuery, products, affiliation);\r\n } catch (error) {\r\n console.error(error);\r\n }\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 searchEventGa4(params.query, cached?.items, cached?.affiliation);\r\n deferred.resolve(cached);\r\n } else {\r\n try {\r\n const { data: response } = await HttpService.post({\r\n url: '/elssearch/query',\r\n data,\r\n keepDataObject: true,\r\n timeout: deferred.promise\r\n });\r\n const items = await FinderParseService.parse(params.query, response.products, response.iDProductOutofPrint);\r\n const results = {\r\n count: response.count,\r\n facets: response.facets,\r\n items,\r\n affiliation: response.affiliation\r\n };\r\n cache.put(`filters_${hash}`, cloneDeep(results));\r\n searchEventGa4(params.query, results?.items, results?.affiliation);\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\nimport 'import/js/functions.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 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","var _module_exports = \"
    \";;\nvar path = 'Modules/Shared/Filters/import/facet.accordion.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"
    {{heading}}
    \";;\nvar path = 'Modules/Shared/Filters/import/facet.accordion.group.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","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 let routeLNG = _LNG_;\r\n if (!route[_LNG_]) {\r\n routeLNG = 'en';\r\n }\r\n ngRoute = `/${route[routeLNG].URL.replace(/\\:(\\S+?)\\}/g, '}').replace(/\\{(\\S+?)\\}/g, ':$1')}`;\r\n routes[route.Name] = { url: route[routeLNG].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(false, true),\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 // CartController\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 deferred = $q.defer();\r\n import(/* webpackChunkName: \"cart.quick.order\" */ 'Modules/Cart/import/quick.order.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n import(/* webpackChunkName: \"cart.display\" */ 'Modules/Cart/import/cart.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: '/Template/Cart/Display',\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.quick.order\" */ 'Modules/Cart/import/quick.order.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n import(/* webpackChunkName: \"cart.display\" */ 'Modules/Cart/import/cart.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 deferred = $q.defer();\r\n import(/* webpackChunkName: \"cart.onepage.identification\" */ 'Modules/Cart/import/cart.identification.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 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, false),\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/onePageCheckout.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, false),\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const deferred = $q.defer();\r\n import(/* webpackChunkName: \"cart.onepage\" */ 'Modules/Cart/import/onepage/onePageCheckout.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, false),\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 const isCartWithRecap = typeof $(document.body).data('cart-validation') !== 'undefined' ? $(document.body).data('cart-validation') : true;\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, false),\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const deferred = $q.defer();\r\n if (isCartWithRecap) {\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 } else {\r\n import(/* webpackChunkName: \"cart.steps.payment\" */ 'Modules/Cart/import/steps/payment.norecap.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 === '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, false),\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') {\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 // By default we add the route without traitement\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, isAccount) =>\r\n AppService.getParams().then(params => {\r\n if (params.IsLogged && (!isCart || (isCart && params.HasCart))) {\r\n const hasCard = params.Cart && typeof (params.Cart.Card) !== 'undefined' && params.Cart.Card !== null;\r\n if (isAccount && (hasCard ? params.Cart.Card.CardType.KeyCardType === 'INVITE' : hasCard)) {\r\n location.replace('/');\r\n }\r\n return true;\r\n }\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 //check en fonction de l'url car next.name n'est pas toujours bon\r\n //exemple : next.name = AccountQuotation au lieu de AccountQuotations\r\n if (next.originalPath === `/${RoutesService.getUrlByName('AccountQuotations')}`) {\r\n // On verifie le token de parcours du devis\r\n HttpService.get({\r\n url: `/${RoutesService.getUrlByName('QuotationToken')}`.replace('{routeName}', 'AccountQuotations')\r\n }).catch(() => {\r\n // Si en erreur on repart à la home du compte.\r\n $location.path(`/${RoutesService.getUrlByName('AccountHome')}`);\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 // 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 if (next.name === 'CartQuotationPaymentList') {\r\n // On verifie le token de parcours du devis\r\n HttpService.get({\r\n url: `/${RoutesService.getUrlByName('QuotationToken')}`.replace('{routeName}', next.name)\r\n }).catch(() => {\r\n // Si en erreur on repart à la page de choix des devis.\r\n $location.path(`/${RoutesService.getUrlByName('AccountQuotations')}`);\r\n });\r\n } else {\r\n // On verifie le token de parcours du panier\r\n HttpService.get({\r\n url: `/${RoutesService.getUrlByName('CartToken')}`.replace('{routeName}', next.name)\r\n }).catch(() => {\r\n // Si en erreur on repart en début de panier.\r\n $location.path(`/${RoutesService.getUrlByName('Cart')}`);\r\n });\r\n }\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 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 = $rootScope.popstate;\r\n const routing = RoutingService.get();\r\n if (routing.from.name && routing.to.name) {\r\n if (routing.from.name.indexOf('Product') === 0 && routing.to.name.indexOf('Product') === 0 && routing.from.params.productId === routing.to.params.productId) {\r\n getScrollPos = true;\r\n } else if (routing.from.name === 'SellerPage' && routing.to.name === 'SellerPage' && routing.from.params.sellerId === routing.to.params.sellerId) {\r\n getScrollPos = true;\r\n } else if (\r\n routing.from.name.indexOf('Category') === 0 &&\r\n routing.to.name.indexOf('Category') === 0 &&\r\n routing.from.params.categoryId === routing.to.params.categoryId\r\n ) {\r\n getScrollPos = true;\r\n }\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(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', '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\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 .directive('bsValidation',\r\n ['bsValidationService', '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 if (ngModelController.$$attr.required) {\r\n bsValidationService.addSuccessClass($formGroupElement);\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(function () {\r\n return ngModelController.$touched;\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 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(function () {\r\n return ngFormController.$submitted;\r\n }, function (submitted) {\r\n displayValidationState = submitted;\r\n displayOrHideValidationState();\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(function () {\r\n return ngModelController.$valid;\r\n }, displayOrHideValidationState, true);\r\n\r\n $scope.$watch(function () {\r\n return ngModelController.$$attr.required;\r\n }, function () {\r\n hideSuccess();\r\n hideError();\r\n displayOrHideValidationState();\r\n }, true);\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\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 .provider('bsValidationConfig', function () {\r\n\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 = [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 .factory('bsValidationService',\r\n ['$interpolate', '$injector', '$filter', '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 name: 'digits',\r\n validateFn: function (value) {\r\n return (/^\\d+$/).test(value);\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 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 name: 'min',\r\n validateFn: function (value, $scope, attr) {\r\n return parseFloat(value) >= parseFloat(attr.min);\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 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 name: 'length',\r\n validateFn: function (value, $scope, attr) {\r\n return value.length === parseInt(attr.length);\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 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('No message found for the key [' + key + ']. Consider adding a global message or element' +\r\n ' specific message using attribute [' + key + '-notification=\"My custom message\"]');\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 validValue: attrKey,\r\n validValue1: attrKey.indexOf('|') !== -1 ? attrKey.split('|')[0] : '',\r\n validValue2: attrKey.indexOf('|') !== -1 ? attrKey.split('|')[1] : ''\r\n }, metaInformation);\r\n } else {\r\n matchers = angular.extend({}, {\r\n validValue: attrKey\r\n }, metaInformation);\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 .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}());","var _module_exports = \"
    \";;\nvar path = 'import/js/components/accordions/accordion.group.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","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 (dataQtd) {\r\n ctrl.data = dataQtd;\r\n HttpService.post({\r\n url: `/UpdateLineQuantityCart/${ctrl.data.IDLine}/${ctrl.data.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 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.cancel = value => {\r\n ctrl.$close();\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) {\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.length === 1) {\r\n ctrl.suggestionsUrl = `GetProductSuggestions/Modal/ModalAddToCartSuggestions/${ctrl.data[0].idProduct}?${new Date().getTime()}`;\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('modalQuestionCtrl', function (data, device, options, HttpService, AppService, ModalService, toastr) {\r\n const ctrl = this;\r\n ctrl.data = data;\r\n let messageTitle;\r\n\r\n ctrl.successMessage = title => {\r\n messageTitle = title;\r\n };\r\n\r\n ctrl.emailChanged = () => {\r\n if (ctrl.form.Email.$valid) {\r\n try {\r\n AppService.emailExists({\r\n email: ctrl.data.Email,\r\n openModal: true,\r\n action() {\r\n ModalService.show(\r\n '/Template/Product/ModalQuestion',\r\n {\r\n IdProduct: ctrl.data.IdProduct\r\n },\r\n null,\r\n 'modalQuestionCtrl'\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 ctrl.submit = async () => {\r\n ctrl.loading = true;\r\n //Prise en compte du token de securité des formulaires\r\n ctrl.data.Token = $(\"input:hidden[name='securitytoken_question']\").val();\r\n\r\n try {\r\n const response = await HttpService.post({\r\n url: ctrl.IsCrmV2 ? '/Message/QuestionProduct' : '/Product/QuestionProduct',\r\n data: ctrl.data\r\n });\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', 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 const { errors } = await AppService.getTranslate();\r\n Object.keys(response.errors).forEach(key => {\r\n toastr.warning('', errors[response.errors[key].Errors[0].ErrorMessage], {\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 }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n ctrl.loading = false;\r\n };\r\n\r\n onInit();\r\n // Functions\r\n async function onInit() {\r\n const params = await AppService.getParams();\r\n\r\n ctrl.IsCrmV2 = params.Site.IsCrmV2;\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 })\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.dropzone;\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\r\n /* @ngInject */\r\n .controller('modalCallBackCtrl', function (device, options, $scope, HttpService, AppService, RoutesService, ModalService) {\r\n const ctrl = this;\r\n ctrl.data = {};\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n $scope.device = device;\r\n\r\n AppService.getParams()\r\n .then(function (params) {\r\n if (params.IsLogged) {\r\n ctrl.isLogged = true;\r\n ctrl.data.NumberToCall = params.Visitor.MobilePhone ? params.Visitor.MobilePhone : params.Visitor.Phone;\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n\r\n HttpService.post({\r\n url: `/${RoutesService.getUrlByName('Click2Call')}`,\r\n data: ctrl.data\r\n })\r\n .then(function () {\r\n ModalService.close();\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n ModalService.close();\r\n ctrl.loading = 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 if (angular.isUndefined(metadata.homepage)) {\r\n $(document.body).removeClass('homepage');\r\n } else {\r\n $(document.body).addClass('homepage');\r\n }\r\n scope.$emit('homepage', angular.isDefined(metadata.homepage));\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","/*\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 _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: `/page-cms/${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 maxHeight += parseInt(element.css('padding-top')) + parseInt(element.css('padding-bottom'));\r\n\r\n if ($scrollContainer.position()) {\r\n maxHeight += $scrollContainer.position().top;\r\n }\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","/* 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', async 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 await 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 async function getProducts(products) {\r\n try {\r\n const response = await NetwaveService.getProducts(products);\r\n\r\n if (!response || !response.length) return;\r\n\r\n ctrl.products = response.filter(p => p.IDProduct !== 0);\r\n\r\n await Promise.all(ctrl.products.map(async function (product) {\r\n product.ReviewsInfo = product.ReviewsInfo ? { Count: product.ReviewsInfo.Count, Average: Math.floor(product.ReviewsInfo.Average) } : null;\r\n product.domId = `wsbR_${product.IDProduct}@${ctrl.zone}`;\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\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 } catch (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","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: linkFunction\r\n };\r\n\r\n // Fonction de liaison\r\n function linkFunction(scope, element) {\r\n // Sélectionne les éléments enfants avec la classe 'row'\r\n const rowElements = element.children('.row');\r\n // Si aucun élément 'row' n'est trouvé, quitte la fonction\r\n if (!rowElements.length) {\r\n return;\r\n }\r\n\r\n // Génère un ID temporaire en utilisant l'ID existant ou en créant un nouveau\r\n const tmpId = element.attr('id') || generateUniqueId();\r\n element.attr('id', tmpId);\r\n\r\n // Configure les écouteurs d'événements\r\n setupEventListeners();\r\n\r\n // Nettoie l'écouteur d'événement lorsque la portée (scope) est détruite\r\n scope.$on('$destroy', () => {\r\n WindowEventsService.listen(false, 'resize', onResize);\r\n });\r\n\r\n // Réagit à l'événement 'updateVisitorContext' en appelant la fonction onResize\r\n scope.$on('updateVisitorContext', onResize);\r\n // Appelle la fonction onResize une fois au chargement initial de la directive\r\n onResize();\r\n\r\n // Configure les écouteurs d'événements pour les redimensionnements\r\n function setupEventListeners() {\r\n // Active l'écouteur d'événement 'resize' avec un délai de 500 ms\r\n WindowEventsService.listen(true, 'resize', onResize, 500);\r\n }\r\n\r\n // Fonction appelée lors d'un redimensionnement\r\n function onResize() {\r\n // Utilise setTimeout pour exécuter le redimensionnement de manière asynchrone\r\n setTimeout(() => {\r\n ProductsGridService.resizeGrid(tmpId, scope.device.size, false);\r\n });\r\n }\r\n\r\n // Génère un ID unique pour l'élément si nécessaire\r\n function generateUniqueId() {\r\n return `pg_${ProductsGridService.getId()}`;\r\n }\r\n }\r\n })\r\n\r\n // Service pour gérer le redimensionnement et l'ajustement des hauteurs des éléments dans une grille de produits\r\n .service('ProductsGridService', function () {\r\n const MAX_COLUMN_CLASS = 12;\r\n\r\n // Générer et retourner une fonction pour générer des IDs uniques\r\n this.getId = () => {\r\n let tmpId = 0;\r\n return () => tmpId++;\r\n };\r\n\r\n // Redimensionner la grille des produits en ajustant les hauteurs\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 // Vérifier s'il y a suffisamment d'éléments pour ajuster\r\n if ($divs.length < 2) return;\r\n\r\n // Réinitialiser la hauteur initiale si nécessaire\r\n if (!lazy) {\r\n resetInitialHeight($divs);\r\n }\r\n\r\n // Calculer le nombre de colonnes en fonction de la taille de l'écran\r\n const nb = calculateColumnCount($divs, size, sizes);\r\n if (nb === 1) return;\r\n\r\n // Ajuster les hauteurs des éléments de la grille\r\n adjustHeights($divs, nb);\r\n };\r\n\r\n // Réinitialiser la hauteur initiale des éléments\r\n function resetInitialHeight($divs) {\r\n $divs.children().addClass('init').find('.content').children().height('');\r\n }\r\n\r\n // Calculer le nombre de colonnes en fonction de la taille de l'écran\r\n function calculateColumnCount($divs, size, sizes) {\r\n const colClass = $divs.eq(0).attr('class').split(`col-${size}-`)[1];\r\n if (!colClass) {\r\n return;\r\n }\r\n\r\n let nb;\r\n if (!sizes) {\r\n nb = MAX_COLUMN_CLASS / colClass.split(' ')[0];\r\n } else {\r\n const width = document.body.clientWidth;\r\n nb = sizes.reduce((acc, o) => (width < o.breakpoint ? o.nb : acc), 0);\r\n }\r\n return nb;\r\n }\r\n\r\n // Ajuster les hauteurs des éléments dans chaque section de la grille\r\n function adjustHeights($divs, nb) {\r\n const productItems = $divs.find('.product-item');\r\n\r\n for (let i = 0; i < productItems.length; i += nb) {\r\n const $itemsSlice = $divs.slice(i, i + nb);\r\n const targ = $itemsSlice\r\n .children('.init')\r\n .removeClass('init')\r\n .find('.content');\r\n const comp = $itemsSlice.find('.compare');\r\n\r\n // Ajuster les hauteurs des éléments dans la section actuelle\r\n const contentChildren = targ.eq(0).children();\r\n for (let j = 0; j < contentChildren.length; j++) {\r\n const $child = $(contentChildren.eq(j));\r\n const className = $child.attr('class').split(' ')[0];\r\n targ.find(`.${className}`).equalHeights();\r\n }\r\n\r\n // Ajouter une classe si la section a des éléments de comparaison\r\n if (comp.children().length) {\r\n comp.addClass('has-compare');\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","import { inRange } from 'lodash-es';\r\nimport cartPostProcess from 'import/js/services/cart.postprocess.js';\r\n\r\nexport default angular\r\n .module('service.app', [])\r\n .factory('AppService', AppService);\r\n\r\nAppService.$inject = ['$q', '$rootScope', '$templateCache', 'HttpService', 'ModalService', 'RoutesService'];\r\n\r\nfunction AppService($q, $rootScope, $templateCache, HttpService, ModalService, RoutesService) {\r\n let appPromise;\r\n let translate;\r\n let MobilityVisitorContext;\r\n let allParams;\r\n\r\n const service = {\r\n getParams,\r\n resetParams,\r\n updateParams,\r\n getTranslate,\r\n getProductPrice,\r\n updateStore,\r\n updateKey,\r\n emailExists,\r\n updateSecurityToken,\r\n getAllParams\r\n };\r\n\r\n return service;\r\n\r\n // Cette fonction est utilisée pour récupérer les paramètres \"statiques\" du site web, à ne pas utiliser pour des paramètres dynamiques (ex: Cart)\r\n // Elle permet également de récupérer un paramètre spécifique.\r\n async function getAllParams(searchedParameter = '') {\r\n try {\r\n // Si les paramètres ne sont pas encore récupérés, effectue un appel HTTP pour les obtenir.\r\n if (!allParams) {\r\n allParams = await HttpService.get({\r\n url: RoutesService.getUrlByName('AppParams'),\r\n cache: true\r\n });\r\n }\r\n\r\n // Si aucun paramètre spécifique n'est fourni, retourne l'ensemble des paramètres.\r\n if (searchedParameter === '') {\r\n return allParams;\r\n }\r\n\r\n // Recherche le paramètre spécifique parmi les paramètres récupérés. Si ce dernier est identifié dans l'une des structures imbriquées, retourne la valeur correspondante ; sinon, renvoie null.\r\n const findParam = (obj, paramName) => {\r\n for (const key in obj) {\r\n if (obj.hasOwnProperty(key)) {\r\n if (angular.isObject(obj[key])) {\r\n const result = findParam(obj[key], paramName);\r\n if (result !== null) {\r\n return result;\r\n }\r\n } else if (key === paramName) {\r\n return obj[key];\r\n }\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n return findParam(allParams, searchedParameter);\r\n } catch (error) {\r\n // En cas d'erreur, affiche l'erreur dans la console et la propage.\r\n console.error(error);\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Obtient les paramètres de l'application, en utilisant une promesse pour gérer les appels asynchrones.\r\n * @param {boolean} refresh - Indique si un rafraîchissement forcé est nécessaire.\r\n * @returns {Promise} Une promesse qui se résout avec les données de l'application.\r\n */\r\n async function getParams(refresh) {\r\n // Vérifie si un rafraîchissement est nécessaire et si la promesse existe déjà.\r\n if (!refresh && !angular.isUndefined(appPromise)) {\r\n return appPromise;\r\n }\r\n\r\n // Si appPromise n'est pas définie, cela signifie que la fonction est appelée pour la première fois,\r\n // donc nous effectuons une récupération complète des données en définissant refresh sur true.\r\n refresh = angular.isUndefined(appPromise) ? true : refresh;\r\n\r\n try {\r\n const timestamp = refresh ? `?${new Date().getTime()}&refresh=true` : '';\r\n const response = await HttpService.get({\r\n // Crée une URL avec un timestamp unique pour contourner les mécanismes de mise en cache des navigateurs (IE11).\r\n url: `/App${timestamp}`,\r\n keepDataObject: true\r\n });\r\n\r\n // Diffuse des événements pour mettre à jour le contexte du visiteur.\r\n $rootScope.$broadcast('updateVisitorContext', response.data.VisitorContext);\r\n $rootScope.$broadcast('getParams', response.data.VisitorContext.IsLogged);\r\n\r\n // Copie les données du contexte du visiteur et effectue des transformations nécessaires.\r\n const data = { ...angular.copy(response.data.VisitorContext), Mobility: response.data.MTYVisitorContext };\r\n data.Cart = cartPostProcess(data.Cart);\r\n\r\n // Efface le cache du modèle en fonction du rafraîchissement.\r\n clearTemplateCache(refresh);\r\n\r\n // Résout la promesse avec les données.\r\n appPromise = $q.resolve(data);\r\n return appPromise;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n\r\n function resetParams() {\r\n appPromise = undefined;\r\n }\r\n\r\n // Fonction asynchrone pour mettre à jour les paramètres\r\n function updateParams(data, noevent) {\r\n // Effectue un post-traitement sur la propriété Cart\r\n data.Cart = cartPostProcess(data.Cart);\r\n\r\n // Si la mobilité n'est pas définie dans les données et que MobilityVisitorContext existe, utilisez MobilityVisitorContext\r\n if (!data.Mobility && MobilityVisitorContext) {\r\n data.Mobility = MobilityVisitorContext;\r\n }\r\n\r\n // Crée une promesse résolue avec les données\r\n appPromise = $q.resolve(data);\r\n\r\n // Si noevent est vrai, retourne immédiatement sans déclencher d'événements\r\n if (noevent) return;\r\n\r\n // Diffuse un événement 'cartUpdate'\r\n $rootScope.$broadcast('cartUpdate');\r\n\r\n // Si la propriété 'Store' existe dans les données, diffuse un événement 'storeUpdate'\r\n if (data.Store) {\r\n $rootScope.$broadcast('storeUpdate', null, { VisitorContext: data });\r\n }\r\n }\r\n\r\n function updateSecurityToken(data, token, name = 'securitytoken') {\r\n if (token) {\r\n if (data) {\r\n data.Token = token;\r\n }\r\n const hSecurityToken = $(`input:hidden[name=\\\"${name}\\\"]`);\r\n\r\n if (hSecurityToken) {\r\n hSecurityToken.val(token);\r\n }\r\n }\r\n }\r\n\r\n async function getTranslate() {\r\n if (angular.isUndefined(translate)) {\r\n try {\r\n const { data } = await HttpService.get({\r\n url: '/Template/Translate/Translate',\r\n keepDataObject: true\r\n });\r\n translate = data;\r\n } catch (error) {\r\n throw error;\r\n }\r\n }\r\n return translate;\r\n }\r\n\r\n function getProductPrice(priceObj, qty) {\r\n if (!priceObj.prices) {\r\n const prices = [\r\n {\r\n qty: 1,\r\n range: [0],\r\n HasDiscount: priceObj.HasDiscount,\r\n Discount: priceObj.Discount,\r\n HTDiscountedPrice: priceObj.HTDiscountedPrice,\r\n TTCDiscountedPrice: priceObj.TTCDiscountedPrice,\r\n HTPrice: priceObj.HTPrice,\r\n TTCPrice: priceObj.TTCPrice,\r\n DegressivePrice: priceObj.DegressivePrice\r\n }\r\n ];\r\n if (Object.entries(priceObj.DegressivePrice).length) {\r\n let i = 0;\r\n Object.entries(priceObj.DegressivePrice).forEach(([key]) => {\r\n const item = priceObj.DegressivePrice[key];\r\n prices[i].range.push(Number(key));\r\n\r\n prices.push({\r\n qty: Number(key),\r\n range: [Number(key)],\r\n HasDiscount: item.HasDiscount,\r\n Discount: item.Discount,\r\n HTDiscountedPrice: item.HTDiscountedPrice,\r\n TTCDiscountedPrice: item.TTCDiscountedPrice,\r\n HTPrice: item.HTPrice,\r\n TTCPrice: item.TTCPrice\r\n });\r\n\r\n i++;\r\n });\r\n }\r\n priceObj.prices = prices;\r\n }\r\n\r\n let current = {};\r\n priceObj.prices.forEach(price => {\r\n if (price.range && inRange(qty, price.range[0], price.range[1] || 10000)) {\r\n current = price;\r\n return false;\r\n }\r\n });\r\n return current;\r\n }\r\n\r\n function updateStore(visitorContext) {\r\n appPromise.$$state.value.Store = visitorContext.Store;\r\n appPromise.$$state.value.Visitor.Store = visitorContext.Visitor.Store;\r\n }\r\n\r\n function updateKey(key, object) {\r\n appPromise.$$state.value[key] = object;\r\n }\r\n\r\n async function emailExists({ email, openModal, action }) {\r\n const { IsLogged } = await getParams();\r\n if (!IsLogged) {\r\n try {\r\n const { status, errors } = await HttpService.post({\r\n url: '/TestMailExist',\r\n data: {\r\n Email: email\r\n }\r\n });\r\n if (status === 'ERROR') {\r\n const errorKey = Object.keys(errors).find(key => key === 'Global' && errors[key].Errors[0].ErrorMessage === 'AccountExist');\r\n if (errorKey !== undefined) {\r\n if (openModal) {\r\n ModalService.close();\r\n const options = {\r\n mailRecognized: email\r\n };\r\n if (action) {\r\n options.action = action;\r\n }\r\n ModalService.show('/Template/Authentication/ModalAuthentication', options, null, 'loginModalCtrl');\r\n }\r\n\r\n return {\r\n exists: true,\r\n errors: errors[errorKey].Errors\r\n };\r\n }\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n return {\r\n exists: false\r\n };\r\n }\r\n\r\n // Private\r\n function clearTemplateCache(refresh) {\r\n if (!refresh) return;\r\n\r\n const keys = [...$templateCache.getKeys()];\r\n keys.forEach(key => {\r\n if (key.indexOf('/') === 0 && !key.includes('ModalAddToCart')) {\r\n $templateCache.remove(key);\r\n }\r\n });\r\n }\r\n}\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.ga4', [])\r\n\r\n /* @ngInject */\r\n .factory('GA4Service', function (AppService) {\r\n\r\n const ga4Enable = async function () {\r\n const ga4 = await AppService.getAllParams('GA4_Enable');\r\n return ga4;\r\n };\r\n\r\n // Récupérer un item\r\n const getItem = function (product, categories, affiliation, coupon) {\r\n if (!product) return;\r\n let parentProduct = null;\r\n if (product.hasOwnProperty('Product') && product.Product) {\r\n parentProduct = product;\r\n product = product.Product;\r\n }\r\n const item = {\r\n item_id: getReference(product, parentProduct),\r\n item_name: getDesignation(product, parentProduct),\r\n affiliation,\r\n coupon,\r\n discount: product.Price ? Math.round((product?.Price?.TTCPrice - product?.Price?.TTCDiscountedPrice) * 100) / 100 : null,\r\n item_brand: getBrand(product, parentProduct),\r\n price: product.Price ? product.Price.TTCPrice : null,\r\n quantity: Math.abs(getQuantity(product, parentProduct)),\r\n item_category: categories && categories.length > 0 ? categories[categories.length - 1] : null,\r\n item_category2: categories && categories.length > 1 ? categories[categories.length - 2] : null,\r\n item_category3: categories && categories.length > 2 ? categories[categories.length - 3] : null,\r\n item_category4: categories && categories.length > 3 ? categories[categories.length - 4] : null,\r\n item_category5: categories && categories.length > 4 ? categories[categories.length - 5] : null,\r\n item_variant: product.hasOwnProperty('IDGroupingProduct') ? product.IDGroupingProduct : null\r\n };\r\n const properties = Object.entries(item);\r\n for (let i = 0; i < properties.length; i++) {\r\n if (typeof properties[i][1] === 'undefined' || properties[i][1] === null) {\r\n delete item[properties[i][0]];\r\n }\r\n }\r\n return item;\r\n };\r\n\r\n const getQuantity = function (product, parentProduct) {\r\n if (product && product.hasOwnProperty('Quantity')) {\r\n return product.Quantity;\r\n } else if (product && product.hasOwnProperty('quantity')) {\r\n return product.quantity;\r\n } else if (parentProduct && parentProduct.hasOwnProperty('Quantity')) {\r\n return parentProduct.Quantity;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const getDesignation = function (product, parentProduct) {\r\n if (product && product.hasOwnProperty('Designation')) {\r\n return product.Designation;\r\n } else if (product && product.hasOwnProperty('designation')) {\r\n return product.designation;\r\n } else if (parentProduct && parentProduct.hasOwnProperty('Designation')) {\r\n return parentProduct.Designation;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const getBrand = function (product) {\r\n if (product && product.hasOwnProperty('Brand') && product.Brand.hasOwnProperty('Designation')) {\r\n return product.Brand.Designation;\r\n } else if (product && product.hasOwnProperty('brand')) {\r\n return product.brand;\r\n }\r\n\r\n return null;\r\n };\r\n\r\n const getReference = function (product, parentProduct) {\r\n if (product && product.hasOwnProperty('Reference')) {\r\n return product.Reference;\r\n } else if (product && product.hasOwnProperty('reference')) {\r\n return product.reference;\r\n } else if (parentProduct && parentProduct.hasOwnProperty('Reference')) {\r\n return parentProduct.Reference;\r\n }\r\n return null;\r\n };\r\n\r\n const getSumOfPriceProducts = function (products) {\r\n return products\r\n .map(function (product) {\r\n return (Math.round(product?.Price?.TTCDiscountedPrice * 100) / 100) * Math.abs(getQuantity(product));\r\n })\r\n .reduce((previousValue, currentValue) => previousValue + currentValue, 0);\r\n };\r\n\r\n const pushToDataLayer = function (object) {\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(object);\r\n };\r\n\r\n /// GA4\r\n\r\n // Choix du paiement\r\n this.addPaymentInfo = async function (cart) {\r\n if (!(await ga4Enable())) return;\r\n const coupon = cart && cart.TradeActions.length > 0 ? cart.TradeActions[0].TradeActionPromoCode : null;\r\n const items = cart.Products.map(function (product) {\r\n const categories = [];\r\n return getItem(product, categories);\r\n });\r\n\r\n const addPaymentInfo = {\r\n event: 'add_payment_info',\r\n ecommerce: {\r\n currency: 'EUR',\r\n value: cart.ProductTotalTTC,\r\n coupon,\r\n payment_type: cart.PaymentMethod.Designation,\r\n items\r\n }\r\n };\r\n\r\n pushToDataLayer(addPaymentInfo);\r\n };\r\n\r\n // Choix de la livraison\r\n this.addShippingInfo = async function (cart) {\r\n if (!(await ga4Enable())) return;\r\n const coupon = cart && cart.TradeActions.length > 0 ? cart.TradeActions[0].TradeActionPromoCode : null;\r\n const items = cart.Products.map(function (product) {\r\n return getItem(product);\r\n });\r\n\r\n const addShippingInfo = {\r\n event: 'add_shipping_info',\r\n ecommerce: {\r\n currency: 'EUR',\r\n value: cart.ProductTotalTTC,\r\n coupon,\r\n items\r\n }\r\n };\r\n\r\n pushToDataLayer(addShippingInfo);\r\n };\r\n\r\n // Visualiser un article\r\n this.viewItem = async function (product, affiliation) {\r\n if (!(await ga4Enable())) return;\r\n const categories = product.parents.map(function (parent) {\r\n return parent.Designation;\r\n });\r\n\r\n const items = [];\r\n items.push(getItem(product, categories, affiliation));\r\n\r\n const viewItem = {\r\n event: 'view_item',\r\n ecommerce: {\r\n currency: 'EUR',\r\n value: product.Price.TTCDiscountedPrice,\r\n items\r\n }\r\n };\r\n\r\n pushToDataLayer(viewItem);\r\n };\r\n\r\n // Visualiser une catégorie\r\n this.viewItemList = async function (products, parents, affiliation) {\r\n if (!(await ga4Enable())) return;\r\n let categories = [];\r\n if (parents) {\r\n categories = parents.map(function (parent) {\r\n return parent.Designation;\r\n });\r\n }\r\n const items = products.map(function (product) {\r\n return getItem(product, categories, affiliation);\r\n });\r\n\r\n const viewItemList = {\r\n event: 'view_item_list',\r\n ecommerce: {\r\n item_list_name: categories[0],\r\n items\r\n }\r\n };\r\n\r\n pushToDataLayer(viewItemList);\r\n };\r\n\r\n // Ajout au panier\r\n this.addToCart = async function (tradeActions, products, currency, affiliation) {\r\n if (!(await ga4Enable())) return;\r\n const coupon = tradeActions.length > 0 && tradeActions[0].hasOwnProperty('TradeActionPromoCode') ? tradeActions[0].TradeActionPromoCode : null;\r\n const items = products.map(function (product) {\r\n let categories = [];\r\n if (product.parents) {\r\n categories = product.parents.map(function (parent) {\r\n return parent.Designation;\r\n });\r\n }\r\n return getItem(product, categories, affiliation, coupon);\r\n });\r\n // On calcule la somme des articles ajoutés au panier\r\n const totalTTC = getSumOfPriceProducts(products);\r\n const addToCart = {\r\n event: 'add_to_cart',\r\n ecommerce: {\r\n currency,\r\n value: totalTTC,\r\n items\r\n }\r\n };\r\n\r\n pushToDataLayer(addToCart);\r\n };\r\n\r\n // Supprimer un article du panier\r\n this.removeFromCart = async function (tradeActions, products, currency, affiliation) {\r\n if (!(await ga4Enable())) return;\r\n if (products.length < 1) return;\r\n const coupon = tradeActions.length > 0 && tradeActions[0].hasOwnProperty('TradeActionPromoCode') ? tradeActions[0].TradeActionPromoCode : null;\r\n const items = products.map(function (product) {\r\n return getItem(product, null, affiliation, coupon);\r\n });\r\n // On calcule la somme des articles supprimés du panier\r\n const totalTTC = getSumOfPriceProducts(products);\r\n const removeFromCart = {\r\n event: 'remove_from_cart',\r\n ecommerce: {\r\n currency,\r\n value: totalTTC,\r\n items\r\n }\r\n };\r\n\r\n pushToDataLayer(removeFromCart);\r\n };\r\n\r\n // Search\r\n this.search = async function (searchTerm, products, affiliation) {\r\n if (!(await ga4Enable())) return;\r\n const items = products.map(function (product) {\r\n return getItem(product, null, affiliation);\r\n });\r\n\r\n const viewItemList = {\r\n event: 'search',\r\n ecommerce: {\r\n search_term: searchTerm,\r\n items\r\n }\r\n };\r\n\r\n pushToDataLayer(viewItemList);\r\n };\r\n\r\n this.viewCart = async function (cart, currency, affiliation) {\r\n if (!(await ga4Enable())) return;\r\n const categories = [];\r\n const items = cart.Products.map(function (product) {\r\n return getItem(product, categories, affiliation);\r\n });\r\n\r\n const viewCart = {\r\n event: 'view_cart',\r\n ecommerce: {\r\n currency,\r\n value: cart.NetToPay,\r\n items\r\n }\r\n };\r\n\r\n pushToDataLayer(viewCart);\r\n };\r\n\r\n this.beginCheckout = async function (cart, currency, affiliation) {\r\n if (!(await ga4Enable())) return;\r\n const categories = [];\r\n const items = cart.Products.map(function (product) {\r\n return getItem(product, categories, affiliation);\r\n });\r\n const beginCheckout = {\r\n event: 'begin_checkout',\r\n ecommerce: {\r\n currency,\r\n value: cart.NetToPay,\r\n coupon: null,\r\n items\r\n }\r\n };\r\n\r\n pushToDataLayer(beginCheckout);\r\n };\r\n /* Purchase is done in back at GTMService */\r\n this.purchase = async function (cart, currency) {\r\n if (!(await ga4Enable())) return;\r\n const purchase = {\r\n event: 'purchase',\r\n ecommerce: {\r\n transaction_id: null,\r\n value: cart.NetToPay,\r\n tax: null,\r\n shipping: null,\r\n currency,\r\n coupon: null,\r\n items: null\r\n }\r\n };\r\n\r\n pushToDataLayer(purchase);\r\n };\r\n\r\n return {\r\n addPaymentInfo: this.addPaymentInfo,\r\n addShippingInfo: this.addShippingInfo,\r\n viewItem: this.viewItem,\r\n viewItemList: this.viewItemList,\r\n addToCart: this.addToCart,\r\n removeFromCart: this.removeFromCart,\r\n viewCart: this.viewCart,\r\n beginCheckout: this.beginCheckout,\r\n search: this.search\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 = /^(?:\\+\\d{1,3}\\s?)?(?:\\d{1,3}|\\d{1,4})\\s?\\d{1,4}\\s?\\d{1,9}$/; // 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}$/,\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 = /^(?:\\+\\d{1,3}\\s?)?(?:\\d{1,3}|\\d{1,4})\\s?\\d{1,4}\\s?\\d{1,9}$/; // N'importe quel numéro de téléphone voici l'équivalent non échappé: /^(?:+\\d{1,3})?(?:\\d1,3\\d1,3|\\d{1,4})\\d{1,4}\\d{1,9}$/\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 1: /^(?:\\+\\d{1,3}\\s?)?(?:\\d{1,3}|\\d{1,4})\\s?\\d{1,4}\\s?\\d{1,9}$/, // France métropolitaine voici l'équivalent non échappé: /^(?:+\\d{1,3})?(?:\\d1,3\\d1,3|\\d{1,4})\\d{1,4}\\d{1,9}$/\r\n 26: /^(?:\\+\\d{1,3}\\s?)?(?:\\d{1,3}|\\d{1,4})\\s?\\d{1,4}\\s?\\d{1,9}$/ //Belgique voici l'équivalent non échappé: /^(?:+\\d{1,3})?(?:\\d1,3\\d1,3|\\d{1,4})\\d{1,4}\\d{1,9}$/\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\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': 1,\r\n 'BE': 26\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 /* @ngInject */\r\n .directive('disallowSpaces', function () {\r\n return {\r\n restrict: 'A',\r\n\r\n link: function ($scope, $element) {\r\n $element.bind('input', function () {\r\n $(this).val($(this).val().replace(/ /g, ''));\r\n });\r\n }\r\n };\r\n })\r\n /* @ngInject */\r\n .directive('accountPostcode', 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 = /^(.*)$/; //Par défaut pas de regex: on accepte tout\r\n let regexPostcode = std;\r\n const spe = {\r\n 1: /^(0[1-9]|[1-8][0-9]|9[0-8])\\d{3}$/, // France métropolitaine\r\n 27: /^\\d{4}$/, // 27 => Belgique\r\n 8: /^\\d{5}$/, // 8 => Allemagne\r\n 114: /^\\d{5}$/, // 114 => Italie\r\n 72: /^(0[1-9]|[1-4]\\d|5[0-2])\\d{3}$/, // 72 => Espagne\r\n 215: /^\\d{4}$/, // 215 => Suisse\r\n 189: /^(GIR\\s?0AA|[A-PR-UWYZ](\\d{1,2}|([A-HK-Y]\\d|[A-HK-Y]\\d([A-Z])?)|[A-HK-Y]\\d(\\d([A-Z])?)?)\\s?\\d[ABD-HJLN-UW-Z]{2})$/ // 189 => Royaume-Uni\r\n };\r\n const stdPostcodeMessage = 'Le code postal renseigné est invalide'; // France métropolitaine\r\n const spePostcodeMessage = {\r\n 27: 'Le code postal renseigné est invalide', // 27 => Belgique\r\n 8: 'Die eingegebene Postleitzahl ist ungültig', // 8 => Allemagne\r\n 114: 'Il codice postale inserito non è valido', // 114 => Italie\r\n 72: 'El código postal ingresado no es válido', // 72 => Espagne\r\n 215: 'Le code postal renseigné est invalide', // 215 => Suisse\r\n 189: 'The postal code entered is invalid' // 189 => Royaume-Uni\r\n };\r\n\r\n const watcher = scope.$watch(attrs.accountPostcode, function (value) {\r\n regexPostcode = (value in spe) ? spe[value] : std;\r\n refreshField(value);\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.postcode = postcodeValidator;\r\n\r\n function postcodeValidator(modelValue) {\r\n if (!modelValue) {\r\n return true;\r\n }\r\n\r\n return regexPostcode.test(modelValue);\r\n }\r\n\r\n function refreshField(country) {\r\n modelCtrl.$setValidity('postcode', true);\r\n $timeout(function () {\r\n scope.$apply(function () {\r\n const message = (country in spePostcodeMessage) ? spePostcodeMessage[country] : stdPostcodeMessage;\r\n attrs.$set('postcode-notification', message);\r\n modelCtrl.$validate();\r\n });\r\n });\r\n }\r\n }\r\n };\r\n });\r\n","var _module_exports = \"
    \";;\nvar path = 'Modules/Product/import/component.product-bottom.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","export default angular\r\n .module('directive.top.promos', [])\r\n\r\n /* @ngInject */\r\n .directive('topPromos', function () {\r\n return {\r\n restrict: 'E',\r\n scope: true,\r\n bindToController: {\r\n count: '<'\r\n },\r\n controllerAs: 'ctrl',\r\n /* @ngInject */\r\n controller: function ($element, $rootScope, $timeout, $interval, $cookies) {\r\n const ctrl = this;\r\n let interval;\r\n\r\n ctrl.$onInit = () => {\r\n if (ctrl.count === 0) return;\r\n\r\n ctrl.index = 0;\r\n\r\n const cookiesTopPromos = $cookies.get('cookieTopPromos');\r\n\r\n $timeout(() => {\r\n ctrl.active = cookiesTopPromos ? 2 : 1;\r\n $timeout(\r\n () => {\r\n $rootScope.$broadcast('topUpdate');\r\n },\r\n 0,\r\n false\r\n );\r\n if (!cookiesTopPromos) {\r\n if (ctrl.count > 1) startAnimate();\r\n resize();\r\n } else {\r\n $element.parent().addClass('top-promos-closed');\r\n }\r\n }, 0);\r\n };\r\n\r\n ctrl.close = () => {\r\n ctrl.active = 2;\r\n $element.parent().addClass('top-promos-closed');\r\n $timeout(\r\n () => {\r\n $rootScope.$broadcast('topUpdate');\r\n },\r\n 400,\r\n false\r\n );\r\n stopAnimate();\r\n $timeout(() => {}, 600, false);\r\n const now = new Date();\r\n const exp = new Date(now.getFullYear(), now.getMonth() + 1, now.getDate());\r\n $cookies.put('cookieTopPromos', 'true', {\r\n path: '/',\r\n expires: exp\r\n });\r\n };\r\n\r\n ctrl.open = () => {\r\n ctrl.active = 1;\r\n $element.parent().removeClass('top-promos-closed');\r\n $timeout(\r\n function () {\r\n $rootScope.$broadcast('topUpdate');\r\n },\r\n 400,\r\n false\r\n );\r\n $cookies.remove('cookieTopPromos');\r\n startAnimate();\r\n resize();\r\n };\r\n\r\n // Functions\r\n function startAnimate() {\r\n interval = $interval(() => {\r\n ctrl.index = ctrl.index === ctrl.count - 1 ? 0 : ctrl.index + 1;\r\n }, 5000);\r\n\r\n ctrl.$onDestroy = () => {\r\n stopAnimate();\r\n };\r\n }\r\n\r\n function stopAnimate() {\r\n $interval.cancel(interval);\r\n }\r\n\r\n function resize() {\r\n $timeout(\r\n () => {\r\n let h = 0;\r\n const bodyFontSize = parseInt($('body').css('font-size'), 10);\r\n const innerfontSize = parseInt($element.find('.inner').children('.item').css('font-size'), 10);\r\n const fontSizeEm = innerfontSize / bodyFontSize;\r\n $element\r\n .find('.inner')\r\n .children('.item')\r\n .each(function () {\r\n h = Math.max(h, $(this).outerHeight() * fontSizeEm);\r\n });\r\n $element.find('.inner').height(h);\r\n },\r\n 400,\r\n false\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 (\r\n $injector,\r\n $scope,\r\n $rootScope,\r\n $element,\r\n $document,\r\n $location,\r\n $route,\r\n $timeout,\r\n toastr,\r\n AccountService,\r\n LogService,\r\n AppService,\r\n RoutingService,\r\n ModalService\r\n ) {\r\n const ctrl = this;\r\n\r\n ctrl.links = AccountService.getLinks();\r\n\r\n ctrl.$onInit = async () => {\r\n ctrl.clientIsActive = true;\r\n const params = await AppService.getParams();\r\n if (params.Agent && params.Mobility.AgentId !== 0) {\r\n ctrl.clientIsActive = params.Mobility.Profile.AllModules.find(p => p.ModuleKey === 'clients')?.IsActive;\r\n }\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 const $header = $('#header');\r\n\r\n ctrl.toggle = () => {\r\n toggle();\r\n };\r\n\r\n ctrl.login = async event => {\r\n // La fonction \"toggle()\" qui permet d’afficher ou de masquer la fenêtre des menus du compte client est appelée si l’utilisateur est en affichage mobile, qu’il est connecté et que l’élément HTML cliqué n’est pas un des menus de cette fenêtre.\r\n const navMenuElement = $('#navmenu-fixed-right > .content')[0];\r\n if (ctrl.device.mobile && ctrl.isLogged && (navMenuElement && !navMenuElement.contains(event.target))) {\r\n toggle();\r\n return;\r\n }\r\n if (ctrl.isLogged) return;\r\n\r\n event.preventDefault();\r\n\r\n const params = await AppService.getParams();\r\n if (!params.Agent) {\r\n ModalService.show('/Template/Authentication/ModalAuthentication', null, null, 'loginModalCtrl');\r\n } else {\r\n showMobiClient();\r\n }\r\n };\r\n\r\n ctrl.logout = async () => {\r\n const params = await AppService.getParams();\r\n if (params.Agent && params.Visitor.IDCard !== 3) {\r\n showMobiClient();\r\n return;\r\n }\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(true);\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 {\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 $('.navmenu-fixed-right').css({ top: $header.position().top + $header.height() - $(window).scrollTop() });\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 async function showMobiClient() {\r\n const service = $injector.get('MtyService');\r\n const lexic = (await service.getTranslate()).web;\r\n\r\n ModalService.show(\r\n '/Template/MTYClients/ModalClients',\r\n {\r\n title: lexic.MOBI_Clients_Connection,\r\n text: lexic.MOBI_Clients_Choice,\r\n isWeb: true,\r\n buttonPrimary: 'confirm',\r\n device: $scope.device\r\n },\r\n null,\r\n 'modalMtyClientsCtrl',\r\n 'clientsCtrl',\r\n null,\r\n null,\r\n null,\r\n () => {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n }\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.mini-cart', [])\r\n .directive('miniCart', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n isAddtocartNotlogged: '<'\r\n },\r\n controller: MiniCartController,\r\n controllerAs: 'miniCartCtrl'\r\n };\r\n });\r\n\r\nclass MiniCartController {\r\n /* @ngInject */\r\n constructor($scope, $element, $filter, $location, AppService, CartService, RoutesService, ModalService) {\r\n const ctrl = this;\r\n const tplTranslate = {};\r\n\r\n // Récupère les éléments à traduire\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 (async function () {\r\n try {\r\n await getCart();\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n })();\r\n\r\n async function getCart(withRefresh) {\r\n try {\r\n ctrl.cartIsActive = true;\r\n const params = await AppService.getParams(withRefresh);\r\n\r\n // Vérifie si le panier est actif en fonction des paramètres\r\n if (params.Agent && !params.Mobility.Profile.AllModules.find(p => p.ModuleKey === 'sale')?.IsActive) {\r\n ctrl.cartIsActive = false;\r\n }\r\n\r\n // Détermine le chemin du panier en fonction de la localisation\r\n const cartPath = $location.path() !== `/${RoutesService.getUrlByName('QuickOrder')}` ? `/${RoutesService.getUrlByName('Cart')}` : `/${RoutesService.getUrlByName('QuickOrder')}`;\r\n\r\n // Vérifie s'il y a un panier et des produits\r\n ctrl.hasCart = params.HasCart && params.Cart && params.Cart.Products && params.Cart.Products.length;\r\n ctrl.cartLink = !ctrl.hasCart ? '' : cartPath;\r\n ctrl.showTTCPrice = params.Visitor.CardType.ShowTTCPrice;\r\n ctrl.addtocartOK = ctrl.isAddtocartNotlogged && !params.IsLogged ? false : true;\r\n ctrl.count = 0;\r\n\r\n if (ctrl.hasCart) {\r\n ctrl.data = params.Cart;\r\n\r\n // Marque les articles qui sont des cadeaux\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\r\n // Trie les articles dans le panier\r\n ctrl.cartProducts = $filter('orderBy')(\r\n params.Cart.Products.filter(line => !line.isGift),\r\n 'LineNumber'\r\n );\r\n\r\n const count = parseFloat(ctrl.cartProducts.reduce((result, line) => result + line.Quantity, 0));\r\n ctrl.count = count.toFixed(count % 1 === 0 ? 0 : 2);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n if (!$scope.$$phase) {\r\n $scope.$digest();\r\n }\r\n }\r\n }\r\n\r\n // Écouteur d'événement pour la mise à jour de la connexion\r\n $scope.$on('logUpdate', (event, value) => {\r\n ctrl.addtocartOK = ctrl.isAddtocartNotlogged && !value ? false : true;\r\n });\r\n\r\n // Fonction pour vider le panier\r\n ctrl.emptyCart = () => {\r\n ModalService.show('/Template/Cart/ModalClearCartConfirm', {}, null, 'clearCartConfirmModalCtrl');\r\n };\r\n\r\n // Fonction pour supprimer une ligne du panier\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\r\n ModalService.show(\r\n '/Template/Cart/ModalDeleteConfirm',\r\n {\r\n action: () => {\r\n CartService.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 // Écouteur d'événement pour la mise à jour du panier\r\n $scope.$on('cartUpdate', async () => {\r\n try {\r\n await getCart(false);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n });\r\n\r\n // Écouteur d'événement pour la mise à jour du panier avec rafraîchissement\r\n $scope.$on('cartUpdateWithRefresh', async () => {\r\n try {\r\n await getCart(true);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n });\r\n }\r\n}\r\n\r\n/* @ngInject */\r\nangular.module('directive.mini-cart')\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 if (data.action) {\r\n data.action();\r\n }\r\n };\r\n\r\n ctrl.cancel = () => {\r\n ModalService.close();\r\n if (data.cancel) {\r\n data.cancel();\r\n }\r\n };\r\n });\r\n\r\n/* @ngInject */\r\nangular.module('directive.mini-cart')\r\n .controller('clearCartConfirmModalCtrl', function (data, $rootScope, HttpService, AppService, ModalService, toastr, GA4Service, 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\r\n // GA4 Remove From Cart\r\n if (response.status === 'OK') {\r\n try {\r\n const currency = response?.results?.Currency?.ISOCode || null;\r\n GA4Service.removeFromCart([], response?.removedProducts, currency, response?.results?.Localization?.TradeName);\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n }\r\n\r\n const { messages, errors } = await AppService.getTranslate();\r\n\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) {\r\n data.action();\r\n }\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 } finally {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n if (!$rootScope.$$phase) {\r\n $rootScope.$digest();\r\n }\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.catalog-list', [])\r\n\r\n /* @ngInject */\r\n .directive('catalogList', function () {\r\n return {\r\n restrict: 'E',\r\n bindToController: {\r\n device: '<'\r\n },\r\n controllerAs: 'catalogListCtrl',\r\n /* @ngInject */\r\n controller: function ($scope) {\r\n const ctrl = this;\r\n\r\n ctrl.goToSlide = function (slideNumber) {\r\n $('#catalogSlider').trigger('to.owl.carousel', slideNumber);\r\n };\r\n }\r\n };\r\n });\r\n","var _module_exports = \"
    {{ctrl.options.floor }} € {{ ctrl.options.ceil}} €
    \";;\nvar path = 'Modules/Product/import/component.customizable-price-slider.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"\";;\nvar path = 'Modules/Product/import/component.product-bottom-tabs.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \" \";;\nvar path = 'Modules/Shared/Autocomplete/import/autocomplete.equipment.search.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","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;","export default angular\r\n .module('controller.newsletter', [])\r\n\r\n /* @ngInject */\r\n .controller('newsletterController', function (\r\n $rootScope,\r\n $element,\r\n $timeout,\r\n HttpService,\r\n AppService,\r\n LogService,\r\n ModalService,\r\n toastr\r\n ) {\r\n const ctrl = this;\r\n\r\n ctrl.formData = {};\r\n\r\n ctrl.submit = async () => {\r\n ctrl.loading = true;\r\n\r\n try {\r\n // Obtenir le token de sécurité des formulaires\r\n ctrl.formData.Token = $(\"input:hidden[name='securitytoken_newsletter']\").val();\r\n\r\n const response = await HttpService.post({\r\n url: '/Newsletter/Subscribe',\r\n data: ctrl.formData\r\n });\r\n\r\n const { messages, errors } = await AppService.getTranslate();\r\n\r\n // Gérer la réponse en fonction du statut\r\n if (response.status === 'OK') {\r\n // Marquer le formulaire comme soumis avec succès\r\n ctrl.submitted = true;\r\n\r\n // Afficher un message de succès\r\n toastr.success('', messages.NewsletterOK, {\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 // Réinitialiser le formulaire après un délai\r\n $timeout(() => {\r\n ctrl.form.$hideValidation();\r\n $element.find('.form-control').blur();\r\n ctrl.formData.Email = '';\r\n ctrl.form.$resetValidation();\r\n }, 2000);\r\n } else if (response.status === 'ERROR_CONNECTION_EXPECTED') {\r\n // Rediriger vers l'authentification en cas d'erreur de connexion\r\n LogService.redirect = { url: null };\r\n ModalService.show(\r\n '/Template/Authentication/ModalAuthentication',\r\n {\r\n newsletterConnect: true,\r\n mailRecognized: ctrl.formData.Email\r\n },\r\n null,\r\n 'loginModalCtrl'\r\n );\r\n } else if (response.status === 'REGISTRATION_ALREADY_EXISTS') {\r\n // Afficher un message de réussite si l'utilisateur est déjà inscrit\r\n toastr.success('', messages.NewsletterDejaOK, {\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 // Afficher les erreurs de validation\r\n Object.keys(response.errors).forEach(key => {\r\n let msg = response.errors[key].Errors[0].ErrorMessage;\r\n if (errors[msg] !== undefined) {\r\n msg = errors[msg];\r\n }\r\n toastr.warning(msg, 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 }\r\n } catch (error) {\r\n console.error(error);\r\n } finally {\r\n // Désactiver le chargement\r\n ctrl.loading = false;\r\n\r\n !$rootScope.$$phase && $rootScope.$digest();\r\n }\r\n };\r\n });\r\n","import hoverintent from 'hoverintent';\r\nimport 'Modules/Shared/Menu/import/menu.js';\r\n\r\nexport default angular\r\n .module('directive.nav', ['menu.service'])\r\n\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, MenuService) {\r\n const ctrl = this;\r\n const hoverListeners = [];\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 ctrl.nicescrollOptions = {\r\n horizrailenabled: false,\r\n autohidemode: 'scroll',\r\n cursorwidth: '6px',\r\n cursorcolor: '#999',\r\n cursorborder: '1px solid #999',\r\n cursorborderradius: '4px',\r\n railpadding: { top: 5, right: 0, left: 0, bottom: 5 },\r\n zindex: 1000000\r\n };\r\n\r\n ctrl.getNicescrollOptionsByStep = (alignLeft = false) => ({\r\n horizrailenabled: false,\r\n autohidemode: 'leave',\r\n railalign: alignLeft ? 'left' : 'right',\r\n cursorwidth: '4px',\r\n cursorcolor: '#DDDDDD',\r\n cursorborder: '1px solid #D9D9D9',\r\n cursorborderradius: '2px',\r\n railpadding: { top: 5, right: 0, left: 0, bottom: 5 },\r\n zindex: 1000000\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 ctrl.showDefaultSubmenu = false;\r\n ctrl.navMenu = null;\r\n\r\n $scope.initDesktopNavBySteps = showDefaultSubmenu => {\r\n ctrl.showDefaultSubmenu = showDefaultSubmenu;\r\n\r\n const $menuItems = $element.find('.menu-item.level1');\r\n ctrl.navMenu = $element.find('#navMenu.hidden');\r\n if (ctrl.navMenu) {\r\n ctrl.navMenu.removeClass('hidden');\r\n }\r\n $menuItems.each((key, elmt) => {\r\n const $menuItem = $(elmt);\r\n const $menus = $menuItem\r\n .filter((index, element) => $(element).find('.menu').length > 0)\r\n .children('.menu')\r\n .children('.menu-by-step')\r\n .children('.menu-item.level2');\r\n const $menuHover = $menuItem.children('.menu-hover');\r\n\r\n $menus.each((index, element) => {\r\n const listener = hoverintent(\r\n element,\r\n function () {\r\n $element.find('.menu-item.level2').children('.is-active').removeClass('is-active');\r\n $(this).children('.menu-item-link').addClass('is-active');\r\n\r\n const $subMenuHover = $(this).children('.submenu-hover');\r\n MenuService.showMenuHover($menuHover, $subMenuHover, $(this).parent().parent().height());\r\n },\r\n function () { }\r\n ).options({\r\n timeout: 100,\r\n interval: 100\r\n });\r\n hoverListeners.push(listener);\r\n });\r\n });\r\n\r\n document.addEventListener(\r\n 'scroll',\r\n event => {\r\n const subMenuHovers = ctrl.navMenu.find('.submenu-hover.is-active');\r\n if (subMenuHovers.length > 0) {\r\n subMenuHovers.each((index, subMenuHover) => {\r\n const menu = $(subMenuHover).parent().parent().parent();\r\n if (menu) {\r\n MenuService.setSubMenuHoverPosition($(subMenuHover), menu);\r\n }\r\n });\r\n }\r\n },\r\n { passive: 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 const body = document.body;\r\n const $body = $(body);\r\n const $mainNav = $('#main-nav');\r\n const $navMenu = $('#navMenu.mobile');\r\n const slider = element[0];\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 $navMenu.css('top', $mainNav.position().top + $mainNav.height() - $(window).scrollTop());\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 ($animate, $injector, $location, $document) {\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) => {\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 = () => {\r\n const $menu = element.addClass('in').children('.menu');\r\n const $nicescrollbar = $document.find('.nicescroll-rails'); // Permet de cibler la barre de défillement de type \"nicescroll\" du menu.\r\n $nicescrollbar.css({ visibility: 'hidden' }); // Lors du déploiement du menu, ajoute à la barre \"nicescroll\" le paramètre CSS \"visibility:\" à \"hidden\" afin de corriger le bug d’apparition succincte de la barre de défilement \"nicescroll\" dû au fait que le menu est en cours de déploiement.\r\n element.children('a').addClass('in');\r\n\r\n $menu\r\n .addClass('collapsing')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false)\r\n .css({ overflow: 'hidden' }); // Permet de corriger le bug d’apparition succincte de la barre de défilement native du navigateur dû au fait que le menu est en cours de déploiement.\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', overflow: '' }); // Suppression du paramètre CSS \"overflow:\" à la fin du déploiement du menu afin de resetter la correction du bug d’apparition succincte de la barre de défilement native du navigateur.\r\n setTimeout(() => { // Suppression du paramètre CSS \"visibility:\" à la fin du déploiement du menu afin de resetter la correction du bug d’apparition succincte de la barre de défilement \"nicescroll\".\r\n $nicescrollbar.css({ visibility: '' });\r\n }, 350);\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.length > 0 ? $menu[0].scrollHeight : 0}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.length > 0 ? $menu[0].scrollHeight : 0}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\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.length > 0 ? $menu[0].scrollHeight : 0}px`, overflow: 'hidden' }) // \"overflow: 'hidden'\" permet de corriger le bug d’apparition succincte de la barre de défilement native du navigateur dû au fait que le menu est en cours de réduction.\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', overflow: '' }).removeClass('collapsing'); // Suppression du paramètre CSS \"overflow:\" à la fin de la réduction du menu afin de resetter la correction du bug d’apparition succincte de la barre de défilement native du navigateur.\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\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 element.siblings().addClass('move-out').end().closest('.nav').scrollTop(0);\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 // Si l'url en entrée dans le href est absolue, alors on la transforme en relative\r\n let href = element.children('a').attr('href');\r\n if (!/^\\//.test(href)) {\r\n const url = new URL(href);\r\n href = url.pathname + url.search;\r\n }\r\n\r\n $location.path(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 };\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.isTouch || !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 .directive('rbMenuByStep', function ($animate, $injector, $location, MenuService) {\r\n const $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null;\r\n const menuHeight = 400;\r\n\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n link: (scope, element) => {\r\n scope.mainNavCtrl.children.push(scope);\r\n //\r\n scope.open = false;\r\n scope.element = element;\r\n\r\n scope.expandMenu = () => {\r\n const $menu = element.addClass('is-active').children('.menu');\r\n element.children('a').addClass('is-active');\r\n const $menuHover = element.children('.menu-hover');\r\n let subMenuHover = null;\r\n if (scope.mainNavCtrl.showDefaultSubmenu) {\r\n subMenuHover = element.find('.submenu-hover').first();\r\n }\r\n\r\n $menu.addClass('collapsing').addClass('is-active').attr('aria-expanded', true).attr('aria-hidden', false);\r\n\r\n if (scope.$parent.device.isTouch) {\r\n $('#main-nav').addClass('is-active');\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 MenuService.showMenuHover($menuHover, subMenuHover, $menu.height());\r\n $menu.removeClass('collapsing').addClass('expanded');\r\n }\r\n\r\n const menuOffsetTop = $menu[0].getBoundingClientRect().top; // Permet de récupérer la position du haut du menu en fonctione des hauteurs du bandeau commercial, du header et du menu principal.\r\n const child = $menu.children().first(); // Ciblage de la balise
      du menu de la colonne de gauche.\r\n const subChild = child.children(); // Ciblage des balises
    • enfants de la balise
        .\r\n let subChildTotalHeight = 0; // Initialisation de la hauteur totale des balises
      • (subChild).\r\n\r\n // Calcul de la hauteur totale des balises
      • (subChild).\r\n for (let i = 0; i < subChild.length; i++) {\r\n const subChildHeight = subChild[i].offsetHeight; // Récupération de la hauteur de chaque balise
      • .\r\n\r\n subChildTotalHeight += subChildHeight;\r\n }\r\n\r\n let childHeight = 0;\r\n if (child) {\r\n childHeight = Math.max(menuHeight, subChildTotalHeight, child.scrollTop());\r\n }\r\n\r\n if ($animateCss) {\r\n $animateCss($menu, {\r\n addClass: 'is-active',\r\n easing: 'ease',\r\n to: { height: `${childHeight}px`, maxHeight: `calc(90vh - ${menuOffsetTop}px)` }\r\n })\r\n .start()\r\n .finally(expandDone);\r\n } else {\r\n $animate\r\n .addClass($menu, 'is-active', {\r\n to: { height: `${childHeight}px`, maxHeight: `calc(90vh - ${menuOffsetTop}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\r\n scope.reduceMenu = () => {\r\n // wait reducing menu before open an another menu\r\n element.css('pointer-events', 'none');\r\n const $menu = element.children('.menu');\r\n if (!$menu.length) return;\r\n\r\n element.children('.backdrop').remove();\r\n $menu.children('.menu-by-step').removeClass('is-active');\r\n $menu.find('.submenu-hover.is-active').removeClass('is-active');\r\n $menu.next('.menu-hover').removeClass('is-active');\r\n\r\n const child = $menu.children().first();\r\n let childHeight = 0;\r\n if (child) {\r\n childHeight = Math.max(menuHeight, child.scrollTop());\r\n }\r\n\r\n $menu\r\n .css({ height: `${childHeight}px` })\r\n .addClass('collapsing')\r\n .attr('aria-expanded', false)\r\n .attr('aria-hidden', true)\r\n .removeClass('expanded');\r\n\r\n function collapseDone() {\r\n $menu.css({ height: '0' }).removeClass('collapsing').removeClass('is-active');\r\n element.removeClass('is-active');\r\n element.children('a').removeClass('is-active');\r\n $('#main-nav').removeClass('is-active');\r\n if (child) {\r\n child.removeClass('is-active');\r\n }\r\n element.css('pointer-events', 'auto');\r\n }\r\n\r\n if ($animateCss) {\r\n $animateCss($menu, {\r\n to: { height: '0' }\r\n })\r\n .start()\r\n .finally(collapseDone);\r\n } else {\r\n $animate\r\n .removeClass($menu, '', {\r\n to: { height: '0' }\r\n })\r\n .then(collapseDone);\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 element.siblings().addClass('move-out').end().closest('.nav').scrollTop(0);\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('is-active')) {\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.is-active').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 };\r\n\r\n scope.closeMenu = () => {\r\n scope.mainNavCtrl.open = false;\r\n };\r\n\r\n initMenu();\r\n initLevelsLinks();\r\n\r\n function initMenu() {\r\n if (scope.$parent.device.isTouch || !scope.$parent.device.desktop || !element.hasClass('level1')) return;\r\n\r\n // La transition css a besoin d'une valeur de depart\r\n element.find('.menu').css('height', 0);\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: 0,\r\n interval: 200,\r\n sensitivity: 1\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","export default angular\r\n .module('menu.service', [])\r\n\r\n /* @ngInject */\r\n .factory('MenuService', function () {\r\n const service = {\r\n showMenuHover,\r\n setSubMenuHoverPosition\r\n };\r\n return service;\r\n\r\n function showMenuHover(menuHover, subMenuHover, fullHeight) {\r\n const menuByStep = menuHover.prev().children().first();\r\n const menuByStepHeight = menuByStep.outerHeight();\r\n const menuByStepMargins = menuByStepHeight - menuByStep.height();\r\n const hoverMargins = menuHover.outerHeight() - menuHover.height();\r\n menuByStep.height(fullHeight - menuByStepMargins);\r\n if (menuByStep.height() !== 0) menuHover.height(fullHeight - hoverMargins).addClass('is-active');\r\n\r\n if (subMenuHover && subMenuHover.length > 0) {\r\n const subMenuHoverMargins = subMenuHover.outerHeight() - subMenuHover.height();\r\n setSubMenuHoverPosition(subMenuHover, menuHover, true);\r\n subMenuHover\r\n .height(fullHeight - subMenuHoverMargins - 4)\r\n .width(menuHover.width())\r\n .addClass('is-active');\r\n\r\n menuHover.removeClass('is-active');\r\n }\r\n }\r\n\r\n function setSubMenuHoverPosition(subMenuHover, menuHover, forceLeftPosition = false) {\r\n const left = forceLeftPosition ? menuHover.offset().left : subMenuHover.css('left');\r\n subMenuHover.css({ top: menuHover.offset().top + 4 - $(window).scrollTop(), left });\r\n }\r\n });\r\n","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;","var _module_exports = \"
        \\\"{{
        \";;\nvar path = 'Modules/Cart/import/quick.order.popover.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"
        {{ ::ctrl.textCategories }}
        {{ ::ctrl.textAdvices }}
        \";;\nvar path = 'Modules/Shared/Autocomplete/import/autocomplete.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","export default angular\r\n .module('directive.popuponeshot', [])\r\n\r\n /* @ngInject */\r\n .directive('popupOneShot', function ($cookies, ModalService, DateService) {\r\n return {\r\n restrict: 'A',\r\n link: (scope, element, attrs) => {\r\n if ($cookies.get('popupOneShot')) return;\r\n\r\n const nbClick = Number(attrs.popupOneShot);\r\n let inc = 0;\r\n\r\n if (nbClick < 0) return;\r\n\r\n if (nbClick === 0) {\r\n open();\r\n return;\r\n }\r\n\r\n $(document.body).on('click', onClick);\r\n\r\n function onClick() {\r\n inc++;\r\n if (inc === nbClick) {\r\n open();\r\n $(document.body).off('click', onClick);\r\n }\r\n }\r\n\r\n function open() {\r\n ModalService.show(\r\n '/Template/Modal/ModalPopupOneShot',\r\n {\r\n windowClass: 'modal-one-shot'\r\n },\r\n null,\r\n null,\r\n null,\r\n scope.device\r\n );\r\n $cookies.put('popupOneShot', 'true', {\r\n path: '/',\r\n expires: DateService.tomorrow(),\r\n samesite: 'lax'\r\n });\r\n }\r\n }\r\n };\r\n });\r\n","var _module_exports = \"
        {{ $ctrl.hasSuggestions ? $ctrl.optionsTitle : $ctrl.optionsTitleWarning }}
        {{ $ctrl.displayOption(option) }}
        {{ $ctrl.optionsConfirm }}
        {{ $ctrl.displayOption(option) }}
        {{ $ctrl.optionsSelect }}
        \";;\nvar path = 'Modules/Capency/components/component.cap-validate-email.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"
        = $ctrl.min\\\">  
        \";;\nvar path = 'import/js/components/addtocart/component.addtocart.modulo.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.classic.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.mini.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\":\"AccountSubscriptions\",\"Controller\":\"AccountSubscriptions\",\"Action\":\"AccountSubscriptions\",\"fr\":{\"URL\":\"abonnements\"},\"en\":{\"URL\":\"subscriptions\"}},{\"Name\":\"AccountGetSubscriptionDetail\",\"Controller\":\"AccountSubscriptions\",\"Action\":\"GetSubscriptionDetail\",\"fr\":{\"URL\":\"Account/GetSubscriptionDetail/{id:int}\"},\"en\":{\"URL\":\"Account/GetSubscriptionDetail/{id:int}\"}},{\"Name\":\"AccountVisitorHasSubscriptions\",\"Controller\":\"AccountSubscriptions\",\"Action\":\"VisitorHasSubscriptions\",\"fr\":{\"URL\":\"Account/HasSubscriptions\"},\"en\":{\"URL\":\"Account/HasSubscriptions\"}},{\"Name\":\"GetHobby\",\"Controller\":\"AccountHobbies\",\"Action\":\"GetHobby\",\"fr\":{\"URL\":\"Account/Hobby/{idCard:int}\"},\"en\":{\"URL\":\"Account/Hobby/{idCard:int}\"}},{\"Name\":\"AccountUpdate\",\"Controller\":\"AccountUpdateOverride\",\"Action\":\"AccountUpdate\",\"fr\":{\"URL\":\"profil\"},\"en\":{\"URL\":\"profile\"}},{\"Name\":\"NetWaveGetProducts\",\"Controller\":\"Netwave\",\"Action\":\"GetProducts\",\"fr\":{\"URL\":\"GetProducts\"},\"en\":{\"URL\":\"GetProducts\"}},{\"Name\":\"IndexAuthors\",\"Controller\":\"IndexSearch\",\"Action\":\"QueryIndexAuthor\",\"fr\":{\"URL\":\"index/auteurs/{filterSelected}\"}},{\"Name\":\"IndexAuthorsSorted\",\"Controller\":\"IndexSearch\",\"Action\":\"QueryIndexAuthor\",\"fr\":{\"URL\":\"index/auteurs/{filterSelected}/{sort:alpha}\"}},{\"Name\":\"IndexPublishers\",\"Controller\":\"IndexSearch\",\"Action\":\"QueryIndexPublishers\",\"fr\":{\"URL\":\"index/editeurs/{filterSelected}\"}},{\"Name\":\"IndexPublishersSorted\",\"Controller\":\"IndexSearch\",\"Action\":\"QueryIndexPublishers\",\"fr\":{\"URL\":\"index/editeurs/{filterSelected}/{sort:alpha}\"}},{\"Name\":\"Biographies\",\"Controller\":\"IndexSearch\",\"Action\":\"Biographies\",\"fr\":{\"URL\":\"biographies/{letterFilter}\"}},{\"Name\":\"SortedCategoryPage\",\"Controller\":\"Category\",\"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\":\"Category\",\"Action\":\"ShowSorted\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}/{sortType:alpha}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}/{sortType:alpha}\"}},{\"Name\":\"CategoryPage\",\"Controller\":\"Category\",\"Action\":\"ShowPage\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}-{page:int}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}-{page:int}\"}},{\"Name\":\"Category\",\"Controller\":\"Category\",\"Action\":\"Show\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}\"}},{\"Name\":\"CategoryWithElasticSearch\",\"Controller\":\"Category\",\"Action\":\"ShowWithElasticSearch\",\"fr\":{\"URL\":\"{categoryName}-c-{categoryId:int}/es/{query}\"},\"en\":{\"URL\":\"{categoryName}-c-{categoryId:int}/es/{query}\"}},{\"Name\":\"SortedCategoryPageWithElasticSearch\",\"Controller\":\"Category\",\"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\":\"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\":\"CartToken\",\"Controller\":\"Cart\",\"Action\":\"CartToken\",\"fr\":{\"URL\":\"panier/token/{routeName}\"},\"en\":{\"URL\":\"cart/token/{routeName}\"}},{\"Name\":\"CartOutdated\",\"Controller\":\"Cart\",\"Action\":\"CartOutdated\",\"fr\":{\"URL\":\"panier-expire\"},\"en\":{\"URL\":\"outdated-cart\"}},{\"Name\":\"CartIdentification\",\"Controller\":\"Cart\",\"Action\":\"CartIdentification\",\"fr\":{\"URL\":\"panier/identification\"},\"en\":{\"URL\":\"cart/authentification\"}},{\"Name\":\"CartShipping\",\"Controller\":\"Cart\",\"Action\":\"CartShipping\",\"fr\":{\"URL\":\"panier/livraison\"},\"en\":{\"URL\":\"cart/delivery\"}},{\"Name\":\"CartPayment\",\"Controller\":\"Cart\",\"Action\":\"CartPayment\",\"fr\":{\"URL\":\"panier/paiement\"},\"en\":{\"URL\":\"cart/payment\"}},{\"Name\":\"AdyenSessionPayment\",\"Controller\":\"Adyen\",\"Action\":\"AdyenSession\",\"fr\":{\"URL\":\"ADYEN/AdyenSessionPayment\"},\"en\":{\"URL\":\"ADYEN/AdyenSessionPayment\"}},{\"Name\":\"AdyenInvoicesSessionPayment\",\"Controller\":\"AdyenInvoices\",\"Action\":\"AdyenSession\",\"fr\":{\"URL\":\"ADYEN/AdyenInvoicesSessionPayment\"},\"en\":{\"URL\":\"ADYEN/AdyenInvoicesSessionPayment\"}},{\"Name\":\"AdyenAsyncResponse\",\"Controller\":\"Adyen\",\"Action\":\"AdyenAsyncResponse\",\"fr\":{\"URL\":\"ADYEN/AdyenAsyncResponse\"},\"en\":{\"URL\":\"ADYEN/AdyenAsyncResponse\"}},{\"Name\":\"AdyenInvoicesAsyncResponse\",\"Controller\":\"AdyenInvoices\",\"Action\":\"AdyenAsyncResponse\",\"fr\":{\"URL\":\"ADYEN/AdyenInvoicesAsyncResponse\"},\"en\":{\"URL\":\"ADYEN/AdyenInvoicesAsyncResponse\"}},{\"Name\":\"AdyenRequest\",\"Controller\":\"Adyen\",\"Action\":\"AdyenRequest\",\"fr\":{\"URL\":\"ADYEN/AdyenRequest\"},\"en\":{\"URL\":\"ADYEN/AdyenRequest\"}},{\"Name\":\"AdyenInvoicesRequest\",\"Controller\":\"AdyenInvoices\",\"Action\":\"AdyenRequest\",\"fr\":{\"URL\":\"ADYEN/AdyenInvoicesRequest\"},\"en\":{\"URL\":\"ADYEN/AdyenInvoicesRequest\"}},{\"Name\":\"AdyenPaymentRedirect\",\"Controller\":\"Adyen\",\"Action\":\"AdyenPaymentRedirect\",\"fr\":{\"URL\":\"ADYEN/AdyenPaymentRedirect\"},\"en\":{\"URL\":\"ADYEN/AdyenPaymentRedirect\"}},{\"Name\":\"AdyenInvoicesPaymentRedirect\",\"Controller\":\"AdyenInvoices\",\"Action\":\"AdyenPaymentRedirect\",\"fr\":{\"URL\":\"ADYEN/AdyenInvoicesPaymentRedirect\"},\"en\":{\"URL\":\"ADYEN/AdyenInvoicesPaymentRedirect\"}},{\"Name\":\"AdyenAdditionalActions\",\"Controller\":\"Adyen\",\"Action\":\"AdyenAdditionalActions\",\"fr\":{\"URL\":\"ADYEN/AdyenAdditionalActions\"},\"en\":{\"URL\":\"ADYEN/AdyenAdditionalActions\"}},{\"Name\":\"AdyenInvoicesAdditionalActions\",\"Controller\":\"AdyenInvoices\",\"Action\":\"AdyenAdditionalActions\",\"fr\":{\"URL\":\"ADYEN/AdyenInvoicesAdditionalActions\"},\"en\":{\"URL\":\"ADYEN/AdyenInvoicesAdditionalActions\"}},{\"Name\":\"CartValidation\",\"Controller\":\"Cart\",\"Action\":\"CartValidation\",\"fr\":{\"URL\":\"panier/validation\"},\"en\":{\"URL\":\"cart/validation\"}},{\"Name\":\"CartOnePageCheckout\",\"Controller\":\"Cart\",\"Action\":\"CartOnePageCheckout\",\"fr\":{\"URL\":\"commander\"},\"en\":{\"URL\":\"checkout\"}},{\"Name\":\"CartOnePageCheckoutPayment\",\"Controller\":\"Cart\",\"Action\":\"CartOnePageCheckoutPayment\",\"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/compte\"},\"en\":{\"URL\":\"authentication/account\"}},{\"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\":\"OctaveExternalAuthentication\",\"Controller\":\"Authentication\",\"Action\":\"OctaveExternalAuthentication\",\"fr\":{\"URL\":\"authentification-externe\"},\"en\":{\"URL\":\"external-authentification\"}},{\"Name\":\"AccountHome\",\"Controller\":\"AccountHome\",\"Action\":\"AccountHome\",\"fr\":{\"URL\":\"mon-compte\"},\"en\":{\"URL\":\"my-account\"}},{\"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\":\"AccountInvoicesSelection\",\"Controller\":\"AccountInvoices\",\"Action\":\"AccountInvoicesSelection\",\"fr\":{\"URL\":\"payer-factures\"},\"en\":{\"URL\":\"pay-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\":\"AccountEquipment\",\"Controller\":\"AccountEquipment\",\"Action\":\"EquipmentList\",\"fr\":{\"URL\":\"mes-equipements\"},\"en\":{\"URL\":\"my-equipments\"}},{\"Name\":\"QuotationToken\",\"Controller\":\"Quotation\",\"Action\":\"QuotationToken\",\"fr\":{\"URL\":\"devis/token/{routeName}\"},\"en\":{\"URL\":\"devis/token/{routeName}\"}},{\"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\":\"AccountGetUnpaidInvoices\",\"Controller\":\"AccountInvoices\",\"Action\":\"GetUnpaidInvoices\",\"fr\":{\"URL\":\"Account/GetUnpaidInvoices\"},\"en\":{\"URL\":\"Account/GetUnpaidInvoices\"}},{\"Name\":\"AccountGetInvoices\",\"Controller\":\"AccountInvoices\",\"Action\":\"GetInvoices\",\"fr\":{\"URL\":\"Account/GetInvoices\"},\"en\":{\"URL\":\"Account/GetInvoices\"}},{\"Name\":\"AccountGetInvoicesPaymentMethods\",\"Controller\":\"AccountInvoices\",\"Action\":\"GetInvoicesPaymentMethods\",\"fr\":{\"URL\":\"Account/GetInvoicesPaymentMethods\"},\"en\":{\"URL\":\"Account/GetInvoicesPaymentMethods\"}},{\"Name\":\"AccountInvoicesLettering\",\"Controller\":\"AccountInvoices\",\"Action\":\"Lettering\",\"fr\":{\"URL\":\"Account/InvoicesLettering\"},\"en\":{\"URL\":\"Account/InvoicesLettering\"}},{\"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\":\"AccountUseDelegation\",\"Controller\":\"AccountUseDelegation\",\"Action\":\"AccountUseDelegation\",\"fr\":{\"URL\":\"delegation\"},\"en\":{\"URL\":\"delegation\"}},{\"Name\":\"AccountListDelegation\",\"Controller\":\"AccountListDelegation\",\"Action\":\"AccountListDelegation\",\"fr\":{\"URL\":\"liste-delegation\"},\"en\":{\"URL\":\"delegation-list\"}},{\"Name\":\"AccountDeclareDelegation\",\"Controller\":\"AccountDeclareDelegation\",\"Action\":\"AccountDeclareDelegation\",\"fr\":{\"URL\":\"declaration-delegues\"},\"en\":{\"URL\":\"declare-delegate\"}},{\"Name\":\"AccountRatingProduct\",\"Controller\":\"AccountRatingProduct\",\"Action\":\"AccountRatingProduct\",\"fr\":{\"URL\":\"noter-les-produits\"},\"en\":{\"URL\":\"rating-products\"}},{\"Name\":\"Search\",\"Controller\":\"Search\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche\"},\"en\":{\"URL\":\"research\"}},{\"Name\":\"SearchAngular\",\"Controller\":\"Search\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}\"},\"en\":{\"URL\":\"research/{q}\"}},{\"Name\":\"SearchPageAngular\",\"Controller\":\"Search\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}/{p:int}\"},\"en\":{\"URL\":\"research/{q}/{p:int}\"}},{\"Name\":\"SortedSearchPageAngular\",\"Controller\":\"Search\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}/{p:int}/{sort:alpha}\"},\"en\":{\"URL\":\"research/{q}/{p:int}/{sort:alpha}\"}},{\"Name\":\"SortedSearchAngular\",\"Controller\":\"Search\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}/{sort:alpha}\"},\"en\":{\"URL\":\"research/{q}/{sort:alpha}\"}},{\"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\":\"ContactForm\",\"Controller\":\"Form\",\"Action\":\"Contact\",\"fr\":{\"URL\":\"contactForm\"},\"en\":{\"URL\":\"contactForm\"}},{\"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\":\"MessageQuoteAdd\",\"Controller\":\"Message\",\"Action\":\"AddQuote\",\"fr\":{\"URL\":\"Message/Ajout/Devis\"},\"en\":{\"URL\":\"Message/Add/Quote\"}},{\"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\":\"CartQuotationPaymentList\",\"Controller\":\"Payment\",\"Action\":\"PaymentListQuotation\",\"fr\":{\"URL\":\"devis/choix-paiement/{idFolder:int}\"},\"en\":{\"URL\":\"quote/payment-choice/{idFolder:int}\"}},{\"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\":\"AppParams\",\"Controller\":\"App\",\"Action\":\"AppParams\",\"fr\":{\"URL\":\"appParams\"},\"en\":{\"URL\":\"appParams\"}},{\"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\":\"AccountGetOrdersOmsSeller\",\"Controller\":\"AccountOrderTracking\",\"Action\":\"GetOrdersOmsSeller\",\"fr\":{\"URL\":\"Account/GetOrdersOmsSeller\"},\"en\":{\"URL\":\"Account/GetOrdersOmsSeller\"}},{\"Name\":\"GetGTMValuesFromKeyList\",\"Controller\":\"GTM\",\"Action\":\"GetValuesFromKeyList\",\"fr\":{\"URL\":\"GetGTMValuesFromKeyList\"},\"en\":{\"URL\":\"GetGTMValuesFromKeyList\"}},{\"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.$on('homepage', (event, homepage) => {\r\n $timeout(() => {\r\n ctrl.homepage = homepage;\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 $scope.device.tablet = DeviceService.onChange($scope, 'sm', match => {\r\n $scope.device.tablet = 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 = 5;\r\n if (scope.device) {\r\n nb = scope.device.md ? 5 : nb;\r\n nb = scope.device.sm ? 5 : 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());\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 - margin\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.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","export default angular\r\n .module('directive.flockler', [])\r\n\r\n /* @ngInject */\r\n .directive('flockler', 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) {\r\n const ctrl = this;\r\n\r\n ctrl.$onDestroy = () => {};\r\n\r\n ctrl.$onInit = async () => {\r\n const response = await import(/* webpackChunkName: \"flockler\" */ 'import/js/directives/flockler/flockler.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('ImportFlockler');\r\n service.init(ctrl, $scope);\r\n };\r\n },\r\n controllerAs: 'flocklerCtrl'\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 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 ? true : false;\r\n });\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","/* 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 _id = element.attr('id');\r\n const _template = template.replace('{0}', _id || '');\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 || 'default';\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 if (angular.isUndefined(attrs.requiredStarDisabled)) {\r\n element.attr('placeholder', `${attrs.placeholder} *`);\r\n } else {\r\n element.attr('placeholder', attrs.placeholder);\r\n }\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('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 || num === undefined) return num;\r\n if (num.includes('.')) return num.replace(/\\./g, ' ');\r\n return num.replace(/(\\d{2}(?=[^\\d]*\\d))/g, '$1 ');\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 'eco-unit':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.EcoContribution.TTCPrice : prices.EcoContribution.HTPrice;\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