{"version":3,"sources":["webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/plugins/jquery.equalheights.js","webpack:///./App/Modules/Shared/Autocomplete/import/autocomplete.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/index.js","webpack:///./App/js/plugins/googleTranslateChangeTitle.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/plugins/spin.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Quotation/import/service.quotation.js","webpack:///./App/import/js/directives/autocomplete/angucomplete-alt.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Cart/import/quick.order.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/components/addtocart/component.addtocart.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/app.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/plugins/detect.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/tab.html.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/tabset.html.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/angular-ui-bootstrap/src/tabs/tabs.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Shared/Filters/import/facet.accordion.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Shared/Filters/import/facet.accordion.group.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/routing.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/routing-listeners.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/angular-toastr.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/toast.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/toast_message.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/toast_progressbar.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/angular-toastr/toast_addtocart.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/libs/bootstrap-angular-validation/bootstrap-angular-validation.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/controllers/controller.modal.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.breadcrumb.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.page.head.js","webpack:///./App/js/modules/module.modal.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/modules/module.gtm.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/modules/module.netwave.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/modules/module.products.grid.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/modules/module.spinner.js","webpack:///./App/Modules/Authentication/js/directive.minilogin.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Authentication/import/toast_authentication.tpl","webpack:///./App/Modules/Catalog/js/directive.catalog-list.js","webpack:///./App/Modules/Shared/Autocomplete/import/autocomplete.product.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Cart/js/directive.mini-cart.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Shared/Menu/js/directive.nav.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Shared/Comparator/import/toast_comparator.tpl","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Cart/import/quick.order.popover.tpl","webpack:///./App/Modules/Shared/Autocomplete/import/autocomplete.js","webpack:///./App/import/js/components/addtocart/component.addtocart.quantity.tpl","webpack:///./App/import/js/components/addtocart/component.addtocart.tpl","webpack:///./App/import/js/components/addtocart/component.addtocart.classic.tpl","webpack:///./App/Build/routes.js","webpack:///./App/js/controllers/controller.main.js","webpack:///./App/js/directives/directive.bxslider.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.clearuibtab.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.fb-connect.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.infinitescroll.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.owl-carousel.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.scrolltop.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.selectpicker.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.stop.propagation.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.togglePasswordVisibility.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directive.visibleonscroll.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/directives/directives.form.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/filters/filter.decimal.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/filters/filter.discount.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/filters/filter.format.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/filters/filter.phone.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/filters/filter.price.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/filters/filter.truncate.date.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/modules/module.cdn.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/modules/module.lazy.js","webpack:///./App/js/services/service.responsive.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.account.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/services/cart.postprocess.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.app.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.authentication.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.availability.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.country.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.cp.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.date.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.gmap.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.http.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.price.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.string.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.window-events.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/services/service.youtube.js","webpack:///./App/Modules/Shared/Autocomplete/js/directive.autocomplete.product.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Account/js/check.identity.service.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Account/js/directive.check.identity.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Authentication/js/controllers.authentication.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Category/js/directive.filters.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Category/js/directive.truncate.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Category/js/module.category.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Form/js/jobs.form.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Form/js/section.form.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/PasswordRecovery/js/password.recovery.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Payment/js/confirmation.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Payment/js/directive.mty.tpe.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Product/js/component.customization.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Product/js/directive.kit.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Product/js/directive.price.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Product/js/directive.product.gallery.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Product/js/directive.share.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Product/js/module.product.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Reviews/js/module.reviews.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Search/js/search.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Shared/Footer/js/controller.newsletter.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Payment/import/alma.service.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Shared/Payment/Alma/js/directive.alma.widget.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Stores/js/controller.modal.store.choice.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Stores/js/directive.infos.store.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Stores/js/directive.store.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Stores/js/directive.store.map.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Stores/js/directive.stores.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Wishlist/js/directive.wishlist.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/js/dependencies.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/directives/sticky/directive.sticky.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/directives/video/directive.video.player.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/directives/tab/directive.tab.equalheights.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/directives/flip/directive.flip.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Shared/Comparator/import/component.comparator.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Shared/Comparator/import/directive.compare.checkbox.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/Modules/Shared/Comparator/import/service.compare.js","webpack:///./App/Modules/Shared/Autocomplete/import/directive.autocomplete.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/directives/nicescroll/directive.nicescroll.js","webpack:///./App/js/project.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/components/addtocart/component.addtocart.quantity.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/components/addtocart/component.addtocart.classic.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/components/addtowishlist/component.addtowishlist.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/components/addtoquotation/component.addtoquotation.advanced.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/directives/collapsemenu/directive.collapse.menu.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/directives/rzslider/directive.rzslider.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/directives/dropzone/directive.dropzone.js","webpack:///./App/js/components.js","webpack:///C:/Octave/WEB7/Framework/Core/Front/App/import/js/plugins/format.js"],"names":["jQuery","fn","equalHeights","h","$elems","this","css","each","Math","max","$","outerHeight","path","window","angular","module","run","c","put","exports","googleTranslateChangeTitle","eq","text","hide","remove","html","show","setTimeout","Spinner","useCssAnimations","sheet","prefixes","animations","createEl","tag","prop","n","el","document","createElement","ins","parent","i","arguments","length","appendChild","addAnimation","alpha","trail","lines","name","join","start","z","prefix","substring","indexOf","toLowerCase","pre","insertRule","cssRules","vendor","pp","s","style","undefined","charAt","toUpperCase","slice","merge","obj","def","defaults","width","radius","scale","corners","color","opacity","rotate","direction","speed","fps","zIndex","className","top","left","shadow","hwaccel","position","o","opts","prototype","spin","target","stop","self","insertBefore","firstChild","setAttribute","f","ostep","astep","anim","j","timeout","clearTimeout","parentNode","removeChild","seg","idx","fill","height","background","boxShadow","transformOrigin","transform","borderRadius","animation","val","childNodes","type","head","styleSheet","probe","behavior","factory","HttpService","getQuotations","get","url","cache","addToQuotation","idProduct","idQuotation","object","quantity","post","data","IdProduct","IdQuotation","Object","Quantity","removeQuotationLine","idLine","IdLine","directive","$q","$timeout","link","scope","elem","attrs","inputField","find","hideTimer","minlength","searchTimer","httpCanceller","callOrAssign","value","str","isFunction","selectedObject","handleOverrideSuggestions","event","overrideSuggestions","matchField","searchStr","preventDefault","cancel","cancelHttpRequest","originalObject","clearSelected","clearResults","updateInputField","current","results","currentIndex","httpSuccessCallbackGen","responseData","status","headers","config","searching","count","showDropdown","processResults","remoteUrlResponseFormatter","httpErrorCallback","errorRes","console","error","resolve","getRemoteResults","defer","remoteApiHandler","promise","then","catch","initResults","searchTimerComplete","$on","elementId","id","newval","handleInputChange","focus","onFocusHandler","focusIn","hideResults","$apply","focusOut","hoverRow","index","selectResult","result","inputChangeHandler","inputChanged","goSearch","ctrl","parseInt","pause","inputType","maxlength","on","which","blur","$digest","restrict","placeholder","inputClass","fieldTabindex","inputName","templateUrl","element","compile","component","require","productCtrl","comparatorCtrl","bindings","isProductButton","isCartButton","action","btnClass","commentLine","productQuantity","isPrimary","addToCartActive","allowAddToCart","min","step","price","designation","img","distrimageSrc","titleAdd","titleAlert","tooltip","modalCtrl","device","controller","$scope","$element","$injector","$onInit","async","response","loadNewModules","default","init","constant","_ENV_","$provide","decorator","$delegate","keys","key","includes","push","splice","getKeys","$compileProvider","Environment","commentDirectivesEnabled","cssClassDirectivesEnabled","debugInfoEnabled","lazyConfigProvider","setOptions","offset","errorClass","successClass","AppService","bsValidationConfig","getParams","getTranslate","translate","entries","forms","forEach","replace","setMessages","suppressWarnings","onunload","onpageshow","persisted","location","reload","injector","bootstrap","strictDi","isBot","Error","origin","protocol","hostname","port","pattern","RegExp","test","navigator","userAgent","isCache","$templateCache","oldIndex","destroyed","findTabIndex","tabs","select","evt","previousIndex","previousSelected","tab","onDeselect","$event","$selectedIndex","isDefaultPrevented","active","selected","onSelect","isDefined","addTab","sort","t1","t2","newActiveIndex","removeTab","newActiveTabIndex","$watch","transclude","bindToController","controllerAs","vertical","$parent","$eval","justified","centered","$parse","heading","classes","elm","tabsetCtrl","disabled","disable","isUndefined","apply","map","t","$transcludeFn","append","uibTabContentTransclude","contents","node","tagName","hasAttribute","isTabHeading","headingElement","routes","routingService","$routeProvider","$locationProvider","$httpProvider","Routes","useApplyAsync","common","interceptors","when","route","ngRoute","routeLNG","_LNG_","URL","Name","Controller","kebabCase","authorize","authService","load","deferred","AccountService","getReturnFolders","$inject","getShippingAddresses","template","getLocation","cart","isOnePage","body","_response","split","getCacheBusting","html5Mode","enabled","requireBase","rewriteLinks","otherwise","routesMap","routesService","set","getOwnPropertyNames","arr","getMap","getUrlByName","$rootScope","$location","$window","$route","routing","scrollCache","cacheBusting","getRoute","getPath","windowScroll","getScrollPos","scrollTop","updateCacheBusting","forceReload","currentRoute","to","pageYOffset","$broadcast","Date","getTime","_$window$location","pathname","substr","service","isCart","isAccount","params","IsLogged","HasCart","hasCard","Cart","Card","CardType","KeyCardType","res","responseError","rejection","from","href","reject","RoutesService","RoutingService","CartIdentification","CartShipping","CartPayment","CartValidation","CartOnePageCheckout","$anchorScroll","ModalService","toastr","currentLocation","yOffset","update","search","notReplace","routeToKeep","unsubscribe","next","router","_routes","stepTo","stepFrom","originalPath","ex","r","previous","message","warning","errors","ErrorHasOccurred","allowHtml","extraData","Localization","UseLogs","loadedTemplateUrl","stack","Key","Message","ngRouter","findRoute","hasOwnProperty","hash","close","removeClass","categoryId","q","backToStore","newLocation","popstate","dataLayer","initRouter","productId","sellerId","$animate","$document","$sce","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","trustAsHtml","toastType","toastIcon","extendedTimeOut","messageClass","onShown","generateEvent","onTap","progressBar","tapToDismiss","timeOut","titleClass","toastClass","closeButton","closeHtml","createScope","angularDomEl","$compile","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","tapToast","stopPropagation","bsValidationService","priority","$formElement","$formAttributes","isValidationDisabled","addDirective","ngSubmit","formElement","$attr","formController","$showValidation","$setSubmitted","showValidationState","$hideValidation","$setPristine","$resetValidation","markPristineAfterSubmit","attributes","$invalid","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","$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","$filter","_genericValidators","validateFn","equalto","range","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","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","emailChanged","form","emailExists","email","openModal","IsCrmV2","Site","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","modal","$uibModal","modalInstance","size","ctrlAs","onClosed","onOpened","_modal","windowClass","backdrop","keyboard","closed","filter","$$state","opened","closeCurrent","class","openCmsModal","autoScroll","modalAutoScroll","$modalDialog","closest","$scrollContainer","maxHeight","$cookies","DateService","inject","script","innerHTML","getContent","expires","nextYear","content","GtmService","netwaveInfos","NetwaveService","isNetwaveEnable","getNetWaveInfo","initializeNetWaveInfo","netwaveEnable","netInfos","getIdProduct","product","IDProduct","getPrice","_product$Product","_product$Price","_product$Price2","IsKit","KitUnitTTCPrice","round","Product","TTCAmount","Price","qty","TTCDiscountedPrice","TTCPrice","_product$Price3","costTTC","trigger","getProducts","products","ProductsIds","updateFilters","_ctrl$BrandsSelected","_ctrl$ReviewsSelected","_ctrl$ProductTypesSel","_ctrl$words","BrandsSelected","filterBrandsSelected","brands","item","Id","ReviewsSelected","filterReviewsSelected","reviews","ProductTypesSelected","filterProductTypesSelected","types","words","PriceRange","prices","facets","FacetsSelected","Values","isScriptLoaded","wsbProperties","filterFacet","categoryCtrl","idCategory","values","emptyCart","removeArticleFromCart","removeArticle","getCategory","pdt","wsb","addArticleToCart","addArticle","getCategoryResponse","emptyWishList","line","updateWishList","addToWishList","addToWishlist","removeFromWishlist","Promise","requestAnimationFrame","tabsCtrl","AvailabilityService","PriceService","zone","unwatch","publishingZones","publishingZone","_","publishingZoneId","sortedZones","sortBy","json","findIndex","isOpen","catchphrase","bannerName","bannerUrl","bannerLink","Link","imgWsbPublishingZone","querySelectorAll","linkWsbPublishingZone","p","_product$Themes","_product$Themes$filte","ReviewsInfo","Count","Average","toFixed","domId","isComparable","Themes","some","th","KeyTheme","Pictogrammes","KeyRegrouping","IDTheme","IDPicture","Designation","Background","Text1","Color","Text2","Availability","DisplayAvailabilityOnListPage","IsOmnichannelOrder","formatMessage","Detail","modalData","MinSaleQuantity","htmlPrice","$onDestroy","classList","add","loaded","netwaveLoaded","wsbZonePrefix","tags","camelize","word","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","resize","resizeGrid","listen","elemId","lazy","sizes","$divs","nb","targ","clientWidth","reverse","breakpoint","col","_config","_themes","_delay","setDefaults","setTheme","setDelay","delay","themes","usSpinnerConfig","spinner","appendTo","spinnerTheme","spinnerOn","titleLogin","titleLogout","LogService","links","getLinks","$body","toggle","off","onBodyClick","contains","refresh","sellerUrl","Company","visitor","IDCard","setManagement","login","mobile","logout","updateParams","VisitorContext","goToSlide","slideNumber","tplTranslate","getCart","withRefresh","_params$Mobility$Prof","cartIsActive","Agent","Mobility","Params","UseSaleAsCart","Profile","AllModules","ModuleKey","IsActive","hasCart","Products","cartLink","showTTCPrice","ShowTTCPrice","TradeActions","tradeAction","isGift","cartProducts","reduce","$$phase","$this","deleteLine","DistrimageSrc","titleDeleteOk","removedProducts","ClearCartOK","$nav","padding","origSize","menuStyle","resizeMenus","desktop","psOpen","$mainNav","$navMenu","slider","psClose","closeDone","openDone","$animateCss","mainNavCtrl","isTouch","hoverintent","expandMenu","reduceMenu","interval","initMenu","$menu","expandDone","easing","scrollHeight","finally","collapseDone","openMenu","siblings","end","backMenu","closeMenu","$http","StringService","useElasticCore","searchAPI","userInputString","timeoutPromise","TextQuery","From","Size","searchAPICore","QueryFullText","NbFrom","NbSize","withCatalogs","xxs","getResponse","advices","categories","KeyWebAspect","designationHtml","findMatchString","searchCallback","Search","encodeURIComponent","pos","DeviceService","loadModalAddToCart","visitorContext","showPageLoader","setDevice","getSize","onChange","match","xs","sm","md","lg","isFirefox","wichUserAgent","isSafari","wichUserAgentSafari","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","lastPos","handler","isNaN","documentElement","innerHeight","ngModel","click","togglePasswordVisibility","inputPasswordFieldID","triggerElementID","inputPasswordField","triggerElement","hidePassword","theme","label","ngRequired","_id","_template","$wrapper","input","optRequired","$label","onInputChange","trim","requiredStarDisabled","ngModelInit","assign","noZoomDirective","viewport","discountFilter","format","loc","DiscountHTMLFormat","DiscountFormat","DiscountDecimalSeparator","DiscountThousandSeparator","getDiscountFilter","$stateful","args","arg","reg","num","priceFilter","ttc","PriceHTMLFormatVATincluded","PriceHTMLFormatVATexcluded","HTAmount","HTDiscountedPrice","TTCTotalPrice","HTTotalPrice","EcoContribution","a","b","remainder","priceValue","getConditioningPrice","HTPrice","priceFormat","PriceFormat","separators","PriceThousandSeparator","PriceDecimalSeparator","strMontant","separatorIndex","Currency","Symbol","ISOCode","getPriceFilter","extension","quality","absolute","crop","transparent","split1","UrlImages","split2","PlatformEnvironment","URLSite","TradeName","queryParams","deburr","CdnService","cdnId","cdnSize","cdnDesignation","cdnExtension","cdnQuality","cdnAbsolute","cdnCrop","cdnTransparent","cdnChangeable","observerCdnId","$observe","processImage","_element","_attrs","$set","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","rect","getBoundingClientRect","bottomline","right","bottom","threshhold","last","deferTimer","context","now","IntersectionObserverEntry","LazyMagic","lazyImage","deregister","newSource","eventsDeregister","bool","DocumentTouch","rule","callback","docOverflow","docElement","div","fake","getBody","cssText","createTextNode","overflow","ret","offsetHeight","testStyles","offsetTop","touchevents","MSStream","safari","_el","d","isOpera","isIE9","documentMode","isIE10","isIE11","isIEEdge","isSelfscanning","isCollabs","that","safeApply","phase","$root","assureList","list","getCurrentMatch","getComputedStyle","getPropertyValue","currentStyle","fontFamily","listenerFunc","currentMatch","previousMatch","wasPreviousMatch","doesCurrentMatch","feature","lossy","checkWebp","_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","cloneDeep","Delegation","hasServices","DelegationUsed","AutoriseModifierInfosPerso","IsManagementGiftCards","IsManagementCredits","IsManagementDedicatedProducts","IsManagementLoyaltyPoints","IsManagementWishlistTracking","IsManagementMultiWishlist","AutoriseVisualiserWishList","IsManagementSponsorShip","IsManagementVouchers","hasOrders","IsManagementOrderTracking","AutoriseVisualiserCommandes","IsManagementInvoicesAndCreditsTracking","AutoriseVisualiserFactures","IsManagementWebCartTracking","IsManagementReturns","IsManagementComplaint","IsManagementNumericProducts","IsManagementQuotationTracking","AutoriseVisualiserDevis","cartPostProcess","appPromise","cartRequests","MobilityVisitorContext","resetParams","addToCart","checkCumulativeProduct","productsToCart","CheckCumulativeProduct","Reference","Comment","Elements","Customization","CustomizablePrice","method","pullAllBy","imgSrc","fromCart","deleteLineCallback","itemQuantityInCart","checkAvailability","getProductPrice","priceObj","HasDiscount","Discount","DegressivePrice","Number","inRange","updateStore","Store","updateKey","errorKey","Errors","ErrorMessage","mailRecognized","exists","copy","MTYVisitorContext","isPro","IsCardPro","clearTemplateCache","noevent","$cacheFactory","en","removeAll","AccountUpdate","AccountHome","redirect","days","ceil","stringToDate","date","ShippingToday","endsWith","getMessage","countries","fr","es","getCountry","lang","getPostCodeInput","idHtml","UsePostalCodeCheck","controllerObject","PostCode","formData","startsWith","changeValueFromCodePoste","clearPostalCode","UseRefreshPostalCode","idHtmlElement","selectHtmlComponent","selectCountry","CountryCode","IDCountry","Country","dateToISO","UTC","getFullYear","getMonth","getDate","toISOString","minISODate","today","tomorrow","dateDay","addressCache","gpsCache","getDefer","getGeoCode","address","google","maps","Geocoder","geocode","country","address_components","long_name","Latitude","geometry","lat","Longitude","lng","getGeoCodeByGps","gps","strGps","toJson","locality","postalcode","streetnumber","short_name","City","Address","formatted_address","GMAPKey","gMapsInit","_request","$post","$put","$delete","successNotity","errorNotity","reduction","priceFrom","priceOld","IsPriceFrom","PriceFrom","priceNew","matches","toString","tmp","valueOf","api","throttleTime","isOn","debounceTime","listenerType","patterns","exec","tokens","getThumbnail","medium","high","txtAddToList","txtViewAndChoose","onlyAllowAddToCart","UseElasticCore","loadRegex","localization","configPath","CheckIdentityService","modelCtrl","std","regex","regexp","identitySelectElement","inputText","selectedIndex","refreshRegex","onchange","$setValidity","$validate","identity","getImport","initAuthentication","initLoginForm","initModalLogin","initNewClientForm","initNewClientWithoutRecognitionForm","initForgotPassword","initEmail","restore","lastCart","IDFolder","searchQuery","scroll","btnFilters","rangeFilters","isTransversal","genericExclude","priceStep","maxFilters","rangeText","initFilters","ellipsis","truncate","webAspect","currentPage","totalProducts","nbPerPage","maxPage","sortTitle","isFiltered","iScrollMaxPages","iScrollAuto","iScrollText","isMessage","nbProducts","initModule","uibRating","Attachments","dzOptions","paramName","acceptedFiles","uploadMultiple","renameFilename","dzCallbacks","successmultiple","files","file","ServerName","removedfile","targetCtrl","infos","ref","ville","department","sectionForm","CustomerPro","token","isTokenValid","idFolder","model","trustAsResourceUrl","initCustomization","idKit","idGroup","initKit","jsonPrice","txtFirstRange","txtRange","txtLastRange","txtConditioning","initPrice","initGallery","socialshare","socialshareUrl","socialshareText","socialshareMedia","socialshareHashtags","socialshareEmail","appId","FacebookAppID","initShare","urlGroup","isKit","showComponents","customizablePrice","customizablePriceTooltip","costHT","customizationCostTTC","customizationCostHT","linkForm","openReview","messageOK","initForm","items","NewsletterOK","newsletterConnect","NewsletterDejaOK","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","plans","Plans","IsProd","ApiMode","LIVE","TEST","initialize","MerchantID","$onChanges","changes","isFirstChange","selectStore","idStore","isAccountUpdate","isAccountCreate","IDStore","IsAccountCreate","_$rootScope$$eval","setStore","availability","msgExclu","storeSelected","setStoreData","_data$Cart$Products$f","deliveryOutOfQuantity","Delivery","CentralStock","DeliveryMessage","messageDeliveryOutOfQuantity","DeliveryMessageClass","pickUpOutOfQuantity","PickUp","StoreStock","PickUpMessage","messagePickUpOutOfQuantity","PickUpMessageClass","hideRazorAvailability","restoreQuickView","tempUrl","PickUpDate","selectAvailableStore","openStoreChoice","productOpenStoreChoice","availableFilter","_ctrl$productCtrl","store","latitude","longitude","daysModel","strOneTime","strTwoTimes","strClosed","cartCtrl","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","textAllResults","textCategories","textAdvices","autohidemode","cursordragontouch","cursorborder","cursorborderradius","cursorcolor","cursorwidth","enableobserver","horizrailenabled","nicescrollConfig","niceScroll","firstTime","niceTimeout","niceScrollInitEvent","niceOption","loadPlugin","niceScrollEvent","_element$getNiceScrol","getNiceScroll","uiDatepickerPopup","usSpinnerConfigProvider","bsValidationConfigProvider","parallelUploads","maxFilesize","addRemoveLinks","dictRemoveFile","quotationCtrl","isQuotationButton","isModalButton","modalItem","msgMin","titleDetail","titleModifyOk","btnTooltip","titleResultOk","tooltipAdd","tooltipYet","tooltipChoice","loadTemplate","titleTxt","clickMenu","showMenu","hideMenu","rzSliderModel","rzSliderHigh","rzSliderOptions","RzSlider","callbacks","methods","mask","isNegative","decimal","group","posLeadZero","posTrailZero","posSeparator","part","szSep","integer","indx","suffix","lastIndexOf"],"mappings":"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","file":"main.d0e9efb9acf8aa2b9c05.js","sourcesContent":["(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","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;","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","export const googleTranslateChangeTitle = () => {\r\n console.log('translate');\r\n\r\n if ($('#google_translate_element span').eq(1).text() != '') {\r\n $('.google_translate_element').hide();\r\n $('.google_translate_element img').eq(0).remove();\r\n $('.google_translate_element span').eq(1).html('Français');\r\n $('.google_translate_element span').eq(3).html('');\r\n $('.google_translate_element').show();\r\n //resizeGoogleTranslate();\r\n } else {\r\n setTimeout(googleTranslateChangeTitle, 50);\r\n }\r\n};\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","/*\r\n * angucomplete-alt v3.0.0\r\n * Autocomplete directive for AngularJS\r\n * This is a fork of Daryl Rowland's angucomplete with some extra features.\r\n * By Hidenari Nozaki\r\n * https://github.com/ghiden/angucomplete-alt\r\n */\r\n\r\nexport default angular\r\n .module('angucomplete-alt', [])\r\n\r\n .directive('angucompleteAlt', function ($q, $timeout) {\r\n // keyboard events\r\n const KEY_DW = 40;\r\n const KEY_RT = 39;\r\n const KEY_UP = 38;\r\n const KEY_LF = 37;\r\n const KEY_ES = 27;\r\n const KEY_EN = 13;\r\n const KEY_TAB = 9;\r\n\r\n const MIN_LENGTH = 3;\r\n const MAX_LENGTH = 524288; // the default max length per the html maxlength attribute\r\n const PAUSE = 500;\r\n const BLUR_TIMEOUT = 200;\r\n\r\n // string constants\r\n const TEMPLATE_URL = 'Modules/Shared/Autocomplete/import/autocomplete.tpl';\r\n\r\n function link(scope, elem, attrs) {\r\n const inputField = elem.find('input');\r\n let minlength = MIN_LENGTH;\r\n let searchTimer = null;\r\n let hideTimer;\r\n const validState = null;\r\n let httpCanceller = null;\r\n const httpCallInProgress = false;\r\n\r\n scope.currentIndex = null;\r\n scope.searching = false;\r\n\r\n scope.$on('angucomplete-alt:clearInput', (event, elementId) => {\r\n if (!elementId || elementId === scope.id) {\r\n scope.searchStr = null;\r\n callOrAssign();\r\n clearResults();\r\n }\r\n });\r\n\r\n scope.$on('angucomplete-alt:changeInput', (event, elementId, newval) => {\r\n if (!!elementId && elementId === scope.id) {\r\n handleInputChange(newval);\r\n }\r\n });\r\n\r\n scope.$on('angucomplete-alt:setFocus', event => {\r\n inputField.focus();\r\n });\r\n\r\n function handleInputChange(newval) {\r\n if (newval) {\r\n scope.searchStr = newval;\r\n }\r\n }\r\n\r\n function callOrAssign(value, str) {\r\n if (angular.isFunction(scope.selectedObject)) {\r\n scope.selectedObject(value, str);\r\n } else {\r\n scope.selectedObject = value;\r\n }\r\n }\r\n\r\n function setInputString(str) {\r\n callOrAssign({ originalObject: str });\r\n\r\n if (scope.clearSelected) {\r\n scope.searchStr = null;\r\n }\r\n clearResults();\r\n }\r\n\r\n function keyupHandler(event) {\r\n const which = event.which;\r\n if (which === KEY_LF || which === KEY_RT) {\r\n // do nothing\r\n return;\r\n }\r\n\r\n if (which === KEY_UP || which === KEY_EN) {\r\n event.preventDefault();\r\n } else if (which === KEY_DW) {\r\n event.preventDefault();\r\n if (!scope.showDropdown && scope.searchStr && scope.searchStr.length >= minlength) {\r\n initResults();\r\n scope.searching = true;\r\n searchTimerComplete(scope.searchStr);\r\n }\r\n } else if (which === KEY_ES) {\r\n clearResults();\r\n scope.$apply(() => {\r\n inputField.val(scope.searchStr);\r\n });\r\n } else {\r\n if (minlength === 0 && !scope.searchStr) {\r\n return;\r\n }\r\n\r\n if (!scope.searchStr || scope.searchStr === '') {\r\n scope.showDropdown = false;\r\n } else if (scope.searchStr.length >= minlength) {\r\n initResults();\r\n\r\n if (searchTimer) {\r\n $timeout.cancel(searchTimer);\r\n }\r\n\r\n scope.searching = true;\r\n\r\n searchTimer = $timeout(() => {\r\n searchTimerComplete(scope.searchStr);\r\n }, scope.pause);\r\n }\r\n\r\n if (validState && validState !== scope.searchStr && !scope.clearSelected) {\r\n scope.$apply(() => {\r\n callOrAssign();\r\n });\r\n }\r\n }\r\n }\r\n\r\n function handleOverrideSuggestions(event) {\r\n if (scope.overrideSuggestions && !(scope.selectedObject && scope.selectedObject[scope.matchField] === scope.searchStr)) {\r\n if (event) {\r\n event.preventDefault();\r\n }\r\n\r\n // cancel search timer\r\n $timeout.cancel(searchTimer);\r\n // cancel http request\r\n cancelHttpRequest();\r\n\r\n setInputString(scope.searchStr);\r\n }\r\n }\r\n\r\n function updateInputField() {\r\n const current = scope.results[scope.currentIndex];\r\n inputField.val(current[scope.matchField]);\r\n }\r\n\r\n function keydownHandler(event) {\r\n const which = event.which;\r\n\r\n if (which === KEY_EN && scope.results) {\r\n if (scope.currentIndex >= 0 && scope.currentIndex < scope.results.length) {\r\n event.preventDefault();\r\n scope.selectResult(scope.results[scope.currentIndex]);\r\n } else {\r\n scope.goSearch(scope.searchStr);\r\n if (searchTimer) {\r\n $timeout.cancel(searchTimer);\r\n }\r\n scope.searching = false;\r\n inputField.blur();\r\n handleOverrideSuggestions(event);\r\n clearResults();\r\n cancelHttpRequest();\r\n }\r\n scope.$apply();\r\n } else if (which === KEY_EN && !scope.results) {\r\n scope.goSearch(scope.searchStr);\r\n if (searchTimer) {\r\n $timeout.cancel(searchTimer);\r\n }\r\n scope.searching = false;\r\n inputField.blur();\r\n handleOverrideSuggestions(event);\r\n clearResults();\r\n cancelHttpRequest();\r\n } else if (which === KEY_DW && scope.results) {\r\n event.preventDefault();\r\n if (scope.currentIndex + 1 < scope.results.length && scope.showDropdown) {\r\n scope.$apply(() => {\r\n scope.currentIndex++;\r\n updateInputField();\r\n });\r\n }\r\n } else if (which === KEY_UP && scope.results) {\r\n event.preventDefault();\r\n if (scope.currentIndex >= 1) {\r\n scope.$apply(() => {\r\n scope.currentIndex--;\r\n updateInputField();\r\n });\r\n } else if (scope.currentIndex === 0) {\r\n scope.$apply(() => {\r\n scope.currentIndex = -1;\r\n inputField.val(scope.searchStr);\r\n });\r\n }\r\n } else if (which === KEY_TAB) {\r\n if (scope.results && scope.results.length > 0 && scope.showDropdown) {\r\n if (scope.currentIndex === -1 && scope.overrideSuggestions) {\r\n // intentionally not sending event so that it does not\r\n // prevent default tab behavior\r\n handleOverrideSuggestions();\r\n } else {\r\n if (scope.currentIndex === -1) {\r\n scope.currentIndex = 0;\r\n }\r\n scope.selectResult(scope.results[scope.currentIndex]);\r\n scope.$digest();\r\n }\r\n } else if (scope.searchStr && scope.searchStr.length > 0) {\r\n handleOverrideSuggestions();\r\n }\r\n } else if (which === KEY_ES) {\r\n // This is very specific to IE10/11 #272\r\n // without this, IE clears the input text\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n function httpSuccessCallbackGen(str) {\r\n return (responseData, status, headers, config) => {\r\n // normalize return object from promise\r\n if (!status && !headers && !config && responseData.data) {\r\n responseData = responseData.data;\r\n }\r\n scope.searching = false;\r\n processResults(scope.remoteUrlResponseFormatter(responseData, str), str);\r\n };\r\n }\r\n\r\n function httpErrorCallback(errorRes, status, headers, config) {\r\n scope.searching = httpCallInProgress;\r\n\r\n // normalize return obejct from promise\r\n if (!status && !headers && !config) {\r\n status = errorRes.status;\r\n }\r\n\r\n // cancelled/aborted\r\n if (status === 0 || status === -1) {\r\n return;\r\n }\r\n if (console && console.error) {\r\n console.error('http error');\r\n }\r\n }\r\n\r\n function cancelHttpRequest() {\r\n if (httpCanceller) {\r\n httpCanceller.resolve();\r\n }\r\n }\r\n\r\n function getRemoteResults(str) {\r\n cancelHttpRequest();\r\n\r\n httpCanceller = $q.defer();\r\n\r\n scope.remoteApiHandler(str, httpCanceller.promise).then(httpSuccessCallbackGen(str)).catch(httpErrorCallback);\r\n }\r\n\r\n function clearResults() {\r\n scope.showDropdown = false;\r\n scope.results = [];\r\n if (scope.clearResults) {\r\n scope.clearResults();\r\n }\r\n }\r\n\r\n function initResults() {\r\n scope.showDropdown = true;\r\n scope.currentIndex = -1;\r\n scope.results = [];\r\n }\r\n\r\n function searchTimerComplete(str) {\r\n // Begin the search\r\n if (!str || str.length < minlength) {\r\n return;\r\n }\r\n getRemoteResults(str);\r\n }\r\n\r\n function processResults(responseData) {\r\n scope.results = responseData.results;\r\n\r\n if (responseData.count === 0) {\r\n scope.showDropdown = false;\r\n } else {\r\n scope.showDropdown = true;\r\n }\r\n }\r\n\r\n function showAll() {\r\n scope.searching = true;\r\n getRemoteResults('');\r\n }\r\n\r\n scope.onFocusHandler = () => {\r\n if (hideTimer) {\r\n $timeout.cancel(hideTimer);\r\n }\r\n if (scope.focusIn) {\r\n scope.focusIn();\r\n }\r\n };\r\n\r\n scope.hideResults = () => {\r\n hideTimer = $timeout(() => {\r\n clearResults();\r\n scope.showDropdown = false;\r\n scope.$apply(() => {\r\n if (scope.searchStr && scope.searchStr.length > 0) {\r\n inputField.val(scope.searchStr);\r\n }\r\n });\r\n }, BLUR_TIMEOUT);\r\n cancelHttpRequest();\r\n\r\n if (scope.focusOut) {\r\n scope.focusOut();\r\n }\r\n\r\n if (scope.overrideSuggestions) {\r\n if (scope.searchStr && scope.searchStr.length > 0 && scope.currentIndex === -1) {\r\n handleOverrideSuggestions();\r\n }\r\n }\r\n };\r\n\r\n scope.hoverRow = index => {\r\n scope.currentIndex = index;\r\n };\r\n\r\n scope.selectResult = result => {\r\n const str = scope.searchStr;\r\n if (scope.clearSelected) {\r\n scope.searchStr = null;\r\n } else {\r\n scope.searchStr = result[scope.matchField];\r\n }\r\n callOrAssign(result, str);\r\n clearResults();\r\n };\r\n\r\n scope.inputChangeHandler = str => {\r\n if (str.length < minlength) {\r\n cancelHttpRequest();\r\n clearResults();\r\n } else if (str.length === 0 && minlength === 0) {\r\n showAll();\r\n }\r\n\r\n if (scope.inputChanged) {\r\n str = scope.inputChanged(str);\r\n }\r\n return str;\r\n };\r\n\r\n scope.goSearch = () => {\r\n clearResults();\r\n scope.ctrl.goSearch(scope.searchStr);\r\n };\r\n\r\n // check min length\r\n if (scope.minlength && scope.minlength !== '') {\r\n minlength = parseInt(scope.minlength, 10);\r\n }\r\n\r\n // check pause time\r\n if (!scope.pause) {\r\n scope.pause = PAUSE;\r\n }\r\n\r\n // check clearSelected\r\n if (!scope.clearSelected) {\r\n scope.clearSelected = false;\r\n }\r\n\r\n // check override suggestions\r\n if (!scope.overrideSuggestions) {\r\n scope.overrideSuggestions = false;\r\n }\r\n\r\n scope.inputType = attrs.type ? attrs.type : 'text';\r\n\r\n // set max length (default to maxlength deault from html\r\n scope.maxlength = attrs.maxlength ? attrs.maxlength : MAX_LENGTH;\r\n\r\n // register events\r\n inputField.on('keydown', keydownHandler);\r\n inputField.on('keyup compositionend', keyupHandler);\r\n }\r\n\r\n return {\r\n restrict: 'EA',\r\n scope: {\r\n selectedObject: '=',\r\n remoteUrlResponseFormatter: '=',\r\n remoteApiHandler: '=',\r\n id: '@',\r\n type: '@',\r\n placeholder: '@',\r\n inputClass: '@',\r\n pause: '@',\r\n minlength: '@',\r\n clearSelected: '@',\r\n overrideSuggestions: '@',\r\n inputChanged: '=',\r\n focusOut: '&',\r\n focusIn: '&',\r\n fieldTabindex: '@',\r\n inputName: '@',\r\n clearResults: '=',\r\n matchField: '@',\r\n ctrl: '<'\r\n },\r\n templateUrl: (element, attrs) => attrs.templateUrl || TEMPLATE_URL,\r\n compile: () => link\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","import 'import/js/plugins/detect.js';\r\nimport 'js/dependencies.js';\r\nimport 'js/project.js';\r\nimport 'js/components.js';\r\n\r\n/**\r\n * @namespace angular\r\n */\r\nangular\r\n .module('app', ['dependencies', 'project', 'components'])\r\n\r\n .constant('Environment', _ENV_)\r\n\r\n /* @ngInject */\r\n .config(function ($provide) {\r\n // monkey-patches $templateCache to have a keys() method\r\n /* @ngInject */\r\n $provide.decorator('$templateCache', function ($delegate) {\r\n const keys = [];\r\n const put = $delegate.put;\r\n const remove = $delegate.remove;\r\n\r\n $delegate.put = function (key, value) {\r\n if (!keys.includes(key)) {\r\n keys.push(key);\r\n }\r\n return put(key, value);\r\n };\r\n\r\n $delegate.remove = function (key) {\r\n keys.splice(keys.indexOf(key), 1);\r\n return remove(key);\r\n };\r\n\r\n $delegate.getKeys = function () {\r\n return keys;\r\n };\r\n\r\n return $delegate;\r\n });\r\n })\r\n\r\n /* @ngInject */\r\n .config(function ($compileProvider, Environment) {\r\n // $qProvider.errorOnUnhandledRejections(false);\r\n $compileProvider.commentDirectivesEnabled(false);\r\n $compileProvider.cssClassDirectivesEnabled(false);\r\n if (Environment === 'prod') {\r\n $compileProvider.debugInfoEnabled(false);\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .config(function (lazyConfigProvider) {\r\n lazyConfigProvider.setOptions({\r\n offset: 200,\r\n errorClass: 'error',\r\n successClass: 'loaded'\r\n });\r\n })\r\n\r\n /* @ngInject */\r\n .run(function (AppService, bsValidationConfig) {\r\n AppService.getParams();\r\n\r\n AppService.getTranslate()\r\n .then(translate => {\r\n Object.entries(translate.forms).forEach(element => {\r\n translate.forms[element[0]] = element[1]\r\n .replace('{0}', '{{0}}')\r\n .replace('{1}', '{{1}}')\r\n .replace('{validValue}', '{{validValue}}')\r\n .replace('{validValue1}', '{{validValue1}}')\r\n .replace('{validValue2}', '{{validValue2}}')\r\n .replace('{matchName}', '{{matchName}}');\r\n });\r\n bsValidationConfig.setMessages(translate.forms);\r\n bsValidationConfig.suppressWarnings = true;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n\r\n window.onunload = () => {};\r\n window.onpageshow = function (event) {\r\n if (event.persisted) {\r\n window.location.reload();\r\n }\r\n };\r\n });\r\n\r\nangular.element(() => {\r\n if (!$(document).injector()) {\r\n angular.bootstrap(document, ['app'], {\r\n strictDi: true\r\n });\r\n }\r\n});\r\n\r\nif (module.hot) {\r\n module.hot.accept();\r\n}\r\n","/* eslint-disable */\r\n(function () {\r\n 'use strict';\r\n if (window.isBot) {\r\n throw new Error(\"\");\r\n }\r\n if (!window.location.origin) {\r\n window.location.origin = window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\r\n }\r\n var pattern = new RegExp('bot|crawl|yahoo|facebook|google', 'i');\r\n window.isBot = !('onscroll' in window) || pattern.test(navigator.userAgent);\r\n window.isCache = window.location.origin.indexOf('webcache.googleusercontent') !== -1 || window.location.origin.indexOf('bingj.com') !== -1;\r\n})();\r\n","angular.module(\"uib/template/tabs/tab.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tab.html\",\r\n \"
  • \\n\" +\r\n \" {{heading}}\\n\" +\r\n \"
  • \\n\" +\r\n \"\");\r\n}]);\r\n","angular.module(\"uib/template/tabs/tabset.html\", []).run([\"$templateCache\", function ($templateCache) {\r\n $templateCache.put(\"uib/template/tabs/tabset.html\",\r\n \"
    \\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n","angular.module('ui.bootstrap.tabs', [])\r\n\r\n.controller('UibTabsetController', ['$scope', function ($scope) {\r\n var ctrl = this,\r\n oldIndex;\r\n ctrl.tabs = [];\r\n\r\n ctrl.select = function(index, evt) {\r\n if (!destroyed) {\r\n var previousIndex = findTabIndex(oldIndex);\r\n var previousSelected = ctrl.tabs[previousIndex];\r\n if (previousSelected) {\r\n previousSelected.tab.onDeselect({\r\n $event: evt,\r\n $selectedIndex: index\r\n });\r\n if (evt && evt.isDefaultPrevented()) {\r\n return;\r\n }\r\n previousSelected.tab.active = false;\r\n }\r\n\r\n var selected = ctrl.tabs[index];\r\n if (selected) {\r\n selected.tab.onSelect({\r\n $event: evt\r\n });\r\n selected.tab.active = true;\r\n ctrl.active = selected.index;\r\n oldIndex = selected.index;\r\n } else if (!selected && angular.isDefined(oldIndex)) {\r\n ctrl.active = null;\r\n oldIndex = null;\r\n }\r\n }\r\n };\r\n\r\n ctrl.addTab = function addTab(tab) {\r\n ctrl.tabs.push({\r\n tab: tab,\r\n index: tab.index\r\n });\r\n ctrl.tabs.sort(function(t1, t2) {\r\n if (t1.index > t2.index) {\r\n return 1;\r\n }\r\n\r\n if (t1.index < t2.index) {\r\n return -1;\r\n }\r\n\r\n return 0;\r\n });\r\n\r\n if (tab.index === ctrl.active || !angular.isDefined(ctrl.active) && ctrl.tabs.length === 1) {\r\n var newActiveIndex = findTabIndex(tab.index);\r\n ctrl.select(newActiveIndex);\r\n }\r\n };\r\n\r\n ctrl.removeTab = function removeTab(tab) {\r\n var index;\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].tab === tab) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n if (ctrl.tabs[index].index === ctrl.active) {\r\n var newActiveTabIndex = index === ctrl.tabs.length - 1 ?\r\n index - 1 : index + 1 % ctrl.tabs.length;\r\n ctrl.select(newActiveTabIndex);\r\n }\r\n\r\n ctrl.tabs.splice(index, 1);\r\n };\r\n\r\n $scope.$watch('tabset.active', function(val) {\r\n if (angular.isDefined(val) && val !== oldIndex) {\r\n ctrl.select(findTabIndex(val));\r\n }\r\n });\r\n\r\n var destroyed;\r\n $scope.$on('$destroy', function() {\r\n destroyed = true;\r\n });\r\n\r\n function findTabIndex(index) {\r\n for (var i = 0; i < ctrl.tabs.length; i++) {\r\n if (ctrl.tabs[i].index === index) {\r\n return i;\r\n }\r\n }\r\n }\r\n}])\r\n\r\n.directive('uibTabset', function() {\r\n return {\r\n transclude: true,\r\n replace: true,\r\n scope: {},\r\n bindToController: {\r\n active: '=?',\r\n type: '@'\r\n },\r\n controller: 'UibTabsetController',\r\n controllerAs: 'tabset',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tabset.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n scope.vertical = angular.isDefined(attrs.vertical) ?\r\n scope.$parent.$eval(attrs.vertical) : false;\r\n scope.justified = angular.isDefined(attrs.justified) ?\r\n scope.$parent.$eval(attrs.justified) : false;\r\n scope.centered = angular.isDefined(attrs.centered) ?\r\n scope.$parent.$eval(attrs.centered) : false;\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTab', ['$parse', function($parse) {\r\n return {\r\n require: '^uibTabset',\r\n replace: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/tabs/tab.html';\r\n },\r\n transclude: true,\r\n scope: {\r\n heading: '@',\r\n index: '=?',\r\n classes: '@?',\r\n onSelect: '&select', //This callback is called in contentHeadingTransclude\r\n //once it inserts the tab's content into the dom\r\n onDeselect: '&deselect'\r\n },\r\n controller: function() {\r\n //Empty controller so other directives can require being 'under' a tab\r\n },\r\n controllerAs: 'tab',\r\n link: function(scope, elm, attrs, tabsetCtrl, transclude) {\r\n scope.disabled = false;\r\n if (attrs.disable) {\r\n scope.$parent.$watch($parse(attrs.disable), function(value) {\r\n scope.disabled = !! value;\r\n });\r\n }\r\n\r\n scope.hide = false;\r\n if (attrs.hide) {\r\n scope.$parent.$watch($parse(attrs.hide), function(value) {\r\n scope.hide = !! value;\r\n });\r\n }\r\n\r\n if (angular.isUndefined(attrs.index)) {\r\n if (tabsetCtrl.tabs && tabsetCtrl.tabs.length) {\r\n scope.index = Math.max.apply(null, tabsetCtrl.tabs.map(function(t) { return t.index; })) + 1;\r\n } else {\r\n scope.index = 0;\r\n }\r\n }\r\n\r\n if (angular.isUndefined(attrs.classes)) {\r\n scope.classes = '';\r\n }\r\n\r\n scope.select = function(evt) {\r\n if (!scope.disabled) {\r\n var index;\r\n for (var i = 0; i < tabsetCtrl.tabs.length; i++) {\r\n if (tabsetCtrl.tabs[i].tab === scope) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n\r\n tabsetCtrl.select(index, evt);\r\n }\r\n };\r\n\r\n tabsetCtrl.addTab(scope);\r\n scope.$on('$destroy', function() {\r\n tabsetCtrl.removeTab(scope);\r\n });\r\n\r\n //We need to transclude later, once the content container is ready.\r\n //when this link happens, we're inside a tab heading.\r\n scope.$transcludeFn = transclude;\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibTabHeadingTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTab',\r\n link: function(scope, elm) {\r\n scope.$watch('headingElement', function updateHeadingElement(heading) {\r\n if (heading) {\r\n elm.html('');\r\n elm.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n})\r\n\r\n.directive('uibTabContentTransclude', function() {\r\n return {\r\n restrict: 'A',\r\n require: '^uibTabset',\r\n link: function(scope, elm, attrs) {\r\n var tab = scope.$eval(attrs.uibTabContentTransclude).tab;\r\n\r\n //Now our tab is ready to be transcluded: both the tab heading area\r\n //and the tab content area are loaded. Transclude 'em both.\r\n tab.$transcludeFn(tab.$parent, function(contents) {\r\n angular.forEach(contents, function(node) {\r\n if (isTabHeading(node)) {\r\n //Let tabHeadingTransclude know.\r\n tab.headingElement = node;\r\n } else {\r\n elm.append(node);\r\n }\r\n });\r\n });\r\n }\r\n };\r\n\r\n function isTabHeading(node) {\r\n return node.tagName && (\r\n node.hasAttribute('uib-tab-heading') ||\r\n node.hasAttribute('data-uib-tab-heading') ||\r\n node.hasAttribute('x-uib-tab-heading') ||\r\n node.tagName.toLowerCase() === 'uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'data-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'x-uib-tab-heading' ||\r\n node.tagName.toLowerCase() === 'uib:tab-heading'\r\n );\r\n }\r\n});\r\n","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 // Panier\r\n if (route.Name === 'CartToken' || route.Name === 'CartPaymentError' || route.Name === 'CartPaymentRedirect') {\r\n // On ne change rien pour cette route\r\n when(route, {\r\n templateUrl: () => routingService.getLocation(),\r\n name: route.Name\r\n });\r\n } else if (route.Name === 'QuickOrder') {\r\n when(route, {\r\n templateUrl: '/Template/Cart/QuickOrderView',\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const isOnePage = $(document.body).data('cart') === true;\r\n const deferred = $q.defer();\r\n import(/* webpackChunkName: \"cart.quick.order\" */ 'Modules/Cart/import/quick.order.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n if (isOnePage) {\r\n import(/* webpackChunkName: \"cart.onepage.display\" */ 'Modules/Cart/import/onepage/display.js').then(_response => {\r\n $injector.loadNewModules([_response.default.name]);\r\n deferred.resolve();\r\n });\r\n } else {\r\n import(/* webpackChunkName: \"cart.steps.display\" */ 'Modules/Cart/import/steps/display.js').then(_response => {\r\n $injector.loadNewModules([_response.default.name]);\r\n deferred.resolve();\r\n });\r\n }\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'Cart' || route.Name === 'CartRecognition') {\r\n when(route, {\r\n templateUrl: () => {\r\n const isOnePage = $(document.body).data('cart') === true;\r\n return `/Template/Cart/${isOnePage ? 'OnePageCheckout' : 'StepsCheckout'}/Display`;\r\n },\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const isOnePage = $(document.body).data('cart') === true;\r\n const deferred = $q.defer();\r\n if (isOnePage) {\r\n import(/* webpackChunkName: \"cart.onepage.display\" */ 'Modules/Cart/import/onepage/display.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n } else {\r\n import(/* webpackChunkName: \"cart.steps.display\" */ 'Modules/Cart/import/steps/display.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n }\r\n return deferred.promise;\r\n }\r\n },\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartIdentification') {\r\n when(route, {\r\n templateUrl: `/Template/Cart/${route.Name.split('Cart')[1]}`,\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n load: ($q, $injector) => {\r\n const isOnePage = $(document.body).data('cart') === true;\r\n const deferred = $q.defer();\r\n if (isOnePage) {\r\n import(/* webpackChunkName: \"cart.onepage.identification\" */ 'Modules/Cart/import/onepage/identification.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n } else {\r\n import(/* webpackChunkName: \"cart.steps.identification\" */ 'Modules/Cart/import/steps/identification.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n }\r\n return deferred.promise;\r\n }\r\n },\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartOnePageCheckout') {\r\n when(route, {\r\n templateUrl: () => `/Template/Cart/OnePageCheckout/${route.Name.split('Cart')[1]}?t${routingService.getCacheBusting()}`,\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(true, 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/onePageCkeckout.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n authorize: true,\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartOnePageCheckoutPayment') {\r\n when(route, {\r\n templateUrl: '/Template/Cart/OnePageCheckout/OnePageCheckout?payment',\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(true, 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/onePageCkeckout.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n authorize: true,\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartShipping') {\r\n when(route, {\r\n templateUrl: `/Template/Cart/StepsCheckout/${route.Name.split('Cart')[1]}`,\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(true, 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 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.payment\" */ 'Modules/Cart/import/steps/payment.js').then(response => {\r\n $injector.loadNewModules([response.default.name]);\r\n deferred.resolve();\r\n });\r\n return deferred.promise;\r\n }\r\n },\r\n authorize: true,\r\n ngRoute: true\r\n });\r\n } else if (route.Name === 'CartValidation') {\r\n when(route, {\r\n templateUrl: `/Template/Cart/StepsCheckout/${route.Name.split('Cart')[1]}`,\r\n name: route.Name,\r\n cart: true,\r\n resolve: {\r\n /* @ngInject */\r\n authorize: authService => authService.authorize(true, 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 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 // Animations dans le panier en fonction des étapes\r\n if (next.cart) {\r\n $rootScope.animation = 'page-transition';\r\n const _routes = RoutesService.get();\r\n let stepTo = 1;\r\n let stepFrom = 0;\r\n\r\n try {\r\n stepFrom = Object.entries(_routes).find(o => o[1].route === current.originalPath)[1].step;\r\n stepTo = Object.entries(_routes).find(o => o[1].route === next.originalPath)[1].step;\r\n } catch (ex) {}\r\n\r\n if (stepFrom === 0 && stepTo === 1) {\r\n $rootScope.animation = 'page-transition-first';\r\n } else if (stepTo < stepFrom) {\r\n $rootScope.animation = 'page-transition-back';\r\n }\r\n }\r\n\r\n if (!next.name) {\r\n const route = Object.entries(RoutesService.getMap()).find(r => r[1].route === next.originalPath);\r\n if (route) next.name = route[1].name;\r\n }\r\n\r\n RoutingService.set({\r\n to: next,\r\n from: current || next\r\n });\r\n });\r\n\r\n // eslint-disable-next-line\r\n $rootScope.$on('$routeChangeError', function (event, current, previous, rejection) {\r\n if (rejection.message && rejection.message.indexOf('HTTP status: -1') !== -1) return;\r\n\r\n if (current.name && current.name.indexOf('Account') === 0) {\r\n $location.path(RoutesService.getUrlByName('Login'));\r\n } else if (current.name && current.name.indexOf('Cart') === 0) {\r\n $location.path(rejection.message === 'noCart' ? RoutesService.getUrlByName('Cart') : RoutesService.getUrlByName('CartIdentification'));\r\n } else {\r\n $rootScope.$broadcast('showPageLoader', false);\r\n AppService.getTranslate().then(translate => {\r\n toastr.warning('', translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n });\r\n AppService.getParams().then(params => {\r\n if (!params.Localization.UseLogs) return;\r\n let message =\r\n $location.path() +\r\n (current && current.loadedTemplateUrl ? ` | current: ${current.loadedTemplateUrl}` : '') +\r\n (previous && previous.loadedTemplateUrl ? ` | previous: ${previous.loadedTemplateUrl}` : '');\r\n if (rejection) {\r\n message += ` | rejection: ${rejection.message} | stack: ${rejection.stack}`;\r\n }\r\n HttpService.post({\r\n url: '/Log',\r\n data: {\r\n Key: '$routeChangeError',\r\n Message: message\r\n }\r\n });\r\n });\r\n $window.location.href = $window.location.href;\r\n }\r\n });\r\n\r\n // eslint-disable-next-line\r\n $rootScope.$on('$locationChangeStart', (event, next, current) => {\r\n const routing = RoutingService.get();\r\n\r\n // Pour les routes hors Compte et Panier, on enregistre la position du scroll\r\n if (!routing.to.name || (routing.to.name && routing.to.name.indexOf('Account') !== 0 && routing.to.name.indexOf('Cart') !== 0)) {\r\n RoutingService.scrollCache[RoutingService.getPath(current)] = $window.pageYOffset;\r\n }\r\n\r\n // si première route de l'application, on annule le traitement pour les routes hors Compte et Panier (sans variable ngRoute)\r\n if (!$rootScope.ngRouter && routing.to && !routing.to.ngRoute) {\r\n $rootScope.ngRouter = true;\r\n let findRoute = Object.entries($route.routes).find(o => o[1].hasOwnProperty('name') && o[1].name === routing.to.name);\r\n findRoute = findRoute ? findRoute[1] : {};\r\n $route.current = merge({}, findRoute, { params: routing.to.params });\r\n if ($location.hash()) $timeout($anchorScroll, 1000);\r\n\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n ModalService.close();\r\n\r\n // init des menus\r\n $('#navMenu, #navSecondary, #navAside').find('li.active').removeClass('active');\r\n $rootScope.$broadcast('searchClose');\r\n\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n if (routing.from && routing.from.name && routing.to && routing.to.name) {\r\n // Si on sort d'une catégorie, on supprime les query (facettes)\r\n if (\r\n (routing.from.name.indexOf('Category') === 0 || routing.from.name.indexOf('SortedCategory') === 0) &&\r\n ((routing.to.name.indexOf('Category') !== 0 && routing.to.name.indexOf('SortedCategory') !== 0) ||\r\n (routing.from.params && routing.to.params && routing.from.params.categoryId !== routing.to.params.categoryId))\r\n ) {\r\n $location.search({});\r\n }\r\n\r\n // Si on sort d'une recherche, on supprime les query (facettes)\r\n if (\r\n routing.from.name.indexOf('Search') !== -1 &&\r\n (routing.to.name.indexOf('Search') === -1 || (routing.from.params && routing.to.params && routing.from.params.q !== routing.to.params.q))\r\n ) {\r\n $location.search({});\r\n }\r\n }\r\n\r\n if (!$rootScope.ngRouter) {\r\n $rootScope.backToStore = '/';\r\n $rootScope.ngRouter = true;\r\n } else if (!routing.from.name || routing.from.name.indexOf('Cart') !== 0) {\r\n $rootScope.backToStore = current;\r\n }\r\n });\r\n\r\n $rootScope.$on('$locationChangeSuccess', () => {\r\n currentLocation = $location.url();\r\n });\r\n\r\n $rootScope.$watch(\r\n () => $location.url(),\r\n newLocation => {\r\n $rootScope.popstate = currentLocation === newLocation;\r\n }\r\n );\r\n\r\n $rootScope.$on('$viewContentLoaded', () => {\r\n window.dataLayer = window.dataLayer || [];\r\n // eslint-disable-next-line\r\n dataLayer.push({\r\n event: 'pageView',\r\n url: $location.path()\r\n });\r\n\r\n $rootScope.initRouter = true;\r\n\r\n $rootScope.$broadcast('showPageLoader', false);\r\n $rootScope.$broadcast('lazy:refresh');\r\n\r\n if ($location.hash()) {\r\n $anchorScroll();\r\n } else {\r\n setTimeout(() => {\r\n let getScrollPos = $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\t'use strict';\r\n\r\n\tangular\r\n\t\t.module('bootstrap.angular.validation', [])\r\n\r\n\t\t.directive('form',\r\n\t\t\t['$parse', 'bsValidationService',\r\n\t\t\tfunction ($parse, bsValidationService) {\r\n\t return {\r\n\t restrict: 'E',\r\n\t require: 'form',\r\n\t priority: 1000, // Setting a higher priority so that this directive compiles first.\r\n\t compile: function ($formElement, $formAttributes) {\r\n\t if (bsValidationService.isValidationDisabled($formElement)) {\r\n\t return;\r\n\t }\r\n\r\n\t // Disable HTML5 validation display\r\n\t $formElement.attr('novalidate', 'novalidate');\r\n\t bsValidationService.addDirective($formElement);\r\n\r\n\t var ngSubmit = $formAttributes.ngSubmit;\r\n\t /*\r\n\t * Removing ngSubmit attribute if any since ngSubmit by default doesn't respects the validation errors\r\n\t * on the input fields.\r\n\t */\r\n\t delete $formAttributes.ngSubmit;\r\n\r\n\t var preLinkFunction = function ($scope, formElement, $attr, formController) {\r\n\t // Expose a method to manually show the validation state\r\n\t formController.$showValidation = function () {\r\n\t formController.$setSubmitted();\r\n\t // Tell form elements to show validation state\r\n\t $scope.$broadcast('onBsValidationStateChange', {showValidationState: true});\r\n\t };\r\n\r\n\t formController.$hideValidation = function () {\r\n\t formController.$setPristine();\r\n\t // Tell form elements to hide validation state\r\n\t $scope.$broadcast('onBsValidationStateChange', {showValidationState: false});\r\n\t };\r\n\t formController.$resetValidation = function () {\r\n\t $scope.$broadcast('onBsValidationReset');\r\n\t };\r\n\r\n\r\n\t var markPristineAfterSubmit = formElement[0].attributes.hasOwnProperty('bs-pristine-on-submit');\r\n\r\n\t formElement.on('submit', function (event) {\r\n\t // If any of the form element has not passed the validation\r\n\t if (formController.$invalid) {\r\n\t // Then focus the first invalid element\r\n\t formElement[0].querySelector('.ng-invalid[ng-model]').focus();\r\n\t return false;\r\n\t }\r\n\r\n\t // Parse the handler of ng-submit & execute it\r\n\t var submitHandler = $parse(ngSubmit);\r\n\t $scope.$apply(function () {\r\n\t submitHandler($scope, {$event: event});\r\n\r\n\t formController.$commitViewValue();\r\n\t formController.$setSubmitted();\r\n\r\n\t if (markPristineAfterSubmit) {\r\n\t formController.$hideValidation();\r\n\t }\r\n\t });\r\n\r\n\t if (markPristineAfterSubmit) {\r\n\t /**\r\n\t * Prevent other submit event listener registered via Angular so that we can mark the form with\r\n\t * the pristine state. Otherwise, that Angular's listener is getting called at the last and is again\r\n\t * setting form to the submitted.\r\n\t *\r\n\t * https://api.jquery.com/event.stopimmediatepropagation/\r\n\t */\r\n\t event.stopImmediatePropagation();\r\n\t event.preventDefault();\r\n\t }\r\n\r\n\t return true;\r\n\t });\r\n\t };\r\n\r\n\t return {\r\n\t pre: preLinkFunction\r\n\t };\r\n\t }\r\n\t };\r\n\t }])\r\n\r\n\t .directive('bsValidation',\r\n\t \t['bsValidationService', 'bsValidationConfig',\r\n\t \tfunction (bsValidationService, bsValidationConfig) {\r\n\t return {\r\n\t restrict: 'A',\r\n\t require: ['?ngModel', '?^^form'],\r\n\t link: function ($scope, $element, $attr, controllers) {\r\n\t if (bsValidationService.isValidationDisabled($element)) {\r\n\t return;\r\n\t }\r\n\r\n\t // Initialize controllers\r\n\t var ngModelController = controllers[0];\r\n\t var ngFormController = controllers[1];\r\n\r\n\t if (!ngModelController) {\r\n\t if (!bsValidationConfig.suppressWarnings) {\r\n\t console.warn('ng-model directive is required for the bs-validation directive to work.');\r\n\t }\r\n\t return;\r\n\t }\r\n\r\n\t var $formGroupElement = bsValidationService.getFormGroupElement($element);\r\n\t if (!$formGroupElement) {\r\n\t if (!bsValidationConfig.suppressWarnings) {\r\n\t console.warn('No parent form group element found for input element');\r\n\t }\r\n\t return;\r\n\t }\r\n\r\n\t var displayValidationState = false;\r\n\t var shouldValidateOnBlur = bsValidationService.shouldValidateOnBlur($element);\r\n\t var shouldValidateOnDisplay = bsValidationService.shouldValidateOnDisplay($element);\r\n\t var shouldValidateOnSubmit = bsValidationService.shouldValidateOnSubmit($element);\r\n\r\n\t var displayErrorAs = bsValidationService.displayErrorPreference($element, $attr);\r\n\t var validationMessageService = bsValidationService.getValidationMessageService(displayErrorAs);\r\n\r\n\t // Register generic custom validators if added to element\r\n\t angular.forEach(bsValidationService.getValidators(), function (validator) {\r\n\t var key = validator.name;\r\n\t var attrValue = $element.attr(key);\r\n\t if ($attr[key] || (angular.isDefined(attrValue) && attrValue !== false)) {\r\n\t bsValidationService.addValidator($scope, $element, $attr, ngModelController, validator);\r\n\t }\r\n\t });\r\n\r\n\t function addErrorClass() {\r\n\t bsValidationService.addErrorClass($formGroupElement);\r\n\t }\r\n\r\n\t function removeSuccessClass() {\r\n\t bsValidationService.removeSuccessClass($formGroupElement);\r\n\t }\r\n\r\n\t function displayError() {\r\n\t addErrorClass();\r\n\t validationMessageService.showErrorMessage($element, $attr, ngModelController, $formGroupElement);\r\n\r\n\t if($element.hasClass('show-and-hide')){\r\n\t setTimeout(function () {\r\n\t $element.blur();\r\n\t hideSuccess();\r\n\t hideError();\r\n\t ngModelController.$setUntouched();\r\n\t ngModelController.$setPristine();\r\n\t watchBlur();\r\n\t },3000);\r\n\t }\r\n\t }\r\n\r\n\t function hideError() {\r\n\t validationMessageService.hideErrorMessage($element, $formGroupElement);\r\n\t }\r\n\r\n\t function addSuccessClass() {\r\n\t if (ngModelController.$$attr.required) {\r\n\t bsValidationService.addSuccessClass($formGroupElement);\r\n\t }\r\n\t return hideError();\r\n\t }\r\n\r\n\t function displaySuccess() {\r\n\t addSuccessClass();\r\n\t }\r\n\r\n\t function hideSuccess() {\r\n\t removeSuccessClass();\r\n\t }\r\n\r\n\t function displayOrHideValidationState() {\r\n\t //if (!ngModelController.$$attr.required && !ngModelController.$$attr.pattern) return;\r\n\r\n\t bsValidationService.toggleErrorKeyClasses($formGroupElement, ngModelController.$error);\r\n\r\n\t if (!displayValidationState) {\r\n\t hideSuccess();\r\n\t return hideError();\r\n\t }\r\n\r\n\t if (ngModelController.$valid) {\r\n\t return displaySuccess();\r\n\t }\r\n\t if (ngModelController.$invalid) {\r\n\t return displayError();\r\n\t }\r\n\t }\r\n\r\n\t function showValidation() {\r\n\t displayValidationState = true;\r\n\t displayOrHideValidationState();\r\n\t }\r\n\r\n\t function hideValidation() {\r\n\t displayValidationState = false;\r\n\t displayOrHideValidationState();\r\n\t }\r\n\r\n\t function watchBlur() {\r\n\t var dewatcher = $scope.$watch(function () {\r\n\t return ngModelController.$touched;\r\n\t }, function (lostFocus) {\r\n\t if (lostFocus) {\r\n\t displayValidationState = true;\r\n\t displayOrHideValidationState();\r\n\t dewatcher();\r\n\t }\r\n\t });\r\n\t }\r\n\r\n\t if (shouldValidateOnBlur) {\r\n\t watchBlur();\r\n\t }\r\n\r\n\t if (shouldValidateOnSubmit && ngFormController) {\r\n\t // register watchers for submission touch and valid\r\n\t $scope.$watch(function () {\r\n\t return ngFormController.$submitted;\r\n\t }, function (submitted) {\r\n\t displayValidationState = submitted;\r\n\t displayOrHideValidationState();\r\n\t });\r\n\t }\r\n\r\n\t if (shouldValidateOnDisplay) {\r\n\t showValidation();\r\n\t }\r\n\r\n\t // TODO Find alternative for this watch\r\n\t /*$scope.$watch(function () {\r\n\t return ngModelController.$error;\r\n\t }, displayOrHideValidationState, true);*/\r\n\r\n\t $scope.$watch(function () {\r\n\t return ngModelController.$valid;\r\n\t }, displayOrHideValidationState, true);\r\n\r\n\t $scope.$watch(function () {\r\n\t return ngModelController.$$attr.required;\r\n\t }, function () {\r\n\t hideSuccess();\r\n\t hideError();\r\n\t displayOrHideValidationState();\r\n\t }, true);\r\n\r\n\t $scope.$on('onBsValidationStateChange', function (event, data) {\r\n\t displayValidationState = data.showValidationState;\r\n\t displayOrHideValidationState();\r\n\t });\r\n\r\n\t $scope.$on('onBsValidationReset', function (event) {\r\n\t $element.blur();\r\n\t hideSuccess();\r\n\t hideError();\r\n\t ngModelController.$setUntouched();\r\n\t ngModelController.$setPristine();\r\n\t watchBlur();\r\n\t });\r\n\r\n\r\n\t $scope.$on('$destroy', function () {\r\n\t validationMessageService.destroyMessage($element);\r\n\t });\r\n\r\n\t ngModelController.$showValidation = showValidation;\r\n\t ngModelController.$hideValidation = hideValidation;\r\n\t }\r\n\t };\r\n\t }])\r\n\r\n\t\t.provider('bsValidationConfig', function () {\r\n\r\n\t\t // Can be a string or list of any combination of \"blur\", \"submit\" & \"display\"\r\n\t\t var validateFieldsOn = 'blur';\r\n\t\t // Display the validation error message below the `input` field with class \"help-block\"\r\n\t\t var displayErrorsAs = 'simple';\r\n\r\n\t\t // Can be a string or list of any combination of filters; will be applied in order\r\n\t\t // For example: 'lowercase' or ['lowercase', 'reverse'] (So long as the filter(s) exists)\r\n\t\t var messageFilters = [];\r\n\r\n\t\t function shouldValidateOn(event) {\r\n\t\t if (angular.isString(validateFieldsOn)) {\r\n\t\t return validateFieldsOn === event;\r\n\t\t }\r\n\r\n\t\t return validateFieldsOn.indexOf(event) !== -1;\r\n\t\t }\r\n\r\n\t\t var _this = this;\r\n\t\t this.global = {};\r\n\t\t this.global.addSuccessClass = true;\r\n\t\t this.global.errorClass = 'has-error';\r\n\t\t this.global.successClass = 'has-success';\r\n\t\t this.global.errorMessagePrefix = '';\r\n\t\t this.global.tooltipPlacement = 'bottom-left';\r\n\t\t this.global.tooltipAppendToBody = false;\r\n\t\t this.global.suppressWarnings = false;\r\n\r\n\t\t this.global.messages = {};\r\n\r\n\t\t this.setMessages = function(data) {\r\n\t\t _this.global.messages = data;\r\n\t\t };\r\n\r\n\t\t this.global.setValidateFieldsOn = function (event) {\r\n\t\t if (!event) {\r\n\t\t throw 'Please provide an string or list of events to validate fields on';\r\n\t\t }\r\n\r\n\t\t if (!angular.isString(event) && !angular.isArray(event)) {\r\n\t\t throw 'Event should either be a string or a list';\r\n\t\t }\r\n\r\n\t\t validateFieldsOn = event;\r\n\t\t };\r\n\r\n\t\t this.global.setDisplayErrorsAs = function (type) {\r\n\t\t if (!type) {\r\n\t\t throw 'Please provide the way validation error should be displayed. In-built options are \"simple\" & \"tooltip\".';\r\n\t\t }\r\n\r\n\t\t displayErrorsAs = type;\r\n\t\t };\r\n\r\n\t\t this.global.useMessageFilters = function (filters) {\r\n\t\t if (!filters) {\r\n\t\t throw 'Please provide a string or list of filters to apply to messages';\r\n\t\t }\r\n\r\n\t\t if (!angular.isString(filters) && !angular.isArray(filters)) {\r\n\t\t throw 'Filters should either be a string or a list';\r\n\t\t }\r\n\r\n\t\t messageFilters = filters;\r\n\r\n\t\t if (!angular.isArray(messageFilters)) {\r\n\t\t messageFilters = [messageFilters];\r\n\t\t }\r\n\t\t };\r\n\r\n\t\t this.$get = [function () {\r\n\t\t return {\r\n\t\t messages: function (key) {\r\n\t\t return _this.global.messages[key];\r\n\t\t },\r\n\t\t errorClass: _this.global.errorClass,\r\n\t\t successClass: _this.global.successClass,\r\n\t\t suppressWarnings: _this.global.suppressWarnings,\r\n\t\t tooltipAppendToBody: _this.global.tooltipAppendToBody,\r\n\r\n\t\t getDisplayErrorsAs: function () {\r\n\t\t return displayErrorsAs;\r\n\t\t },\r\n\r\n\t\t getErrorMessagePrefix: function () {\r\n\t\t return _this.global.errorMessagePrefix || '';\r\n\t\t },\r\n\r\n\t\t getMessageFilters: function () {\r\n\t\t return messageFilters;\r\n\t\t },\r\n\r\n\t\t getTooltipPlacement: function () {\r\n\t\t return _this.global.tooltipPlacement;\r\n\t\t },\r\n\r\n\t\t shouldAddSuccessClass: function () {\r\n\t\t return _this.global.addSuccessClass;\r\n\t\t },\r\n\r\n\t\t shouldValidateOn: shouldValidateOn,\r\n\r\n\t\t setMessages: function (data) {\r\n\t\t return _this.setMessages(data);\r\n\t\t }\r\n\t\t };\r\n\t\t }];\r\n\t\t})\r\n\r\n\t\t.factory('bsValidationService',\r\n\t\t\t['$interpolate', '$injector', '$filter', 'bsValidationConfig',\r\n\t\t\tfunction ($interpolate, $injector, $filter, bsValidationConfig) {\r\n\t var displayErrorAsAttrName = 'bsDisplayErrorAs';\r\n\t var customFormGroup = '[bs-form-group]';\r\n\t var formGroupClass = '.form-group';\r\n\r\n\t var _genericValidators = [{\r\n\t name: 'digits',\r\n\t validateFn: function (value) {\r\n\t return (/^\\d+$/).test(value);\r\n\t }\r\n\t }, {\r\n\t name: 'equalto',\r\n\t validateFn: function (value, $scope, attr) {\r\n\t return value + '' === $scope.$eval(attr.equalto) + '';\r\n\t }\r\n\t }, {\r\n\t name: 'number',\r\n\t validateFn: function (value) {\r\n\t return (/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/).test(value);\r\n\t }\r\n\t }, {\r\n\t name: 'min',\r\n\t validateFn: function (value, $scope, attr) {\r\n\t return parseFloat(value) >= parseFloat(attr.min);\r\n\t }\r\n\t }, {\r\n\t name: 'max',\r\n\t validateFn: function (value, $scope, attr) {\r\n\t return parseFloat(value) <= parseFloat(attr.max);\r\n\t }\r\n\t }, {\r\n\t name: 'range',\r\n\t validateFn: function (value, $scope, attr) {\r\n\t return parseFloat(value) >= parseFloat(attr.range.split('|')[0]) && parseFloat(value) <= parseFloat(attr.range.split('|')[1]);\r\n\t }\r\n\t }, {\r\n\t name: 'length',\r\n\t validateFn: function (value, $scope, attr) {\r\n\t return value.length === parseInt(attr.length);\r\n\t }\r\n\t }, {\r\n\t name: 'strictemail',\r\n\t validateFn: function (value) {\r\n\t return new RegExp(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,63}$/).test(value);\r\n\t }\r\n\t }];\r\n\r\n\t function getTrigger($element, triggerEvent) {\r\n\t var attributeName = 'bs-trigger';\r\n\t if ($element.attr(attributeName)) {\r\n\t return $element.attr(attributeName) === triggerEvent;\r\n\t }\r\n\r\n\t var parentForm = $element.parents('form');\r\n\t if (parentForm && parentForm.attr(attributeName)) {\r\n\t return parentForm.attr(attributeName) === triggerEvent;\r\n\t }\r\n\r\n\t // Use the global config\r\n\t return bsValidationConfig.shouldValidateOn(triggerEvent);\r\n\t }\r\n\r\n\t function removeClassByPrefix(element, prefix) {\r\n\t var regx = new RegExp('\\\\b' + prefix + '.*\\\\b', 'g');\r\n\t element[0].className = element[0].className.replace(regx, '').replace(/\\s\\s+/g, ' ');\r\n\t return element;\r\n\t }\r\n\r\n\t if (!String.prototype.camelCaseToDash) {\r\n\t\t\t String.prototype.camelCaseToDash = function () {\r\n\t\t\t return this.replace(/([A-Z])/g, function ($1) {\r\n\t\t\t return '-' + $1.toLowerCase();\r\n\t\t\t });\r\n\t\t\t };\r\n\t\t\t}\r\n\r\n\t var selectors = [];\r\n\t var elements = ['input', 'select', 'textarea'];\r\n\r\n\t angular.forEach(elements, function (element) {\r\n\t selectors.push(element + '[ng-model]');\r\n\t });\r\n\r\n\t var selector = selectors.join(',');\r\n\t var meta = ['matchName'];\r\n\r\n\t return {\r\n\t getValidators: function () {\r\n\t return _genericValidators;\r\n\t },\r\n\r\n\t getMetaInformation: function ($element) {\r\n\t var metaInformation = {};\r\n\r\n\t angular.forEach(meta, function (key) {\r\n\t metaInformation[key] = $element.attr(key) || $element.attr(key.camelCaseToDash());\r\n\t });\r\n\r\n\t return metaInformation;\r\n\t },\r\n\r\n\t addDirective: function ($element) {\r\n\t var validateableElements = $element.find(selector);\r\n\t validateableElements.attr('bs-validation', '');\r\n\t return validateableElements;\r\n\t },\r\n\r\n\t addErrorClass: function ($formGroupElement) {\r\n\t this.removeSuccessClass($formGroupElement);\r\n\t $formGroupElement.addClass(bsValidationConfig.errorClass);\r\n\t },\r\n\r\n\t addSuccessClass: function ($formGroupElement) {\r\n\t this.removeErrorClass($formGroupElement);\r\n\r\n\t if (bsValidationConfig.shouldAddSuccessClass()) {\r\n\t $formGroupElement.addClass(bsValidationConfig.successClass);\r\n\t }\r\n\t },\r\n\r\n\t addValidator: function ($scope, $element, $attr, ngModelController, validator) {\r\n\t ngModelController.$validators[validator.name] = function (modelValue, viewValue) {\r\n\t var value = modelValue || viewValue;\r\n\t if (ngModelController.$isEmpty(value)) {\r\n\t return true;\r\n\t }\r\n\r\n\t // See https://github.com/sagrawal14/angular-extras/blob/v0.1.3/src/extras/array.js#L91 for \"find\" function\r\n\t return validator.validateFn(value, $scope, $attr);\r\n\t };\r\n\t },\r\n\r\n\t /**\r\n\t * Add a custom validator to the list of generic validators.\r\n\t * @param genericValidationObject for example, to a add a generic validator to accept either \"foo\" or \"bar\":\r\n\t * {\r\n\t * name: 'foobar',\r\n\t * validateFn: function(value, $scope, attr) {\r\n\t * return value === 'foo' || value === 'bar';\r\n\t * }\r\n\t * }\r\n\t */\r\n\t addGenericValidator: function (genericValidationObject) {\r\n\t _genericValidators.push(genericValidationObject);\r\n\t },\r\n\r\n\t displayErrorPreference: function ($element, $attr) {\r\n\t var attrName = displayErrorAsAttrName;\r\n\t if ($attr[attrName]) {\r\n\t return $attr[attrName];\r\n\t } else {\r\n\t var $parentForm = $element.parents('form');\r\n\r\n\t // .attr() method not accepting camelCase version of the attribute name. Converting it to dashed-case\r\n\t attrName = attrName.camelCaseToDash();\r\n\r\n\t if ($parentForm && $parentForm.attr(attrName)) {\r\n\t return $parentForm.attr(attrName);\r\n\t }\r\n\t }\r\n\r\n\t // Use the global preference\r\n\t return bsValidationConfig.getDisplayErrorsAs();\r\n\t },\r\n\r\n\t getErrorMessage: function ($element, $attr, ngModelController) {\r\n\t var firstErrorKey = Object.keys(ngModelController.$error)[0];\r\n\t return bsValidationConfig.getErrorMessagePrefix() + this.resolveMessage($element, $attr, firstErrorKey);\r\n\t },\r\n\r\n\t getFormGroupElement: function ($element) {\r\n\t // First search for an attribute with 'bs-form-group'\r\n\t var formGroupElement = $element.parents(customFormGroup);\r\n\r\n\t if (!formGroupElement || formGroupElement.length === 0) {\r\n\t // Then search for parent element with class form-group\r\n\t formGroupElement = $element.parents(formGroupClass);\r\n\r\n\t if (!formGroupElement || formGroupElement.length === 0) {\r\n\t return null;\r\n\t }\r\n\t }\r\n\r\n\t return formGroupElement;\r\n\t },\r\n\r\n\t getValidationMessageService: function (displayType) {\r\n\t var validationMessageService;\r\n\r\n\t try {\r\n\t validationMessageService = $injector.get(displayType + 'MessageService');\r\n\t } catch (e) {\r\n\t throw 'No message service found for type [' + displayType + '].';\r\n\t }\r\n\r\n\t if (displayType === 'tooltip' && !$injector.has('$uibPosition')) {\r\n\t throw '$uibPosition service required from the ui-bootstrap module in order to use the tooltip message.';\r\n\t }\r\n\r\n\t return validationMessageService;\r\n\t },\r\n\r\n\t isValidationDisabled: function ($element) {\r\n\t var attribute = 'bs-no-validation';\r\n\t if ($element[0].attributes.hasOwnProperty(attribute)) {\r\n\t return true;\r\n\t }\r\n\r\n\t var $parentForm = $element.parents('form');\r\n\t return $parentForm[0] && $parentForm[0].attributes.hasOwnProperty(attribute);\r\n\t },\r\n\r\n\t removeErrorClass: function ($formGroupElement) {\r\n\t $formGroupElement.removeClass(bsValidationConfig.errorClass);\r\n\t },\r\n\r\n\t removeSuccessClass: function ($formGroupElement) {\r\n\t $formGroupElement.removeClass(bsValidationConfig.successClass);\r\n\t },\r\n\r\n\t resolveMessage: function ($element, $attr, key) {\r\n\t var metaInformation = this.getMetaInformation($element);\r\n\t var messageFilters = $element.attr(key + '-notification-filter') || bsValidationConfig.getMessageFilters();\r\n\t var message = $element.attr(key + '-notification') || bsValidationConfig.messages(key);\r\n\r\n\t if (!message) {\r\n\t console.warn('No message found for the key [' + key + ']. Consider adding a global message or element' +\r\n\t ' specific message using attribute [' + key + '-notification=\"My custom message\"]');\r\n\r\n\t message = 'Please fix this field';\r\n\t }\r\n\r\n\t if (angular.isDefined(messageFilters)) {\r\n\t if (!angular.isArray(messageFilters)) {\r\n\t messageFilters = [messageFilters];\r\n\t }\r\n\r\n\t for (var i = 0; i < messageFilters.length; i++) {\r\n\t message = $filter(messageFilters[i])(message);\r\n\t }\r\n\t }\r\n\r\n\t var attrKey = $attr[key];\r\n\t var matchers;\r\n\t if (attrKey && angular.isFunction(attrKey.indexOf)) {\r\n\t matchers = angular.extend({}, {\r\n\t validValue: attrKey,\r\n\t validValue1: attrKey.indexOf('|') !== -1 ? attrKey.split('|')[0] : '',\r\n\t validValue2: attrKey.indexOf('|') !== -1 ? attrKey.split('|')[1] : ''\r\n\t }, metaInformation);\r\n\t } else {\r\n\t matchers = angular.extend({}, {\r\n\t validValue: attrKey\r\n\t }, metaInformation);\r\n\t }\r\n\r\n\t return $interpolate(message)(matchers);\r\n\t },\r\n\r\n\t shouldValidateOnBlur: function ($element) {\r\n\t return getTrigger($element, 'blur');\r\n\t },\r\n\r\n\t shouldValidateOnDisplay: function ($element) {\r\n\t return getTrigger($element, 'display');\r\n\t },\r\n\r\n\t shouldValidateOnSubmit: function ($element) {\r\n\t return getTrigger($element, 'submit');\r\n\t },\r\n\r\n\t /**\r\n\t * Add or remove various classes on form-group element. For example, if an input has two errors \"required\" & \"min\"\r\n\t * then whenever the validation fails, form-group element will have classes like \"bs-has-error-required\" or\r\n\t * \"bs-has-error-min\".\r\n\t * @param $formGroupElement jQLite/jQuery form-group element\r\n\t * @param errors Errors object as returned by ngModelController.$error\r\n\t */\r\n\t toggleErrorKeyClasses: function ($formGroupElement, errors) {\r\n\t removeClassByPrefix($formGroupElement, 'bs-has-error-');\r\n\r\n\t angular.forEach(errors, function (value, key) {\r\n\t $formGroupElement.addClass('bs-has-error-' + key);\r\n\t });\r\n\t }\r\n\t };\r\n\t }])\r\n\r\n\t\t.factory('simpleMessageService',\r\n\t\t\t['bsValidationService',\r\n\t\t\tfunction (bsValidationService) {\r\n\t\t var errorElementClass = '.bs-invalid-msg';\r\n\r\n\t\t function getErrorContainer($element, $formGroupElement) {\r\n\t\t var $errorContainer;\r\n\r\n\t\t // If input element has \"id\" attribute\r\n\t\t if ($element.attr('id')) {\r\n\t\t // Then first try to find the error container with the same id prefixed with \"bs-error-\"\r\n\t\t $errorContainer = $formGroupElement.find('#bs-error-' + $element.attr('id'));\r\n\t\t if ($errorContainer && $errorContainer.length) {\r\n\t\t return $errorContainer;\r\n\t\t }\r\n\t\t }\r\n\r\n\t\t $errorContainer = $formGroupElement.find(errorElementClass);\r\n\t\t if ($errorContainer && $errorContainer.length) {\r\n\t\t return $errorContainer;\r\n\t\t }\r\n\r\n\t\t var insertAfter;\r\n\r\n\t\t // Check if the container have any Bootstrap input group then append the error after it\r\n\t\t var groupElement = $formGroupElement.find('.input-group');\r\n\t\t if (groupElement.length > 0) {\r\n\t\t insertAfter = groupElement;\r\n\t\t } else {\r\n\t\t insertAfter = $element;\r\n\t\t }\r\n\r\n\t\t var errorContainerHTML = '
    ');\r\n\t\t}]);\r\n}());","export default angular\r\n .module('controller.modal', [])\r\n\r\n /* @ngInject */\r\n .controller('modalCtrl', function (data, device, options, $scope, smoothScroll, HttpService, ModalService, $window) {\r\n const ctrl = this;\r\n ctrl.data = data;\r\n ctrl.device = device;\r\n ctrl.options = options;\r\n ctrl.showLoader = true;\r\n $scope.device = device;\r\n\r\n ctrl.onLoad = () => {\r\n ctrl.showLoader = false;\r\n };\r\n\r\n ctrl.deleteQuantity = function (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 try {\r\n const { status } = await HttpService.post({\r\n url: ctrl.IsCrmV2 ? '/Message/QuestionProduct' : '/Product/QuestionProduct',\r\n data: ctrl.data\r\n });\r\n if (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 toastr.warning(errors.TryLater, errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n 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 }\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: `/${scope.openCmsModal}`\r\n },\r\n scope.size || null,\r\n scope.ctrl || 'modalCtrl',\r\n null,\r\n scope.device,\r\n {\r\n modalTitle: scope.title || '',\r\n modalAutoScroll: scope.autoScroll ? true : false\r\n }\r\n );\r\n };\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('modalAutoScroll', function ($timeout) {\r\n return {\r\n restrict: 'A',\r\n link: (scope, element, attrs) => {\r\n if (!scope.$eval(attrs.modalAutoScroll)) return;\r\n\r\n resize();\r\n // $timeout(resize, 3000);\r\n\r\n function resize() {\r\n $timeout(() => {\r\n const $modalDialog = element.closest('.modal-dialog');\r\n const $scrollContainer = element.find('.scroll-container');\r\n let maxHeight = 0;\r\n\r\n maxHeight += parseInt($modalDialog.css('margin-top')) + parseInt($modalDialog.css('margin-bottom'));\r\n maxHeight += $modalDialog.find('.modal-header').outerHeight();\r\n if ($modalDialog.find('.modal-footer').length) {\r\n maxHeight += $modalDialog.find('.modal-footer').outerHeight();\r\n }\r\n if (element.find('.modal-search').length) {\r\n maxHeight += element.find('.modal-search').outerHeight();\r\n }\r\n maxHeight += parseInt(element.css('padding-top')) + parseInt(element.css('padding-bottom'));\r\n maxHeight += $scrollContainer.position().top;\r\n maxHeight += 2;\r\n\r\n $scrollContainer.css({\r\n 'overflow-x': 'hidden',\r\n 'overflow-y': 'auto',\r\n 'max-height': `calc(100vh - ${maxHeight}px)`\r\n });\r\n });\r\n }\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('module.gtm', [])\r\n\r\n /* @ngInject */\r\n .factory('GtmService', function ($cookies, DateService) {\r\n const service = {\r\n inject\r\n };\r\n return service;\r\n\r\n ////////////\r\n function inject(key) {\r\n const script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.innerHTML = getContent(key);\r\n $('head')[0].appendChild(script);\r\n $cookies.put('gtmOK', 'true', {\r\n path: '/',\r\n expires: DateService.nextYear()\r\n });\r\n }\r\n\r\n function getContent(key) {\r\n /* eslint-disable */\r\n return `(function (w, d, s, l, i) {w[l] = w[l] || []; w[l].push({'gtm.start':new Date().getTime(), event: 'gtm.js'}); var f = d.getElementsByTagName(s)[0],j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src ='https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);})(window, document, 'script', 'dataLayer', '${key}');`;\r\n /* eslint-enable */\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .directive('gtm', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n content: '@'\r\n },\r\n /* @ngInject */\r\n controller: function (GtmService) {\r\n const ctrl = this;\r\n\r\n ctrl.$onInit = () => {\r\n GtmService.inject(ctrl.content);\r\n };\r\n }\r\n };\r\n });\r\n","/* eslint-disable no-undef */\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('module.netwave', [])\r\n\r\n .constant('wsbZonePrefix', 'wsbPZ_')\r\n\r\n /* @ngInject */\r\n .factory('NetwaveService', function ($rootScope, HttpService, RoutesService) {\r\n window.NetwaveService = this;\r\n let netwaveInfos;\r\n\r\n const initializeNetWaveInfo = async function () {\r\n if (!netwaveInfos) {\r\n netwaveInfos = await getNetWaveInfo();\r\n }\r\n };\r\n\r\n const isNetwaveEnable = async function () {\r\n await initializeNetWaveInfo();\r\n return netwaveInfos === null ? false : netwaveInfos.netwaveEnable;\r\n };\r\n\r\n const getNetWaveInfo = async function () {\r\n const url = RoutesService.getUrlByName('GetNetWaveInfo');\r\n let netInfos;\r\n await HttpService.get({\r\n url,\r\n cache: true\r\n })\r\n .then(response => { netInfos = response; })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n return netInfos;\r\n };\r\n\r\n const getIdProduct = function (product) {\r\n if (product && product.hasOwnProperty('IDProduct')) {\r\n return product.IDProduct;\r\n } else if (product && product.hasOwnProperty('idProduct')) {\r\n return product.idProduct;\r\n }\r\n return null;\r\n };\r\n\r\n /*\r\n * TODO delete this function when it will be possible to get a price on the product object\r\n * calculate product price\r\n */\r\n const getPrice = function (product) {\r\n let price = 0;\r\n if (product.IsKit && product.KitUnitTTCPrice && product.KitUnitTTCPrice > 0) {\r\n price = Math.round(product.KitUnitTTCPrice * 100) / 100;\r\n } else if (product.Product?.IsKit && product.TTCAmount > 0) {\r\n price = Math.round(product.TTCAmount / product.Quantity * 100) / 100;\r\n } else if (product.step && product.Price.qty) {\r\n price = Math.round(product.Price.TTCDiscountedPrice * product.Price.qty * 100) / 100;\r\n } else if (product.Price?.TTCDiscountedPrice > 0) {\r\n price = product.Price.TTCDiscountedPrice;\r\n } else if (product.Price?.TTCPrice > 0 && product.quantity) {\r\n price = Math.round(product.Price?.TTCPrice / product.quantity * 100) / 100;\r\n } else {\r\n price = (product.Price.TTCDiscountedPrice === null ? 0 : product.Price.TTCDiscountedPrice) + (product.costTTC === undefined ? 0 : product.costTTC);\r\n }\r\n return price;\r\n };\r\n\r\n this.trigger = function (data) {\r\n $rootScope.$broadcast('netwaveUpdate', data);\r\n };\r\n this.getProducts = async function (products) {\r\n return HttpService.post({\r\n url: '/GetProducts',\r\n data: {\r\n ProductsIds: products\r\n }\r\n })\r\n .then(response => response.products\r\n )\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n };\r\n this.updateFilters = function (ctrl) {\r\n const filters = {};\r\n ctrl.BrandsSelected?.forEach(function () {\r\n const filterBrandsSelected = ctrl.filters.brands.find(item => item.Id);\r\n if (filterBrandsSelected) {\r\n filters.brands = filters.brands || [];\r\n filters.brands.push(filterBrandsSelected.Name);\r\n }\r\n });\r\n ctrl.ReviewsSelected?.forEach(function () {\r\n const filterReviewsSelected = ctrl.filters.reviews.find(item => item.Id);\r\n if (filterReviewsSelected) {\r\n filters.reviews = filters.reviews || [];\r\n filters.reviews.push(filterReviewsSelected.Name);\r\n }\r\n });\r\n ctrl.ProductTypesSelected?.forEach(function () {\r\n const filterProductTypesSelected = ctrl.filters.types.find(item => item.Id);\r\n if (filterProductTypesSelected) {\r\n filters.types = filters.types || [];\r\n filters.types.push(filterProductTypesSelected.Name);\r\n }\r\n });\r\n\r\n ctrl.words?.forEach(function () {\r\n filters.search = filters.search || [];\r\n filters.search.push(item);\r\n });\r\n\r\n if (ctrl.PriceRange) {\r\n filters.prices = [ctrl.PriceRange];\r\n }\r\n\r\n const facets = ctrl.FacetsSelected.filter(item => item.Values.length);\r\n\r\n isScriptLoaded().then(filter);\r\n\r\n /**\r\n * Generate a script that retrieves filter information for category and list pages\r\n * where it is embedded and then sends it to Netwave.\r\n * */\r\n function filter() {\r\n const wsbProperties = window.wsbProperties || {};\r\n facets.forEach(function (filterFacet) {\r\n wsbProperties.filter = {\r\n categoryId: ctrl.categoryCtrl.idCategory,\r\n name: (filterFacet.Name).toLowerCase(),\r\n values: filterFacet.Values\r\n };\r\n });\r\n }\r\n };\r\n\r\n /*\r\n * Send delete commands to netwave for all products\r\n */\r\n this.emptyCart = async function (products) {\r\n if (!(await isNetwaveEnable())) return;\r\n\r\n for (const product of products) {\r\n await window.NetwaveService.removeArticleFromCart(product, product.Quantity);\r\n }\r\n };\r\n\r\n /*\r\n * Send delete command to netwave for a product and a quantity\r\n */\r\n this.removeArticleFromCart = async function (product, quantity) {\r\n if (!(await isNetwaveEnable())) return;\r\n\r\n async function removeArticle(pdt, qty) {\r\n await window.wsb.removeArticleFromCart(String(pdt.idCategory), String(getIdProduct(pdt)), qty, getPrice(pdt));\r\n }\r\n\r\n if (!product.idCategory) {\r\n const idCategory = await window.NetwaveService.getCategory(getIdProduct(product));\r\n product.idCategory = idCategory;\r\n await removeArticle(product, quantity);\r\n } else {\r\n await removeArticle(product, quantity);\r\n }\r\n };\r\n\r\n /*\r\n * Send add command to netwave for a product and a quantity\r\n */\r\n this.addArticleToCart = async function (product, quantity) {\r\n if (!(await isNetwaveEnable())) return;\r\n\r\n async function addArticle(pdt, qty) {\r\n await window.wsb.addArticleToCart(String(pdt.idCategory), String(getIdProduct(pdt)), qty, getPrice(pdt));\r\n }\r\n\r\n if (!product.idCategory) {\r\n const idCategory = await window.NetwaveService.getCategory(getIdProduct(product));\r\n product.idCategory = idCategory;\r\n await addArticle(product, quantity);\r\n } else {\r\n await addArticle(product, quantity);\r\n }\r\n };\r\n\r\n /*\r\n * Get product category\r\n */\r\n this.getCategory = async function (productId) {\r\n return HttpService.post({\r\n url: `/GetCategoryProduct/${productId}`,\r\n cache: true\r\n })\r\n .then(getCategoryResponse => getCategoryResponse.idCategory)\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n /*\r\n * Send delete commands to netwave for all products in the wishList\r\n */\r\n this.emptyWishList = async function (lines) {\r\n if (!(await isNetwaveEnable())) return;\r\n if (lines !== null) {\r\n lines.forEach(function (line) {\r\n window.NetwaveService.updateWishList(line.Product.IDProduct, false);\r\n });\r\n }\r\n };\r\n\r\n /*\r\n * Send add/delete commands to netwave for a product\r\n */\r\n this.updateWishList = async function (productId, addToWishList) {\r\n if (!(await isNetwaveEnable())) return;\r\n window.NetwaveService.getCategory(productId).then(function (idCategory) {\r\n if (addToWishList) {\r\n window.wsbProperties.addToWishlist = {\r\n categoryId: idCategory,\r\n productId\r\n };\r\n } else {\r\n window.wsbProperties.removeFromWishlist = {\r\n categoryId: idCategory,\r\n productId\r\n };\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Wait for the netwave script to load to override the function\r\n * */\r\n const isScriptLoaded = async function () {\r\n while (!window.wsbProperties) {\r\n await new Promise(resolve => requestAnimationFrame(resolve));\r\n }\r\n };\r\n\r\n return {\r\n getProducts: this.getProducts,\r\n updateFilters: this.updateFilters,\r\n emptyCart: this.emptyCart,\r\n getCategory: this.getCategory,\r\n updateWishList: this.updateWishList,\r\n emptyWishList: this.emptyWishList,\r\n removeArticleFromCart: this.removeArticleFromCart,\r\n addArticleToCart: this.addArticleToCart\r\n };\r\n })\r\n\r\n\r\n /* @ngInject */\r\n .directive('netWaveTabs', function () {\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n controllerAs: 'netwaveTabsCtrl',\r\n controller: function () { }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('netWave', function () {\r\n return {\r\n restrict: 'A',\r\n require: {\r\n productCtrl: '?^^productDetail',\r\n tabsCtrl: '?^^netWaveTabs'\r\n },\r\n scope: true,\r\n bindToController: {\r\n id: '@'\r\n },\r\n controllerAs: 'netwaveCtrl',\r\n /* @ngInject */\r\n controller: function ($rootScope, $element, $scope, $timeout, NetwaveService, AppService, AvailabilityService, PriceService) {\r\n const ctrl = this;\r\n\r\n // exemple of code zone : wsbPZ_ZH2. We keep ZH2\r\n ctrl.$onInit = function () {\r\n ctrl.zone = ctrl.id.split('_');\r\n ctrl.zone = ctrl.zone[1];\r\n };\r\n\r\n const unwatch = $scope.$on('netwaveUpdate', function (event, publishingZones) {\r\n unwatch();\r\n const publishingZone = _.find(publishingZones, { publishingZoneId: ctrl.zone });\r\n if (publishingZone) {\r\n if (ctrl.tabsCtrl) {\r\n ctrl.tabsCtrl.active = true;\r\n }\r\n const sortedZones = _.sortBy(\r\n _.filter(publishingZones, function (o) {\r\n if (o.json.products === undefined) {\r\n return 0;\r\n }\r\n return o.json.products.length;\r\n }),\r\n ['publishingZoneId']\r\n );\r\n const index = _.findIndex(sortedZones, { publishingZoneId: ctrl.zone });\r\n ctrl.isOpen = index === 0;\r\n ctrl.catchphrase = publishingZone.json.catchphrase;\r\n ctrl.bannerName = publishingZone.json['Banner name'];\r\n ctrl.bannerUrl = publishingZone.json['Banner url'];\r\n ctrl.bannerLink = publishingZone.json.Link;\r\n const imgWsbPublishingZone = angular.element(document.querySelectorAll('.imgWsbPublishingZone'));\r\n const linkWsbPublishingZone = angular.element(document.querySelectorAll('.linkWsbPublishingZone'));\r\n imgWsbPublishingZone.attr('src', ctrl.bannerUrl);\r\n linkWsbPublishingZone.attr('href', ctrl.bannerLink);\r\n if (publishingZone.json.products) {\r\n getProducts(publishingZone.json.products);\r\n }\r\n }\r\n });\r\n\r\n ctrl.$onDestroy = function () {\r\n unwatch();\r\n };\r\n\r\n ctrl.init = function (id) {\r\n setTimeout(function () {\r\n const element = document.getElementById(id);\r\n element.classList.add('wsbRecommendation');\r\n });\r\n };\r\n\r\n ctrl.loaded = function () {\r\n $scope.$broadcast('netwave-loaded');\r\n $scope.netwaveLoaded = true;\r\n };\r\n\r\n function getProducts(products) {\r\n NetwaveService.getProducts(products)\r\n .then(function (response) {\r\n if (!response || !response.length) return;\r\n ctrl.products = response.filter(p => p.IDProduct !== 0);\r\n ctrl.products.forEach(async function (product) {\r\n\r\n product.ReviewsInfo = product.ReviewsInfo ? { Count: product.ReviewsInfo.Count, Average: product.ReviewsInfo.Average.toFixed(1) } : null;\r\n\r\n product.domId = `wsbR_${product.IDProduct}@${ctrl.zone}`;\r\n\r\n product.isComparable = product.Themes.some(th => th.KeyTheme === 'Comparateur');\r\n product.Pictogrammes = product.Themes?.filter(th => th.KeyRegrouping === 'Pictogrammes')?.map(th => ({\r\n IDTheme: th.IDTheme,\r\n IDPicture: th.IDPicture,\r\n Designation: th.Designation,\r\n Key: th.KeyTheme,\r\n Background: th.Text1,\r\n Color: th.Text2\r\n }));\r\n\r\n if (product.Availability) {\r\n product.Availability = product.Availability;\r\n const { Site } = await AppService.getParams();\r\n if (Site.DisplayAvailabilityOnListPage && Site.IsOmnichannelOrder) {\r\n await AvailabilityService.formatMessage(product.Availability.Detail, 'Delivery');\r\n await AvailabilityService.formatMessage(product.Availability.Detail, 'PickUp');\r\n product.Availability.Detail.modalData = {\r\n idProduct: product.IDProduct,\r\n action: $rootScope.forceReload,\r\n quantity: product.MinSaleQuantity !== 0 ? product.MinSaleQuantity : 1\r\n };\r\n }\r\n }\r\n product.htmlPrice = await PriceService.get(product);\r\n\r\n });\r\n $timeout(function () {\r\n ctrl.active = true;\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }\r\n };\r\n })\r\n\r\n /**\r\n *Netwave tags for each page\r\n * */\r\n /* @ngInject */\r\n .directive('netwaveTags', function (wsbZonePrefix) {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n tags: '=tags'\r\n },\r\n link: function (scope) {\r\n if (scope.tags) {\r\n isScriptLoaded().then(init);\r\n }\r\n function init() {\r\n overrideDisplay();\r\n setupNetwaveGlobalParameters(\r\n scope.tags.Langage,\r\n scope.tags.StateLoggedIn,\r\n scope.tags.ClientId,\r\n scope.tags.StockLocation,\r\n scope.tags.DataPage,\r\n scope.tags.CategoryId,\r\n scope.tags.ProductId,\r\n scope.tags.SearchRequestArray,\r\n scope.tags.OrderId,\r\n scope.tags.CustomerId,\r\n scope.tags.Total,\r\n scope.tags.Articles);\r\n\r\n if (scope.tags.DataPage !== 'order' && window.wsb._getMessageQueue().length < 1) {\r\n window.wsb._addMessage('setDataPage', window.wsb._currentPage, 0);\r\n }\r\n }\r\n\r\n /**\r\n * Wait for the netwave script to load to override the function\r\n * */\r\n async function isScriptLoaded() {\r\n while (!window.wsbDisplay) {\r\n await new Promise(resolve => requestAnimationFrame(resolve));\r\n }\r\n }\r\n\r\n /**\r\n * Override of wsbDisplay.display function of the Netwave script in order to manage the recovery of products\r\n * And populates an array (recoElements) with zone product HTML content to send to Netwave.\r\n * */\r\n function overrideDisplay() {\r\n wsbCustomTemplating((publishingZones) => {\r\n if (window.NetwaveService) {\r\n window.NetwaveService.trigger(publishingZones);\r\n }\r\n publishingZones.forEach((recommendations) => {\r\n const zoneId = recommendations.publishingZoneId;\r\n launchNetWaveCallBack(zoneId);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Iteratively, using a promise to check if a zone is currently in the DOM.\r\n * requestAnimationFrame is exactly the same as setTimeOut only a little more performant\r\n * Check the status each time the DOM is refreshed\r\n * @param {any} zone\r\n */\r\n async function isZoneExistInDom(zone) {\r\n while (document.querySelectorAll(`[id$= '@${zone}'][class$='wsbRecommendation']`).length === 0) {\r\n await new Promise(resolve => requestAnimationFrame(resolve));\r\n }\r\n }\r\n /*\r\n * Wait until product dom is built, before launch a callback to netwave indicate that a zone is ready\r\n *\r\n */\r\n async function launchNetWaveCallBack(zoneId) {\r\n await isZoneExistInDom(zoneId);\r\n wsbPublishCustomTemplating(wsbZonePrefix + zoneId);\r\n }\r\n\r\n /**\r\n * Generate a script that retrieves specific information from each page\r\n * where it is embedded and then sends it to Netwave.\r\n * @param {!string} Langage the current language of your website for the user\r\n * @param {!boolean} StateLoggedIn boolean that matches the current user logging state\r\n * @param {!string} ClientId customer id value for the current user\r\n * @param {?string} StockLocation the current stock location the user is on\r\n * @param {?string} DataPage the current page being browsed\r\n * @param {?number[20]} CategoryId id category for product, category and search page. Also can be an array of multiple categories for search page.\r\n * @param {?string[30]} ProductId id produit for product or search page\r\n * @param {?string[]} SearchRequestArray search of the user\r\n * @param {?string} OrderId Unique order identifier (empty string if unknown) for confirmation page\r\n * @param {?number} CustomerId Unique customer identifier for confirmation page\r\n * @param {?number} Total Amount for order (tax,port, discount inclusive) for confirmation page\r\n * @param {?Object} Articles List of ArticleAddToCart, articles ordered\r\n */\r\n function setupNetwaveGlobalParameters(langage, stateLoggedIn, clientId,\r\n stockLocation, dataPage, categoryId, productId, searchRequestArray, orderId, customerId, total, articles) {\r\n\r\n const wsbProperties = window.wsbProperties || {};\r\n window.wsbProperties.reset = true;\r\n wsbProperties.language = langage;\r\n wsbProperties.loggedIn = stateLoggedIn;\r\n wsbProperties.clientId = clientId;\r\n wsbProperties.stockLocation = stockLocation;\r\n\r\n\r\n if (dataPage === 'product') {\r\n wsbProperties[`${dataPage}Page`] = {\r\n categoryId,\r\n productId\r\n };\r\n } else if (dataPage === 'category') {\r\n wsbProperties[`${dataPage}Page`] = categoryId;\r\n } else if (dataPage === 'search') {\r\n let searchRequest = '';\r\n for (let i = 0; i < searchRequestArray.length; i++) {\r\n searchRequest += `${searchRequestArray[i]} `;\r\n }\r\n wsbProperties[`${dataPage}Page`] = {\r\n productId,\r\n categoryId,\r\n searchRequest\r\n };\r\n } else if (dataPage === 'order') {\r\n // Changed property naming to match Netwave naming which is in Camel Case\r\n articles.forEach(function (article) {\r\n Object.keys(article).forEach(function (key) {\r\n if (key !== camelize(key)) {\r\n Object.defineProperty(article, camelize(key),\r\n Object.getOwnPropertyDescriptor(article, key));\r\n delete article[key];\r\n }\r\n });\r\n });\r\n\r\n wsbProperties[`${dataPage}`] = {\r\n articles,\r\n orderId,\r\n customerId,\r\n total\r\n };\r\n } else {\r\n wsbProperties[`${dataPage}Page`] = true;\r\n }\r\n }\r\n\r\n /**\r\n * To change a string into Camel Case\r\n *\r\n * */\r\n function camelize(str) {\r\n return str.replace(/(?:^\\w|[A-Z]|\\b\\w)/g, function (word, index) {\r\n return index === 0 ? word.toLowerCase() : word.toUpperCase();\r\n });\r\n }\r\n }\r\n };\r\n });\r\n\r\n})();\r\n","import 'import/js/plugins/jquery.equalheights.js';\r\n\r\nexport default angular\r\n .module('module.products.grid', [])\r\n\r\n /* @ngInject */\r\n .directive('productsGrid', function (WindowEventsService, ProductsGridService) {\r\n return {\r\n restrict: 'A',\r\n link: (scope, element) => {\r\n if (!element.children('.row').length) return;\r\n\r\n const tmpId = element.attr('id') || `pg_${ProductsGridService.getId()}`;\r\n element.attr('id', tmpId);\r\n\r\n setTimeout(() => {\r\n WindowEventsService.listen(true, 'resize', resize, 500);\r\n });\r\n\r\n scope.$on('$destroy', () => {\r\n WindowEventsService.listen(false, 'resize', resize);\r\n });\r\n\r\n resize();\r\n\r\n // Functions\r\n function resize() {\r\n setTimeout(() => {\r\n ProductsGridService.resizeGrid(tmpId, scope.device.size, false);\r\n });\r\n }\r\n }\r\n };\r\n })\r\n\r\n .service('ProductsGridService', function () {\r\n let tmpId = 0;\r\n this.getId = () => tmpId++;\r\n this.resizeGrid = (elemId, size, lazy, sizes) => {\r\n const $elem = $(`#${elemId}`);\r\n const $divs = $elem.children('.row').children('.grid:visible');\r\n\r\n if ($divs.length < 2) return;\r\n\r\n if (!lazy) {\r\n $divs.children().addClass('init').find('.content').children().height('');\r\n }\r\n\r\n let nb;\r\n if (!sizes) {\r\n const col = $divs.eq(0).attr('class').split(`col-${size}-`)[1];\r\n if (!col) {\r\n return;\r\n }\r\n nb = 12 / col.split(' ')[0];\r\n } else {\r\n const width = document.body.clientWidth;\r\n [...sizes].reverse().forEach(o => {\r\n if (width < o.breakpoint) {\r\n nb = o.nb;\r\n }\r\n });\r\n }\r\n if (nb === 1) return;\r\n\r\n let i, j, targ;\r\n const len = $divs.find('.product-item').length;\r\n for (i = 0; i < len; i += nb) {\r\n targ = $divs\r\n .slice(i, i + nb)\r\n .children('.init')\r\n .removeClass('init')\r\n .find('.content');\r\n\r\n const n = targ.eq(0).children().length;\r\n for (j = 0; j < n; j++) {\r\n targ.find(`.${$(targ.eq(0).children().eq(j)).attr('class').split(' ')[0]}`).equalHeights();\r\n }\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 { 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 titleLogin: '@',\r\n titleLogout: '@',\r\n device: '<'\r\n },\r\n controllerAs: 'miniLoginCtrl',\r\n /* @ngInject */\r\n controller: function ($scope, $rootScope, $element, $document, $timeout, $location, $route, toastr, AccountService, LogService, AppService, RoutingService, ModalService) {\r\n const ctrl = this;\r\n\r\n ctrl.links = AccountService.getLinks();\r\n\r\n update();\r\n\r\n const $body = $(document.body);\r\n $body.addClass('offcanvas');\r\n\r\n ctrl.toggle = () => {\r\n toggle();\r\n };\r\n\r\n ctrl.login = event => {\r\n if (ctrl.isLogged && ctrl.device.mobile) {\r\n //toggle();\r\n return;\r\n }\r\n if (ctrl.isLogged) return;\r\n\r\n event.preventDefault();\r\n ModalService.show('/Template/Authentication/ModalAuthentication', null, null, 'loginModalCtrl');\r\n };\r\n\r\n ctrl.logout = () => {\r\n $timeout(() => {\r\n ctrl.isLogged = false;\r\n });\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 $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 if (params.Visitor.Company !== '') {\r\n ctrl.visitor = params.Visitor.Company;\r\n } else {\r\n ctrl.visitor = `${params.Visitor.FirstName} ${params.Visitor.LastName}`;\r\n }\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 })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n }\r\n };\r\n });\r\n","var _module_exports = \"
    {{::title}}
    {{::message}}
    \";;\nvar path = 'Modules/Authentication/import/toast_authentication.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","export default angular\r\n .module('directive.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 console.log(slideNumber);\r\n $('#catalogSlider').trigger('to.owl.carousel', slideNumber);\r\n };\r\n }\r\n };\r\n });\r\n","var _module_exports = \" \";;\nvar path = 'Modules/Shared/Autocomplete/import/autocomplete.product.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","export default angular\r\n .module('directive.mini-cart', [])\r\n\r\n .directive('miniCart', function () {\r\n return {\r\n restrict: 'E',\r\n /* @ngInject */\r\n controller: function ($scope, $element, $filter, AppService, RoutesService, ModalService) {\r\n const ctrl = this;\r\n\r\n // Translate\r\n const tplTranslate = {};\r\n $element\r\n .children('.translate')\r\n .children()\r\n .each(function () {\r\n const $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n getCart();\r\n\r\n ctrl.emptyCart = () => {\r\n ModalService.show('/Template/Cart/ModalClearCartConfirm', {}, null, 'clearCartConfirmModalCtrl');\r\n };\r\n\r\n ctrl.remove = line => {\r\n const product = {\r\n idProduct: line.Product.IDProduct,\r\n quantity: line.Quantity,\r\n Price: {\r\n TTCPrice: line.TTCAmount\r\n }\r\n };\r\n ModalService.show(\r\n '/Template/Cart/ModalDeleteConfirm',\r\n {\r\n action: () => {\r\n AppService.deleteLine(line.IDLine, product, line.Product.Designation, line.Product.IDPicture, line.Product.DistrimageSrc, tplTranslate.titleDeleteOk);\r\n }\r\n },\r\n null,\r\n 'deleteConfirmModalCtrl'\r\n );\r\n };\r\n\r\n $scope.$on('cartUpdate', () => {\r\n getCart();\r\n });\r\n\r\n $scope.$on('cartUpdateWithRefresh', () => {\r\n getCart(true);\r\n });\r\n\r\n async function getCart(withRefresh) {\r\n ctrl.cartIsActive = true;\r\n const params = await AppService.getParams(withRefresh);\r\n if (params.Agent && params.Mobility.Params.UseSaleAsCart && !params.Mobility.Profile.AllModules.find(p => p.ModuleKey === 'sale')?.IsActive) {\r\n ctrl.cartIsActive = false;\r\n }\r\n ctrl.hasCart = params.HasCart && params.Cart && params.Cart.Products && params.Cart.Products.length;\r\n ctrl.cartLink = !ctrl.hasCart ? '' : `/${RoutesService.getUrlByName('Cart')}`;\r\n ctrl.showTTCPrice = params.Visitor.CardType.ShowTTCPrice;\r\n ctrl.count = 0;\r\n if (ctrl.hasCart) {\r\n ctrl.data = params.Cart;\r\n params.Cart.Products.forEach(line => {\r\n if (params.Cart.TradeActions.find(tradeAction => tradeAction.IDProduct === line.IDProduct)) {\r\n line.isGift = true;\r\n }\r\n });\r\n ctrl.cartProducts = $filter('orderBy')(\r\n params.Cart.Products.filter(line => !line.isGift),\r\n 'LineNumber'\r\n );\r\n ctrl.count = ctrl.cartProducts.reduce((result, line) => result + line.Quantity, 0);\r\n }\r\n !$scope.$$phase && $scope.$digest();\r\n }\r\n },\r\n controllerAs: 'miniCartCtrl'\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('deleteConfirmModalCtrl', function (data, device, options, ModalService) {\r\n const ctrl = this;\r\n\r\n ctrl.submit = () => {\r\n ModalService.close();\r\n data.action();\r\n };\r\n ctrl.cancel = () => {\r\n ModalService.close();\r\n if (data.cancel) data.cancel();\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('clearCartConfirmModalCtrl', function (data, $rootScope, HttpService, AppService, ModalService, toastr, NetwaveService) {\r\n const ctrl = this;\r\n\r\n ctrl.submit = async () => {\r\n ModalService.close();\r\n $rootScope.$broadcast('showPageLoader', true);\r\n\r\n try {\r\n const response = await HttpService.post({\r\n url: 'Cart/ClearCart',\r\n data: {}\r\n });\r\n const { messages, errors } = await AppService.getTranslate();\r\n if (response.status === 'OK') {\r\n await NetwaveService.emptyCart(response.removedProducts);\r\n AppService.updateParams(response.results);\r\n toastr.success('', messages.ClearCartOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n if (data.action) data.action();\r\n } else {\r\n toastr.warning(errors.TryLater, errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n !$rootScope.$$phase && $rootScope.$digest();\r\n };\r\n });\r\n","import hoverintent from 'hoverintent';\r\n\r\nexport default angular\r\n .module('directive.nav', [])\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) {\r\n const ctrl = this;\r\n\r\n ctrl.open = false;\r\n ctrl.children = [];\r\n\r\n ctrl.toggle = () => {\r\n ctrl.open = !ctrl.open;\r\n let i;\r\n const len = ctrl.children.length;\r\n for (i = 0; i < len; i++) {\r\n ctrl.children[i].open = false;\r\n }\r\n };\r\n\r\n const $nav = $element.children('.nav');\r\n let size = parseFloat($nav.css('font-size'));\r\n let padding = parseFloat($nav.children().eq(0).children('span').css('padding-left'));\r\n const origSize = size;\r\n ctrl.style = '';\r\n ctrl.menuStyle = '';\r\n resizeMenus();\r\n\r\n // Events\r\n\r\n WindowEventsService.listen(true, 'resize', resize, 500);\r\n\r\n $scope.$on('$destroy', () => {\r\n WindowEventsService.listen(false, 'resize', resize);\r\n });\r\n\r\n $rootScope.$on('toggleNav', () => {\r\n ctrl.toggle();\r\n });\r\n\r\n // Functions\r\n\r\n function resize() {\r\n ctrl.style = '';\r\n ctrl.menuStyle = '';\r\n $timeout(() => {\r\n size = parseFloat($nav.css('font-size'));\r\n padding = parseFloat($nav.children().eq(0).children('span').css('padding-left'));\r\n ctrl.active = false;\r\n size = origSize;\r\n $timeout(resizeMenus);\r\n });\r\n }\r\n\r\n function resizeMenus() {\r\n if ($scope.device.desktop) {\r\n if ($nav.width() > $element.width()) {\r\n if (padding > 5) {\r\n padding -= 1;\r\n ctrl.menuStyle = { 'padding-left': `${padding}px`, 'padding-right': `${padding}px` };\r\n } else {\r\n size -= 0.5;\r\n ctrl.style = { 'font-size': `${size}px` };\r\n }\r\n $timeout(resizeMenus);\r\n } else {\r\n ctrl.active = true;\r\n }\r\n } else {\r\n ctrl.style = '';\r\n ctrl.menuStyle = '';\r\n ctrl.active = true;\r\n }\r\n }\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('rbNav', function ($document, $animate) {\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n psOpen: '=?'\r\n },\r\n link: (scope, element) => {\r\n element.addClass('ng-pageslide');\r\n\r\n const body = document.body;\r\n const $body = $(body);\r\n const $mainNav = $('#main-nav');\r\n const $navMenu = $('#navMenu');\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) {\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 element.children('a').addClass('in');\r\n\r\n $menu.addClass('collapsing').attr('aria-expanded', true).attr('aria-hidden', false);\r\n\r\n if (scope.$parent.device.isTouch) {\r\n $('#main-nav').addClass('in');\r\n $menu.after('
    ');\r\n element.children('.backdrop').on('click', function () {\r\n $(this).remove();\r\n scope.reduceMenu();\r\n });\r\n }\r\n\r\n function expandDone() {\r\n $menu.removeClass('collapsing').css({ height: 'auto' });\r\n }\r\n\r\n if ($animateCss) {\r\n $animateCss($menu, {\r\n addClass: 'in',\r\n easing: 'ease',\r\n to: { height: `${$menu[0].scrollHeight}px` }\r\n })\r\n .start()\r\n .finally(expandDone);\r\n } else {\r\n $animate\r\n .addClass($menu, 'in', {\r\n to: { height: `${$menu[0].scrollHeight}px` }\r\n })\r\n .then(expandDone);\r\n }\r\n\r\n setTimeout(() => {\r\n $(window).trigger('scroll');\r\n }, 350);\r\n };\r\n\r\n scope.reduceMenu = () => {\r\n const $menu = element.removeClass('in').children('.menu');\r\n if (!$menu.length) return;\r\n\r\n element.children('a').removeClass('in');\r\n element.children('.backdrop').remove();\r\n $('#main-nav').removeClass('in');\r\n\r\n $menu\r\n .css({ height: `${$menu[0].scrollHeight}px` })\r\n .addClass('collapsing')\r\n .attr('aria-expanded', false)\r\n .attr('aria-hidden', true);\r\n\r\n function collapseDone() {\r\n $menu.css({ height: '0' }).removeClass('collapsing');\r\n }\r\n\r\n if ($animateCss) {\r\n $animateCss($menu, {\r\n removeClass: 'in',\r\n to: { height: '0' }\r\n })\r\n .start()\r\n .finally(collapseDone);\r\n } else {\r\n $animate\r\n .removeClass($menu, 'in', {\r\n to: { height: '0' }\r\n })\r\n .then(collapseDone);\r\n }\r\n };\r\n\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 $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 // 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","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;","import 'import/js/directives/autocomplete/angucomplete-alt.js';\r\nimport 'Modules/Shared/Autocomplete/import/autocomplete.less';\r\n\r\nexport default angular\r\n .module('import.autocomplete', [])\r\n\r\n /* @ngInject */\r\n .factory('ImportAutocomplete', function ($compile, $http, $location, $timeout, RoutesService, StringService) {\r\n const service = {\r\n init\r\n };\r\n return service;\r\n\r\n ////////////\r\n function init(ctrl, scope, element, useElasticCore) {\r\n $compile(element.contents())(scope);\r\n\r\n ctrl.searchAPI = (userInputString, timeoutPromise) => (useElasticCore ? searchAPICore(userInputString, timeoutPromise) : searchAPI(userInputString, timeoutPromise));\r\n\r\n ctrl.getResponse = (data, str) => {\r\n ctrl.products = [];\r\n ctrl.advices = [];\r\n ctrl.categories = [];\r\n\r\n let products;\r\n if (useElasticCore) {\r\n products = data.products;\r\n } else {\r\n products = data.results;\r\n }\r\n\r\n $timeout(() => {\r\n ctrl.products = products.filter(o => o.KeyWebAspect !== 'Advice' && o.KeyWebAspect !== 'Recrutement' && o.KeyWebAspect !== 'Brand');\r\n ctrl.advices = ctrl.device.xxs ? [] : products.filter(o => o.KeyWebAspect === 'Advice');\r\n ctrl.categories = data.categories;\r\n\r\n ctrl.products.forEach(item => {\r\n item.designationHtml = StringService.findMatchString(item.Designation, str);\r\n });\r\n\r\n // No advices nor categories\r\n\r\n //ctrl.advices.forEach(item => {\r\n // item.designationHtml = StringService.findMatchString(item.Designation, str);\r\n //});\r\n\r\n //ctrl.categories.forEach(item => {\r\n // item.designationHtml = `${StringService.findMatchString(item.Designation, str)} (${item.TotalProducts})`;\r\n //});\r\n\r\n setTimeout(() => {\r\n element.find('.dropdown-menu, .scroll-container').scrollTop(0);\r\n element.find('.dropdown-menu.with-img').trigger('scroll');\r\n }, 100);\r\n }, 100);\r\n\r\n return data;\r\n };\r\n\r\n ctrl.clearResults = () => {\r\n ctrl.products = ctrl.advices = ctrl.categories = null;\r\n };\r\n\r\n ctrl.searchCallback = selected => {\r\n $location.path(selected.URL);\r\n };\r\n\r\n ctrl.goSearch = str => {\r\n if (str && str !== '') {\r\n const url = `${RoutesService.get().Search.route}/${encodeURIComponent(str.split(' ').join('+')).replace(new RegExp('%2F', 'g'), '%252F')}`;\r\n $location.url(url);\r\n }\r\n };\r\n\r\n // Functions\r\n\r\n function resize() {\r\n $timeout(() => {\r\n const pos = element.offset().top + element.height();\r\n element.find('.products-menu').attr('style', `max-height: calc(100vh - ${Math.floor(pos + 55)}px)`);\r\n element.find('.scroll-container').attr('style', `max-height: calc(100vh - ${Math.floor(pos + 10)}px)`);\r\n });\r\n }\r\n\r\n function searchAPI(userInputString, timeoutPromise) {\r\n return $http.post(\r\n '/Search/AutoCompleteQuery',\r\n {\r\n QueryFullText: userInputString,\r\n CategoryId: '',\r\n NbFrom: '0',\r\n NbSize: '30',\r\n withCatalogs: ctrl.device.xxs ? false : true\r\n },\r\n { timeout: timeoutPromise }\r\n );\r\n }\r\n\r\n function searchAPICore(userInputString, timeoutPromise) {\r\n return $http.post(\r\n '/elssearch/query',\r\n {\r\n TextQuery: userInputString,\r\n From: '0',\r\n Size: '30'\r\n },\r\n { timeout: timeoutPromise }\r\n );\r\n }\r\n\r\n resize();\r\n }\r\n });\r\n","var _module_exports = \" \";;\nvar path = 'import/js/components/addtocart/component.addtocart.quantity.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","var _module_exports = \"\";;\nvar path = 'import/js/components/addtocart/component.addtocart.tpl';\nwindow.angular.module('ng').run(['$templateCache', function(c) { c.put(path, _module_exports) }]);\nmodule.exports = path;","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;","/*eslint-disable*/\nimport angular from 'angular';\n\nexport default angular.module('app.routes', []).constant(\"Routes\", [{\"Name\":\"Product\",\"Controller\":\"SNMProduct\",\"Action\":\"Show\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}\"}},{\"Name\":\"Product1Attribute\",\"Controller\":\"SNMProduct\",\"Action\":\"Show1Attribute\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}\"}},{\"Name\":\"Product2Attributes\",\"Controller\":\"SNMProduct\",\"Action\":\"Show2Attributes\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}\"}},{\"Name\":\"Product3Attributes\",\"Controller\":\"SNMProduct\",\"Action\":\"Show3Attributes\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}\"}},{\"Name\":\"Search\",\"Controller\":\"SNMSearch\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche\"},\"en\":{\"URL\":\"research\"}},{\"Name\":\"SearchAngular\",\"Controller\":\"SNMSearch\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}\"},\"en\":{\"URL\":\"research/{q}\"}},{\"Name\":\"SearchPageAngular\",\"Controller\":\"SNMSearch\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}/{p:int}\"},\"en\":{\"URL\":\"research/{q}/{p:int}\"}},{\"Name\":\"SortedSearchPageAngular\",\"Controller\":\"SNMSearch\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}/{p:int}/{sort:alpha}\"},\"en\":{\"URL\":\"research/{q}/{p:int}/{sort:alpha}\"}},{\"Name\":\"SortedSearchAngular\",\"Controller\":\"SNMSearch\",\"Action\":\"Search\",\"fr\":{\"URL\":\"recherche/{q}/{sort:alpha}\"},\"en\":{\"URL\":\"research/{q}/{sort:alpha}\"}},{\"Name\":\"MessageCatalogRequestAdd\",\"Controller\":\"MessageOverride\",\"Action\":\"AddCatalogRequest\",\"fr\":{\"URL\":\"Message/Add/CatalogRequest\"},\"en\":{\"URL\":\"Message/Add/CatalogRequest\"}},{\"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\":\"ProductWithElasticSearch\",\"Controller\":\"Product\",\"Action\":\"ShowWithElasticSearch\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/es/{query}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/es/{query}\"}},{\"Name\":\"Product1AttributeWithElasticSearch\",\"Controller\":\"Product\",\"Action\":\"Show1AttributeWithElasticSearch\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/es/{query}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/es/{query}\"}},{\"Name\":\"Product2AttributesWithElasticSearch\",\"Controller\":\"Product\",\"Action\":\"Show2AttributesWithElasticSearch\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/es/{query}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/es/{query}\"}},{\"Name\":\"Product3AttributesWithElasticSearch\",\"Controller\":\"Product\",\"Action\":\"Show3AttributesWithElasticSearch\",\"fr\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}/es/{query}\"},\"en\":{\"URL\":\"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}/es/{query}\"}},{\"Name\":\"Cart\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier\"},\"en\":{\"URL\":\"cart\"}},{\"Name\":\"CartOutdated\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier-expire\"},\"en\":{\"URL\":\"outdated-cart\"}},{\"Name\":\"CartIdentification\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier/identification\"},\"en\":{\"URL\":\"cart/authentification\"}},{\"Name\":\"CartShipping\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier/livraison\"},\"en\":{\"URL\":\"cart/delivery\"}},{\"Name\":\"CartPayment\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier/paiement\"},\"en\":{\"URL\":\"cart/payment\"}},{\"Name\":\"CartValidation\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"panier/validation\"},\"en\":{\"URL\":\"cart/validation\"}},{\"Name\":\"CartOnePageCheckout\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"commander\"},\"en\":{\"URL\":\"checkout\"}},{\"Name\":\"CartOnePageCheckoutPayment\",\"Controller\":\"Cart\",\"Action\":\"Index\",\"fr\":{\"URL\":\"retour-paiement\"},\"en\":{\"URL\":\"back-to-payment\"}},{\"Name\":\"CartPaymentAction\",\"Controller\":\"Payment\",\"Action\":\"Payment\",\"fr\":{\"URL\":\"paiement\"},\"en\":{\"URL\":\"payment\"}},{\"Name\":\"CartRecognition\",\"Controller\":\"Cart\",\"Action\":\"Recognition\",\"fr\":{\"URL\":\"reconnaissance-panier/{idFolder:int}/{token}\"},\"en\":{\"URL\":\"cart-recognition/{idFolder:int}/{token}\"}},{\"Name\":\"CartPaymentRedirect\",\"Controller\":\"Cart\",\"Action\":\"Redirect\",\"fr\":{\"URL\":\"redirection-panier-paiement\"},\"en\":{\"URL\":\"cart-payment-redirect\"}},{\"Name\":\"QuotationPaymentError\",\"Controller\":\"Quotation\",\"Action\":\"PaymentError\",\"fr\":{\"URL\":\"paiement/erreur/{idFolder:int}\"},\"en\":{\"URL\":\"payment/error/{idFolder:int}\"}},{\"Name\":\"CartPaymentError\",\"Controller\":\"Cart\",\"Action\":\"PaymentError\",\"fr\":{\"URL\":\"paiement/erreur\"},\"en\":{\"URL\":\"payment/error\"}},{\"Name\":\"QuickOrder\",\"Controller\":\"Cart\",\"Action\":\"QuickOrder\",\"fr\":{\"URL\":\"commande-par-reference\"},\"en\":{\"URL\":\"order-by-reference\"}},{\"Name\":\"AccountValidationPage\",\"Controller\":\"Authentication\",\"Action\":\"AccountValidationPage\",\"fr\":{\"URL\":\"validation-compte/validation/{EncryptedIdCard}\"},\"en\":{\"URL\":\"account-validation/validate/{EncryptedIdCard}\"}},{\"Name\":\"ResendAccountValidationEmail\",\"Controller\":\"AccountCreate\",\"Action\":\"ResendAccountValidationEmail\",\"fr\":{\"URL\":\"validation-compte/renvoi/{EncryptedIdCard}\"},\"en\":{\"URL\":\"account-validation/resend/{EncryptedIdCard}\"}},{\"Name\":\"AccountValidateEmailToken\",\"Controller\":\"Authentication\",\"Action\":\"AccountValidateEmailToken\",\"fr\":{\"URL\":\"identification/{validEmailToken}\"},\"en\":{\"URL\":\"authentication/{validEmailToken}\"}},{\"Name\":\"Login\",\"Controller\":\"Authentication\",\"Action\":\"Login\",\"fr\":{\"URL\":\"identification\"},\"en\":{\"URL\":\"authentication\"}},{\"Name\":\"LoginFromFacebook\",\"Controller\":\"Authentication\",\"Action\":\"LoginFromFacebook\",\"fr\":{\"URL\":\"identification-facebook\"},\"en\":{\"URL\":\"authentication-facebook\"}},{\"Name\":\"AccountHome\",\"Controller\":\"AccountHome\",\"Action\":\"AccountHome\",\"fr\":{\"URL\":\"mon-compte\"},\"en\":{\"URL\":\"my-account\"}},{\"Name\":\"AccountUpdate\",\"Controller\":\"AccountUpdate\",\"Action\":\"AccountUpdate\",\"fr\":{\"URL\":\"profil\"},\"en\":{\"URL\":\"profile\"}},{\"Name\":\"AccountPasswordReset\",\"Controller\":\"AccountPasswordReset\",\"Action\":\"AccountPasswordReset\",\"fr\":{\"URL\":\"mot-de-passe\"},\"en\":{\"URL\":\"password\"}},{\"Name\":\"AccountOrderTracking\",\"Controller\":\"AccountOrderTracking\",\"Action\":\"AccountOrderTracking\",\"fr\":{\"URL\":\"suivi-de-commande\"},\"en\":{\"URL\":\"order-tracking\"}},{\"Name\":\"AccountInvoices\",\"Controller\":\"AccountInvoices\",\"Action\":\"AccountInvoices\",\"fr\":{\"URL\":\"factures\"},\"en\":{\"URL\":\"invoices\"}},{\"Name\":\"AccountClaim\",\"Controller\":\"AccountClaim\",\"Action\":\"AccountClaim\",\"fr\":{\"URL\":\"reclamation\"},\"en\":{\"URL\":\"claim\"}},{\"Name\":\"AccountReturns\",\"Controller\":\"AccountReturns\",\"Action\":\"AccountReturns\",\"fr\":{\"URL\":\"retours\"},\"en\":{\"URL\":\"returns\"}},{\"Name\":\"AccountSavedCarts\",\"Controller\":\"AccountSavedCarts\",\"Action\":\"AccountSavedCarts\",\"fr\":{\"URL\":\"paniers-sauvegardes\"},\"en\":{\"URL\":\"saved-cart\"}},{\"Name\":\"AccountNumericProducts\",\"Controller\":\"AccountNumericProducts\",\"Action\":\"Index\",\"fr\":{\"URL\":\"produits-numeriques\"},\"en\":{\"URL\":\"digital-products\"}},{\"Name\":\"AccountVouchers\",\"Controller\":\"AccountVouchers\",\"Action\":\"Index\",\"fr\":{\"URL\":\"bons-d-achat\"},\"en\":{\"URL\":\"vouchers\"}},{\"Name\":\"AccountLoyaltyPoints\",\"Controller\":\"AccountLoyaltyPoints\",\"Action\":\"AccountLoyaltyPoints\",\"fr\":{\"URL\":\"points-fidelite\"},\"en\":{\"URL\":\"loyalty-point\"}},{\"Name\":\"AccountWishList\",\"Controller\":\"AccountWishList\",\"Action\":\"WishList\",\"fr\":{\"URL\":\"liste-de-souhaits\"},\"en\":{\"URL\":\"wish-list\"}},{\"Name\":\"AccountMultiWishList\",\"Controller\":\"AccountWishList\",\"Action\":\"WishList\",\"fr\":{\"URL\":\"mes-listes-de-souhaits\"},\"en\":{\"URL\":\"my-wish-list\"}},{\"Name\":\"AccountQuotations\",\"Controller\":\"AccountQuotation\",\"Action\":\"Account\",\"fr\":{\"URL\":\"devis\"},\"en\":{\"URL\":\"quote\"}},{\"Name\":\"AccountAdvancedQuotations\",\"Controller\":\"AccountQuotation\",\"Action\":\"Account\",\"fr\":{\"URL\":\"mes-devis\"},\"en\":{\"URL\":\"my-quote\"}},{\"Name\":\"AccountCredits\",\"Controller\":\"AccountCredits\",\"Action\":\"Show\",\"fr\":{\"URL\":\"avoirs\"},\"en\":{\"URL\":\"credit-note\"}},{\"Name\":\"AccountGiftCards\",\"Controller\":\"AccountGiftCards\",\"Action\":\"AccountGiftCards\",\"fr\":{\"URL\":\"cheques-cadeaux\"},\"en\":{\"URL\":\"gift-voucher\"}},{\"Name\":\"AccountSponsorShip\",\"Controller\":\"AccountSponsorShip\",\"Action\":\"AccountSponsorShip\",\"fr\":{\"URL\":\"parrainage\"},\"en\":{\"URL\":\"sponsorship\"}},{\"Name\":\"SearchProducts\",\"Controller\":\"Search\",\"Action\":\"SearchProducts\",\"fr\":{\"URL\":\"produits\"},\"en\":{\"URL\":\"products\"}},{\"Name\":\"SearchProductsPageAngular\",\"Controller\":\"Search\",\"Action\":\"SearchProducts\",\"fr\":{\"URL\":\"produits/{p:int}\"},\"en\":{\"URL\":\"products/{p:int}\"}},{\"Name\":\"SortedSearchProductsAngular\",\"Controller\":\"Search\",\"Action\":\"SearchProducts\",\"fr\":{\"URL\":\"produits/{sort:alpha}\"},\"en\":{\"URL\":\"products/{sort:alpha}\"}},{\"Name\":\"SortedSearchProductsPageAngular\",\"Controller\":\"Search\",\"Action\":\"SearchProducts\",\"fr\":{\"URL\":\"produits/{p:int}/{sort:alpha}\"},\"en\":{\"URL\":\"products/{p:int}/{sort:alpha}\"}},{\"Name\":\"Stores\",\"Controller\":\"Stores\",\"Action\":\"Stores\",\"fr\":{\"URL\":\"magasins\"},\"en\":{\"URL\":\"stores\"}},{\"Name\":\"StoresWebsite\",\"Controller\":\"Stores\",\"Action\":\"StoresWebsite\",\"fr\":{\"URL\":\"liste-magasins\"},\"en\":{\"URL\":\"stores-list\"}},{\"Name\":\"Contact\",\"Controller\":\"Form\",\"Action\":\"Contact\",\"fr\":{\"URL\":\"contact\"},\"en\":{\"URL\":\"contact\"}},{\"Name\":\"CatalogRequest\",\"Controller\":\"Form\",\"Action\":\"CatalogRequest\",\"fr\":{\"URL\":\"catalogue\"},\"en\":{\"URL\":\"catalogue\"}},{\"Name\":\"Jobs\",\"Controller\":\"Form\",\"Action\":\"Jobs\",\"fr\":{\"URL\":\"jobs\"},\"en\":{\"URL\":\"jobs\"}},{\"Name\":\"MessageCatalogRequest\",\"Controller\":\"Message\",\"Action\":\"CatalogRequest\",\"fr\":{\"URL\":\"Message/Catalogue\"},\"en\":{\"URL\":\"Message/Catalog\"}},{\"Name\":\"MessageContact\",\"Controller\":\"Message\",\"Action\":\"Contact\",\"fr\":{\"URL\":\"Message/Contact\"},\"en\":{\"URL\":\"Message/Contact\"}},{\"Name\":\"MessageAccountClaim\",\"Controller\":\"Message\",\"Action\":\"Claim\",\"fr\":{\"URL\":\"Message/Claim\"},\"en\":{\"URL\":\"Message/Claim\"}},{\"Name\":\"MessageContactAdd\",\"Controller\":\"Message\",\"Action\":\"AddContact\",\"fr\":{\"URL\":\"Message/Add/Contact\"},\"en\":{\"URL\":\"Message/Add/Contact\"}},{\"Name\":\"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\":\"AdvancedReviewsForm\",\"Controller\":\"AccountAdvancedReviews\",\"Action\":\"Form\",\"fr\":{\"URL\":\"avis-articles/{token}\"},\"en\":{\"URL\":\"product-reviews/{token}\"}},{\"Name\":\"AccountAdvancedReviews\",\"Controller\":\"AccountAdvancedReviews\",\"Action\":\"AccountAdvancedReviews\",\"fr\":{\"URL\":\"avis-articles\"},\"en\":{\"URL\":\"product-reviews\"}},{\"Name\":\"AccountDedicatedProducts\",\"Controller\":\"AccountDedicatedProducts\",\"Action\":\"Show\",\"fr\":{\"URL\":\"produits-personnalises\"},\"en\":{\"URL\":\"dedicated-products\"}},{\"Name\":\"UpdateLineQuantityCart\",\"Controller\":\"Cart\",\"Action\":\"UpdateLineQuantityCart\",\"fr\":{\"URL\":\"UpdateLineQuantityCart/{idLine:int}/{RemovedQuantity:int}\"},\"en\":{\"URL\":\"UpdateLineQuantityCart/{idLine:int}/{RemovedQuantity:int}\"}},{\"Name\":\"Click2Call\",\"Controller\":\"OVH\",\"Action\":\"Click2Call\",\"fr\":{\"URL\":\"clickToCall\"},\"en\":{\"URL\":\"clickToCall\"}},{\"Name\":\"AlmaCheckEligibility\",\"Controller\":\"Alma\",\"Action\":\"AlmaCheckEligibility\",\"fr\":{\"URL\":\"AlmaCheckEligibility\"},\"en\":{\"URL\":\"AlmaCheckEligibility\"}},{\"Name\":\"AlmaGetPaymentInfos\",\"Controller\":\"Alma\",\"Action\":\"AlmaGetPaymentInfos\",\"fr\":{\"URL\":\"AlmaGetPaymentInfos\"},\"en\":{\"URL\":\"AlmaGetPaymentInfos\"}},{\"Name\":\"AlmaGetApiInfos\",\"Controller\":\"Alma\",\"Action\":\"AlmaGetApiInfos\",\"fr\":{\"URL\":\"AlmaGetApiInfos\"},\"en\":{\"URL\":\"AlmaGetApiInfos\"}},{\"Name\":\"AlmaPrePaymentRequest\",\"Controller\":\"Alma\",\"Action\":\"AlmaPrePaymentRequest\",\"fr\":{\"URL\":\"AlmaPrePaymentRequest\"},\"en\":{\"URL\":\"AlmaPrePaymentRequest\"}},{\"Name\":\"AlmaConfirm\",\"Controller\":\"Alma\",\"Action\":\"AlmaConfirm\",\"fr\":{\"URL\":\"AlmaConfirm\"},\"en\":{\"URL\":\"AlmaConfirm\"}},{\"Name\":\"AlmaAsyncResponse\",\"Controller\":\"Alma\",\"Action\":\"AlmaAsyncResponse\",\"fr\":{\"URL\":\"AlmaAsyncResponse\"},\"en\":{\"URL\":\"AlmaAsyncResponse\"}},{\"Name\":\"NetWaveGetProducts\",\"Controller\":\"Netwave\",\"Action\":\"GetProducts\",\"fr\":{\"URL\":\"GetProducts\"},\"en\":{\"URL\":\"GetProducts\"}},{\"Name\":\"NetWaveGetCategoryProduct\",\"Controller\":\"Netwave\",\"Action\":\"GetCategoryProduct\",\"fr\":{\"URL\":\"GetCategoryProduct/{productId:int}\"},\"en\":{\"URL\":\"GetCategoryProduct/{productId:int}\"}},{\"Name\":\"GetNetWaveInfo\",\"Controller\":\"Netwave\",\"Action\":\"GetNetWaveInfo\",\"fr\":{\"URL\":\"GetNetWaveInfo\"},\"en\":{\"URL\":\"GetNetWaveInfo\"}}]);","import { googleTranslateChangeTitle } from 'js/plugins/googleTranslateChangeTitle';\r\n\r\nexport 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 googleTranslateChangeTitle();\r\n });\r\n\r\n $scope.$on('updateVisitorContext', (event, value) => {\r\n $scope.visitorContext = value;\r\n });\r\n\r\n $scope.$on('pageCheckout', (event, checkout) => {\r\n $timeout(() => {\r\n ctrl.checkout = checkout;\r\n });\r\n });\r\n\r\n $scope.showPageLoader = false;\r\n $scope.$on('showPageLoader', (event, value) => {\r\n $scope.showPageLoader = value;\r\n });\r\n\r\n $rootScope.forceReload = () => {\r\n ModalService.close();\r\n $rootScope.$broadcast('searchClose');\r\n RoutingService.forceReload();\r\n };\r\n\r\n setDevice($scope);\r\n\r\n function setDevice(scope) {\r\n $scope.device = {};\r\n if (DeviceService.get().length > 3) {\r\n $timeout(() => {\r\n setDevice(scope);\r\n }, 10);\r\n return;\r\n }\r\n\r\n $scope.device.size = DeviceService.getSize($scope, size => {\r\n $scope.device.size = size;\r\n $scope.$emit('lazy:refresh');\r\n });\r\n\r\n $scope.device.xxs = DeviceService.onChange($scope, 'xxs', match => {\r\n $scope.device.xxs = match;\r\n });\r\n $scope.device.xs = DeviceService.onChange($scope, 'xs', match => {\r\n $scope.device.xs = match;\r\n });\r\n $scope.device.sm = DeviceService.onChange($scope, 'sm', match => {\r\n $scope.device.sm = match;\r\n });\r\n $scope.device.md = DeviceService.onChange($scope, 'md', match => {\r\n $scope.device.md = match;\r\n });\r\n $scope.device.lg = DeviceService.onChange($scope, 'lg', match => {\r\n $scope.device.lg = match;\r\n });\r\n\r\n $scope.device.desktop = DeviceService.onChange($scope, 'md, lg', match => {\r\n $scope.device.desktop = match;\r\n });\r\n $scope.device.mobile = DeviceService.onChange($scope, 'xxs, xs', match => {\r\n $scope.device.mobile = match;\r\n });\r\n\r\n $scope.device.isTouch = DeviceService.isTouch();\r\n $scope.device.isFirefox = DeviceService.wichUserAgent();\r\n $scope.device.isSafari = DeviceService.wichUserAgentSafari();\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 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\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","/* ng-infinite-scroll - v1.3.0 - 2016-06-30 from https://github.com/sroze/ngInfiniteScroll */\r\nexport default angular\r\n .module('directive.infinitescroll', [])\r\n\r\n .value('THROTTLE_MILLISECONDS', 250)\r\n\r\n /* @ngInject */\r\n .directive('infiniteScroll', function ($injector) {\r\n return {\r\n scope: {\r\n infiniteScroll: '&',\r\n infiniteScrollDistance: '=',\r\n infiniteScrollDisabled: '=',\r\n infiniteScrollGrandParent: '='\r\n },\r\n restrict: 'A',\r\n link: async (scope, element, attrs) => {\r\n const response = await import(/* webpackChunkName: \"infinitescroll\" */ 'import/js/directives/infinitescroll/directive.infinitescroll.init.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('InfiniteScroll');\r\n service.init(scope, element, attrs);\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.owl-carousel', [])\r\n\r\n /* @ngInject */\r\n .directive('owlCarousel', function ($injector) {\r\n return {\r\n restrict: 'A',\r\n link: async (scope, element, attrs) => {\r\n const response = await import(/* webpackChunkName: \"owlcarousel\" */ 'import/js/directives/owlcarousel/owlcarousel.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('CarouselService');\r\n service.init(scope, element, attrs);\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.scrolltop', [])\r\n\r\n .directive('backToTop', function () {\r\n return {\r\n restrict: 'A',\r\n controllerAs: 'backToTopCtrl',\r\n /* @ngInject */\r\n controller: function ($scope, $window, WindowEventsService) {\r\n const ctrl = this;\r\n let lastPos;\r\n ctrl.active = false;\r\n\r\n ctrl.$onDestroy = () => {\r\n WindowEventsService.listen(false, 'resize', handler);\r\n };\r\n\r\n WindowEventsService.listen(true, 'scroll', handler, 500);\r\n\r\n function handler() {\r\n const sc = isNaN(window.pageYOffset) ? document.documentElement.scrollTop : window.pageYOffset;\r\n $scope.$apply(() => {\r\n ctrl.active = sc > $window.innerHeight && sc < lastPos ? true : false;\r\n });\r\n lastPos = sc;\r\n }\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.selectpicker', [])\r\n\r\n /* @ngInject */\r\n .directive('selectpicker', function ($injector) {\r\n return {\r\n restrict: 'A',\r\n scope: false,\r\n link: async (scope, element, attrs) => {\r\n scope.$eval(`${attrs.ngModel}=\"${element.val()}\"`);\r\n\r\n const response = await import(/* webpackChunkName: \"selectpicker\" */ 'import/js/directives/selectpicker/selectpicker.js');\r\n $injector.loadNewModules([response.default.name]);\r\n const service = $injector.get('ImportSelectpicker');\r\n service.init(scope, element, attrs);\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.stop.propagation', [])\r\n\r\n /* @ngInject */\r\n .directive('stopPropagation', function () {\r\n return {\r\n restrict: 'A',\r\n link: (scope, element, attrs) => {\r\n element.click(event => {\r\n event.stopPropagation();\r\n if (attrs.preventDefault) {\r\n event.preventDefault();\r\n }\r\n });\r\n scope.$on('$destroy', () => {\r\n element.off('click');\r\n });\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.togglePasswordVisibility', [])\r\n\r\n .directive('togglePasswordVisibility', function () {\r\n return {\r\n restrict: 'A',\r\n /* @ngInject */\r\n controller: function ($scope, $timeout) {\r\n $scope.togglePasswordVisibility = function (inputPasswordFieldID, triggerElementID) {\r\n const inputPasswordField = angular.element((`#${inputPasswordFieldID}`));\r\n const triggerElement = angular.element((`#${triggerElementID}`));\r\n\r\n function showPassword() {\r\n triggerElement.removeClass('glyphicon-open-eye');\r\n triggerElement.addClass('glyphicon-closed-eye');\r\n inputPasswordField.attr('type', 'text');\r\n\r\n $timeout(() => {\r\n hidePassword();\r\n }, 15000);\r\n\r\n }\r\n\r\n function hidePassword() {\r\n triggerElement.removeClass('glyphicon-closed-eye');\r\n triggerElement.addClass('glyphicon-open-eye');\r\n inputPasswordField.attr('type', 'password');\r\n }\r\n\r\n if (inputPasswordField.attr('type') === 'password') {\r\n showPassword();\r\n } else {\r\n hidePassword();\r\n }\r\n };\r\n }\r\n };\r\n });\r\n","export default angular\r\n .module('directive.visibleonscroll', [])\r\n\r\n .directive('visibleOnScroll', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n offset: '<'\r\n },\r\n controllerAs: '$ctrl',\r\n /* @ngInject */\r\n controller: function ($timeout, WindowEventsService) {\r\n const ctrl = this;\r\n\r\n ctrl.$onDestroy = () => {\r\n WindowEventsService.listen(false, 'resize', handler);\r\n };\r\n\r\n WindowEventsService.listen(true, 'scroll', handler, 500);\r\n\r\n function handler() {\r\n const sc = isNaN(window.pageYOffset) ? document.documentElement.scrollTop : window.pageYOffset;\r\n $timeout(() => {\r\n ctrl.active = sc > ctrl.offset;\r\n });\r\n }\r\n }\r\n };\r\n });\r\n","/* 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) return num;\r\n return num.replace(/\\./g, ' ');\r\n };\r\n });\r\n","import format from 'import/js/plugins/format.js';\r\n\r\nexport default angular\r\n .module('filter.price', [])\r\n\r\n /* @ngInject */\r\n .filter('price', function ($rootScope, AppService) {\r\n let params = null;\r\n\r\n function priceFilter(prices, str, ttc) {\r\n if (prices === null || angular.isUndefined(prices) || (!angular.isObject(prices) && isNaN(prices))) return prices;\r\n ttc = ttc === 'ht' ? false : true;\r\n\r\n if (params !== null) {\r\n return !angular.isFunction(params.then) ? getPriceFilter(prices, str, ttc) : undefined;\r\n }\r\n params = AppService.getParams()\r\n .then(data => {\r\n params = data;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n /**\r\n * Return calculated conditionning total price for a product\r\n * @param {Object} item product with at least prices and quantity fields\r\n */\r\n function getConditioningPrice(item) {\r\n let quantity = item.quantity;\r\n\r\n const prices = item.prices;\r\n prices.sort((a, b) => b.qty - a.qty);\r\n\r\n return prices.reduce((result, price) => {\r\n if (quantity === 0) {\r\n return result;\r\n }\r\n\r\n const remainder = quantity % price.qty;\r\n const priceValue = params.Visitor.CardType.ShowTTCPrice ? price.TTCDiscountedPrice : price.HTDiscountedPrice;\r\n\r\n result += (quantity - remainder) * priceValue;\r\n quantity = remainder;\r\n\r\n return result;\r\n }, 0);\r\n }\r\n\r\n function getPriceFilter(prices, str, ttc) {\r\n if (!angular.isFunction(format)) return prices;\r\n\r\n const loc = params.Localization;\r\n let value;\r\n let template = params.Visitor.CardType.ShowTTCPrice ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n\r\n switch (str) {\r\n case 'value':\r\n case 'round-value':\r\n value = prices;\r\n template = ttc ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n break;\r\n case 'amount-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCAmount : prices.HTAmount;\r\n break;\r\n case 'final-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCDiscountedPrice : prices.HTDiscountedPrice;\r\n break;\r\n case 'total-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCTotalPrice : prices.HTTotalPrice;\r\n break;\r\n case 'eco':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.EcoContribution.TTCAmount : prices.EcoContribution.HTAmount;\r\n break;\r\n case 'conditioning-price':\r\n value = getConditioningPrice(prices);\r\n break;\r\n default:\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCPrice : prices.HTPrice;\r\n }\r\n if (angular.isUndefined(value)) return;\r\n\r\n // Format de base : #.##0,00\r\n // Formats spéciaux :\r\n // - # ##0,00\r\n // - # ##0.00\r\n // - #,##0.00\r\n // On récupère le format défini dans la conf\r\n let priceFormat = loc.PriceFormat;\r\n // On récupère les différents séparateurs\r\n const separators = priceFormat.match(/[^\\d#]/g);\r\n if (separators.length > 1) {\r\n // S'il y a deux séparateurs (cas normal : décimales et milliers) on les remplace avec les séparateurs définis dans la conf\r\n priceFormat = priceFormat.replace(separators[0], loc.PriceThousandSeparator)\r\n .replace(separators[1], loc.PriceDecimalSeparator);\r\n } else {\r\n // S'il y a qu'un seul séparateur (cas étrange : décimales ) on le remplace avec le séparateur défini dans la conf\r\n priceFormat = priceFormat.replace(separators[0], loc.PriceDecimalSeparator);\r\n }\r\n\r\n const strMontant = format(priceFormat, parseFloat(Math.round(parseFloat(value) * 100) / 100));\r\n const separatorIndex = strMontant.indexOf(loc.PriceDecimalSeparator);\r\n\r\n if (str === 'round-value' && Math.floor(value) === value) {\r\n template = template.replace('[%decimal-separator%]', '');\r\n template = template.replace('[%amount-dec%]', '');\r\n }\r\n\r\n const render = template\r\n .replace('[%amount%]', strMontant)\r\n .replace('[%amount-int%]', separatorIndex !== -1 ? strMontant.substring(0, separatorIndex) : strMontant)\r\n .replace('[%amount-dec%]', separatorIndex !== -1 ? strMontant.substring(separatorIndex + 1) : '')\r\n .replace('[%decimal-separator%]', loc.PriceDecimalSeparator)\r\n .replace('[%currency%]', params.Currency.Symbol)\r\n .replace('[%currencyCode%]', params.Currency.ISOCode);\r\n\r\n return render;\r\n }\r\n\r\n $rootScope.$on('logUpdate', () => {\r\n params = null;\r\n });\r\n\r\n priceFilter.$stateful = true;\r\n return priceFilter;\r\n });\r\n","export default angular\r\n .module('filter.truncate.date', [])\r\n\r\n /* @ngInject */\r\n .filter('truncateDate', function () {\r\n return value => {\r\n if (angular.isString(value) && value.indexOf('h00') === value.length - 3) {\r\n return value.slice(0, -2);\r\n }\r\n return value;\r\n };\r\n });\r\n","import { deburr, kebabCase } from 'lodash-es';\r\n\r\nexport default angular\r\n .module('module.cdn', [])\r\n\r\n /* @ngInject */\r\n .factory('CdnService', function (AppService) {\r\n return {\r\n get: async (id, size, designation, extension, quality, absolute, crop, transparent) => {\r\n if (angular.isUndefined(size)) {\r\n size = '1200x1200';\r\n }\r\n if (angular.isUndefined(designation)) {\r\n designation = 'Image';\r\n }\r\n if (angular.isUndefined(extension)) {\r\n extension = 'jpg';\r\n }\r\n if (angular.isUndefined(quality)) {\r\n quality = 80;\r\n }\r\n if (angular.isUndefined(absolute)) {\r\n absolute = false;\r\n }\r\n\r\n const params = await AppService.getParams();\r\n const split1 = params.Localization.UrlImages.substr(0, params.Localization.UrlImages.indexOf('.'));\r\n const split2 = params.Localization.UrlImages.substr(params.Localization.UrlImages.indexOf('.') + 1);\r\n let url = '';\r\n if (params.Site.PlatformEnvironment.toLowerCase() === 'saas04') {\r\n url = split1 === '' ? split2 : `${split1 + (id % 5)}.${split2}`;\r\n } else {\r\n url = split1 === '' ? split2 : `${split1}.${split2}`;\r\n }\r\n\r\n if (absolute && url.substr(0, 6) === '/Image') {\r\n url = params.Localization.URLSite.substr(0, params.Localization.URLSite.length - 1) + url;\r\n }\r\n\r\n if (quality <= 0) {\r\n quality = 1;\r\n }\r\n if (quality > 100) {\r\n quality = 100;\r\n }\r\n\r\n if (designation === '') {\r\n designation = `${params.Localization.TradeName} ${id}`;\r\n }\r\n\r\n const queryParams = [];\r\n if (quality !== 80) {\r\n queryParams.push(`quality=${quality}`);\r\n }\r\n\r\n if (crop) {\r\n queryParams.push('crop');\r\n }\r\n\r\n if (transparent) {\r\n queryParams.push('transparent');\r\n }\r\n\r\n url = `${url}/${id}/${size}/${kebabCase(deburr(designation))}.${extension}`;\r\n\r\n if (queryParams.length) {\r\n url += `?${queryParams.join('&')}`;\r\n }\r\n\r\n return url;\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .directive('cdn', function (CdnService) {\r\n return {\r\n restrict: 'A',\r\n priority: 100,\r\n scope: {\r\n cdnId: '@?',\r\n cdnSize: '@?',\r\n cdnDesignation: '@?',\r\n cdnExtension: '@?',\r\n cdnQuality: '@?',\r\n cdnAbsolute: '@?',\r\n cdnCrop: '@?',\r\n cdnTransparent: '@?',\r\n cdnChangeable: '@?'\r\n },\r\n link: (scope, element, attrs) => {\r\n if (scope.cdnId === '0' && attrs.distrimageSrc && attrs.distrimageSrc !== '') return;\r\n\r\n if (angular.isDefined(attrs.cdnChangeable)) {\r\n const observerCdnId = attrs.$observe('cdnId', () => {\r\n processImage();\r\n });\r\n scope.$on('$destroy', observerCdnId);\r\n } else {\r\n processImage();\r\n }\r\n\r\n async function processImage() {\r\n const res = await CdnService.get(\r\n scope.cdnId,\r\n scope.cdnSize,\r\n scope.cdnDesignation,\r\n scope.cdnExtension,\r\n scope.cdnQuality,\r\n scope.cdnAbsolute,\r\n scope.cdnCrop,\r\n scope.cdnTransparent\r\n );\r\n setSrc(element, attrs, res);\r\n }\r\n\r\n function setSrc(_element, _attrs, res) {\r\n if (_element[0].tagName.toLowerCase() === 'img') {\r\n if (angular.isDefined(_attrs.lazy) && !_element.hasClass('loaded')) {\r\n _attrs.$set('lazy', res);\r\n } else if (angular.isDefined(_element.data('src')) && !_element.hasClass('loaded') && !_element.hasClass('owl-lazy')) {\r\n _element.attr('data-src', res);\r\n } else {\r\n _element.attr('src', res);\r\n\r\n if (_element.hasClass('owl-lazy')) {\r\n _element.attr('style', 'opacity: 1');\r\n }\r\n }\r\n } else {\r\n if (angular.isDefined(_element.data('srcset')) && !_element.parent().children('img').hasClass('loaded') && !_element.parent().children('img').hasClass('owl-lazy')) {\r\n _element.attr('data-srcset', res);\r\n } else {\r\n _element.attr('srcset', res);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n });\r\n","/*\r\n * angular-lazy-load\r\n * base https://github.com/Pentiado/angular-lazy-img\r\n */\r\n\r\nexport default angular\r\n .module('module.lazy', [])\r\n\r\n /* @ngInject */\r\n .factory('lazyObserver', function (lazyHelpers) {\r\n const service = {\r\n add,\r\n remove\r\n };\r\n let env, intersectionListener;\r\n init();\r\n return service;\r\n\r\n ////////////\r\n function init() {\r\n env = lazyHelpers.env;\r\n if (env.intersectionObserverSupport !== true) return angular.noop;\r\n\r\n intersectionListener = new IntersectionObserver(\r\n (entries, observer) => {\r\n entries.forEach(entry => {\r\n if (entry.isIntersecting === true || entry.intersectionRatio > 0) {\r\n const element = entry.target;\r\n observer.unobserve(element);\r\n loadElement(element);\r\n }\r\n });\r\n },\r\n {\r\n rootMargin: '200px 0%'\r\n }\r\n );\r\n }\r\n\r\n function loadElement(element) {\r\n if (element.tagName.toLowerCase() === 'img') {\r\n const parentElement = element.parentNode;\r\n\r\n // if the parent element is \r\n if (parentElement.tagName.toLowerCase() === 'picture') {\r\n [].slice.call(parentElement.querySelectorAll('source')).forEach(source => yallFlipDataAttrs(source));\r\n yallFlipDataAttrs(element);\r\n return;\r\n }\r\n\r\n const newImageElement = new Image();\r\n if (env.asyncDecodeSupport === true && env.replaceWithSupport === true) {\r\n newImageElement.src = element.getAttribute('lazy');\r\n\r\n newImageElement\r\n .decode()\r\n .then(() => {\r\n for (let i = 0; i < element.attributes.length; i++) {\r\n const attrName = element.attributes[i].name;\r\n const attrValue = element.attributes[i].value;\r\n\r\n if (!env.ignoredImgAttributes.includes(attrName)) {\r\n newImageElement.setAttribute(attrName, attrValue);\r\n }\r\n }\r\n element.replaceWith(newImageElement);\r\n newImageElement.removeAttribute('lazy');\r\n newImageElement.classList.add('loaded');\r\n })\r\n .catch(() => {\r\n yallFlipDataAttrs(element);\r\n });\r\n } else {\r\n yallFlipDataAttrs(element);\r\n }\r\n } else if (element.tagName.toLowerCase() === 'iframe') {\r\n // Lazy load