{"version":3,"sources":["App/js/plugins/ie10fix.js","App/js/plugins/format.js","App/js/plugins/hoverintent.min.js","App/js/plugins/pointer_events_polyfill.js","App/js/plugins/jquery.bxslider.js","App/js/plugins/jquery.equal-heights.js","App/js/plugins/jquery.zoom.js","App/js/plugins/lodash.custom.min.js","App/js/plugins/md5.min.js","App/js/plugins/netwave.js","App/js/plugins/owl.carousel.js","App/js/lib/angular/angular-animate.js","App/js/lib/angular/angular-route.js","App/gulp/gulp-routes.js","App/gulp/gulp-dependencies.js","App/gulp/gulp-templates.js","App/gulp/gulp-client.js","App/js/app.js","App/js/components/component.addtocart-quantity.js","App/js/components/component.addtocart.js","App/js/components/component.delete-cart-item.js","App/js/components/component.modify-cart-item.js","App/js/directives/directive.back-top-top.js","App/js/directives/directive.bootstrap-select.js","App/js/directives/directive.bxslider.js","App/js/directives/directive.clear-uib-tab.js","App/js/directives/directive.collapse-menu.js","App/js/directives/directive.debug.js","App/js/directives/directive.flip.js","App/js/directives/directive.mini-cart.js","App/js/directives/directive.page-head.js","App/js/directives/directive.responsive-img.js","App/js/directives/directive.searchlink.js","App/js/directives/directive.stop-propagation.js","App/js/directives/directive.tab-equal-heights.js","App/js/directives/directive.video-player.js","App/js/directives/directives.breadcrumb.js","App/js/directives/directives.form.js","App/js/elastic-apm-rum.umd.min.js","App/js/filters/filter.decimal.js","App/js/filters/filter.discount.js","App/js/filters/filter.format.js","App/js/filters/filter.phone.js","App/js/filters/filter.price.js","App/js/filters/filter.truncate-date.js","App/js/lib/angular-dropzone.js","App/js/lib/angular-gm.js","App/js/lib/angular-nicescroll.js","App/js/lib/angular-scroll-animate.js","App/js/lib/angular-smooth-scroll.js","App/js/lib/angular-sticky.js","App/js/lib/angular-toastr/angular-toastr.js","App/js/lib/angular/angular-cookies.js","App/js/lib/angular/angular-locale_fr.js","App/js/lib/angular/angular-sanitize.js","App/js/lib/bootstrap-angular-validation/app.js","App/js/lib/bootstrap-angular-validation/app.provider.js","App/js/lib/bootstrap-angular-validation/directives/form.directive.js","App/js/lib/bootstrap-angular-validation/directives/validation.directive.js","App/js/lib/bootstrap-angular-validation/services/simple.message.service.js","App/js/lib/bootstrap-angular-validation/services/tooltip.message.service.js","App/js/lib/bootstrap-angular-validation/services/validation.service.js","App/js/lib/bootstrap-angular-validation/utils.js","App/js/lib/directive.infinite-scroll.js","App/js/lib/module.parallax.js","App/js/lib/module.spinner.js","App/js/lib/ngclipboard.js","App/js/lib/rzslider.js","App/js/lib/ui-bootstrap-custom-tpls-2.5.0.js","App/js/modules/controllers.modal.js","App/js/modules/module.cdn.js","App/js/modules/module.gtm.js","App/js/modules/module.lazy.js","App/js/modules/module.modal.js","App/js/modules/module.netwave.js","App/js/modules/module.owl-carousel.js","App/js/modules/module.products-grid.js","App/js/routing-listeners.js","App/js/routing.js","App/js/services/service.account.js","App/js/services/service.app.js","App/js/services/service.date.js","App/js/services/service.ga4.js","App/js/services/service.gmap.js","App/js/services/service.http.js","App/js/services/service.load.js","App/js/services/service.responsive.js","App/js/services/service.window-events.js","App/Modules/Authentication/js/account-create.js","App/Modules/Authentication/js/authentication.js","App/Modules/Authentication/js/mini-login.js","App/Modules/Authentication/js/service.authentication.js","App/Modules/Autocomplete/js/autocomplete.js","App/Modules/Autocomplete/js/searchfinder.js","App/Modules/Category/js/directive.category-background.js","App/Modules/Category/js/directive.filters.js","App/Modules/Category/js/module.category.js","App/Modules/Form/js/form.js","App/Modules/Home/js/home.js","App/Modules/PasswordRecovery/js/account-password-recovery.js","App/Modules/Payment/js/payment-error.js","App/Modules/Product/js/component.customization.js","App/Modules/Product/js/directive.infos-store.js","App/Modules/Product/js/directive.kit.js","App/Modules/Product/js/directive.price.js","App/Modules/Product/js/directive.product-gallery.js","App/Modules/Product/js/directive.share.js","App/Modules/Product/js/module.product.js","App/Modules/Quotation/js/service.quotation.js","App/Modules/Reviews/js/module.reviews.js","App/Modules/Search/js/search.js","App/Modules/Shared/Autocomplete/js/angucomplete-alt.js","App/Modules/Shared/Autocomplete/js/autocomplete-select.js","App/Modules/Shared/Comparator/js/component.comparator.js","App/Modules/Shared/Comparator/js/directive.compare.checkbox.js","App/Modules/Shared/Comparator/js/service.compare.js","App/Modules/Shared/Footer/js/footer.js","App/Modules/Shared/Footer/js/newsletter.js","App/Modules/Shared/Menu/js/nav.directive.js","App/Modules/Shared/Payment/ONEY/js/directive.oney.widget.js","App/Modules/Stores/js/store-detail.js","App/Modules/Stores/js/stores.js"],"names":["root","factory","define","amd","module","exports","format","this","mask","value","isNaN","isNegative","result","decimal","group","posLeadZero","posTrailZero","posSeparator","part","szSep","integer","len","length","start","search","prefix","substring","str","split","reverse","join","end","offset","substr","indx","suffix","charAt","match","toFixed","lastIndexOf","indexOf","e","window","global","self","hoverintent","t","n","o","r","u","f","s","require","i","c","Error","code","a","call","1","clientX","clientY","p","clearTimeout","v","l","addEventListener","m","setTimeout","Math","abs","y","sensitivity","interval","removeEventListener","timeout","d","options","remove","xtend","2","arguments","Object","prototype","hasOwnProperty","navigator","userAgent","msViewportStyle","document","createElement","appendChild","createTextNode","getElementsByTagName","PointerEventsPolyfill","selector","mouseEvents","usePolyfillIf","appName","parseFloat","RegExp","$1","obj","$","each","k","register_mouse_events","defaults","mode","slideSelector","infiniteLoop","hideControlOnEnd","speed","easing","slideMargin","startSlide","randomStart","captions","ticker","tickerHover","adaptiveHeight","adaptiveHeightSpeed","video","useCSS","preloadImages","responsive","slideZIndex","wrapperClass","touchEnabled","swipeThreshold","oneToOneTouch","preventDefaultSwipeX","preventDefaultSwipeY","ariaLive","ariaHidden","keyboardEnabled","pager","pagerType","pagerShortSeparator","pagerSelector","buildPager","pagerCustom","controls","nextText","prevText","nextSelector","prevSelector","autoControls","startText","stopText","autoControlsCombine","autoControlsSelector","auto","pause","autoStart","autoDirection","stopAutoOnClick","autoHover","autoDelay","autoSlideForOnePage","minSlides","maxSlides","moveSlides","slideWidth","shrinkItems","onSliderLoad","onSlideBefore","onSlideAfter","onSlideNext","onSlidePrev","onSliderResize","onAutoChange","fn","bxSlider","slider","el","windowWidth","width","windowHeight","height","data","init","settings","extend","parseInt","children","floor","random","active","index","carousel","minThreshold","maxThreshold","working","animProp","usingCSS","div","props","undefined","style","cssPrefix","replace","toLowerCase","attr","setup","preloadSelector","eq","wrap","viewport","parent","loader","prepend","css","position","overflow","maxWidth","getViewportMaxWidth","float","listStyle","getSlideWidth","zIndex","display","appendCaptions","last","getPagerQty","fitVids","appendControls","appendControlsAuto","appendPager","after","loadElements","callback","total","find","count","one","complete","src","trigger","slice","sliceAppend","clone","addClass","slicePrepend","append","setSlidePosition","getViewportHeight","redrawSlider","initialized","on","resizeWindow","initAuto","initTicker","updatePagerActive","updateDirectionControls","initTouch","keydown","keyPress","currentIndex","getMoveBy","add","outerHeight","max","apply","map","get","newElWidth","wrapWidth","ceil","getNumberSlidesShowing","slidesShowing","childWidth","first","pagerQty","breakPoint","counter","lastChild","lastShowingIndex","setPositionProperty","left","outerWidth","top","type","duration","params","animateObj","propValue","target","is","off","updateAfterSlideTransition","resetValue","tickerLoop","animate","populatePager","pagerHtml","linkContent","isFunction","pagerEl","html","clickPagerBind","next","prev","clickNextBind","clickPrevBind","directionEl","stop","autoEl","clickStartBind","clickStopBind","updateAutoControls","title","preventDefault","hasClass","stopAuto","goToNextSlide","goToPrevSlide","startAuto","pagerLink","pagerIndex","currentTarget","goToSlide","slideIndex","removeClass","oldIndex","state","windowFocusHandler","windowBlurHandler","focus","blur","hover","autoPaused","transform","idx","ratio","property","newSpeed","totalDimens","startPosition","resumeSpeed","animateProperty","reset","win","bounds","activeElementTag","activeElement","tagName","exec","scrollTop","scrollLeft","right","bottom","keyCode","touch","x","onTouchStart","button","originalPos","orig","originalEvent","touchPoints","changedTouches","PointerEvent","pointerId","pageX","pageY","setPointerCapture","originalClickTarget","originalTarget","originalClickButton","originalClickButtons","buttons","originalEventType","hasMove","onTouchMove","onTouchEnd","onPointerCancel","releasePointerCapture","xMovement","yMovement","change","distance","windowWidthNew","windowHeightNew","applyAriaHiddenAttributes","startVisibleIndex","numberOfSlidesShowing","direction","requestEl","performTransition","moveBy","filter","fadeOut","fadeIn","preventControlUpdate","setInterval","clearInterval","getCurrentSlide","getCurrentSlideElement","getSlideElement","getSlideCount","isWorking","destroySlider","removeAttr","unwrap","removeData","reloadSlider","jQuery","equalHeights","h","$elems","url","scale","onZoomIn","onZoomOut","magnify","zoom","source","img","targetHeight","targetWidth","sourceHeight","sourceWidth","xRatio","yRatio","$target","$source","test","opacity","border","maxHeight","appendTo","move","min","$img","touched","srcElement","querySelector","getAttribute","currentSrc","onload","bind","fadeTo","support","touches","setAttribute","set","g","Array","b","ce","_","j","A","has","S","lo","size","forEach","L","U","C","co","lastIndex","D","Io","R","P","B","clear","V","X","__data__","an","gn","Di","Ri","Fi","Ni","String","Ro","Mt","push","yn","Or","xn","bn","dn","_n","wi","Ko","configurable","enumerable","writable","mn","ve","ge","ye","Lr","constructor","input","yt","Ei","ke","Le","it","Re","Ae","Nt","bt","qr","zi","Wr","Ai","po","qe","ft","Ie","Se","Ge","buffer","byteOffset","byteLength","Ve","He","Ye","Je","Ke","Qe","Xe","nu","tu","pt","Ue","$e","Be","Ne","hu","Pe","Me","di","Pt","kt","Tt","An","zn","Bt","In","ut","rr","Sn","Tn","Ze","Ce","Jo","Fo","Rt","kn","Un","Ur","$n","ze","Et","Zo","Te","name","message","be","de","delete","It","St","Cn","Dn","Do","Sr","Po","gu","er","Nn","re","Wt","Ht","Yt","Mr","Zr","$t","Rn","oe","Pn","Vt","ti","Bn","Kt","Mn","Ar","qn","xi","zr","$r","Pr","Gn","Vn","Lt","sort","w","vt","gt","Yn","Ho","Qn","Ii","ri","Xn","nt","tt","Rr","_i","we","Si","Br","ot","Wo","copy","At","ne","Jr","io","iteratee","ee","Ut","Ct","ji","qo","Yo","xe","bu","Zt","ou","uu","Uo","Co","ur","Fr","or","ir","hr","_r","Ci","ei","TypeError","se","Nr","leading","maxWait","trailing","cancel","flush","jr","cache","Cache","wr","kr","Ee","Fe","No","Cr","Dr","me","Oe","valueOf","au","vu","yu","bo","pu","Dt","Gr","Yr","Zi","du","So","fo","so","ao","lu","te","ue","ie","fe","le","he","NaN","De","We","ru","eu","iu","fu","su","_u","mu","ju","Ou","Au","Tu","ku","Lu","zu","Uu","$u","Cu","Ru","Du","Fu","Nu","Pu","Bu","Zu","Wu","qu","Gu","Vu","Hu","Yu","Ju","Ku","Qu","Xu","eo","uo","oo","ho","yo","_o","jo","wo","Function","xo","nodeType","mo","Oo","Ao","process","zo","binding","Eo","isTypedArray","À","Á","Â","Ã","Ä","Å","à","á","â","ã","ä","å","Ç","ç","Ð","ð","È","É","Ê","Ë","è","é","ê","ë","Ì","Í","Î","Ï","ì","í","î","ï","Ñ","ñ","Ò","Ó","Ô","Õ","Ö","Ø","ò","ó","ô","õ","ö","ø","Ù","Ú","Û","Ü","ù","ú","û","ü","Ý","ý","ÿ","Æ","æ","Þ","þ","ß","Ā","Ă","Ą","ā","ă","ą","Ć","Ĉ","Ċ","Č","ć","ĉ","ċ","č","Ď","Đ","ď","đ","Ē","Ĕ","Ė","Ę","Ě","ē","ĕ","ė","ę","ě","Ĝ","Ğ","Ġ","Ģ","ĝ","ğ","ġ","ģ","Ĥ","Ħ","ĥ","ħ","Ĩ","Ī","Ĭ","Į","İ","ĩ","ī","ĭ","į","ı","Ĵ","ĵ","Ķ","ķ","ĸ","Ĺ","Ļ","Ľ","Ŀ","Ł","ĺ","ļ","ľ","ŀ","ł","Ń","Ņ","Ň","Ŋ","ń","ņ","ň","ŋ","Ō","Ŏ","Ő","ō","ŏ","ő","Ŕ","Ŗ","Ř","ŕ","ŗ","ř","Ś","Ŝ","Ş","Š","ś","ŝ","ş","š","Ţ","Ť","Ŧ","ţ","ť","ŧ","Ũ","Ū","Ŭ","Ů","Ű","Ų","ũ","ū","ŭ","ů","ű","ų","Ŵ","ŵ","Ŷ","ŷ","Ÿ","Ź","Ż","Ž","ź","ż","ž","IJ","ij","Œ","œ","ʼn","ſ","To","&","<",">",""","'","ko","Lo","$o","toString","keys","IE_PROTO","Bo","Buffer","Mo","Symbol","Uint8Array","allocUnsafe","getPrototypeOf","Go","create","Vo","propertyIsEnumerable","splice","isConcatSpreadable","toStringTag","Qo","Xo","getOwnPropertySymbols","ni","isBuffer","ui","Date","now","oi","ii","fi","ci","ai","li","si","hi","pi","vi","gi","yi","bi","pop","hash","string","mi","Oi","ArrayBuffer","resolve","Ti","On","ki","Li","Ui","$i","isArray","Pi","Bi","Mi","constant","debounce","difference","keyBy","keysIn","memoize","merge","negate","pull","pullAll","pullAllBy","reject","Jn","sortBy","take","throttle","toPlainObject","uniqBy","rt","values","words","camelCase","capitalize","cloneDeep","deburr","findIndex","hasIn","identity","includes","inRange","isArguments","isArrayLike","isArrayLikeObject","isEmpty","isEqual","isInteger","isLength","isObject","isObjectLike","isPlainObject","isString","isSymbol","kebabCase","stubArray","stubFalse","noop","reduce","some","toFinite","toInteger","toNumber","trim","z","E","unescape","upperFirst","VERSION","charCodeAt","Int32Array","I","md5","fromCharCode","wsbConfig","ws_url","location","host","wsbDisplay","getZoneElements","zoneElements","elements","modalElements","toArray","zoneId","id","getRecommendationIdentifier","recoElement","recoId","tokens","zoneIdValue","msgId","publishingZoneId","recommendations","NetwaveService","wsbJSON","quoteString","escape","meta","\b","\t","\n","\f","\r","\"","\\","stringify","content","JSON","pairs","val","parse","eval","WsbArticle","serviceId","productId","quantity","price","wsb","_userId","_clientId","_processDelays","_wsbHost","_currentPage","_lastMessageViewed","_lastMessageViewedDate","_built","_order","articles","_filter","_navigationSent","_xhr","_nbSent","_observed","_crmInfo","_intervalIdOfVisibility","setDefaultValues","build","cookies","read","protocol","attachEvent","readyState","abort","console","browser","addViewportEventHandler","_processMessages","cookieName","cookieValue","cookieLength","date","setTime","getTime","toUTCString","domain","cookie","addEventHandler","element","event","handler","removeEventHandler","detachEvent","mousedownHandler","sender","getEventSender","_addMessage","mouseoverHandler","lookedAt","mouseoutHandler","lookedOut","removeLookEventHandler","addPossibleInteraction","parentNode","countVisibilityDuration","viewportWidth","documentElement","clientWidth","innerWidth","viewportHeight","clientHeight","innerHeight","visibleIdsByZone","hasVisibleObject","elementId","isElementInViewport","visibleObject","rect","getBoundingClientRect","verticalMargin","horizontalMargin","overrideWsUrl","removeWsOverride","reload","referrer","doNotTrack","language","browserLang","setCrmAttribute","attributeName","attributeValue","addArticleToCart","article","removeArticleFromCart","addArticle","addDetailsOrder","numOrder","numCli","totalPrice","orderId","orderAmount","sendOrder","sendCRM","filters","shift","recommendation","recommandation","setPageInformations","pageType","optionId","pageInformations","setSearchRequest","searchRequest","setPageKey","pageKey","setLanguage","lang","_getPublishingZones","publishingZones","setClientId","clientId","setUserId","userId","_getMessageQueue","decodeURIComponent","_setMessageQueue","queue","encodeURIComponent","_removeSentMessages","action","body","actions","_makeApiCall","_processMessagesWithNextDelay","_createXhr","open","send","_makeLegacyApiCall","processWsResponse","status","delay","errorType","query","async","insertBefore","XMLHttpRequest","onreadystatechange","response","responseText","XDomainRequest","onerror","ontimeout","onprogress","WsbQueue","functionName","functionArguments","startWbs","oldWsbq","wsbq","Owl","Defaults","$element","_handlers","_plugins","_supress","_current","_speed","_coordinates","_breakpoint","_width","_items","_clones","_mergers","_widths","_invalidated","_pipe","_drag","time","pointer","stage","current","_states","tags","initializing","animating","dragging","proxy","Plugins","key","plugin","Workers","priority","worker","run","initialize","items","loop","center","rewind","mouseDrag","touchDrag","pullDrag","freeDrag","margin","stagePadding","mergeFit","autoWidth","rtl","smartSpeed","fluidSpeed","dragEndSpeed","responsiveRefreshRate","responsiveBaseElement","fallbackEasing","info","nestedItemSelector","itemElement","stageElement","refreshClass","loadedClass","loadingClass","rtlClass","responsiveClass","dragClass","itemClass","stageClass","stageOuterClass","grabClass","Width","Default","Inner","Outer","Type","Event","State","relative","$stage","grid","margin-left","margin-right","iterator","widths","clones","view","repeat","normalize","outerHTML","prependTo","previous","coordinates","padding","padding-left","padding-right","minimum","maximum","inner","outer","begin","matches","op","imgs","nestedSelector","enter","toggleClass","preloadAutoWidthImages","not","refresh","invalidate","registerEventHandlers","leave","overwrites","breakpoint","Number","optionsLogic","prepare","item","update","all","grep","dimension","onThrottledResize","resizeTimer","onResize","isDefaultPrevented","transition","onTransitionEnd","onDragStart","onDragEnd","which","delta","onDragMove","closest","coordinate","transform3d","suppress","release","isNumeric","reciprocalItemsWidth","elementWidth","mergers","odd","even","multiplier","newPosition","from","to","factor","revert","stopPropagation","empty","addBack","before","images","Image","destroy","contents","listener","capture","namespace","relatedTarget","onTrigger","register","concat","object","special","owl","_default","tag","inArray","events","number","second","owlCarousel","option","args","$this","Constructor","Zepto","AutoRefresh","_core","_interval","_visible","initialized.owl.carousel","autoRefresh","watch","autoRefreshInterval","getOwnPropertyNames","Lazy","_loaded","initialized.owl.carousel change.owl.carousel resized.owl.carousel","lazyLoad","load","lazyLoadEager","intersectionObserverSupport","IntersectionObserverEntry","addOberver","_this","_observer","IntersectionObserver","entries","observer","entry","isIntersecting","intersectionRatio","unobserve","parentElement","querySelectorAll","removeAttribute","setElementSrc","image","$item","$elements","devicePixelRatio","observe","background-image","handlers","disconnect","AutoHeight","initialized.owl.carousel refreshed.owl.carousel","autoHeight","changed.owl.carousel","loaded.owl.lazy","autoHeightClass","maxheight","visible","heights","Video","_videos","_playing","resize.owl.carousel","isInFullScreen","refreshed.owl.carousel","prepared.owl.carousel","fetch","play","videoHeight","videoWidth","thumbnail","tnLink","path","dimensions","customTn","srcType","lazyClass","ajax","jsonp","dataType","success","thumbnail_large","framegrab_url","insertAfter","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","Animate","scope","core","swapping","change.owl.carousel","drag.owl.carousel dragged.owl.carousel translated.owl.carousel","translate.owl.carousel","animateOut","animateIn","swap","animation","incoming","outgoing","Autoplay","_timeout","_paused","autoplay","_setAutoPlayInterval","play.owl.autoplay","stop.owl.autoplay","mouseover.owl.autoplay","autoplayHoverPause","mouseleave.owl.autoplay","touchstart.owl.core","touchend.owl.core","autoplayTimeout","autoplaySpeed","_getNextTimeout","hidden","Navigation","_initialized","_pages","_controls","_templates","_overrides","dotsData","dotClass","added.owl.carousel","remove.owl.carousel","draw","nav","navText","navSpeed","navElement","navContainer","navContainerClass","navClass","slideBy","dotsClass","dots","dotsEach","dotsSpeed","dotsContainer","override","$relative","$previous","$next","prop","$absolute","control","overides","lower","upper","disabled","page","getPosition","successor","standard","prefixes","WebkitTransition","MozTransition","OTransition","WebkitAnimation","MozAnimation","OAnimation","tests","prefixed","toUpperCase","singleton","origDisplayAttribute","underneathElem","elementFromPoint","angular","TRANSITION_PROP","TRANSITIONEND_EVENT","ANIMATION_PROP","ANIMATIONEND_EVENT","ELEMENT_NODE","ADD_CLASS_SUFFIX","REMOVE_CLASS_SUFFIX","EVENT_CLASS_PREFIX","NG_ANIMATE_CLASSNAME","NG_ANIMATE_CHILDREN_DATA","ontransitionend","onwebkittransitionend","onanimationend","onwebkitanimationend","DURATION_KEY","PROPERTY_KEY","TIMING_KEY","ANIMATION_PLAYSTATE_KEY","ANIMATION_DELAY_PROP","ANIMATION_DURATION_PROP","TRANSITION_DELAY_PROP","TRANSITION_DURATION_PROP","ngMinErr","$$minErr","assertArg","arg","reason","mergeClasses","pendClasses","classes","fix","isPrefix","className","klass","stripCommentsFromElement","jqLite","extractElementNode","elm","applyAnimationClassesFactory","$$jqLite","prepareAnimationOptions","$$prepared","domOperation","$$domOperationFired","applyAnimationStyles","applyAnimationFromStyles","applyAnimationToStyles","mergeAnimationDetails","oldAnimation","newAnimation","newOptions","toAdd","toRemove","existing","flags","splitClassesToLookup","allow","resolveElementClasses","preparationClasses","concatWithSpace","realDomOperation","getDomNode","blockKeyframeAnimations","node","applyBlock","applyInlineStyle","styleTuple","helpers","$$AnimateChildrenDirective","$interpolate","link","attrs","ngAnimateChildren","setData","$observe","ANIMATE_TIMER_KEY","DETECT_CSS_PROPERTIES","transitionDuration","transitionDelay","transitionProperty","animationDuration","animationDelay","animationIterationCount","DETECT_STAGGER_CSS_PROPERTIES","getCssDelayStyle","isKeyframeAnimation","computeCssStyles","$window","properties","styles","detectedStyles","getComputedStyle","formalStyleName","actualStyleName","maxValue","truthyTimingValue","getCssTransitionDurationStyle","applyOnlyDuration","registerRestorableStyles","backup","isDefined","getPropertyValue","isElement","isUndefined","$AnimateCssProvider","$animateProvider","$get","$$AnimateRunner","$timeout","$$animateCache","$$forceReflow","$sniffer","$$rAFScheduler","$$animateQueue","applyAnimationClasses","rafWaitQueue","waitUntilQuiet","pageWidth","computeTimings","cacheKey","allowNoDuration","timings","hasDuration","put","computeCachedCssStyles","aD","tD","maxDelay","maxDuration","initialOptions","restoreStyles","enabled","closeAndReturnNoopAnimator","animationClosed","animationPaused","animationCompleted","runner","runnerHost","maxDelayTime","maxDurationTime","startTime","temporaryStyles","animations","transitions","method","isStructural","structural","structuralClassName","addRemoveClassName","applyClassesEarly","hasToStyles","keyframeStyle","stagger","containsCachedAnimationWithoutDuration","staggerVal","staggerCacheKey","staggerClassName","computeCachedCssStaggerStyles","$$skipPreparationClasses","transitionStyle","durationStyle","itemIndex","staggerIndex","isFirst","skipBlocking","fullClassName","relativeDelay","hasTransitions","hasAnimations","hasTransitionAll","applyTransitionDuration","applyAnimationDuration","applyTransitionDelay","applyAnimationDelay","recalculateTimingStyles","delayStyle","activeClasses","blockTransition","blockKeyframeAnimation","cleanupStyles","applyBlocking","$$willAnimate","endFn","cancelFn","resume","close","rejected","setProperty","removeProperty","onDone","onAnimationProgress","animationTimerData","timer","ev","timeStamp","$manualTimeStamp","elapsedTime","playPause","playAnimation","arr","maxStagger","triggerAnimationStart","easeProp","easeVal","timerTime","endTime","animationsData","setupFallbackTimer","currentTimerData","expectedEndTime","onAnimationExpired","$$AnimateCssDriverProvider","$$animationProvider","drivers","NG_ANIMATE_SHIM_CLASS_NAME","NG_OUT_ANCHOR_CLASS_NAME","$animateCss","$rootScope","$rootElement","$document","bodyNode","rootNode","rootBodyElement","contains","animationDetails","anchors","fromAnimation","prepareRegularAnimation","toAnimation","anchorAnimations","anchor","animator","outAnchor","inAnchor","cloneNode","startingClasses","filterCssClasses","getClassVal","animatorIn","animatorOut","calculateAnchorStyles","prepareInAnimation","startingAnimator","currentAnimation","done","coords","endingClasses","getUniqueValues","NG_IN_ANCHOR_CLASS_NAME","prepareAnchoredAnimation","animationRunners","prepareFromToAnchorAnimation","$$AnimateJsProvider","$injector","afterFn","beforeFn","classesToAdd","classesToRemove","flagMap","animationFactory","$$registeredAnimations","lookupAnimations","packageAnimations","closeActiveAnimations","chain","applyOptions","setHost","endAnimations","onComplete","cancelled","groupEventedAnimations","fnName","operations","ani","endProgressCb","resolved","onAnimationComplete","executeAnimationFn","runners","animateFn","$$AnimateJsDriverProvider","$$animateJs","prepareAnimation","endFnFactory","NG_ANIMATE_ATTR_NAME","NG_ANIMATE_PIN_DATA","$$AnimateQueueProvider","ONE_SPACE","rules","skip","getEventData","hasMatchingClasses","newClassString","currentClassString","currentClassMap","classString","makeTruthyCssClassMap","isAllowed","ruleType","previousAnimation","hasAnimationClasses","and","nA","nR","cA","cR","$$rAF","$$Map","$$animation","$templateRequest","$$isDocumentHidden","activeAnimationsLookup","disabledElementsLookup","animationsEnabled","removeFromDisabledElementsLookup","evt","deregisterWatch","$watch","totalPendingRequests","$$postDigest","callbackRegistry","customFilter","classNameFilter","returnTrue","isAnimatableByFilter","isAnimatableClassName","normalizeAnimationDetails","Node","compareDocumentPosition","filterFromRegistry","list","matchContainer","matchCallback","containerNode","cleanupEventListeners","phase","$animate","container","eventType","pin","originalElement","runInNextPostDigestOrNow","postDigestCalled","documentHidden","skipAnimations","existingAnimation","hasExistingAnimation","animateChildren","bodyNodeDetected","nodeName","rootNodeDetected","parentAnimationDetected","elementDisabled","parentHost","details","parentNodeDisabled","areAnimationsAllowed","notifyProgress","child","skipAnimationFlag","cancelAnimationFlag","joinAnimationFlag","isValidAnimation","clearElementAnimationState","markElementAnimationState","animationCancelled","realRunner","targetParentNode","targetNode","callbacks","progress","queueAnimation","bool","argCount","oldValue","newValue","$$AnimationProvider","NG_ANIMATE_REF_ATTR","RUNNER_STORAGE_KEY","PREPARE_CLASSES_KEY","getRunner","animationQueue","tempClasses","beforeStart","prepareClassName","handleDestroyedElement","groupedAnimations","preparedAnimations","refLookup","enterOrMove","anchorNodes","hasAttribute","animationID","usedIndicesLookup","anchorGroups","lookupKey","aa","cssClassesIntersection","out","in","indexKey","groupAnimations","toBeSortedAnimations","animationEntry","extraClasses","domNode","startAnimationFn","closeFn","operation","driverName","driver","invokeFirstDriver","animationRunner","newRunner","updateAnimationRunners","finalAnimations","tree","lookup","processNode","remainingLevelEntries","nextLevelEntries","row","childEntry","flatten","processed","parentEntry","elementNode","sortAnimations","innerArray","angularVersion","directive","restrict","transclude","terminal","ctrl","$transclude","previousElement","previousScope","$watchCollection","ngAnimateSwap","$destroy","childScope","scheduler","tasks","nextTick","provider","KEY","parentCounter","parts","isValid","routeToRegExp","opts","pattern","slash","optional","star","ignoreTrailingSlashes","regexp","caseInsensitiveMatch","isEagerInstantiationEnabled","ngRouteModule","inherit","extra","routes","when","route","routeCopy","dst","shallowCopy","reloadOnUrl","reloadOnSearch","originalPath","redirectPath","redirectTo","otherwise","eagerInstantiationEnabled","$location","$routeParams","$q","$sce","$browser","preparedRoute","preparedRouteIsUpdateOnly","forceReload","$route","fakeLocationEvent","defaultPrevented","$evalAsync","prepareRoute","commitRoute","updateParams","newParams","$$route","$routeMinErr","interpolate","$on","$locationEvent","newRoute","oldRoute","lastRoute","switchRouteMatcher","pathParams","equals","$broadcast","nextRoute","nextRoutePromise","$$incOutstandingRequestCount","then","getRedirectionData","handlePossibleRedirection","keepProcessingRoute","resolveLocals","locals","catch","error","finally","$$completeOutstandingRequest","hasRedirection","oldPath","oldSearch","newUrl","resolveRedirectTo","invoke","oldUrl","template","templateUrl","loadedTemplateUrl","getTemplateFor","segment","segmentMatch","instantiateRoute","ngViewFactory","$anchorScroll","currentScope","currentElement","previousLeaveAnimation","autoScrollExp","autoscroll","onloadExp","cleanupLastView","$template","newScope","$new","$eval","$emit","ngViewFillContentFactory","$compile","$controller","controller","$scope","controllerAs","resolveAs","$inject","Name","Controller","Action","fr","URL","en","ng","$templateCache","DeviceService","HttpService","checkout","showPageLoader","device","getSize","xxs","onChange","xs","sm","md","lg","desktop","mobile","isTouch","ios","isIOS","isIe","isIE","ieVersion","version","isWebp","webp","scrollIn","targets","scrollOut","stickyEvent","searchOpened","config","$compileProvider","Environment","commentDirectivesEnabled","cssClassDirectivesEnabled","debugInfoEnabled","lazyConfigProvider","setOptions","errorClass","successClass","toastrConfig","timeOut","closeButton","closeHtml","iconClasses","warning","templates","toast","progressbar","bsValidationConfigProvider","setValidateFieldsOn","setDisplayErrorsAs","tooltipAppendToBody","errorMessagePrefix","dropzoneOpsProvider","uploadMultiple","parallelUploads","maxFilesize","addRemoveLinks","renameFilename","dictRemoveFile","AppService","bsValidationConfig","getParams","getTranslate","translate","forms","setMessages","onunload","bootstrap","strictDi","serviceWorker","getRegistrations","registrations","registration","scriptURL","unregister","clients","matchAll","client","navigate","err","component","productCtrl","quotationCtrl","bindings","isProductButton","isCartButton","isQuotationButton","idQuotation","isModalButton","modalItem","btnClass","idLine","commentLine","isPrimary","isPreOrder","addToCartActive","allowAddToCart","productQuantity","step","designation","titleAdd","titleAlert","titleDetail","titleDeleteOk","titleResultOk","titleModifyOk","titlePreOrder","tooltip","modalCtrl","LoadService","$onInit","js","getService","comparatorCtrl","btnTooltip","idProduct","titleBtn","WindowEventsService","lastPos","listen","sc","pageYOffset","$apply","class","_mobile","selectpicker","SelectpickerService","ngModel","unwatch","initBxSlider","hide","show","$parent","removeParentIfEmpty","onBodyClick","isOpen","clickMenu","scroll","showMenu","hideMenu","ctrlKey","altKey","isMenuCollapse","toggleMenuCollapse","flip","resize","flipped","toggle","direct","inter","ntime","RoutesService","ModalService","tplTranslate","getCart","hasCart","HasCart","cartLink","getUrlByName","Cart","Products","line","Quantity","emptyCart","cart","product","Product","IDProduct","Price","TTCPrice","TTCAmount","deleteLine","IDLine","Designation","IDPicture","submit","toastr","GA4Service","post","currency","results","Currency","ISOCode","removeFromCart","removedProducts","Localization","TradeName","messages","ClearCartOK","allowHtml","extraData","errors","TryLater","ErrorHasOccurred","absoluteHeader","CdnService","lazy","$set","deregister","responsiveImgId","responsiveImgSizes","responsiveImgDesignation","res","click","Query","searchQuery","Id","searchId","Index","searchIndex","pPlayer","youtubeUrl","getYouTubeIdFromUrl","youtubeVideoId","adapter","showinfo","features","resizeVideo","afterInit","showLoader","$mainVideo","VideoPlayerService","$items","menu","addActive","noZoomDirective","changeViewport","theme","label","icon","color","ngRequired","$wrapper","optRequired","inputClass","$label","onInputChange","required","placeholder","$parse","ngModelInit","text","assign","defineProperty","__esModule","default","stacktrace","parseOpera","stack","parseV8OrIE","parseFFOrSafari","extractLocation","parseOpera9","parseOpera11","parseOpera10","isFinite","setFunctionName","setArgs","setFileName","setLineNumber","setColumnNumber","setSource","getFunctionName","getArgs","getFileName","fileName","getLineNumber","lineNumber","getColumnNumber","columnNumber","getSource","pe","Boolean","_state","_handled","_value","_deferreds","_immediateFn","onFulfilled","onRejected","promise","_unhandledRejectionFn","race","setImmediate","Promise","performance","T","crypto","getRandomValues","msCrypto","O","F","q","M","H","getEntriesByType","PerformanceObserver","supportedEntryTypes","fetchInProgress","getOwnPropertyDescriptor","J","Z","G","W","K","Q","et","Element","at","observers","sendOnly","st","ct","sync","Y","Request","aborted","history","pushState","EventTarget","wrappingFn","listenerFn","bootstrapTime","lastHiddenStart","MIN_SAFE_INTEGER","dt","Set","visibilityState","lt","ht","mt","extractProtocol","address","slashes","getLocation","hostname","port","origin","href","auth","transfer_size","transferSize","encoded_body_size","encodedBodySize","decoded_body_size","decodedBodySize","description","serverTiming","headers","server-timing","_t","service","resource","referer","agent","environment","labels","*","xt","user","email","username","http","destination","trace_id","parent_id","transaction_id","subtype","context","span_count","started","culprit","exception","transaction","Ot","jt","Ft","_apmServer","_configService","_transactionService","createErrorDataModel","filename","lineno","colno","abs_path","function","toISOString","custom","getCurrentTransaction","traceId","sampled","logErrorEvent","addError","registerListeners","logPromiseEvent","logError","onFlush","queueLimit","flushInterval","timeoutId","_setTimer","_clear","timestamp","_start","_end","ended","outcome","onEnd","ensureContext","addLabels","addContext","callOnEnd","qt","parentId","__proto__","status_code","zt","initiatorType","responseEnd","captureTimings","marks","timing","pageResponse","fetchStart","pageLoadSpanId","spans","addMarks","navigationStart","responseStart","navigationTiming","timeToFirstByte","domInteractive","domComplete","Jt","ts","ebs","dbs","Xt","rf","rc","ad","un","em","cu","Gt","_loggingService","throttleEvents","sendEvents","warn","_constructError","limit","_postJson","Content-Type","CompressionStream","payload","Blob","stream","pipeThrough","Response","blob","_makeHttpRequest","setRequestHeader","fetchConfig","getLocalConfig","etag","getResponseHeader","setLocalConfig","createMetaData","addTransaction","transactions","ndjsonErrors","cl","ex","mg","ap","tid","pid","xid","ndjsonMetricsets","metricset","ndjsonTransactions","span","breakdown","sy","ac","fb","rs","dc","firstContentfulPaint","largestContentfulPaint","fp","lp","samples","sa","ysc","yss","xdc","xds","xbc","yc","sd","experience","cls","fid","tbt","longtask","exp","applyFilters","la","serviceName","serviceVersion","serverUrl","instrument","disableInstrumentations","logLevel","breakdownMetrics","ignoreTransactions","eventsLimit","distributedTracing","distributedTracingOrigins","distributedTracingHeaderName","pageLoadTraceId","pageLoadSampled","pageLoadTransactionName","transactionSampleRate","centralConfig","monitorLongtasks","apiVersion","attributes","nodeValue","currentScript","N","setConfig","setVersion","addFilter","setUserContext","setCustomContext","round","validate","missing","invalid","allowed","sessionStorage","getItem","setItem","Qt","levels","level","resetLogMethods","shouldLog","setLevel","log","ConfigService","LoggingService","ApmServer","instances","_logginService","createTransactionPayload","getHistorySub","xmlhttprequest","getXHRSub","getFetchSub","eventtarget","getEventTargetSub","startTransaction","managed","canReuse","reuseThreshold","processAPICalls","startSpan","blocking","injectDtHeader","endSpan","extractDtHeader","filterTransaction","isManaged","createTransactionDataModel","breakdownTimings","resetSpans","span.self_time.count","span.self_time.sum.us","ae","_activeSpans","_activeTasks","blocked","mark","redefine","_onSpanEnd","addTask","isFinished","detectFinish","captureBreakdown","transaction.duration.count","transaction.duration.sum.us","transaction.breakdown.count","app","block","removeTask","fcp","buffered","_config","_logger","currentTransaction","respIntervalId","recorder","capturePaint","attribution","containerType","containerName","containerId","lcp","getEntriesByName","processingStart","hadRecentInput","createCurrentTransaction","createOptions","startManagedTransaction","handleTransactionEnd","shouldIgnoreTransaction","sum","adjustTransactionTime","wt","_disable","serviceFactory","isEnabled","isActive","_sendPageLoadMetrics","fetchCentralConfig","transaction_sample_rate","setInitialPageLoadName","captureError","elasticApm","TransactionService","PerformanceMonitoring","ErrorLogging","discountFilter","loc","DiscountHTMLFormat","DiscountFormat","DiscountDecimalSeparator","DiscountThousandSeparator","getDiscountFilter","$stateful","reg","num","priceFilter","prices","ttc","Visitor","CardType","ShowTTCPrice","PriceHTMLFormatVATincluded","PriceHTMLFormatVATexcluded","HTAmount","TTCDiscountedPrice","HTDiscountedPrice","TTCTotalPrice","HTTotalPrice","HTPrice","strMontant","PriceFormat","separatorIndex","PriceDecimalSeparator","PriceThousandSeparator","getPriceFilter","defOps","newOps","Dropzone","dropzone","methods","getDropzone","getAllFiles","files","methodName","$$phase","$root","file","removedfile","loadImage","parseMetaData","exif","orientation","emit","toDataURL","createThumbnail","dropzoneOps","DropzoneService","acceptedFiles","dictFileTooBig","maxFiles","removeAllFiles","addFile","precision","markerConstructor","google","maps","Marker","polylineConstructor","Polyline","circleConstructor","Circle","mapOptions","lat","lng","mapTypeId","MapTypeId","ROADMAP","angulargmUtils","getEventHandlers","gmInfoWindowOptions","model","gmInfoWindow","infoWindow","InfoWindow","addListener","validateLatLng","latLngLiteralEqual","gmCenter","gmZoom","gmBounds","gmMapTypeId","gmMapOptions","gmMapId","hasCenter","hasZoom","hasBounds","hasMapTypeId","updateScope","addMapListener","getMap","mapTrigger","addMapListenerOnce","$log","angulargmShape","gmObjects","gmId","gmPosition","gmMarkerOptions","gmEvents","createShapeDirective","latLngObj","markerOptions","defers","markers","mapId","getMarkers","addMap","Map","getMaps","getMapPromise","defer","setMarker","newMarker","clearMarkers","setMap","removeMap","_formatEventName","uppercasePluralType","elementOptions","checkRequiredAttributes","updateElements","objects","objectCache","optionsFn","orphaned","getElement","$id","updateElement","addElement","major","minor","forEachElementInScope","removeElement","eventObj","ids","objectsName","floatEqual","f1","f2","latLngEqual","l1","l2","LatLng","boundsEqual","b1","b2","LatLngBounds","sw1","getSouthWest","sw2","ne1","getNorthEast","ne2","latLngToObj","latLng","objToLatLng","hasNaN","isNull","isNotaN","assertDefined","func","wait","immediate","callNow","angulargmDefaults","angulargmContainer","_getConfig","_createMap","getDiv","replaceWith","_map","_initDragListeners","_destroy","_listeners","removeListener","types","_elements","scopeIds","_getElements","scopeId","streetView","getStreetView","getVisible","setVisible","addListenerOnce","_newElement","hasElement","removed","forEachElement","allElements","accumulator","mapDiv","firstChild","defineProperties","writeable","getCenter","panTo","getZoom","setZoom","getBounds","fitBounds","getMapTypeId","setMapTypeId","niceScroll","hidecursordelay","niceOption","niceHover","mouseenter","nice","initNiceScroll","rail","mouseleave","niceObject","getNiceScroll","niceScrollObject","onscrollend","newscrolly","maxh","niceScrollEnd","niceScrollTopEnd","NicescrollService","whenVisible","whenNotVisible","delayPercent","bindScrollTo","isNumber","checkPending","updateVisibility","$el","whenVisibleFn","whenNotVisibleFn","elementBounds","panelTop","panelBottom","delayPx","bottomVisible","topVisible","onScroll","requestAnimationFrame","documentListenerEvents","$elWindow","windowListenerEvents","smoothScroll","callbackBefore","callbackAfter","getElementById","containerPresent","getScrollLocation","percentage","scrollHeight","internalHeight","currentLocation","startLocation","endLocation","offsetParent","offsetTop","getEndLocation","timeLapsed","runAnimation","getEasingPattern","scrollTo","scrollheight","$elem","$attrs","scrollIf","exprHandler","targetElement","matchMedia","DefaultStickyStackName","documentEl","stacks","stackName","stickyZIndex","$stack","sticky","range","removeTop","computedHeight","heightAt","stick","atAdjusted","sticksAtPosition","stickyAnchor","heightCurrent","hlStickyStack","mediaQuery","stickyLineTop","stickyLineBottom","_isSticking","bodyEl","nativeEl","stickyMediaQuery","stickyClass","usePlaceholder","offsetBottom","globalOffset","initialCSS","stickyLinePositionTop","_getTopOffset","_stackOffset","stickyLinePositionBottom","enable","scrolledDistance","clientTop","render","shouldStick","alwaysSticky","elementHeight","z-index","stickElement","unstickElement","containerBoundsBottom","containerBoundsTop","offsetWidth","offsetHeight","pixels","extraOffset","stickIndex","isSticky","hasScrollDistance","containerRect","containerBottom","$api","stackItem","drawOptions","force","$$count","$stickyElement","collections","checkDelay","elementsDefaults","hlStickyElement","throttledResize","windowEl","drawEvent","collection","collectionName","stickyStackFactory","trackedElements","$sticky","stickyOptions","stickyElement","toDelete","deletedElement","_drawOptions","parentStack","hlStickyElementCollection","collectionParent","stickyElementCollection","hlSticky","that","toasts","previousToastMessage","openToasts","containerDefer","toastId","optionsOverride","_getOptions","_buildNotification","refreshTimer","newTime","isOpened","wasClicked","findToast","deleting","onHidden","maxOpened","isDuplicateOfLast","preventDuplicates","isDuplicateOpen","preventOpenDuplicates","shouldExit","newToast","iconClass","cleanOptionsOverride","typeClass","generateEvent","trustAsHtml","toastType","toastIcon","extendedTimeOut","messageClass","onShown","onTap","progressBar","tapToDismiss","titleClass","toastClass","createScope","angularDomEl","badOptions","createToast","autoDismiss","oldToasts","positionClass","pointer-events","_createOrGetContainer","newestOnTop","sibling","_notify","toastCtrl","intervalId","currentTimeOut","hideTime","updateProgress","startProgressBar","stopProgressBar","$interval","createTimeout","tapToast","$event","$$CookieWriter","cookiePath","baseHref","rawDocument","expires","secure","samesite","buildCookieString","calcOptions","$$cookieReader","$$cookieWriter","getObject","fromJson","getAll","putObject","toJson","$provide","PLURAL_CATEGORY","DATETIME_FORMATS","AMPMS","DAY","ERANAMES","ERAS","FIRSTDAYOFWEEK","MONTH","SHORTDAY","SHORTMONTH","STANDALONEMONTH","WEEKENDRANGE","fullDate","longDate","medium","mediumDate","mediumTime","short","shortDate","shortTime","NUMBER_FORMATS","CURRENCY_SYM","DECIMAL_SEP","GROUP_SEP","PATTERNS","gSize","lgSize","maxFrac","minFrac","minInt","negPre","negSuf","posPre","posSuf","localeID","pluralCat","opt_precision","lowercase","nodeContains","htmlParser","htmlSanitizeWriter","$sanitizeMinErr","hasBeenInstantiated","svgEnabled","$$sanitizeUri","validElements","svgElements","buf","uri","isImage","enableSvg","addValidElements","htmlElements","addElementsTo","voidElements","htmlVoidElements","addValidAttrs","validAttrs","arrayToMap","$$lowercase","inertBodyElement","getInertBodyElement","mXSSAttempts","innerHTML","attrToMap","chars","textContent","nextNode","getNonDescendant","removeChild","uriValidator","ignoreCurrentElement","blockedElements","lkey","uriAttrs","encodeEntities","SURROGATE_PAIR_REGEXP","NON_ALPHANUMERIC_REGEXP","stringToMap","optionalEndTagBlockElements","optionalEndTagInlineElements","optionalEndTagElements","blockElements","inlineElements","htmlAttrs","svgAttrs","lowercaseKeys","elementsMap","newElements","inertDocument","implementation","createHTMLDocument","getDocumentElement","DOMParser","parseFromString","documentMode","stripCustomNsAttrs","attrNode","attrName","removeAttributeNode","encodeURI","xhr","responseType","propName","outerText","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","linkyMinErr","attributesFn","raw","addText","addLink","linkAttributes","validateFieldsOn","displayErrorsAs","messageFilters","shouldValidateOn","addSuccessClass","tooltipPlacement","suppressWarnings","useMessageFilters","getDisplayErrorsAs","getErrorMessagePrefix","getMessageFilters","getTooltipPlacement","shouldAddSuccessClass","validationService","compile","$formElement","$formAttributes","isValidationDisabled","addDirective","ngSubmit","pre","formElement","$attr","formController","$showValidation","$setSubmitted","showValidationState","$hideValidation","$setPristine","$resetValidation","markPristineAfterSubmit","$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","$error","$valid","$$attr","hideSuccess","hideError","$setUntouched","destroyMessage","displayError","addErrorClass","showErrorMessage","hideErrorMessage","displaySuccess","removeSuccessClass","toggleErrorKeyClasses","dewatcher","$touched","lostFocus","errorElementClass","getErrorContainer","$errorContainer","groupElement","errorContainerHTML","removeErrorClass","getErrorMessage","validationConfig","getErrorTooltip","tooltipID","tooltipElement","$errorTooltip","placement","parentForm","parents","appendToBody","$position","ttPosition","positionElements","positionArrow","$filter","_genericValidators","validateFn","equalto","getTrigger","triggerEvent","selectors","getMetaInformation","metaInformation","camelCaseToDash","validateableElements","$validators","modelValue","viewValue","$isEmpty","addGenericValidator","genericValidationObject","$parentForm","firstErrorKey","resolveMessage","formGroupElement","displayType","attribute","matchers","validValue","regx","THROTTLE_MILLISECONDS","elem","windowElement","scrollDistance","scrollEnabled","checkWhenEnabled","immediateCheck","useDocumentBottom","unregisterEventListener","checkInterval","ownerDocument","defaultView","defaultHandler","elementBottom","containerTopOffset","remaining","shouldScroll","infiniteScroll","later","throttled","handleInfiniteScrollDistance","handleInfiniteScrollDisabled","handleInfiniteScrollUseDocumentBottom","changeContainer","newContainer","infiniteScrollDistance","infiniteScrollDisabled","infiniteScrollUseDocumentBottom","infiniteScrollListenForEvent","handleInfiniteScrollContainer","newerContainer","infiniteScrollContainer","infiniteScrollParent","infiniteScrollImmediateCheck","offsetY","requireCtrl","background-repeat","SpinnerService","spin","classe","spinnerTheme","spinnerOn","ClipboardJS","clipboard","clipboardSuccess","clipboardError","ClipboardService","defaultOptions","minRange","maxRange","pushRange","minLimit","maxLimit","getLegend","stepsArray","bindIndexForStepsArray","draggableRange","draggableRangeOnly","showSelectionBar","showSelectionBarEnd","showSelectionBarFromValue","hidePointerLabels","hideLimitLabels","autoHideLimitLabels","readOnly","showTicks","showTicksValues","ticksArray","ticksTooltip","ticksValuesTooltip","vertical","getTickColor","keyboardSupport","enforceStep","enforceRange","noSwitching","onlyBindHandles","onStart","rightToLeft","boundPointerLabels","mergeRangeLabelsIfSame","customTemplateScope","logScale","customValueToPosition","customPositionToValue","ariaLabel","ariaLabelledBy","ariaLabelHigh","ariaLabelledByHigh","globalOptions","getOptions","RzSliderOptions","rzThrottle","Slider","sliderElem","lowValue","highValue","rzSliderModel","rzSliderHigh","lowLimit","highLimit","positionProperty","dimensionProperty","handleHalfDim","maxPos","tracking","minValue","valueRange","intermediateTicks","initHasRun","firstKeyDown","internalChange","cmbLabelShown","currentFocusElement","fullBar","selBar","minH","maxH","flrLab","ceilLab","minLab","maxLab","cmbLab","ticks","thrLow","thrHigh","calcDimFn","calcViewDimensions","syncLowValue","syncHighValue","initElemHandles","manageElementsStyle","setDisabledState","setMinAndMax","addAccessibility","updateCeilLab","updateFloorLab","initHandles","manageEventsBindings","onLowHandleChange","onHighHandleChange","resetLabelsValue","resetSlider","unbindEvents","findStepIndex","isDate","getStepValue","sliderValue","applyLowValue","applyHighValue","updateLowHandle","valueToPosition","updateSelectionBar","updateTicksScale","updateAriaAttributes","updateCmbLabel","updateHighHandle","sliderOptions","rzSliderOptions","parseStepsArray","customTrFn","legend","refocusPointerIfNeeded","onPointerFocus","ref","focusElement","jElem","rzsp","alwaysHide","hideLabelsForTicks","rzAlwaysHide","hideEl","showEl","bindEvents","rzsv","translateFn","useCustomTr","valStr","getDimension","noLabelInjection","rzsd","roundStep","sanitizeValue","aria-valuenow","aria-valuetext","aria-valuemin","aria-valuemax","handleWidth","barDimension","getTicksArray","translation","tick","selected","isTickSelected","-webkit-transform","-moz-transform","-o-transform","-ms-transform","getDisplayValue","valueTooltip","valueTooltipPlacement","setPosition","updateHandles","newPos","getHandleLabelPos","labelName","labelRzsd","nearHandlePos","endOfBarPos","shFloorCeil","flHidden","clHidden","isMinLabAtFloor","isLabelBelowFloorLab","isMinLabAtCeil","isLabelAboveCeilLab","isMaxLabAtCeil","isCmbLabAtFloor","isCmbLabAtCeil","hideCeil","hideFloor","isRTL","pos","dim","floorPos","floorDim","ceilPos","ceilDim","isSelectionBarFromRight","positionForRange","centerPosition","setDimension","lowTr","highTr","labelVal","customStep","steppedDifference","toPrecision","visibility","linearValueToPosition","logValueToPosition","percent","minVal","maxVal","positionToValue","linearPositionToValue","logPositionToValue","getEventXY","clientXY","getEventPosition","sliderPos","getEventNames","eventNames","moveEvent","endEvent","getNearestHandle","distanceMin","distanceMax","barTracking","barStart","barMove","onMove","onTickClick","ehMove","ehEnd","callOnStart","fromTick","ceilValue","flrValue","positionTrackingHandle","moveEventName","onPointerBlur","onKeyboardEvent","onKeyUp","getKeyActions","currentValue","increaseStep","decreaseStep","UP","DOWN","LEFT","RIGHT","PAGEUP","PAGEDOWN","HOME","END","38","40","37","39","33","34","36","35","newMinValue","newMaxValue","positionTrackingBar","getValue","outOfBounds","isAbove","ceilLimit","flrLimit","isUnderFlrLimit","isOverCeilLimit","flrH","ceilH","applyModel","valueChanged","applyMinMaxLimit","applyPushRange","applyMinMaxRange","oppositeValue","callOnChange","pointerType","RzSlider","rzSliderTplUrl","expandingExpr","expanding","expandedExpr","expanded","collapsingExpr","collapsing","collapsedExpr","collapsed","horizontal","cssTo","getScrollFromElement","scrollWidth","expandDone","collapseDone","uibCollapse","shouldCollapse","collapse","closeOthers","accordionConfig","groups","openGroup","addGroup","groupScope","removeGroup","heading","panelClass","isDisabled","setHeading","accordionCtrl","openClass","toggleOpen","headingId","panelId","accordionGroupCtrl","uibAccordionTransclude","closeable","dismissOnTimeout","activeClass","toggleEvent","buttonConfig","ctrls","buttonsCtrl","ngModelCtrl","uncheckableExpr","uibUncheckable","$render","$modelValue","uibBtnRadio","uncheckable","$setViewValue","getTrueValue","getCheckboxValue","btnCheckboxTrue","defaultValue","btnCheckboxFalse","$locale","dateFilter","orderByFilter","filterFilter","localeId","formatCodeToRegex","SPECIAL_CHARACTERS_REGEXP","getFormatCodeToRegex","constructLiteralFormatter","literalIdx","endIdx","constructFormatterFromIdx","currentPosStr","parser","formatter","toInt","timezoneToOffset","timezone","fallback","requestedTimezoneOffset","addDateMinutes","minutes","setMinutes","getMinutes","convertTimezoneToLocal","dateTimezoneOffset","getTimezoneOffset","parsers","formatters","regex","year","_date","setFullYear","getFullYear","month","getMonth","getDate","hours","milliseconds","seconds","sign","getParser","overrideParser","createFormatter","baseDate","quoteIndex","inLiteral","matcher","createParser","tzOffset","fields","getHours","getSeconds","getMilliseconds","mapper","datesetter","setUTCFullYear","timesetter","setUTCHours","setHours","toTimezone","fromTimezone","datepickerMode","formatDay","formatMonth","formatYear","formatDayHeader","formatDayTitle","formatMonthTitle","maxDate","maxMode","minDate","minMode","monthColumns","ngModelOptions","shortcutPropagation","showWeeks","yearColumns","yearRows","datepickerConfig","$datepickerLiteralWarning","$datepickerSuppressError","dateParser","watchListeners","datepickerOptions","modes","startingDay","getOption","refreshView","uniqueId","ngDisabled","dateObject","compare","activeDate","activeDateId","uid","ngModelCtrl_","$options","createChild","extractOptions","initDate","$viewValue","selectedDt","_refreshView","activeDt","$setValidity","createDateObject","today","past","future","customClass","dateDisabled","arrays","select","setMode","years","months","toggleMode","13","32","shiftKey","handleKeyDown","DAYS_IN_MONTH","getDaysInMonth","getISO8601WeekNumber","checkDate","setDate","getDay","setMonth","getDates","startDate","dates","firstDayOfMonth","numDisplayedFromPreviousMonth","firstDate","days","secondary","abbr","full","rows","weekNumbers","thursdayIndex","numWeeks","curWeek","date1","date2","_date1","_date2","yearHeaderColspan","columns","getStartingYear","yearpickerInit","datepickerCtrl","ON_REGEXP","IS_REGEXP","tElement","tAttrs","linkedScopes","expToData","onExpMatches","uibIsClass","onExp","exps","clazz","compareWithExp","watchFn","compareWithVal","newActivated","instance","thisVal","lastActivated","watcher","addForExp","removeScope","removedScope","targetScope","newWatchScope","SCROLLBAR_WIDTH","BODY_SCROLLBAR_WIDTH","OVERFLOW_REGEX","normal","PLACEMENT_REGEX","primary","BODY_REGEX","getRawNode","parseStyle","scrollbarWidth","isBody","bodyElem","scrollElem","scrollbarPadding","elemStyle","paddingRight","paddingBottom","scrollParent","widthOverflow","originalRight","heightOverflow","originalBottom","isScrollable","includeHidden","overflowRegex","overflowY","overflowX","includeSelf","excludeStatic","spStyle","includeMagins","elemOffset","marginTop","marginLeft","parentOffset","clientLeft","elemBCR","pageXOffset","viewportOffset","useDocument","includePadding","offsetBCR","offsetParentBCR","offsetParentStyle","paddingTop","paddingLeft","parsePlacement","autoPlace","hostElem","targetElem","hostElemPos","targetElemPos","targetElemStyle","adjustedSize","marginRight","marginBottom","xOverflow","yOverflow","adjustTop","placementClasses","containerPosition","initialHeight","currentHeight","innerElem","isTooltip","arrowElem","arrowCss","borderProp","borderWidth","borderRadiusProp","borderRadius","createNew","hasKey","resolver","setResolver","invocables","promises","resolves","resolveObj","resolveIter","$modalStack","backdropClass","linkFn","modalInClass","NOW_CLOSING_EVENT","setIsAsync","modalOptions","windowTopClass","modal","getTop","backdrop","dismiss","$isRendered","modalRenderDeferObj","animationPromise","modalRendered","inputWithAutofocus","modalAnimation","uibModalAnimationClass","$$multiMap","$$stackedMap","$uibPosition","backdropDomEl","backdropScope","OPENED_MODAL_CLASS","openedWindows","openedClasses","topModalIndex","previousTopOpenedModal","ARIA_HIDDEN_ATTRIBUTE_NAME","SNAKE_CASE_REGEXP","backdropIndex","topBackdropIndex","opened","removeModalWindow","modalInstance","elementToReceiveFocus","modalWindow","appendToElement","modalDomEl","removeAfterAnimate","modalScope","modalBodyClass","openedClass","areAnyOpen","toggleTopWindowClass","closedDeferred","checkRemoveBackdrop","toggleSwitch","domEl","asyncDeferred","asyncPromise","afterAnimating","keydownListener","keyboard","loadFocusElementList","focusChanged","isFocusInFirstItem","isModalFocused","focusLastFocusableElement","isFocusInLastItem","focusFirstFocusableElement","broadcastClosing","resultOrReason","closing","unhideBackgroundElements","hiddenEl","newHiddenCount","newBackdropIndex","modalOpener","deferred","renderDeferred","currBackdropIndex","ng-style","uib-modal-animation-class","modal-in-class","letter","modal-instance","template-url","windowTemplateUrl","window-top-class","role","aria-labelledby","aria-describedby","ariaDescribedBy","tabindex","windowClass","$$topModalIndex","applyAriaHidden","getSiblings","elemIsAlreadyHidden","ariaHiddenCount","$$uibDestructionScheduled","dismissAll","topModal","modalDomE1","getClientRects","$modalProvider","$uibResolve","$modal","promiseChain","getPromiseChain","templateAndResolvePromise","samePromise","modalResultDeferred","modalOpenedDeferred","modalClosedDeferred","modalRenderDeferred","closed","rendered","resolveWithTemplate","tplAndVars","providedScope","$close","$dismiss","ctrlInstance","ctrlInstantiate","ctrlLocals","constructLocals","instanceOnScope","injectable","$resolve","$uibModalInstance","bindToController","setNumPages","numPages","_watchers","itemsPerPage","totalPages","calculateTotalPages","updatePage","newTotal","oldTotal","totalItems","selectPage","getText","noPrevious","noNext","uibPaging","uibPaginationConfig","maxSize","rotate","forceEllipses","boundaryLinkNumbers","pageLabel","$page","makePage","boundaryLinks","directionLinks","originalRender","pages","currentPage","startPage","endPage","isMaxSized","previousPageSet","unshift","secondPageLink","firstPageLink","nextPageSet","secondToLastPageLink","lastPageLink","getPages","firstText","previousText","lastText","paginationCtrl","placementClassPrefix","popupDelay","popupCloseDelay","useContentExp","triggerMap","outsideClick","none","setTriggers","triggers","openedTooltips","keypressListener","ttType","defaultTriggerShow","getTriggers","directiveName","startSym","startSymbol","endSym","endSymbol","tElem","tooltipLinker","tooltipCtrl","tooltipLinkedScope","transitionTimeout","showTimeout","hideTimeout","positionTimeout","adjustmentTimeout","lastPlacement","hasEnableExp","ttScope","repositionScheduled","isOpenParse","contentParse","positionTooltip","elementPos","adjustment","toggleTooltipBind","hideTooltipBind","showTooltipBind","cancelHide","popupClass","closeDelay","prepareTooltip","cancelShow","prepObservers","createTooltip","assignIsOpen","removeTooltip","bodyHideTooltipBind","hideOnEscapeKey","origScope","contentExp","showTriggers","hideTriggers","unregisterTriggers","appendToBodyVal","appendKey","tooltipTemplateTranscludeScope","changeCounter","cleanupLastIncludeContent","parseAsResourceUrl","uibTooltipTemplateTransclude","thisChangeId","tooltipAnimationClass","$uibTooltip","originScope","uibTitle","destroyed","findTabIndex","tabs","previousIndex","previousSelected","tab","onDeselect","$selectedIndex","onSelect","addTab","t1","t2","newActiveIndex","removeTab","newActiveTabIndex","justified","centered","tabsetCtrl","disable","$transcludeFn","uibTabContentTransclude","headingElement","stateOn","stateOff","enableReset","titles","ratingConfig","$formatters","tmpTitles","ratingStates","buildTemplateObjects","states","getTitle","rate","readonly","newViewValue","onHover","onLeave","onKeydown","ratingCtrl","appendToOpenClass","openScope","openedContainers","isOnlyOpen","dropdownScope","openedDropdowns","toClose","dropdown","closeDropdown","keybindFilter","dropdownToClose","getAutoClose","toggleElement","getToggleElement","dropdownElement","getDropdownElement","focusToggleElement","dropdownElementTargeted","toggleElementTargeted","isKeynavEnabled","focusDropdownEntry","dropdownConfig","uibDropdownService","templateScope","getIsOpen","setIsOpen","toggleInvoker","onToggle","keynavEnabled","removeDropdownMenu","dropdownMenu","keyboardNav","autoClose","elems","selectedOption","wasOpen","dropdownAppendTo","appendToEl","dropdownAppendToBody","rightalign","appendOffset","openContainer","dropdownOpenClass","hasOpenClass","dropdownMenuTemplateUrl","tplContent","newEl","dropdownCtrl","dropdownNested","tplUrl","toggleDropdown","aria-haspopup","aria-expanded","altInputFormats","clearText","closeOnDateSelection","closeText","currentText","datepickerPopup","datepickerPopupTemplateUrl","datepickerTemplateUrl","html5Types","datetime-local","onOpenFocus","showButtonBar","datepickerPopupConfig","$datepickerPopupLiteralWarning","dateFormat","popupEl","datepickerEl","scrollParentEl","$popup","isHtml5DateInput","parseDateString","parseDate","documentClickBind","popup","dpContainsTarget","popupContainsTarget","inputKeydownBind","positionPopup","dpElement","popupPlacement","_ngModel_","datepickerAppendToBody","uibDatepickerPopup","newDateFormat","ng-model","ng-change","$$parserName","$parsers","$viewChangeListeners","dateSelection","onLoad","Message","Recipients","modalTitle","addRecipient","removeRecipient","IsLogged","Email","FirstName","LastName","loading","resultMessage","messageTitle","messageText","successMessage","Attachments","products","isLogged","Phone","MobilePhone","ProductsIds","AbsoluteURL","dzOptions","paramName","dzCallbacks","successmultiple","ServerName","serverName","MessageSent","NumberToCall","valid","CountryCode","Country","Template","MessageTypeKey","MessageSentContactPrixNegocier","extension","quality","absolute","split1","UrlImages","split2","URLSite","cdnId","cdnSize","cdnDesignation","cdnExtension","cdnQuality","cdnAbsolute","cdnResponsiveSize","cdnResponsiveSizes","cdnSizes","setSrc","_element","_attrs","$cookies","DateService","inject","script","nextYear","GtmService","lazyHelpers","env","intersectionListener","yallFlipDataAttrs","newImageElement","asyncDecodeSupport","replaceWithSupport","decode","ignoredImgAttributes","classList","loadElement","rootMargin","refElement","sourceDataset","dataset","dataAttribute","acceptedDataAttributes","photo","lazyConfig","lazyObserver","winDimensions","$win","isListening","checkImagesT","saveWinOffsetT","containers","checkImages","isElementInView","stopListening","param","startListening","loaded","onError","srcset","onSuccess","onLoading","Photo","getWinDimensions","removeImage","addContainer","removeContainer","testImage","bottomline","threshhold","deferTimer","LazyMagic","lazyImage","newSource","eventsDeregister","$uibModal","ctrlAs","onClosed","onOpened","$$state","openModal","openCmsModal","autoScroll","modalAutoScroll","$modalDialog","$scrollContainer","overflow-x","overflow-y","max-height","getProducts","updateFilters","_filters","BrandsSelected","brands","ReviewsSelected","reviews","ProductTypesSelected","PriceRange","facets","FacetsSelected","Values","facet","tabsCtrl","zone","publishingZone","sortedZones","json","catchphrase","bannerName","bannerUrl","bannerLink","imgWsbPublishingZone","linkWsbPublishingZone","domId","Properties","KeyProperty","NumericValue","startPrice","Themes","th","themeDesignation","themes_visuals","ThemeGroup","Order","themes_labels","Text1","Text4","background","Text5","asideAnchorsPush","$onDestroy","CarouselService","thisScope","onInitialize","onInitialized","owlLoaded","$tab","onRefreshed","onResized","onLoadLazy","lazyId","onLoadedLazy","initOn","resizeProductsCarousels","$targ","resizeProductGallery","resizeSelectionCarousels","exclude","$largePicture","productsGridService","tmpId","getId","resizeGrid","elemId","$divs","col","nb","targ","RoutingService","isBot","isCache","yOffset","noreplace","routeToKeep","unsubscribe","router","_routes","stepTo","stepFrom","rejection","UseLogs","Key","routing","scrollCache","getPath","ngRouter","ngRoute","categoryId","backToStore","getScrollPos","windowScroll","dataLayer","initRouter","routingService","$routeProvider","$locationProvider","$httpProvider","Routes","DefaultLocalization","useApplyAsync","common","interceptors","authorize","authService","AccountService","getReturnFolders","getShippingAddresses","loadNewModules","html5Mode","requireBase","rewriteLinks","routesService","getRoute","pathname","isCart","responseError","CartIdentification","CartShipping","CartPayment","CartValidation","CartOnePageCheckout","getLinks","links","initAccount","logout","setManagement","Account","hasServices","IsManagementGiftCards","IsManagementCredits","IsManagementLoyaltyPoints","IsManagementWishlistTracking","hasOrders","IsManagementOrderTracking","IsManagementInvoicesAndCreditsTracking","IsManagementWebCartTracking","IsManagementReturns","IsManagementComplaint","IsManagementNumericProducts","getOrders","getOrder","getEligibleReturnFolders","$http","appPromise","cartRequests","Content-type","X-Requested-With","VisitorContext","isPro","WebsiteVisitorContext","VisitorIsPro","noevent","addToCart","productsToCart","Reference","Comment","Elements","Customization","TradeActions","addedProducts","idCategory","getCategoryResponse","fromCart","deleteLineCallback","itemQuantityInCart","qty","checkAvailability","getProductPrice","priceObj","HasDiscount","Discount","DegressivePrice","updateStore","visitorContext","Store","updateKey","stringToDate","tomorrow","dateDay","categories","affiliation","coupon","parentProduct","item_id","getReference","item_name","getDesignation","discount","item_brand","getBrand","getQuantity","item_category","item_category2","item_category3","item_category4","item_category5","item_variant","IDGroupingProduct","Brand","brand","reference","pushToDataLayer","ecommerce","addPaymentInfo","TradeActionPromoCode","ProductTotalTTC","payment_type","PaymentMethod","addShippingInfo","viewItem","viewItemList","item_list_name","tradeActions","totalTTC","previousValue","search_term","viewCart","NetToPay","beginCheckout","purchase","tax","shipping","$cacheFactory","addressCache","gpsCache","getDefer","getClustererDefer","GMAPKey","gMapsInit","getClusterer","MarkerClusterer","getGeoCode","Geocoder","geocode","country","address_components","long_name","Latitude","geometry","Longitude","getGeoCodeByGps","gps","strGps","short_name","formatted_address","services","rel","insertBeforeElem","nextSibling","useCssLoadPatch","ua","platform","appVersion","iOSVersion","androidVersion","versionMatch","tries","sheet","cssRules","callbackService","strKebabCase","strPointCase","_service","DocumentTouch","rule","ret","docOverflow","docElement","fake","getBody","styleSheet","cssText","testStyles","touchevents","_el","isOpera","isIE9","isIE10","isIE11","isIEEdge","MSStream","safeApply","assureList","getCurrentMatch","currentStyle","fontFamily","listenerFunc","currentMatch","previousMatch","wasPreviousMatch","doesCurrentMatch","feature","lossy","api","throttleTime","isOn","debounceTime","listenerType","activitiesJson","formData","refreshSelects","initActivity","IDActivity","activities","Activities","IDActivityDomain","domainSelected","elt","modelCtrl","specific","27","89","97","144","187","spePhoneMessages","accountPhone","$validate","phone","std","spe","BELGIQUE","speMobileMessage","accountMobile","newClient","templateCreate","createOpen","showCreate","loadedAccountCreate","backToAccountChoice","mobileShowLogin","activeIn","LogService","Errors","ErrorMessage","titleLogin","titleLogout","$body","visitor","FullName","IDCard","login","AccountUpdate","AccountHome","redirect","searchFinderService","goSearch","searchStr","inputBlur","submitForm","inputChangeHandler","fromBtn","setCtrl","canceler","getCtrl","nbPerPage","category","FieldName","FieldValue","IDCategory","QueryFullText","NbFrom","NbSize","FiltersSelected","PriceRangeSelected","Sort","busy","CategoriesSelected","getSearch","nextPage","maxPage","updateSearchApi","setDataFilters","setSelectedFilters","searchCtrl","searching","Selected","sel","itemValue","Value","selectPrices","selectedMinPrice","minPrice","selectedMaxPrice","maxPrice","Gte","Lte","startMin","startMax","pricesActive","sliderId","checkValue","selectedValue","isColor","colorImg","Yes","Colon","trustAsResourceUrl","SearchFinderApi","clearResults","selectFilter","byName","updateSearch","setCategory","setFacet","setBrand","setReview","setType","tmp","word","idPictureLg","idPictureSm","getPictures","setPictures","idLg","idSm","sources","webpSrc","titleBrand","titleReview","titleType","webAspect","totalProducts","sortTitle","iScrollMaxPages","nbProducts","emailChanged","form","fieldName","mailRecognized","FormService","storesScrollIn","storesActive","storesScrollOut","getStoresActive","advicesScrollIn","advicesScrollOut","token","isTokenValid","backLink","checkStore","storeSelected","setStoreData","ClickAndCollectAvailability","PickUpKey","Availability","PickUpDate","dmy","getDateAvailability","restoreQuickView","tempUrl","productOpenStoreChoice","openStoreChoice","showChoice","hasTheme1","hasTheme2","availableFilter","targetCtrl","setStore","storeChoice","selectStore","idStore","isAccountUpdate","isAccountCreate","IDStore","IsAccountCreate","idKit","jsonPrice","txtFirstRange","txtRange","txtLastRange","$main","$sub","$video","openLightGallery","dynamicEl","thumb","lightGallery","nextHtml","prevHtml","fullscreenHtml","dynamic","galleryImgLoader","zoomId","zoomSize","socialshare","socialshareUrl","socialshareText","socialshareMedia","socialshareHashtags","socialshareEmail","appId","urlString","facebookShare","ViewEmail","Url","idGroup","urlGroup","asideAnchors","costTTC","costHT","getIdealoId","resizeAnchor","queryString","idealoId","URLSearchParams","getQuotations","addToQuotation","IdProduct","IdQuotation","removeQuotationLine","IdLine","reviewsCache","capacity","addReview","getReviews","note","Reviews","NbReviews","CurrentFilter","Count","setRelevance","positive","clearReviewsCache","removeAll","ReviewsService","ReviewsConfig","CurrentPageReviews","review","IDMessage","inactive","setPage","CurrentSort","getAveragePercent","clip","Average","getGradePercent","setSort","setFilter","removeFilter","openReview","messageOK","formAdd","Token","dispatchEvent","hideTimer","inputField","minlength","searchTimer","httpCanceller","httpCallInProgress","callOrAssign","selectedObject","handleOverrideSuggestions","overrideSuggestions","matchField","cancelHttpRequest","originalObject","clearSelected","updateInputField","httpSuccessCallbackGen","responseData","remoteUrlResponseFormatter","showDropdown","httpErrorCallback","errorRes","getRemoteResults","remoteApiHandler","initResults","searchTimerComplete","newval","onFocusHandler","focusIn","hideResults","focusOut","hoverRow","selectResult","inputChanged","inputType","maxlength","$digest","fieldTabindex","inputName","txtAddToList","txtViewAndChoose","onlyAllowAddToCart","searchAPI","userInputString","timeoutPromise","CategoryId","withCatalogs","getResponse","AllowAddToCart","IsGroupingProduct","KeyWebAspect","designationHtml","findMatchString","searchCallback","IsElementary","CompareService","scrollInit","imgHeight","$imgs","$container","unwatch2","updateProductsData","maxItems","getProduct","len2","tmpReviews","IsInTable","PropertyType","ReviewsInfo","roundAverage","checkScroll","initProducts","scrolltop","noScroll","getNbProducts","titleRemove","titleFull","getChecked","unwatchEvent","checked","updateCookie","cancelPromises","canceller","openAccountLink","newsletterConnect","AccountExist","$nav","$level1","initValues","menuStyle","resizeMenus","font-size","psOpen","psClose","closeDone","openDone","mainNavCtrl","expandMenu","reduceMenu","initMenu","$menu","openMenu","siblings","backMenu","closeMenu","amount","code3x","code4x","code10x","code12x","merchantguid","merchantname","merchantoriasnumber","merchantaddress","minpayment3x","maxpayment3x","minpayment4x","maxpayment4x","minpayment10x","maxpayment10x","minpayment12x","maxpayment12x","ONEYFREE3X","ONEYPAYING3X","ONEYFREE4X","ONEYPAYING4X","ONEYFREE10X","ONEYPAYING10X","ONEYFREE12X","ONEYPAYING12X","addPaymentMode","currentCode","codePay","codeFree","payment_mode","is_free","isOney3xEnable","isOney4xEnable","isOney10xEnable","isOney12xEnable","showOneyWidget","merchant_guid","merchant_name","merchant_orias_number","merchant_address","payment_amount","filter_by","loadOneyWidget","oneyMerchantApp","loadSimulationPopin","latitude","longitude","daysModel","strOneTime","strTwoTimes","strClosed"],"mappings":"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C,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,KACAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,KAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IAAAC,IAAA,IACAC,IAAA,IAAAC,IAAA,IAAAC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","file":"master.min.js","sourcesContent":["//Windows Phone 8 and Internet Explorer 10 FIX\r\nif (navigator.userAgent.match(/IEMobile\\/10\\.0/)) {\r\n var msViewportStyle = document.createElement('style');\r\n msViewportStyle.appendChild(\r\n document.createTextNode('@-ms-viewport{width:auto!important}')\r\n );\r\n document.getElementsByTagName('head')[0].appendChild(msViewportStyle);\r\n}","/* eslint-disable */\r\n/* global define, module */\r\n(function (root, factory) {\r\n\tif (typeof define === 'function' && define.amd) {\r\n\t\tdefine( [], factory );\r\n\t} else if (typeof module === 'object') {\r\n\t\tmodule.exports = factory();\r\n\t} else {\r\n\t\troot.format = factory();\r\n\t}\r\n}(this, function () {\r\n\r\n\treturn function (mask, value) {\r\n\t\t'use strict';\r\n\t\tif ( !mask || isNaN( +value ) ) {\r\n\t\t\treturn value; // return as it is.\r\n\t\t}\r\n\r\n\t\tvar isNegative, result, decimal, group, posLeadZero, posTrailZero, posSeparator,\r\n\t\t\tpart, szSep, integer,\r\n\r\n\t\t\t// find prefix/suffix\r\n\t\t\tlen = mask.length,\r\n\t\t\tstart = mask.search( /[0-9\\-\\+#]/ ),\r\n\t\t\tprefix = start > 0 ? mask.substring( 0, start ) : '',\r\n\t\t\t// reverse string: not an ideal method if there are surrogate pairs\r\n\t\t\tstr = mask.split( '' ).reverse().join( '' ),\r\n\t\t\tend = str.search( /[0-9\\-\\+#]/ ),\r\n\t\t\toffset = len - end,\r\n\t\t\tsubstr = mask.substring( offset, offset + 1 ),\r\n\t\t\tindx = offset + ( ( substr === '.' || ( substr === ',' )) ? 1 : 0 ),\r\n\t\t\tsuffix = end > 0 ? mask.substring( indx, len ) : '';\r\n\r\n\t\t// mask with prefix & suffix removed\r\n\t\tmask = mask.substring( start, indx );\r\n\r\n\t\t// convert any string to number according to formation sign.\r\n\t\tvalue = mask.charAt( 0 ) === '-' ? -value : +value;\r\n\t\tisNegative = value < 0 ? value = -value : 0; // process only abs(), and turn on flag.\r\n\r\n\t\t// search for separator for grp & decimal, anything not digit, not +/- sign, not #.\r\n\t\tresult = mask.match( /[^\\d\\-\\+#]/g );\r\n\t\tdecimal = ( result && result[ result.length - 1 ] ) || '.'; // treat the right most symbol as decimal\r\n\t\tgroup = ( result && result[ 1 ] && result[ 0 ] ) || ','; // treat the left most symbol as group separator\r\n\r\n\t\t// split the decimal for the format string if any.\r\n\t\tmask = mask.split( decimal );\r\n\t\t// Fix the decimal first, toFixed will auto fill trailing zero.\r\n\t\tvalue = value.toFixed( mask[ 1 ] && mask[ 1 ].length );\r\n\t\tvalue = +( value ) + ''; // convert number to string to trim off *all* trailing decimal zero(es)\r\n\r\n\t\t// fill back any trailing zero according to format\r\n\t\tposTrailZero = mask[ 1 ] && mask[ 1 ].lastIndexOf( '0' ); // look for last zero in format\r\n\t\tpart = value.split( '.' );\r\n\t\t// integer will get !part[1]\r\n\t\tif ( !part[ 1 ] || ( part[ 1 ] && part[ 1 ].length <= posTrailZero ) ) {\r\n\t\t\tvalue = ( +value ).toFixed( posTrailZero + 1 );\r\n\t\t}\r\n\t\tszSep = mask[ 0 ].split( group ); // look for separator\r\n\t\tmask[ 0 ] = szSep.join( '' ); // join back without separator for counting the pos of any leading 0.\r\n\r\n\t\tposLeadZero = mask[ 0 ] && mask[ 0 ].indexOf( '0' );\r\n\t\tif ( posLeadZero > -1 ) {\r\n\t\t\twhile ( part[ 0 ].length < ( mask[ 0 ].length - posLeadZero ) ) {\r\n\t\t\t\tpart[ 0 ] = '0' + part[ 0 ];\r\n\t\t\t}\r\n\t\t} else if ( +part[ 0 ] === 0 ) {\r\n\t\t\tpart[ 0 ] = '';\r\n\t\t}\r\n\r\n\t\tvalue = value.split( '.' );\r\n\t\tvalue[ 0 ] = part[ 0 ];\r\n\r\n\t\t// process the first group separator from decimal (.) only, the rest ignore.\r\n\t\t// get the length of the last slice of split result.\r\n\t\tposSeparator = ( szSep[ 1 ] && szSep[ szSep.length - 1 ].length );\r\n\t\tif ( posSeparator ) {\r\n\t\t\tinteger = value[ 0 ];\r\n\t\t\tstr = '';\r\n\t\t\toffset = integer.length % posSeparator;\r\n\t\t\tlen = integer.length;\r\n\t\t\tfor ( indx = 0; indx < len; indx++ ) {\r\n\t\t\t\tstr += integer.charAt( indx ); // ie6 only support charAt for sz.\r\n\t\t\t\t// -posSeparator so that won't trail separator on full length\r\n\t\t\t\t/*jshint -W018 */\r\n\t\t\t\tif ( !( ( indx - offset + 1 ) % posSeparator ) && indx < len - posSeparator ) {\r\n\t\t\t\t\tstr += group;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tvalue[ 0 ] = str;\r\n\t\t}\r\n\t\tvalue[ 1 ] = ( mask[ 1 ] && value[ 1 ] ) ? decimal + value[ 1 ] : '';\r\n\r\n\t\t// remove negative sign if result is zero\r\n\t\tresult = value.join( '' );\r\n\t\tif ( result === '0' || result === '' ) {\r\n\t\t\t// remove negative sign if result is zero\r\n\t\t\tisNegative = false;\r\n\t\t}\r\n\r\n\t\t// put back any negation, combine integer and fraction, and add back prefix & suffix\r\n\t\treturn prefix + ( ( isNegative ? '-' : '' ) + result ) + suffix;\r\n\t};\r\n\r\n}));\r\n","!function(e){if(\"object\"==typeof exports&&\"undefined\"!=typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var t;t=\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:this,t.hoverintent=e()}}(function(){return function e(t,n,o){function r(u,f){if(!n[u]){if(!t[u]){var s=\"function\"==typeof require&&require;if(!f&&s)return s(u,!0);if(i)return i(u,!0);var c=new Error(\"Cannot find module '\"+u+\"'\");throw c.code=\"MODULE_NOT_FOUND\",c}var a=n[u]={exports:{}};t[u][0].call(a.exports,function(e){var n=t[u][1][e];return r(n?n:e)},a,a.exports,e,t,n,o)}return n[u].exports}for(var i=\"function\"==typeof require&&require,u=0;u 1) {\r\n this.each(function () {\r\n $(this).bxSlider(options);\r\n });\r\n return this;\r\n }\r\n\r\n // create a namespace to be used throughout the plugin\r\n var slider = {},\r\n // set a reference to our slider element\r\n el = this,\r\n // get the original window dimens (thanks a lot IE)\r\n windowWidth = $(window).width(),\r\n windowHeight = $(window).height();\r\n\r\n // Return if slider is already initialized\r\n if ($(el).data('bxSlider')) { return; }\r\n\r\n /**\r\n * ===================================================================================\r\n * = PRIVATE FUNCTIONS\r\n * ===================================================================================\r\n */\r\n\r\n /**\r\n * Initializes namespace settings to be used throughout plugin\r\n */\r\n var init = function () {\r\n // Return if slider is already initialized\r\n if ($(el).data('bxSlider')) { return; }\r\n // merge user-supplied options with the defaults\r\n slider.settings = $.extend({}, defaults, options);\r\n // parse slideWidth setting\r\n slider.settings.slideWidth = parseInt(slider.settings.slideWidth);\r\n // store the original children\r\n slider.children = el.children(slider.settings.slideSelector);\r\n // check if actual number of slides is less than minSlides / maxSlides\r\n if (slider.children.length < slider.settings.minSlides) { slider.settings.minSlides = slider.children.length; }\r\n if (slider.children.length < slider.settings.maxSlides) { slider.settings.maxSlides = slider.children.length; }\r\n // if random start, set the startSlide setting to random number\r\n if (slider.settings.randomStart) { slider.settings.startSlide = Math.floor(Math.random() * slider.children.length); }\r\n // store active slide information\r\n slider.active = { index: slider.settings.startSlide };\r\n // store if the slider is in carousel mode (displaying / moving multiple slides)\r\n slider.carousel = slider.settings.minSlides > 1 || slider.settings.maxSlides > 1;\r\n // if carousel, force preloadImages = 'all'\r\n if (slider.carousel) { slider.settings.preloadImages = 'all'; }\r\n // calculate the min / max width thresholds based on min / max number of slides\r\n // used to setup and update carousel slides dimensions\r\n slider.minThreshold = (slider.settings.minSlides * slider.settings.slideWidth) + ((slider.settings.minSlides - 1) * slider.settings.slideMargin);\r\n slider.maxThreshold = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\r\n // store the current state of the slider (if currently animating, working is true)\r\n slider.working = false;\r\n // initialize the controls object\r\n slider.controls = {};\r\n // initialize an auto interval\r\n slider.interval = null;\r\n // determine which property to use for transitions\r\n slider.animProp = slider.settings.mode === 'vertical' ? 'top' : 'left';\r\n // determine if hardware acceleration can be used\r\n slider.usingCSS = slider.settings.useCSS && slider.settings.mode !== 'fade' && (function () {\r\n // create our test div element\r\n var div = document.createElement('div'),\r\n // css transition properties\r\n props = ['WebkitPerspective', 'MozPerspective', 'OPerspective', 'msPerspective'];\r\n // test for each property\r\n for (var i = 0; i < props.length; i++) {\r\n if (div.style[props[i]] !== undefined) {\r\n slider.cssPrefix = props[i].replace('Perspective', '').toLowerCase();\r\n slider.animProp = '-' + slider.cssPrefix + '-transform';\r\n return true;\r\n }\r\n }\r\n return false;\r\n }());\r\n // if vertical mode always make maxSlides and minSlides equal\r\n if (slider.settings.mode === 'vertical') { slider.settings.maxSlides = slider.settings.minSlides; }\r\n // save original style data\r\n el.data('origStyle', el.attr('style'));\r\n el.children(slider.settings.slideSelector).each(function () {\r\n $(this).data('origStyle', $(this).attr('style'));\r\n });\r\n\r\n // perform all DOM / CSS modifications\r\n setup();\r\n };\r\n\r\n /**\r\n * Performs all DOM and CSS modifications\r\n */\r\n var setup = function () {\r\n var preloadSelector = slider.children.eq(slider.settings.startSlide); // set the default preload selector (visible)\r\n\r\n // wrap el in a wrapper\r\n el.wrap('
');\r\n // store a namespace reference to .bx-viewport\r\n slider.viewport = el.parent();\r\n\r\n // add aria-live if the setting is enabled and ticker mode is disabled\r\n if (slider.settings.ariaLive && !slider.settings.ticker) {\r\n slider.viewport.attr('aria-live', 'polite');\r\n }\r\n // add a loading div to display while images are loading\r\n slider.loader = $('
');\r\n slider.viewport.prepend(slider.loader);\r\n // set el to a massive width, to hold any needed slides\r\n // also strip any margin and padding from el\r\n el.css({\r\n width: slider.settings.mode === 'horizontal' ? (slider.children.length * 1000 + 215) + '%' : 'auto',\r\n position: 'relative'\r\n });\r\n // if using CSS, add the easing property\r\n if (slider.usingCSS && slider.settings.easing) {\r\n el.css('-' + slider.cssPrefix + '-transition-timing-function', slider.settings.easing);\r\n // if not using CSS and no easing value was supplied, use the default JS animation easing (swing)\r\n } else if (!slider.settings.easing) {\r\n slider.settings.easing = 'swing';\r\n }\r\n // make modifications to the viewport (.bx-viewport)\r\n slider.viewport.css({\r\n width: '100%',\r\n overflow: 'hidden',\r\n position: 'relative'\r\n });\r\n slider.viewport.parent().css({\r\n maxWidth: getViewportMaxWidth()\r\n });\r\n // apply css to all slider children\r\n slider.children.css({\r\n // the float attribute is a reserved word in compressors like YUI compressor and need to be quoted #48\r\n 'float': slider.settings.mode === 'horizontal' ? 'left' : 'none',\r\n listStyle: 'none',\r\n position: 'relative'\r\n });\r\n // apply the calculated width after the float is applied to prevent scrollbar interference\r\n slider.children.css('width', getSlideWidth());\r\n // if slideMargin is supplied, add the css\r\n if (slider.settings.mode === 'horizontal' && slider.settings.slideMargin > 0) { slider.children.css('marginRight', slider.settings.slideMargin); }\r\n if (slider.settings.mode === 'vertical' && slider.settings.slideMargin > 0) { slider.children.css('marginBottom', slider.settings.slideMargin); }\r\n // if \"fade\" mode, add positioning and z-index CSS\r\n if (slider.settings.mode === 'fade') {\r\n slider.children.css({\r\n position: 'absolute',\r\n zIndex: 0,\r\n display: 'none'\r\n });\r\n // prepare the z-index on the showing element\r\n slider.children.eq(slider.settings.startSlide).css({ zIndex: slider.settings.slideZIndex, display: 'block' });\r\n }\r\n // create an element to contain all slider controls (pager, start / stop, etc)\r\n slider.controls.el = $('
');\r\n // if captions are requested, add them\r\n if (slider.settings.captions) { appendCaptions(); }\r\n // check if startSlide is last slide\r\n slider.active.last = slider.settings.startSlide === getPagerQty() - 1;\r\n // if video is true, set up the fitVids plugin\r\n if (slider.settings.video) { el.fitVids(); }\r\n //preloadImages\r\n if (slider.settings.preloadImages === 'none') {\r\n preloadSelector = null;\r\n }\r\n else if (slider.settings.preloadImages === 'all' || slider.settings.ticker) {\r\n preloadSelector = slider.children;\r\n }\r\n // only check for control addition if not in \"ticker\" mode\r\n if (!slider.settings.ticker) {\r\n // if controls are requested, add them\r\n if (slider.settings.controls) { appendControls(); }\r\n // if auto is true, and auto controls are requested, add them\r\n if (slider.settings.auto && slider.settings.autoControls) { appendControlsAuto(); }\r\n // if pager is requested, add it\r\n if (slider.settings.pager) { appendPager(); }\r\n // if any control option is requested, add the controls wrapper\r\n if (slider.settings.controls || slider.settings.autoControls || slider.settings.pager) { slider.viewport.after(slider.controls.el); }\r\n // if ticker mode, do not allow a pager\r\n } else {\r\n slider.settings.pager = false;\r\n }\r\n if (preloadSelector === null) {\r\n start();\r\n } else {\r\n loadElements(preloadSelector, start);\r\n }\r\n };\r\n\r\n var loadElements = function (selector, callback) {\r\n var total = selector.find('img:not([src=\"\"]), iframe').length,\r\n count = 0;\r\n if (total === 0) {\r\n callback();\r\n return;\r\n }\r\n selector.find('img:not([src=\"\"]), iframe').each(function () {\r\n $(this).one('load error', function () {\r\n if (++count === total) { callback(); }\r\n }).each(function () {\r\n if (this.complete || this.src == '') { $(this).trigger('load'); }\r\n });\r\n });\r\n };\r\n\r\n /**\r\n * Start the slider\r\n */\r\n var start = function () {\r\n // if infinite loop, prepare additional slides\r\n if (slider.settings.infiniteLoop && slider.settings.mode !== 'fade' && !slider.settings.ticker) {\r\n var slice = slider.settings.mode === 'vertical' ? slider.settings.minSlides : slider.settings.maxSlides,\r\n sliceAppend = slider.children.slice(0, slice).clone(true).addClass('bx-clone'),\r\n slicePrepend = slider.children.slice(-slice).clone(true).addClass('bx-clone');\r\n if (slider.settings.ariaHidden) {\r\n sliceAppend.attr('aria-hidden', true);\r\n slicePrepend.attr('aria-hidden', true);\r\n }\r\n el.append(sliceAppend).prepend(slicePrepend);\r\n }\r\n // remove the loading DOM element\r\n slider.loader.remove();\r\n // set the left / top position of \"el\"\r\n setSlidePosition();\r\n // if \"vertical\" mode, always use adaptiveHeight to prevent odd behavior\r\n if (slider.settings.mode === 'vertical') { slider.settings.adaptiveHeight = true; }\r\n // set the viewport height\r\n slider.viewport.height(getViewportHeight());\r\n // make sure everything is positioned just right (same as a window resize)\r\n el.redrawSlider();\r\n // onSliderLoad callback\r\n slider.settings.onSliderLoad.call(el, slider.active.index);\r\n // slider has been fully initialized\r\n slider.initialized = true;\r\n // add the resize call to the window\r\n if (slider.settings.responsive) { $(window).on('resize', resizeWindow); }\r\n // if auto is true and has more than 1 page, start the show\r\n if (slider.settings.auto && slider.settings.autoStart && (getPagerQty() > 1 || slider.settings.autoSlideForOnePage)) { initAuto(); }\r\n // if ticker is true, start the ticker\r\n if (slider.settings.ticker) { initTicker(); }\r\n // if pager is requested, make the appropriate pager link active\r\n if (slider.settings.pager) { updatePagerActive(slider.settings.startSlide); }\r\n // check for any updates to the controls (like hideControlOnEnd updates)\r\n if (slider.settings.controls) { updateDirectionControls(); }\r\n // if touchEnabled is true, setup the touch events\r\n if (slider.settings.touchEnabled && !slider.settings.ticker) { initTouch(); }\r\n // if keyboardEnabled is true, setup the keyboard events\r\n if (slider.settings.keyboardEnabled && !slider.settings.ticker) {\r\n $(document).keydown(keyPress);\r\n }\r\n };\r\n\r\n /**\r\n * Returns the calculated height of the viewport, used to determine either adaptiveHeight or the maxHeight value\r\n */\r\n var getViewportHeight = function () {\r\n\r\n console.log('getViewportHeight');\r\n\r\n var height = 0;\r\n\r\n // first determine which children (slides) should be used in our height calculation\r\n var children = $();\r\n // if mode is not \"vertical\" and adaptiveHeight is false, include all children\r\n if (slider.settings.mode !== 'vertical' && !slider.settings.adaptiveHeight) {\r\n children = slider.children;\r\n } else {\r\n // if not carousel, return the single active child\r\n if (!slider.carousel) {\r\n children = slider.children.eq(slider.active.index);\r\n // if carousel, return a slice of children\r\n } else {\r\n // get the individual slide index\r\n var currentIndex = slider.settings.moveSlides === 1 ? slider.active.index : slider.active.index * getMoveBy();\r\n // add the current slide to the children\r\n children = slider.children.eq(currentIndex);\r\n // cycle through the remaining \"showing\" slides\r\n for (i = 1; i <= slider.settings.maxSlides - 1; i++) {\r\n // if looped back to the start\r\n if (currentIndex + i >= slider.children.length) {\r\n children = children.add(slider.children.eq(i - 1));\r\n } else {\r\n children = children.add(slider.children.eq(currentIndex + i));\r\n }\r\n }\r\n }\r\n }\r\n // if \"vertical\" mode, calculate the sum of the heights of the children\r\n if (slider.settings.mode === 'vertical') {\r\n children.each(function (index) {\r\n height += $(this).outerHeight();\r\n });\r\n // add user-supplied margins\r\n if (slider.settings.slideMargin > 0) {\r\n height += slider.settings.slideMargin * (slider.settings.minSlides - 1);\r\n }\r\n // if not \"vertical\" mode, calculate the max height of the children\r\n } else {\r\n height = Math.max.apply(Math, children.map(function () {\r\n return $(this).outerHeight(false);\r\n }).get());\r\n }\r\n\r\n if (slider.viewport.css('box-sizing') === 'border-box') {\r\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom')) +\r\n parseFloat(slider.viewport.css('border-top-width')) + parseFloat(slider.viewport.css('border-bottom-width'));\r\n } else if (slider.viewport.css('box-sizing') === 'padding-box') {\r\n height += parseFloat(slider.viewport.css('padding-top')) + parseFloat(slider.viewport.css('padding-bottom'));\r\n }\r\n\r\n return height;\r\n };\r\n\r\n /**\r\n * Returns the calculated width to be used for the outer wrapper / viewport\r\n */\r\n var getViewportMaxWidth = function () {\r\n var width = '100%';\r\n if (slider.settings.slideWidth > 0) {\r\n if (slider.settings.mode === 'horizontal') {\r\n width = (slider.settings.maxSlides * slider.settings.slideWidth) + ((slider.settings.maxSlides - 1) * slider.settings.slideMargin);\r\n } else {\r\n width = slider.settings.slideWidth;\r\n }\r\n }\r\n return width;\r\n };\r\n\r\n /**\r\n * Returns the calculated width to be applied to each slide\r\n */\r\n var getSlideWidth = function () {\r\n var newElWidth = slider.settings.slideWidth, // start with any user-supplied slide width\r\n wrapWidth = slider.viewport.width(); // get the current viewport width\r\n // if slide width was not supplied, or is larger than the viewport use the viewport width\r\n if (slider.settings.slideWidth === 0 ||\r\n (slider.settings.slideWidth > wrapWidth && !slider.carousel) ||\r\n slider.settings.mode === 'vertical') {\r\n newElWidth = wrapWidth;\r\n // if carousel, use the thresholds to determine the width\r\n } else if (slider.settings.maxSlides > 1 && slider.settings.mode === 'horizontal') {\r\n if (wrapWidth > slider.maxThreshold) {\r\n return newElWidth;\r\n } else if (wrapWidth < slider.minThreshold) {\r\n newElWidth = (wrapWidth - (slider.settings.slideMargin * (slider.settings.minSlides - 1))) / slider.settings.minSlides;\r\n } else if (slider.settings.shrinkItems) {\r\n newElWidth = Math.floor((wrapWidth + slider.settings.slideMargin) / (Math.ceil((wrapWidth + slider.settings.slideMargin) / (newElWidth + slider.settings.slideMargin))) - slider.settings.slideMargin);\r\n }\r\n }\r\n return newElWidth;\r\n };\r\n\r\n /**\r\n * Returns the number of slides currently visible in the viewport (includes partially visible slides)\r\n */\r\n var getNumberSlidesShowing = function () {\r\n var slidesShowing = 1,\r\n childWidth = null;\r\n if (slider.settings.mode === 'horizontal' && slider.settings.slideWidth > 0) {\r\n // if viewport is smaller than minThreshold, return minSlides\r\n if (slider.viewport.width() < slider.minThreshold) {\r\n slidesShowing = slider.settings.minSlides;\r\n // if viewport is larger than maxThreshold, return maxSlides\r\n } else if (slider.viewport.width() > slider.maxThreshold) {\r\n slidesShowing = slider.settings.maxSlides;\r\n // if viewport is between min / max thresholds, divide viewport width by first child width\r\n } else {\r\n childWidth = slider.children.first().width() + slider.settings.slideMargin;\r\n slidesShowing = Math.floor((slider.viewport.width() +\r\n slider.settings.slideMargin) / childWidth) || 1;\r\n }\r\n // if \"vertical\" mode, slides showing will always be minSlides\r\n } else if (slider.settings.mode === 'vertical') {\r\n slidesShowing = slider.settings.minSlides;\r\n }\r\n return slidesShowing;\r\n };\r\n\r\n /**\r\n * Returns the number of pages (one full viewport of slides is one \"page\")\r\n */\r\n var getPagerQty = function () {\r\n var pagerQty = 0,\r\n breakPoint = 0,\r\n counter = 0;\r\n // if moveSlides is specified by the user\r\n if (slider.settings.moveSlides > 0) {\r\n if (slider.settings.infiniteLoop) {\r\n pagerQty = Math.ceil(slider.children.length / getMoveBy());\r\n } else {\r\n // when breakpoint goes above children length, counter is the number of pages\r\n while (breakPoint < slider.children.length) {\r\n ++pagerQty;\r\n breakPoint = counter + getNumberSlidesShowing();\r\n counter += slider.settings.moveSlides <= getNumberSlidesShowing() ? slider.settings.moveSlides : getNumberSlidesShowing();\r\n }\r\n return counter;\r\n }\r\n // if moveSlides is 0 (auto) divide children length by sides showing, then round up\r\n } else {\r\n pagerQty = Math.ceil(slider.children.length / getNumberSlidesShowing());\r\n }\r\n return pagerQty;\r\n };\r\n\r\n /**\r\n * Returns the number of individual slides by which to shift the slider\r\n */\r\n var getMoveBy = function () {\r\n // if moveSlides was set by the user and moveSlides is less than number of slides showing\r\n if (slider.settings.moveSlides > 0 && slider.settings.moveSlides <= getNumberSlidesShowing()) {\r\n return slider.settings.moveSlides;\r\n }\r\n // if moveSlides is 0 (auto)\r\n return getNumberSlidesShowing();\r\n };\r\n\r\n /**\r\n * Sets the slider's (el) left or top position\r\n */\r\n var setSlidePosition = function () {\r\n var position, lastChild, lastShowingIndex;\r\n // if last slide, not infinite loop, and number of children is larger than specified maxSlides\r\n if (slider.children.length > slider.settings.maxSlides && slider.active.last && !slider.settings.infiniteLoop) {\r\n if (slider.settings.mode === 'horizontal') {\r\n // get the last child's position\r\n lastChild = slider.children.last();\r\n position = lastChild.position();\r\n // set the left position\r\n setPositionProperty(-(position.left - (slider.viewport.width() - lastChild.outerWidth())), 'reset', 0);\r\n } else if (slider.settings.mode === 'vertical') {\r\n // get the last showing index's position\r\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\r\n position = slider.children.eq(lastShowingIndex).position();\r\n // set the top position\r\n setPositionProperty(-position.top, 'reset', 0);\r\n }\r\n // if not last slide\r\n } else {\r\n // get the position of the first showing slide\r\n position = slider.children.eq(slider.active.index * getMoveBy()).position();\r\n // check for last slide\r\n if (slider.active.index === getPagerQty() - 1) { slider.active.last = true; }\r\n // set the respective position\r\n if (position !== undefined) {\r\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\r\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Sets the el's animating property position (which in turn will sometimes animate el).\r\n * If using CSS, sets the transform property. If not using CSS, sets the top / left property.\r\n *\r\n * @param value (int)\r\n * - the animating property's value\r\n *\r\n * @param type (string) 'slide', 'reset', 'ticker'\r\n * - the type of instance for which the function is being\r\n *\r\n * @param duration (int)\r\n * - the amount of time (in ms) the transition should occupy\r\n *\r\n * @param params (array) optional\r\n * - an optional parameter containing any variables that need to be passed in\r\n */\r\n var setPositionProperty = function (value, type, duration, params) {\r\n var animateObj, propValue;\r\n // use CSS transform\r\n if (slider.usingCSS) {\r\n // determine the translate3d value\r\n propValue = slider.settings.mode === 'vertical' ? 'translate3d(0, ' + value + 'px, 0)' : 'translate3d(' + value + 'px, 0, 0)';\r\n // add the CSS transition-duration\r\n el.css('-' + slider.cssPrefix + '-transition-duration', duration / 1000 + 's');\r\n if (type === 'slide') {\r\n // set the property value\r\n el.css(slider.animProp, propValue);\r\n if (duration !== 0) {\r\n // add a callback method - executes when CSS transition completes\r\n el.on('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function (e) {\r\n //make sure it's the correct one\r\n if (!$(e.target).is(el)) { return; }\r\n // remove the callback\r\n el.off('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\r\n updateAfterSlideTransition();\r\n });\r\n } else { //duration = 0\r\n updateAfterSlideTransition();\r\n }\r\n } else if (type === 'reset') {\r\n el.css(slider.animProp, propValue);\r\n } else if (type === 'ticker') {\r\n // make the transition use 'linear'\r\n el.css('-' + slider.cssPrefix + '-transition-timing-function', 'linear');\r\n el.css(slider.animProp, propValue);\r\n if (duration !== 0) {\r\n el.on('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function (e) {\r\n //make sure it's the correct one\r\n if (!$(e.target).is(el)) { return; }\r\n // remove the callback\r\n el.off('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd');\r\n // reset the position\r\n setPositionProperty(params.resetValue, 'reset', 0);\r\n // start the loop again\r\n tickerLoop();\r\n });\r\n } else { //duration = 0\r\n setPositionProperty(params.resetValue, 'reset', 0);\r\n tickerLoop();\r\n }\r\n }\r\n // use JS animate\r\n } else {\r\n animateObj = {};\r\n animateObj[slider.animProp] = value;\r\n if (type === 'slide') {\r\n el.animate(animateObj, duration, slider.settings.easing, function () {\r\n updateAfterSlideTransition();\r\n });\r\n } else if (type === 'reset') {\r\n el.css(slider.animProp, value);\r\n } else if (type === 'ticker') {\r\n el.animate(animateObj, duration, 'linear', function () {\r\n setPositionProperty(params.resetValue, 'reset', 0);\r\n // run the recursive loop after animation\r\n tickerLoop();\r\n });\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Populates the pager with proper amount of pages\r\n */\r\n var populatePager = function () {\r\n var pagerHtml = '',\r\n linkContent = '',\r\n pagerQty = getPagerQty();\r\n // loop through each pager item\r\n for (var i = 0; i < pagerQty; i++) {\r\n linkContent = '';\r\n // if a buildPager function is supplied, use it to get pager link value, else use index + 1\r\n if (slider.settings.buildPager && $.isFunction(slider.settings.buildPager) || slider.settings.pagerCustom) {\r\n linkContent = slider.settings.buildPager(i);\r\n slider.pagerEl.addClass('bx-custom-pager');\r\n } else {\r\n linkContent = i + 1;\r\n slider.pagerEl.addClass('bx-default-pager');\r\n }\r\n // var linkContent = slider.settings.buildPager && $.isFunction(slider.settings.buildPager) ? slider.settings.buildPager(i) : i + 1;\r\n // add the markup to the string\r\n pagerHtml += '';\r\n }\r\n // populate the pager element with pager links\r\n slider.pagerEl.html(pagerHtml);\r\n };\r\n\r\n /**\r\n * Appends the pager to the controls element\r\n */\r\n var appendPager = function () {\r\n if (!slider.settings.pagerCustom) {\r\n // create the pager DOM element\r\n slider.pagerEl = $('
');\r\n // if a pager selector was supplied, populate it with the pager\r\n if (slider.settings.pagerSelector) {\r\n $(slider.settings.pagerSelector).html(slider.pagerEl);\r\n // if no pager selector was supplied, add it after the wrapper\r\n } else {\r\n slider.controls.el.addClass('bx-has-pager').append(slider.pagerEl);\r\n }\r\n // populate the pager\r\n populatePager();\r\n } else {\r\n slider.pagerEl = $(slider.settings.pagerCustom);\r\n }\r\n // assign the pager click binding\r\n slider.pagerEl.on('click touchend', 'a', clickPagerBind);\r\n };\r\n\r\n /**\r\n * Appends prev / next controls to the controls element\r\n */\r\n var appendControls = function () {\r\n slider.controls.next = $('' + slider.settings.nextText + '');\r\n slider.controls.prev = $('' + slider.settings.prevText + '');\r\n // add click actions to the controls\r\n slider.controls.next.on('click touchend', clickNextBind);\r\n slider.controls.prev.on('click touchend', clickPrevBind);\r\n // if nextSelector was supplied, populate it\r\n if (slider.settings.nextSelector) {\r\n $(slider.settings.nextSelector).append(slider.controls.next);\r\n }\r\n // if prevSelector was supplied, populate it\r\n if (slider.settings.prevSelector) {\r\n $(slider.settings.prevSelector).append(slider.controls.prev);\r\n }\r\n // if no custom selectors were supplied\r\n if (!slider.settings.nextSelector && !slider.settings.prevSelector) {\r\n // add the controls to the DOM\r\n slider.controls.directionEl = $('
');\r\n // add the control elements to the directionEl\r\n slider.controls.directionEl.append(slider.controls.prev).append(slider.controls.next);\r\n // slider.viewport.append(slider.controls.directionEl);\r\n slider.controls.el.addClass('bx-has-controls-direction').append(slider.controls.directionEl);\r\n }\r\n };\r\n\r\n /**\r\n * Appends start / stop auto controls to the controls element\r\n */\r\n var appendControlsAuto = function () {\r\n slider.controls.start = $('');\r\n slider.controls.stop = $('');\r\n // add the controls to the DOM\r\n slider.controls.autoEl = $('
');\r\n // on click actions to the controls\r\n slider.controls.autoEl.on('click', '.bx-start', clickStartBind);\r\n slider.controls.autoEl.on('click', '.bx-stop', clickStopBind);\r\n // if autoControlsCombine, insert only the \"start\" control\r\n if (slider.settings.autoControlsCombine) {\r\n slider.controls.autoEl.append(slider.controls.start);\r\n // if autoControlsCombine is false, insert both controls\r\n } else {\r\n slider.controls.autoEl.append(slider.controls.start).append(slider.controls.stop);\r\n }\r\n // if auto controls selector was supplied, populate it with the controls\r\n if (slider.settings.autoControlsSelector) {\r\n $(slider.settings.autoControlsSelector).html(slider.controls.autoEl);\r\n // if auto controls selector was not supplied, add it after the wrapper\r\n } else {\r\n slider.controls.el.addClass('bx-has-controls-auto').append(slider.controls.autoEl);\r\n }\r\n // update the auto controls\r\n updateAutoControls(slider.settings.autoStart ? 'stop' : 'start');\r\n };\r\n\r\n /**\r\n * Appends image captions to the DOM\r\n */\r\n var appendCaptions = function () {\r\n // cycle through each child\r\n slider.children.each(function (index) {\r\n // get the image title attribute\r\n var title = $(this).find('img:first').attr('title');\r\n // append the caption\r\n if (title !== undefined && ('' + title).length) {\r\n $(this).append('
' + title + '
');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Click next binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickNextBind = function (e) {\r\n e.preventDefault();\r\n if (slider.controls.el.hasClass('disabled')) { return; }\r\n // if auto show is running, stop it\r\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\r\n el.goToNextSlide();\r\n };\r\n\r\n /**\r\n * Click prev binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickPrevBind = function (e) {\r\n e.preventDefault();\r\n if (slider.controls.el.hasClass('disabled')) { return; }\r\n // if auto show is running, stop it\r\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\r\n el.goToPrevSlide();\r\n };\r\n\r\n /**\r\n * Click start binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickStartBind = function (e) {\r\n el.startAuto();\r\n e.preventDefault();\r\n };\r\n\r\n /**\r\n * Click stop binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickStopBind = function (e) {\r\n el.stopAuto();\r\n e.preventDefault();\r\n };\r\n\r\n /**\r\n * Click pager binding\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var clickPagerBind = function (e) {\r\n var pagerLink, pagerIndex;\r\n e.preventDefault();\r\n if (slider.controls.el.hasClass('disabled')) {\r\n return;\r\n }\r\n // if auto show is running, stop it\r\n if (slider.settings.auto && slider.settings.stopAutoOnClick) { el.stopAuto(); }\r\n pagerLink = $(e.currentTarget);\r\n if (pagerLink.attr('data-slide-index') !== undefined) {\r\n pagerIndex = parseInt(pagerLink.attr('data-slide-index'));\r\n // if clicked pager link is not active, continue with the goToSlide call\r\n if (pagerIndex !== slider.active.index) { el.goToSlide(pagerIndex); }\r\n }\r\n };\r\n\r\n /**\r\n * Updates the pager links with an active class\r\n *\r\n * @param slideIndex (int)\r\n * - index of slide to make active\r\n */\r\n var updatePagerActive = function (slideIndex) {\r\n // if \"short\" pager type\r\n var len = slider.children.length; // nb of children\r\n if (slider.settings.pagerType === 'short') {\r\n if (slider.settings.maxSlides > 1) {\r\n len = Math.ceil(slider.children.length / slider.settings.maxSlides);\r\n }\r\n slider.pagerEl.html((slideIndex + 1) + slider.settings.pagerShortSeparator + len);\r\n return;\r\n }\r\n // remove all pager active classes\r\n slider.pagerEl.find('a').removeClass('active');\r\n // apply the active class for all pagers\r\n slider.pagerEl.each(function (i, el) { $(el).find('a').eq(slideIndex).addClass('active'); });\r\n };\r\n\r\n /**\r\n * Performs needed actions after a slide transition\r\n */\r\n var updateAfterSlideTransition = function () {\r\n // if infinite loop is true\r\n if (slider.settings.infiniteLoop) {\r\n var position = '';\r\n // first slide\r\n if (slider.active.index === 0) {\r\n // set the new position\r\n position = slider.children.eq(0).position();\r\n // carousel, last slide\r\n } else if (slider.active.index === getPagerQty() - 1 && slider.carousel) {\r\n position = slider.children.eq((getPagerQty() - 1) * getMoveBy()).position();\r\n // last slide\r\n } else if (slider.active.index === slider.children.length - 1) {\r\n position = slider.children.eq(slider.children.length - 1).position();\r\n }\r\n if (position) {\r\n if (slider.settings.mode === 'horizontal') { setPositionProperty(-position.left, 'reset', 0); }\r\n else if (slider.settings.mode === 'vertical') { setPositionProperty(-position.top, 'reset', 0); }\r\n }\r\n }\r\n // declare that the transition is complete\r\n slider.working = false;\r\n // onSlideAfter callback\r\n slider.settings.onSlideAfter.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\r\n };\r\n\r\n /**\r\n * Updates the auto controls state (either active, or combined switch)\r\n *\r\n * @param state (string) \"start\", \"stop\"\r\n * - the new state of the auto show\r\n */\r\n var updateAutoControls = function (state) {\r\n // if autoControlsCombine is true, replace the current control with the new state\r\n if (slider.settings.autoControlsCombine) {\r\n slider.controls.autoEl.html(slider.controls[state]);\r\n // if autoControlsCombine is false, apply the \"active\" class to the appropriate control\r\n } else {\r\n slider.controls.autoEl.find('a').removeClass('active');\r\n slider.controls.autoEl.find('a:not(.bx-' + state + ')').addClass('active');\r\n }\r\n };\r\n\r\n /**\r\n * Updates the direction controls (checks if either should be hidden)\r\n */\r\n var updateDirectionControls = function () {\r\n if (getPagerQty() === 1) {\r\n slider.controls.prev.addClass('disabled');\r\n slider.controls.next.addClass('disabled');\r\n } else if (!slider.settings.infiniteLoop && slider.settings.hideControlOnEnd) {\r\n // if first slide\r\n if (slider.active.index === 0) {\r\n slider.controls.prev.addClass('disabled');\r\n slider.controls.next.removeClass('disabled');\r\n // if last slide\r\n } else if (slider.active.index === getPagerQty() - 1) {\r\n slider.controls.next.addClass('disabled');\r\n slider.controls.prev.removeClass('disabled');\r\n // if any slide in the middle\r\n } else {\r\n slider.controls.prev.removeClass('disabled');\r\n slider.controls.next.removeClass('disabled');\r\n }\r\n }\r\n };\r\n /* auto start and stop functions */\r\n var windowFocusHandler = function () { el.startAuto(); };\r\n var windowBlurHandler = function () { el.stopAuto(); };\r\n /**\r\n * Initializes the auto process\r\n */\r\n var initAuto = function () {\r\n // if autoDelay was supplied, launch the auto show using a setTimeout() call\r\n if (slider.settings.autoDelay > 0) {\r\n setTimeout(el.startAuto, slider.settings.autoDelay);\r\n // if autoDelay was not supplied, start the auto show normally\r\n } else {\r\n el.startAuto();\r\n\r\n //add focus and blur events to ensure its running if timeout gets paused\r\n $(window).focus(windowFocusHandler).blur(windowBlurHandler);\r\n }\r\n // if autoHover is requested\r\n if (slider.settings.autoHover) {\r\n // on el hover\r\n el.hover(function () {\r\n // if the auto show is currently playing (has an active interval)\r\n if (slider.interval) {\r\n // stop the auto show and pass true argument which will prevent control update\r\n el.stopAuto(true);\r\n // create a new autoPaused value which will be used by the relative \"mouseout\" event\r\n slider.autoPaused = true;\r\n }\r\n }, function () {\r\n // if the autoPaused value was created be the prior \"mouseover\" event\r\n if (slider.autoPaused) {\r\n // start the auto show and pass true argument which will prevent control update\r\n el.startAuto(true);\r\n // reset the autoPaused value\r\n slider.autoPaused = null;\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Initializes the ticker process\r\n */\r\n var initTicker = function () {\r\n var startPosition = 0,\r\n position, transform, value, idx, ratio, property, newSpeed, totalDimens;\r\n // if autoDirection is \"next\", append a clone of the entire slider\r\n if (slider.settings.autoDirection === 'next') {\r\n el.append(slider.children.clone().addClass('bx-clone'));\r\n // if autoDirection is \"prev\", prepend a clone of the entire slider, and set the left position\r\n } else {\r\n el.prepend(slider.children.clone().addClass('bx-clone'));\r\n position = slider.children.first().position();\r\n startPosition = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\r\n }\r\n setPositionProperty(startPosition, 'reset', 0);\r\n // do not allow controls in ticker mode\r\n slider.settings.pager = false;\r\n slider.settings.controls = false;\r\n slider.settings.autoControls = false;\r\n // if autoHover is requested\r\n if (slider.settings.tickerHover) {\r\n if (slider.usingCSS) {\r\n idx = slider.settings.mode === 'horizontal' ? 4 : 5;\r\n slider.viewport.hover(function () {\r\n transform = el.css('-' + slider.cssPrefix + '-transform');\r\n value = parseFloat(transform.split(',')[idx]);\r\n setPositionProperty(value, 'reset', 0);\r\n }, function () {\r\n totalDimens = 0;\r\n slider.children.each(function (index) {\r\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\r\n });\r\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\r\n ratio = slider.settings.speed / totalDimens;\r\n // determine which property to use\r\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\r\n // calculate the new speed\r\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(value))));\r\n tickerLoop(newSpeed);\r\n });\r\n } else {\r\n // on el hover\r\n slider.viewport.hover(function () {\r\n el.stop();\r\n }, function () {\r\n // calculate the total width of children (used to calculate the speed ratio)\r\n totalDimens = 0;\r\n slider.children.each(function (index) {\r\n totalDimens += slider.settings.mode === 'horizontal' ? $(this).outerWidth(true) : $(this).outerHeight(true);\r\n });\r\n // calculate the speed ratio (used to determine the new speed to finish the paused animation)\r\n ratio = slider.settings.speed / totalDimens;\r\n // determine which property to use\r\n property = slider.settings.mode === 'horizontal' ? 'left' : 'top';\r\n // calculate the new speed\r\n newSpeed = ratio * (totalDimens - (Math.abs(parseInt(el.css(property)))));\r\n tickerLoop(newSpeed);\r\n });\r\n }\r\n }\r\n // start the ticker loop\r\n tickerLoop();\r\n };\r\n\r\n /**\r\n * Runs a continuous loop, news ticker-style\r\n */\r\n var tickerLoop = function (resumeSpeed) {\r\n var speed = resumeSpeed ? resumeSpeed : slider.settings.speed,\r\n position = { left: 0, top: 0 },\r\n reset = { left: 0, top: 0 },\r\n animateProperty, resetValue, params;\r\n\r\n // if \"next\" animate left position to last child, then reset left to 0\r\n if (slider.settings.autoDirection === 'next') {\r\n position = el.find('.bx-clone').first().position();\r\n // if \"prev\" animate left position to 0, then reset left to first non-clone child\r\n } else {\r\n reset = slider.children.first().position();\r\n }\r\n animateProperty = slider.settings.mode === 'horizontal' ? -position.left : -position.top;\r\n resetValue = slider.settings.mode === 'horizontal' ? -reset.left : -reset.top;\r\n params = { resetValue: resetValue };\r\n setPositionProperty(animateProperty, 'ticker', speed, params);\r\n };\r\n\r\n /**\r\n * Check if el is on screen\r\n */\r\n var isOnScreen = function (el) {\r\n var win = $(window),\r\n viewport = {\r\n top: win.scrollTop(),\r\n left: win.scrollLeft()\r\n },\r\n bounds = el.offset();\r\n\r\n viewport.right = viewport.left + win.width();\r\n viewport.bottom = viewport.top + win.height();\r\n bounds.right = bounds.left + el.outerWidth();\r\n bounds.bottom = bounds.top + el.outerHeight();\r\n\r\n return (!(viewport.right < bounds.left || viewport.left > bounds.right || viewport.bottom < bounds.top || viewport.top > bounds.bottom));\r\n };\r\n\r\n /**\r\n * Initializes keyboard events\r\n */\r\n var keyPress = function (e) {\r\n var activeElementTag = document.activeElement.tagName.toLowerCase(),\r\n tagFilters = 'input|textarea',\r\n p = new RegExp(activeElementTag, ['i']),\r\n result = p.exec(tagFilters);\r\n\r\n if (result == null && isOnScreen(el)) {\r\n if (e.keyCode === 39) {\r\n clickNextBind(e);\r\n return false;\r\n } else if (e.keyCode === 37) {\r\n clickPrevBind(e);\r\n return false;\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Initializes touch events\r\n */\r\n var initTouch = function () {\r\n // initialize object to contain all touch values\r\n slider.touch = {\r\n start: { x: 0, y: 0 },\r\n end: { x: 0, y: 0 }\r\n };\r\n slider.viewport.on('touchstart MSPointerDown pointerdown', onTouchStart);\r\n\r\n //for browsers that have implemented pointer events and fire a click after\r\n //every pointerup regardless of whether pointerup is on same screen location as pointerdown or not\r\n slider.viewport.on('click', '.bxslider a', function (e) {\r\n if (slider.viewport.hasClass('click-disabled')) {\r\n e.preventDefault();\r\n slider.viewport.removeClass('click-disabled');\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Event handler for \"touchstart\"\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var onTouchStart = function (e) {\r\n // watch only for left mouse, touch contact and pen contact\r\n // touchstart event object doesn`t have button property\r\n if (e.type !== 'touchstart' && e.button !== 0) {\r\n return;\r\n }\r\n e.preventDefault();\r\n //disable slider controls while user is interacting with slides to avoid slider freeze that happens on touch devices when a slide swipe happens immediately after interacting with slider controls\r\n slider.controls.el.addClass('disabled');\r\n\r\n if (slider.working) {\r\n slider.controls.el.removeClass('disabled');\r\n } else {\r\n // record the original position when touch starts\r\n slider.touch.originalPos = el.position();\r\n var orig = e.originalEvent,\r\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig];\r\n var chromePointerEvents = typeof PointerEvent === 'function';\r\n if (chromePointerEvents) {\r\n if (orig.pointerId === undefined) {\r\n return;\r\n }\r\n }\r\n // record the starting touch x, y coordinates\r\n slider.touch.start.x = touchPoints[0].pageX;\r\n slider.touch.start.y = touchPoints[0].pageY;\r\n\r\n if (slider.viewport.get(0).setPointerCapture) {\r\n slider.pointerId = orig.pointerId;\r\n slider.viewport.get(0).setPointerCapture(slider.pointerId);\r\n }\r\n // store original event data for click fixation\r\n slider.originalClickTarget = orig.originalTarget || orig.target;\r\n slider.originalClickButton = orig.button;\r\n slider.originalClickButtons = orig.buttons;\r\n slider.originalEventType = orig.type;\r\n // at this moment we don`t know what it is click or swipe\r\n slider.hasMove = false;\r\n // on a \"touchmove\" event to the viewport\r\n slider.viewport.on('touchmove MSPointerMove pointermove', onTouchMove);\r\n // on a \"touchend\" event to the viewport\r\n slider.viewport.on('touchend MSPointerUp pointerup', onTouchEnd);\r\n slider.viewport.on('MSPointerCancel pointercancel', onPointerCancel);\r\n }\r\n };\r\n\r\n /**\r\n * Cancel Pointer for Windows Phone\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var onPointerCancel = function (e) {\r\n e.preventDefault();\r\n /* onPointerCancel handler is needed to deal with situations when a touchend\r\n doesn't fire after a touchstart (this happens on windows phones only) */\r\n setPositionProperty(slider.touch.originalPos.left, 'reset', 0);\r\n\r\n //remove handlers\r\n slider.controls.el.removeClass('disabled');\r\n slider.viewport.off('MSPointerCancel pointercancel', onPointerCancel);\r\n slider.viewport.off('touchmove MSPointerMove pointermove', onTouchMove);\r\n slider.viewport.off('touchend MSPointerUp pointerup', onTouchEnd);\r\n if (slider.viewport.get(0).releasePointerCapture) {\r\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\r\n }\r\n };\r\n\r\n /**\r\n * Event handler for \"touchmove\"\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var onTouchMove = function (e) {\r\n var orig = e.originalEvent,\r\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\r\n // if scrolling on y axis, do not prevent default\r\n xMovement = Math.abs(touchPoints[0].pageX - slider.touch.start.x),\r\n yMovement = Math.abs(touchPoints[0].pageY - slider.touch.start.y),\r\n value = 0,\r\n change = 0;\r\n // this is swipe\r\n slider.hasMove = true;\r\n\r\n // x axis swipe\r\n if ((xMovement * 3) > yMovement && slider.settings.preventDefaultSwipeX) {\r\n e.preventDefault();\r\n // y axis swipe\r\n } else if ((yMovement * 3) > xMovement && slider.settings.preventDefaultSwipeY) {\r\n e.preventDefault();\r\n }\r\n if (e.type !== 'touchmove') {\r\n e.preventDefault();\r\n }\r\n\r\n if (slider.settings.mode !== 'fade' && slider.settings.oneToOneTouch) {\r\n // if horizontal, drag along x axis\r\n if (slider.settings.mode === 'horizontal') {\r\n change = touchPoints[0].pageX - slider.touch.start.x;\r\n value = slider.touch.originalPos.left + change;\r\n // if vertical, drag along y axis\r\n } else {\r\n change = touchPoints[0].pageY - slider.touch.start.y;\r\n value = slider.touch.originalPos.top + change;\r\n }\r\n setPositionProperty(value, 'reset', 0);\r\n }\r\n };\r\n\r\n /**\r\n * Event handler for \"touchend\"\r\n *\r\n * @param e (event)\r\n * - DOM event object\r\n */\r\n var onTouchEnd = function (e) {\r\n e.preventDefault();\r\n slider.viewport.off('touchmove MSPointerMove pointermove', onTouchMove);\r\n //enable slider controls as soon as user stops interacing with slides\r\n slider.controls.el.removeClass('disabled');\r\n var orig = e.originalEvent,\r\n touchPoints = (typeof orig.changedTouches !== 'undefined') ? orig.changedTouches : [orig],\r\n value = 0,\r\n distance = 0;\r\n // record end x, y positions\r\n slider.touch.end.x = touchPoints[0].pageX;\r\n slider.touch.end.y = touchPoints[0].pageY;\r\n // if fade mode, check if absolute x distance clears the threshold\r\n if (slider.settings.mode === 'fade') {\r\n distance = Math.abs(slider.touch.start.x - slider.touch.end.x);\r\n if (distance >= slider.settings.swipeThreshold) {\r\n if (slider.touch.start.x > slider.touch.end.x) {\r\n el.goToNextSlide();\r\n } else {\r\n el.goToPrevSlide();\r\n }\r\n el.stopAuto();\r\n }\r\n // not fade mode\r\n } else {\r\n // calculate distance and el's animate property\r\n if (slider.settings.mode === 'horizontal') {\r\n distance = slider.touch.end.x - slider.touch.start.x;\r\n value = slider.touch.originalPos.left;\r\n } else {\r\n distance = slider.touch.end.y - slider.touch.start.y;\r\n value = slider.touch.originalPos.top;\r\n }\r\n // if not infinite loop and first / last slide, do not attempt a slide transition\r\n if (!slider.settings.infiniteLoop && ((slider.active.index === 0 && distance > 0) || (slider.active.last && distance < 0))) {\r\n setPositionProperty(value, 'reset', 200);\r\n } else {\r\n // check if distance clears threshold\r\n if (Math.abs(distance) >= slider.settings.swipeThreshold) {\r\n if (distance < 0) {\r\n el.goToNextSlide();\r\n } else {\r\n el.goToPrevSlide();\r\n }\r\n el.stopAuto();\r\n } else {\r\n // el.animate(property, 200);\r\n setPositionProperty(value, 'reset', 200);\r\n }\r\n }\r\n }\r\n slider.viewport.off('touchend MSPointerUp pointerup', onTouchEnd);\r\n\r\n if (slider.viewport.get(0).releasePointerCapture) {\r\n slider.viewport.get(0).releasePointerCapture(slider.pointerId);\r\n }\r\n // if slider had swipe with left mouse, touch contact and pen contact\r\n if (slider.hasMove === false && (slider.originalClickButton === 0 || slider.originalEventType === 'touchstart')) {\r\n // trigger click event (fix for Firefox59 and PointerEvent standard compatibility)\r\n $(slider.originalClickTarget).trigger({\r\n type: 'click',\r\n button: slider.originalClickButton,\r\n buttons: slider.originalClickButtons\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Window resize event callback\r\n */\r\n var resizeWindow = function (e) {\r\n // don't do anything if slider isn't initialized.\r\n if (!slider.initialized) { return; }\r\n // Delay if slider working.\r\n if (slider.working) {\r\n window.setTimeout(resizeWindow, 10);\r\n } else {\r\n // get the new window dimens (again, thank you IE)\r\n var windowWidthNew = $(window).width(),\r\n windowHeightNew = $(window).height();\r\n // make sure that it is a true window resize\r\n // *we must check this because our dinosaur friend IE fires a window resize event when certain DOM elements\r\n // are resized. Can you just die already?*\r\n if (windowWidth !== windowWidthNew || windowHeight !== windowHeightNew) {\r\n // set the new window dimens\r\n windowWidth = windowWidthNew;\r\n windowHeight = windowHeightNew;\r\n // update all dynamic elements\r\n el.redrawSlider();\r\n // Call user resize handler\r\n slider.settings.onSliderResize.call(el, slider.active.index);\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * Adds an aria-hidden=true attribute to each element\r\n *\r\n * @param startVisibleIndex (int)\r\n * - the first visible element's index\r\n */\r\n var applyAriaHiddenAttributes = function (startVisibleIndex) {\r\n var numberOfSlidesShowing = getNumberSlidesShowing();\r\n // only apply attributes if the setting is enabled and not in ticker mode\r\n if (slider.settings.ariaHidden && !slider.settings.ticker) {\r\n // add aria-hidden=true to all elements\r\n slider.children.attr('aria-hidden', 'true');\r\n // get the visible elements and change to aria-hidden=false\r\n slider.children.slice(startVisibleIndex, startVisibleIndex + numberOfSlidesShowing).attr('aria-hidden', 'false');\r\n }\r\n };\r\n\r\n /**\r\n * Returns index according to present page range\r\n *\r\n * @param slideOndex (int)\r\n * - the desired slide index\r\n */\r\n var setSlideIndex = function (slideIndex) {\r\n if (slideIndex < 0) {\r\n if (slider.settings.infiniteLoop) {\r\n return getPagerQty() - 1;\r\n } else {\r\n //we don't go to undefined slides\r\n return slider.active.index;\r\n }\r\n // if slideIndex is greater than children length, set active index to 0 (this happens during infinite loop)\r\n } else if (slideIndex >= getPagerQty()) {\r\n if (slider.settings.infiniteLoop) {\r\n return 0;\r\n } else {\r\n //we don't move to undefined pages\r\n return slider.active.index;\r\n }\r\n // set active index to requested slide\r\n } else {\r\n return slideIndex;\r\n }\r\n };\r\n\r\n /**\r\n * ===================================================================================\r\n * = PUBLIC FUNCTIONS\r\n * ===================================================================================\r\n */\r\n\r\n /**\r\n * Performs slide transition to the specified slide\r\n *\r\n * @param slideIndex (int)\r\n * - the destination slide's index (zero-based)\r\n *\r\n * @param direction (string)\r\n * - INTERNAL USE ONLY - the direction of travel (\"prev\" / \"next\")\r\n */\r\n el.goToSlide = function (slideIndex, direction) {\r\n // onSlideBefore, onSlideNext, onSlidePrev callbacks\r\n // Allow transition canceling based on returned value\r\n var performTransition = true,\r\n moveBy = 0,\r\n position = { left: 0, top: 0 },\r\n lastChild = null,\r\n lastShowingIndex, eq, value, requestEl;\r\n // store the old index\r\n slider.oldIndex = slider.active.index;\r\n //set new index\r\n slider.active.index = setSlideIndex(slideIndex);\r\n\r\n // if plugin is currently in motion, ignore request\r\n if (slider.working || slider.active.index === slider.oldIndex) { return; }\r\n // declare that plugin is in motion\r\n slider.working = true;\r\n\r\n performTransition = slider.settings.onSlideBefore.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index);\r\n\r\n // If transitions canceled, reset and return\r\n if (typeof (performTransition) !== 'undefined' && !performTransition) {\r\n slider.active.index = slider.oldIndex; // restore old index\r\n slider.working = false; // is not in motion\r\n return;\r\n }\r\n\r\n if (direction === 'next') {\r\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\r\n if (!slider.settings.onSlideNext.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\r\n performTransition = false;\r\n }\r\n } else if (direction === 'prev') {\r\n // Prevent canceling in future functions or lack there-of from negating previous commands to cancel\r\n if (!slider.settings.onSlidePrev.call(el, slider.children.eq(slider.active.index), slider.oldIndex, slider.active.index)) {\r\n performTransition = false;\r\n }\r\n }\r\n\r\n // check if last slide\r\n slider.active.last = slider.active.index >= getPagerQty() - 1;\r\n // update the pager with active class\r\n if (slider.settings.pager || slider.settings.pagerCustom) { updatePagerActive(slider.active.index); }\r\n // // check for direction control update\r\n if (slider.settings.controls) { updateDirectionControls(); }\r\n // if slider is set to mode: \"fade\"\r\n if (slider.settings.mode === 'fade') {\r\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\r\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\r\n slider.viewport.animate({ height: getViewportHeight() }, slider.settings.adaptiveHeightSpeed);\r\n }\r\n // fade out the visible child and reset its z-index value\r\n slider.children.filter(':visible').fadeOut(slider.settings.speed).css({ zIndex: 0 });\r\n // fade in the newly requested slide\r\n slider.children.eq(slider.active.index).css('zIndex', slider.settings.slideZIndex + 1).fadeIn(slider.settings.speed, function () {\r\n $(this).css('zIndex', slider.settings.slideZIndex);\r\n updateAfterSlideTransition();\r\n });\r\n // slider mode is not \"fade\"\r\n } else {\r\n // if adaptiveHeight is true and next height is different from current height, animate to the new height\r\n if (slider.settings.adaptiveHeight && slider.viewport.height() !== getViewportHeight()) {\r\n slider.viewport.animate({ height: getViewportHeight() }, slider.settings.adaptiveHeightSpeed);\r\n }\r\n // if carousel and not infinite loop\r\n if (!slider.settings.infiniteLoop && slider.carousel && slider.active.last) {\r\n if (slider.settings.mode === 'horizontal') {\r\n // get the last child position\r\n lastChild = slider.children.eq(slider.children.length - 1);\r\n position = lastChild.position();\r\n // calculate the position of the last slide\r\n moveBy = slider.viewport.width() - lastChild.outerWidth();\r\n } else {\r\n // get last showing index position\r\n lastShowingIndex = slider.children.length - slider.settings.minSlides;\r\n position = slider.children.eq(lastShowingIndex).position();\r\n }\r\n // horizontal carousel, going previous while on first slide (infiniteLoop mode)\r\n } else if (slider.carousel && slider.active.last && direction === 'prev') {\r\n // get the last child position\r\n eq = slider.settings.moveSlides === 1 ? slider.settings.maxSlides - getMoveBy() : ((getPagerQty() - 1) * getMoveBy()) - (slider.children.length - slider.settings.maxSlides);\r\n lastChild = el.children('.bx-clone').eq(eq);\r\n position = lastChild.position();\r\n // if infinite loop and \"Next\" is clicked on the last slide\r\n } else if (direction === 'next' && slider.active.index === 0) {\r\n // get the last clone position\r\n position = el.find('> .bx-clone').eq(slider.settings.maxSlides).position();\r\n slider.active.last = false;\r\n // normal non-zero requests\r\n } else if (slideIndex >= 0) {\r\n //parseInt is applied to allow floats for slides/page\r\n requestEl = slideIndex * parseInt(getMoveBy());\r\n position = slider.children.eq(requestEl).position();\r\n }\r\n\r\n /* If the position doesn't exist\r\n * (e.g. if you destroy the slider on a next click),\r\n * it doesn't throw an error.\r\n */\r\n if (typeof (position) !== 'undefined') {\r\n value = slider.settings.mode === 'horizontal' ? -(position.left - moveBy) : -position.top;\r\n // plugin values to be animated\r\n setPositionProperty(value, 'slide', slider.settings.speed);\r\n }\r\n slider.working = false;\r\n }\r\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\r\n };\r\n\r\n /**\r\n * Transitions to the next slide in the show\r\n */\r\n el.goToNextSlide = function () {\r\n // if infiniteLoop is false and last page is showing, disregard call\r\n if (!slider.settings.infiniteLoop && slider.active.last) { return; }\r\n if (slider.working === true) { return; }\r\n var pagerIndex = parseInt(slider.active.index) + 1;\r\n el.goToSlide(pagerIndex, 'next');\r\n };\r\n\r\n /**\r\n * Transitions to the prev slide in the show\r\n */\r\n el.goToPrevSlide = function () {\r\n // if infiniteLoop is false and last page is showing, disregard call\r\n if (!slider.settings.infiniteLoop && slider.active.index === 0) { return; }\r\n if (slider.working === true) { return; }\r\n var pagerIndex = parseInt(slider.active.index) - 1;\r\n el.goToSlide(pagerIndex, 'prev');\r\n };\r\n\r\n /**\r\n * Starts the auto show\r\n *\r\n * @param preventControlUpdate (boolean)\r\n * - if true, auto controls state will not be updated\r\n */\r\n el.startAuto = function (preventControlUpdate) {\r\n // if an interval already exists, disregard call\r\n if (slider.interval) { return; }\r\n // create an interval\r\n slider.interval = setInterval(function () {\r\n if (slider.settings.autoDirection === 'next') {\r\n el.goToNextSlide();\r\n } else {\r\n el.goToPrevSlide();\r\n }\r\n }, slider.settings.pause);\r\n //allback for when the auto rotate status changes\r\n slider.settings.onAutoChange.call(el, true);\r\n // if auto controls are displayed and preventControlUpdate is not true\r\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('stop'); }\r\n };\r\n\r\n /**\r\n * Stops the auto show\r\n *\r\n * @param preventControlUpdate (boolean)\r\n * - if true, auto controls state will not be updated\r\n */\r\n el.stopAuto = function (preventControlUpdate) {\r\n // if slider is auto paused, just clear that state\r\n if (slider.autoPaused) slider.autoPaused = false;\r\n // if no interval exists, disregard call\r\n if (!slider.interval) { return; }\r\n // clear the interval\r\n clearInterval(slider.interval);\r\n slider.interval = null;\r\n //allback for when the auto rotate status changes\r\n slider.settings.onAutoChange.call(el, false);\r\n // if auto controls are displayed and preventControlUpdate is not true\r\n if (slider.settings.autoControls && preventControlUpdate !== true) { updateAutoControls('start'); }\r\n };\r\n\r\n /**\r\n * Returns current slide index (zero-based)\r\n */\r\n el.getCurrentSlide = function () {\r\n return slider.active.index;\r\n };\r\n\r\n /**\r\n * Returns current slide element\r\n */\r\n el.getCurrentSlideElement = function () {\r\n return slider.children.eq(slider.active.index);\r\n };\r\n\r\n /**\r\n * Returns a slide element\r\n * @param index (int)\r\n * - The index (zero-based) of the element you want returned.\r\n */\r\n el.getSlideElement = function (index) {\r\n return slider.children.eq(index);\r\n };\r\n\r\n /**\r\n * Returns number of slides in show\r\n */\r\n el.getSlideCount = function () {\r\n return slider.children.length;\r\n };\r\n\r\n /**\r\n * Return slider.working variable\r\n */\r\n el.isWorking = function () {\r\n return slider.working;\r\n };\r\n\r\n /**\r\n * Update all dynamic slider elements\r\n */\r\n el.redrawSlider = function () {\r\n // resize all children in ratio to new screen size\r\n slider.children.add(el.find('.bx-clone')).outerWidth(getSlideWidth());\r\n // adjust the height\r\n slider.viewport.css('height', getViewportHeight());\r\n // update the slide position\r\n if (!slider.settings.ticker) { setSlidePosition(); }\r\n // if active.last was true before the screen resize, we want\r\n // to keep it last no matter what screen size we end on\r\n if (slider.active.last) { slider.active.index = getPagerQty() - 1; }\r\n // if the active index (page) no longer exists due to the resize, simply set the index as last\r\n if (slider.active.index >= getPagerQty()) { slider.active.last = true; }\r\n // if a pager is being displayed and a custom pager is not being used, update it\r\n if (slider.settings.pager && !slider.settings.pagerCustom) {\r\n populatePager();\r\n updatePagerActive(slider.active.index);\r\n }\r\n if (slider.settings.ariaHidden) { applyAriaHiddenAttributes(slider.active.index * getMoveBy()); }\r\n };\r\n\r\n /**\r\n * Destroy the current instance of the slider (revert everything back to original state)\r\n */\r\n el.destroySlider = function () {\r\n // don't do anything if slider has already been destroyed\r\n if (!slider.initialized) { return; }\r\n slider.initialized = false;\r\n $('.bx-clone', this).remove();\r\n slider.children.each(function () {\r\n if ($(this).data('origStyle') !== undefined) {\r\n $(this).attr('style', $(this).data('origStyle'));\r\n } else {\r\n $(this).removeAttr('style');\r\n }\r\n });\r\n if ($(this).data('origStyle') !== undefined) {\r\n this.attr('style', $(this).data('origStyle'));\r\n } else {\r\n $(this).removeAttr('style');\r\n }\r\n $(this).unwrap().unwrap();\r\n if (slider.controls.el) { slider.controls.el.remove(); }\r\n if (slider.controls.next) { slider.controls.next.remove(); }\r\n if (slider.controls.prev) { slider.controls.prev.remove(); }\r\n if (slider.pagerEl && slider.settings.controls && !slider.settings.pagerCustom) { slider.pagerEl.remove(); }\r\n $('.bx-caption', this).remove();\r\n if (slider.controls.autoEl) { slider.controls.autoEl.remove(); }\r\n clearInterval(slider.interval);\r\n if (slider.settings.responsive) { $(window).off('resize', resizeWindow); }\r\n if (slider.settings.keyboardEnabled) { $(document).off('keydown', keyPress); }\r\n //remove self reference in data\r\n $(this).removeData('bxSlider');\r\n // remove global window handlers\r\n $(window).off('blur', windowBlurHandler).off('focus', windowFocusHandler);\r\n };\r\n\r\n /**\r\n * Reload the slider (revert all DOM changes, and re-initialize)\r\n */\r\n el.reloadSlider = function (settings) {\r\n if (settings !== undefined) { options = settings; }\r\n el.destroySlider();\r\n init();\r\n //store reference to self in order to access public functions later\r\n $(el).data('bxSlider', this);\r\n };\r\n\r\n init();\r\n\r\n $(el).data('bxSlider', this);\r\n\r\n // returns the current jQuery object\r\n return this;\r\n };\r\n\r\n})(jQuery);","(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})(window.jQuery);\r\n","/*!\r\n\tZoom 1.7.20\r\n\tlicense: MIT\r\n\thttp://www.jacklmoore.com/zoom\r\n*/\r\n(function ($) {\r\n\tvar defaults = {\r\n\t\turl: false,\r\n\t\tcallback: false,\r\n\t\ttarget: false,\r\n\t\tduration: 120,\r\n\t\tscale: 1,\r\n\t\ton: 'mouseover', // other options: grab, click, toggle\r\n\t\ttouch: true, // enables a touch fallback\r\n\t\tonZoomIn: false,\r\n\t\tonZoomOut: false,\r\n\t\tmagnify: 1\r\n\t};\r\n\r\n\t// Core Zoom Logic, independent of event listeners.\r\n\t$.zoom = function(target, source, img, magnify, scale) {\r\n\t\tvar targetHeight,\r\n\t\t\ttargetWidth,\r\n\t\t\tsourceHeight,\r\n\t\t\tsourceWidth,\r\n\t\t\txRatio,\r\n\t\t\tyRatio,\r\n\t\t\toffset,\r\n\t\t\t$target = $(target),\r\n\t\t\tposition = $target.css('position'),\r\n\t\t\t$source = $(source);\r\n\r\n\t\t// The parent element needs positioning so that the zoomed element can be correctly positioned within.\r\n\t\ttarget.style.position = /(absolute|fixed)/.test(position) ? position : 'relative';\r\n\t\ttarget.style.overflow = 'hidden';\r\n\t\timg.style.width = img.style.height = '';\r\n\r\n\t\t$(img)\r\n\t\t\t.addClass('zoomImg')\r\n\t\t\t.css({\r\n\t\t\t\tposition: 'absolute',\r\n\t\t\t\ttop: 0,\r\n\t\t\t\tleft: 0,\r\n\t\t\t\topacity: 0,\r\n\t\t\t\twidth: img.width * magnify,\r\n\t\t\t\theight: img.height * magnify,\r\n\t\t\t\tborder: 'none',\r\n\t\t\t\tmaxWidth: 'none',\r\n\t\t\t\tmaxHeight: 'none'\r\n\t\t\t})\r\n\t\t\t.appendTo(target);\r\n\r\n\t\treturn {\r\n\t\t\tinit: function() {\r\n\t\t\t\ttargetWidth = $target.outerWidth();\r\n\t\t\t\ttargetHeight = $target.outerHeight();\r\n\r\n\t\t\t\tif (source === target) {\r\n\t\t\t\t\tsourceWidth = targetWidth * scale;\r\n\t\t\t\t\tsourceHeight = targetHeight * scale;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsourceWidth = $source.outerWidth() * scale;\r\n\t\t\t\t\tsourceHeight = $source.outerHeight() * scale;\r\n\t\t\t\t}\r\n\r\n\t\t\t\txRatio = (img.width - targetWidth) / sourceWidth;\r\n\t\t\t\tyRatio = (img.height - targetHeight) / sourceHeight;\r\n\r\n\t\t\t\toffset = $source.offset();\r\n\t\t\t},\r\n\t\t\tmove: function (e) {\r\n\t\t\t\tvar left = (e.pageX - offset.left),\r\n\t\t\t\t\ttop = (e.pageY - offset.top);\r\n\t\t\t\ttop = Math.max(Math.min(top, sourceHeight), 0);\r\n\t\t\t\tleft = Math.max(Math.min(left, sourceWidth), 0);\r\n\r\n\t\t\t\timg.style.left = (left * -xRatio) + 'px';\r\n\t\t\t\timg.style.top = (top * -yRatio) + 'px';\r\n\t\t\t}\r\n\t\t};\r\n\t};\r\n\r\n\t$.fn.zoom = function (options) {\r\n\t\treturn this.each(function () {\r\n\t\t\tvar\r\n\t\t\tsettings = $.extend({}, defaults, options || {}),\r\n\t\t\t//target will display the zoomed image\r\n\t\t\ttarget = settings.target && $(settings.target)[0] || this,\r\n\t\t\t//source will provide zoom location info (thumbnail)\r\n\t\t\tsource = this,\r\n\t\t\t$source = $(source),\r\n\t\t\timg = document.createElement('img'),\r\n\t\t\t$img = $(img),\r\n\t\t\tmousemove = 'mousemove.zoom',\r\n\t\t\tclicked = false,\r\n\t\t\ttouched = false;\r\n\r\n\t\t\t// If a url wasn't specified, look for an image element.\r\n\t\t\tif (!settings.url) {\r\n\t\t\t\tvar srcElement = source.querySelector('img');\r\n\t\t\t\tif (srcElement) {\r\n\t\t\t\t\tsettings.url = srcElement.getAttribute('data-src') || srcElement.currentSrc || srcElement.src;\r\n\t\t\t\t}\r\n\t\t\t\tif (!settings.url) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t$source.one('zoom.destroy', function(position, overflow){\r\n\t\t\t\t$source.off('.zoom');\r\n\t\t\t\ttarget.style.position = position;\r\n\t\t\t\ttarget.style.overflow = overflow;\r\n\t\t\t\timg.onload = null;\r\n\t\t\t\t$img.remove();\r\n\t\t\t}.bind(this, target.style.position, target.style.overflow));\r\n\r\n\t\t\timg.onload = function () {\r\n\t\t\t\tvar zoom = $.zoom(target, source, img, settings.magnify, settings.scale);\r\n\r\n\t\t\t\tfunction start(e) {\r\n\t\t\t\t\t$img.data('started', true);\r\n\t\t\t\t\tzoom.init();\r\n\t\t\t\t\tzoom.move(e);\r\n\r\n\t\t\t\t\t// Skip the fade-in for IE8 and lower since it chokes on fading-in\r\n\t\t\t\t\t// and changing position based on mousemovement at the same time.\r\n\t\t\t\t\t$img.stop()\r\n\t\t\t\t\t.fadeTo($.support.opacity ? settings.duration : 0, 1, $.isFunction(settings.onZoomIn) ? settings.onZoomIn.call(img) : false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction stop() {\r\n\t\t\t\t\t$img.stop()\r\n\t\t\t\t\t.fadeTo(settings.duration, 0, $.isFunction(settings.onZoomOut) ? settings.onZoomOut.call(img) : false);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction move(e) {\r\n\t\t\t\t\tif (!$img.data('started')) {\r\n\t\t\t\t\t\tstart(e);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tzoom.move(e);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Mouse events\r\n\t\t\t\tzoom.init(); // Preemptively call init because IE7 will fire the mousemove handler before the hover handler.\r\n\r\n\t\t\t\t$source\r\n\t\t\t\t\t.on('mouseenter.zoom', start)\r\n\t\t\t\t\t.on('mouseleave.zoom', stop)\r\n\t\t\t\t\t.on(mousemove, move);\r\n\r\n\t\t\t\t// Touch fallback\r\n\t\t\t\tif (settings.touch) {\r\n\t\t\t\t\t$source\r\n\t\t\t\t\t\t.on('touchstart.zoom', function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tif (touched) {\r\n\t\t\t\t\t\t\t\ttouched = false;\r\n\t\t\t\t\t\t\t\tstop();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\ttouched = true;\r\n\t\t\t\t\t\t\t\tstart( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.on('touchmove.zoom', function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tzoom.move( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t\t.on('touchend.zoom', function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tif (touched) {\r\n\t\t\t\t\t\t\t\ttouched = false;\r\n\t\t\t\t\t\t\t\tstop();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ($.isFunction(settings.callback)) {\r\n\t\t\t\t\tsettings.callback.call(img);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\timg.setAttribute('role', 'presentation');\r\n\t\t\timg.src = settings.url;\r\n\t\t});\r\n\t};\r\n\r\n\t$.fn.zoom.defaults = defaults;\r\n}(window.jQuery));\r\n","/**\r\n * @license\r\n * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE\r\n * Build: `lodash include=\"each,cloneDeep,take,merge,filter,map,reduce,find,get,reject,remove,some,pull,pullAllBy,findIndex,keyBy,sortBy,includes,isEmpty,isEqual,inRange,isInteger,size,trim,deburr,replace,camelCase,kebabCase,unescape,debounce,throttle,uniqBy,difference,random\"`\r\n */\r\n;(function(){function n(n,t){return n.set(t[0],t[1]),n}function t(n,t){return n.add(t),n}function r(n,t,r){switch(r.length){case 0:return n.call(t);case 1:return n.call(t,r[0]);case 2:return n.call(t,r[0],r[1]);case 3:return n.call(t,r[0],r[1],r[2])}return n.apply(t,r)}function e(n,t,r,e){for(var u=-1,o=null==n?0:n.length;++u-1}function f(n,t,r){for(var e=-1,u=null==n?0:n.length;++e-1;);return r}function E(n,t){for(var r=n.length;r--&&g(t,n[r],0)>-1;);return r}function I(n,t){return null==n?ce:n[t]}function S(n){return lo.test(n)}function T(n){\r\nreturn so.test(n)}function k(n){var t=-1,r=Array(n.size);return n.forEach(function(n,e){r[++t]=[e,n]}),r}function L(n,t){return function(r){return n(t(r))}}function U(n){var t=-1,r=Array(n.size);return n.forEach(function(n){r[++t]=n}),r}function $(n,t,r){for(var e=r-1,u=n.length;++e-1}function Q(n,t){var r=this.__data__,e=dn(r,n);return e<0?(++this.size,r.push([n,t])):r[e][1]=t,this}function X(n){\r\nvar t=-1,r=null==n?0:n.length;for(this.clear();++t=le&&(o=A,a=false,t=new on(t));n:for(;++u0&&r(f)?t>1?zn(f,t-1,r,e,u):a(u,f):e||(u[u.length]=f)}return u}function En(n,t){return n&&xi(n,t,Wr)}function In(n,t){t=ut(t,n);for(var r=0,e=t.length;null!=n&&r=ei(t,r)&&n-1;)f!==n&&Ho.call(f,a,1),Ho.call(n,a,1);return n}function Jn(n,t){for(var r=n?t.length:0,e=r-1;r--;){var u=t[r];if(r==e||u!==o){var o=u;Mt(u)?Ho.call(n,u,1):et(n,u)}}return n}function Kn(n,t){return n+Qo(oi()*(t-n+1))}function Qn(n,t){return Ii(Xt(n,t,re),n+\"\")}function Xn(n,t,r){var e=-1,u=n.length;t<0&&(t=-t>u?0:u+t),r=r>u?u:r,r<0&&(r+=u),u=t>r?0:r-t>>>0,t>>>=0;for(var o=Array(u);++e=le){var s=t?null:Oi(n);if(s)return U(s);c=false,u=A,l=new on}else l=t?[]:a;n:for(;++e=e?n:Xn(n,t,r)}function it(n,t){if(t)return n.slice();var r=n.length,e=Wo?Wo(r):new n.constructor(r);return n.copy(e),e}function ft(n){var t=new n.constructor(n.byteLength);return new Zo(t).set(new Zo(n)),t}function ct(n,t){return new n.constructor(t?ft(n.buffer):n.buffer,n.byteOffset,n.byteLength);\r\n}function at(t,r,e){return l(r?e(k(t),ve):k(t),n,new t.constructor)}function lt(n){var t=new n.constructor(n.source,hu.exec(n));return t.lastIndex=n.lastIndex,t}function st(n,r,e){return l(r?e(U(n),ve):U(n),t,new n.constructor)}function ht(n){return di?Object(di.call(n)):{}}function pt(n,t){return new n.constructor(t?ft(n.buffer):n.buffer,n.byteOffset,n.length)}function vt(n,t){if(n!==t){var r=n!==ce,e=null===n,u=n===n,o=Rr(n),i=t!==ce,f=null===t,c=t===t,a=Rr(t);if(!f&&!a&&!o&&n>t||o&&i&&c&&!f&&!a||e&&i&&c||!r&&c||!u)return 1;\r\nif(!e&&!o&&!a&&n=f)return c;return c*(\"desc\"==r[e]?-1:1)}}return n.b-t.b}function yt(n,t){var r=-1,e=n.length;for(t||(t=Array(e));++r1?r[u-1]:ce,i=u>2?r[2]:ce;for(o=n.length>3&&typeof o==\"function\"?(u--,o):ce,i&&Zt(r[0],r[1],i)&&(o=u<3?ce:o,u=1),t=Object(t);++e-1?u[o?t[i]:i]:ce;\r\n}}function Et(n,t,r,e,u,o){var i=r&be,f=n.length,c=t.length;if(f!=c&&!(i&&c>f))return false;var a=o.get(n);if(a&&o.get(t))return a==t;var l=-1,h=true,p=r&de?new on:ce;for(o.set(n,t),o.set(t,n);++l-1&&n%1==0&&n0){if(++t>=_e)return arguments[0]}else t=0;return n.apply(ce,arguments)}}function rr(n){if(typeof n==\"string\"||Rr(n))return n;var t=n+\"\";return\"0\"==t&&1/n==-we?\"-0\":t}function er(n){if(null!=n){try{return Co.call(n)}catch(n){}try{return n+\"\"}catch(n){}}return\"\"}function ur(n,t,r){var e=null==n?0:n.length;if(!e)return-1;var u=null==r?0:Fr(r);return u<0&&(u=ri(e+u,0)),v(n,Lt(t,3),u)}function or(n){var t=null==n?0:n.length;return t?n[t-1]:ce}function ir(n,t){return n&&n.length&&t&&t.length?Yn(n,t):n;\r\n}function fr(n,t,r){return n&&n.length&&t&&t.length?Yn(n,t,Lt(r,2)):n}function cr(n,t){var r=[];if(!n||!n.length)return r;var e=-1,u=[],o=n.length;for(t=Lt(t,3);++e-1:!!u&&g(n,t,r)>-1}function vr(n,t){return(Di(n)?c:Mn)(n,Lt(t,3))}function gr(n,t,r){var e=Di(n)?l:j,u=arguments.length<3;return e(n,Lt(t,4),r,u,wi)}function yr(n,t){return(Di(n)?o:An)(n,wr(Lt(t,3)))}function br(n){if(null==n)return 0;if(Ar(n))return Cr(n)?C(n):n.length;var t=Ei(n);return t==Ue||t==Pe?n.size:Pn(n).length}function dr(n,t,r){var e=Di(n)?s:nt;return r&&Zt(n,t,r)&&(t=ce),e(n,Lt(t,3))}function _r(n,t,r){function e(t){\r\nvar r=h,e=p;return h=p=ce,d=t,g=n.apply(e,r)}function u(n){return d=n,y=setTimeout(f,t),_?e(n):g}function o(n){var r=n-b,e=n-d,u=t-r;return j?ei(u,v-e):u}function i(n){var r=n-b,e=n-d;return b===ce||r>=t||r<0||j&&e>=v}function f(){var n=Ci();return i(n)?c(n):(y=setTimeout(f,o(n)),ce)}function c(n){return y=ce,w&&h?e(n):(h=p=ce,g)}function a(){y!==ce&&clearTimeout(y),d=0,h=b=p=y=ce}function l(){return y===ce?g:c(Ci())}function s(){var n=Ci(),r=i(n);if(h=arguments,p=this,b=n,r){if(y===ce)return u(b);\r\nif(j)return y=setTimeout(f,t),e(b)}return y===ce&&(y=setTimeout(f,t)),g}var h,p,v,g,y,b,d=0,_=false,j=false,w=true;if(typeof n!=\"function\")throw new TypeError(se);return t=Nr(t)||0,Lr(r)&&(_=!!r.leading,j=\"maxWait\"in r,v=j?ri(Nr(r.maxWait)||0,t):v,w=\"trailing\"in r?!!r.trailing:w),s.cancel=a,s.flush=l,s}function jr(n,t){if(typeof n!=\"function\"||null!=t&&typeof t!=\"function\")throw new TypeError(se);var r=function(){var e=arguments,u=t?t.apply(this,e):e[0],o=r.cache;if(o.has(u))return o.get(u);var i=n.apply(this,e);\r\nreturn r.cache=o.set(u,i)||o,i};return r.cache=new(jr.Cache||X),r}function wr(n){if(typeof n!=\"function\")throw new TypeError(se);return function(){var t=arguments;switch(t.length){case 0:return!n.call(this);case 1:return!n.call(this,t[0]);case 2:return!n.call(this,t[0],t[1]);case 3:return!n.call(this,t[0],t[1],t[2])}return!n.apply(this,t)}}function xr(n,t,r){var e=true,u=true;if(typeof n!=\"function\")throw new TypeError(se);return Lr(r)&&(e=\"leading\"in r?!!r.leading:e,u=\"trailing\"in r?!!r.trailing:u),\r\n_r(n,t,{leading:e,maxWait:t,trailing:u})}function mr(n){return mn(n,ve|ye)}function Or(n,t){return n===t||n!==n&&t!==t}function Ar(n){return null!=n&&kr(n.length)&&!Sr(n)}function zr(n){return Ur(n)&&Ar(n)}function Er(n){if(null==n)return true;if(Ar(n)&&(Di(n)||typeof n==\"string\"||typeof n.splice==\"function\"||Fi(n)||Ni(n)||Ri(n)))return!n.length;var t=Ei(n);if(t==Ue||t==Pe)return!n.size;if(Vt(n))return!Pn(n).length;for(var r in n)if(Ro.call(n,r))return false;return true}function Ir(n,t){return $n(n,t)}function Sr(n){\r\nif(!Lr(n))return false;var t=Tn(n);return t==ke||t==Le||t==Ee||t==Fe}function Tr(n){return typeof n==\"number\"&&n==Fr(n)}function kr(n){return typeof n==\"number\"&&n>-1&&n%1==0&&n<=xe}function Lr(n){var t=typeof n;return null!=n&&(\"object\"==t||\"function\"==t)}function Ur(n){return null!=n&&typeof n==\"object\"}function $r(n){if(!Ur(n)||Tn(n)!=Re)return false;var t=qo(n);if(null===t)return true;var r=Ro.call(t,\"constructor\")&&t.constructor;return typeof r==\"function\"&&r instanceof r&&Co.call(r)==No}function Cr(n){return typeof n==\"string\"||!Di(n)&&Ur(n)&&Tn(n)==Be;\r\n}function Rr(n){return typeof n==\"symbol\"||Ur(n)&&Tn(n)==Me}function Dr(n){if(!n)return 0===n?n:0;if(n=Nr(n),n===we||n===-we){return(n<0?-1:1)*me}return n===n?n:0}function Fr(n){var t=Dr(n),r=t%1;return t===t?r?t-r:t:0}function Nr(n){if(typeof n==\"number\")return n;if(Rr(n))return Oe;if(Lr(n)){var t=typeof n.valueOf==\"function\"?n.valueOf():n;n=Lr(t)?t+\"\":t}if(typeof n!=\"string\")return 0===n?n:+n;n=n.replace(au,\"\");var r=vu.test(n);return r||yu.test(n)?bo(n.slice(2),r?2:8):pu.test(n)?Oe:+n}function Pr(n){\r\nreturn bt(n,qr(n))}function Br(n){return null==n?\"\":tt(n)}function Mr(n,t,r){var e=null==n?ce:In(n,t);return e===ce?r:e}function Zr(n,t){return null!=n&&Dt(n,t,kn)}function Wr(n){return Ar(n)?gn(n):Pn(n)}function qr(n){return Ar(n)?gn(n,true):Bn(n)}function Gr(n){return null==n?[]:O(n,Wr(n))}function Vr(n,t,r){return t=Dr(t),r===ce?(r=t,t=0):r=Dr(r),n=Nr(n),Ln(n,t,r)}function Hr(n,t,r){if(r&&typeof r!=\"boolean\"&&Zt(n,t,r)&&(t=r=ce),r===ce&&(typeof t==\"boolean\"?(r=t,t=ce):typeof n==\"boolean\"&&(r=n,n=ce)),\r\nn===ce&&t===ce?(n=0,t=1):(n=Dr(n),t===ce?(t=n,n=0):t=Dr(t)),n>t){var e=n;n=t,t=e}if(r||n%1||t%1){var u=oi();return ei(n+u*(t-n+yo(\"1e-\"+((u+\"\").length-1))),t)}return Kn(n,t)}function Yr(n){return Zi(Br(n).toLowerCase())}function Jr(n){return n=Br(n),n&&n.replace(du,So).replace(fo,\"\")}function Kr(){var n=arguments,t=Br(n[0]);return n.length<3?t:t.replace(n[1],n[2])}function Qr(n,t,r){if(n=Br(n),n&&(r||t===ce))return n.replace(au,\"\");if(!n||!(t=tt(t)))return n;var e=R(n),u=R(t);return ot(e,z(e,u),E(e,u)+1).join(\"\");\r\n}function Xr(n){return n=Br(n),n&&eu.test(n)?n.replace(ru,To):n}function ne(n,t,r){return n=Br(n),t=r?ce:t,t===ce?T(n)?N(n):p(n):n.match(t)||[]}function te(n){return function(){return n}}function re(n){return n}function ee(n){return Nn(typeof n==\"function\"?n:mn(n,ve))}function ue(){}function oe(n){return Wt(n)?d(rr(n)):Hn(n)}function ie(){return[]}function fe(){return false}var ce,ae=\"4.17.4\",le=200,se=\"Expected a function\",he=\"__lodash_hash_undefined__\",pe=500,ve=1,ge=2,ye=4,be=1,de=2,_e=800,je=16,we=1/0,xe=9007199254740991,me=1.7976931348623157e308,Oe=NaN,Ae=\"[object Arguments]\",ze=\"[object Array]\",Ee=\"[object AsyncFunction]\",Ie=\"[object Boolean]\",Se=\"[object Date]\",Te=\"[object Error]\",ke=\"[object Function]\",Le=\"[object GeneratorFunction]\",Ue=\"[object Map]\",$e=\"[object Number]\",Ce=\"[object Null]\",Re=\"[object Object]\",De=\"[object Promise]\",Fe=\"[object Proxy]\",Ne=\"[object RegExp]\",Pe=\"[object Set]\",Be=\"[object String]\",Me=\"[object Symbol]\",Ze=\"[object Undefined]\",We=\"[object WeakMap]\",qe=\"[object ArrayBuffer]\",Ge=\"[object DataView]\",Ve=\"[object Float32Array]\",He=\"[object Float64Array]\",Ye=\"[object Int8Array]\",Je=\"[object Int16Array]\",Ke=\"[object Int32Array]\",Qe=\"[object Uint8Array]\",Xe=\"[object Uint8ClampedArray]\",nu=\"[object Uint16Array]\",tu=\"[object Uint32Array]\",ru=/&(?:amp|lt|gt|quot|#39);/g,eu=RegExp(ru.source),uu=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,ou=/^\\w*$/,iu=/^\\./,fu=/[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g,cu=/[\\\\^$.*+?()[\\]{}|]/g,au=/^\\s+|\\s+$/g,lu=/[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g,su=/\\\\(\\\\)?/g,hu=/\\w*$/,pu=/^[-+]0x[0-9a-f]+$/i,vu=/^0b[01]+$/i,gu=/^\\[object .+?Constructor\\]$/,yu=/^0o[0-7]+$/i,bu=/^(?:0|[1-9]\\d*)$/,du=/[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g,_u=\"\\\\ud800-\\\\udfff\",ju=\"\\\\u0300-\\\\u036f\",wu=\"\\\\ufe20-\\\\ufe2f\",xu=\"\\\\u20d0-\\\\u20ff\",mu=ju+wu+xu,Ou=\"\\\\u2700-\\\\u27bf\",Au=\"a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff\",zu=\"\\\\xac\\\\xb1\\\\xd7\\\\xf7\",Eu=\"\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf\",Iu=\"\\\\u2000-\\\\u206f\",Su=\" \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000\",Tu=\"A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde\",ku=\"\\\\ufe0e\\\\ufe0f\",Lu=zu+Eu+Iu+Su,Uu=\"['\\u2019]\",$u=\"[\"+_u+\"]\",Cu=\"[\"+Lu+\"]\",Ru=\"[\"+mu+\"]\",Du=\"\\\\d+\",Fu=\"[\"+Ou+\"]\",Nu=\"[\"+Au+\"]\",Pu=\"[^\"+_u+Lu+Du+Ou+Au+Tu+\"]\",Bu=\"\\\\ud83c[\\\\udffb-\\\\udfff]\",Mu=\"(?:\"+Ru+\"|\"+Bu+\")\",Zu=\"[^\"+_u+\"]\",Wu=\"(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}\",qu=\"[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]\",Gu=\"[\"+Tu+\"]\",Vu=\"\\\\u200d\",Hu=\"(?:\"+Nu+\"|\"+Pu+\")\",Yu=\"(?:\"+Gu+\"|\"+Pu+\")\",Ju=\"(?:\"+Uu+\"(?:d|ll|m|re|s|t|ve))?\",Ku=\"(?:\"+Uu+\"(?:D|LL|M|RE|S|T|VE))?\",Qu=Mu+\"?\",Xu=\"[\"+ku+\"]?\",no=\"(?:\"+Vu+\"(?:\"+[Zu,Wu,qu].join(\"|\")+\")\"+Xu+Qu+\")*\",to=\"\\\\d*(?:(?:1st|2nd|3rd|(?![123])\\\\dth)\\\\b)\",ro=\"\\\\d*(?:(?:1ST|2ND|3RD|(?![123])\\\\dTH)\\\\b)\",eo=Xu+Qu+no,uo=\"(?:\"+[Fu,Wu,qu].join(\"|\")+\")\"+eo,oo=\"(?:\"+[Zu+Ru+\"?\",Ru,Wu,qu,$u].join(\"|\")+\")\",io=RegExp(Uu,\"g\"),fo=RegExp(Ru,\"g\"),co=RegExp(Bu+\"(?=\"+Bu+\")|\"+oo+eo,\"g\"),ao=RegExp([Gu+\"?\"+Nu+\"+\"+Ju+\"(?=\"+[Cu,Gu,\"$\"].join(\"|\")+\")\",Yu+\"+\"+Ku+\"(?=\"+[Cu,Gu+Hu,\"$\"].join(\"|\")+\")\",Gu+\"?\"+Hu+\"+\"+Ju,Gu+\"+\"+Ku,ro,to,Du,uo].join(\"|\"),\"g\"),lo=RegExp(\"[\"+Vu+_u+mu+ku+\"]\"),so=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,ho={};\r\nho[Ve]=ho[He]=ho[Ye]=ho[Je]=ho[Ke]=ho[Qe]=ho[Xe]=ho[nu]=ho[tu]=true,ho[Ae]=ho[ze]=ho[qe]=ho[Ie]=ho[Ge]=ho[Se]=ho[Te]=ho[ke]=ho[Ue]=ho[$e]=ho[Re]=ho[Ne]=ho[Pe]=ho[Be]=ho[We]=false;var po={};po[Ae]=po[ze]=po[qe]=po[Ge]=po[Ie]=po[Se]=po[Ve]=po[He]=po[Ye]=po[Je]=po[Ke]=po[Ue]=po[$e]=po[Re]=po[Ne]=po[Pe]=po[Be]=po[Me]=po[Qe]=po[Xe]=po[nu]=po[tu]=true,po[Te]=po[ke]=po[We]=false;var vo={\"\\xc0\":\"A\",\"\\xc1\":\"A\",\"\\xc2\":\"A\",\"\\xc3\":\"A\",\"\\xc4\":\"A\",\"\\xc5\":\"A\",\"\\xe0\":\"a\",\"\\xe1\":\"a\",\"\\xe2\":\"a\",\"\\xe3\":\"a\",\"\\xe4\":\"a\",\"\\xe5\":\"a\",\r\n\"\\xc7\":\"C\",\"\\xe7\":\"c\",\"\\xd0\":\"D\",\"\\xf0\":\"d\",\"\\xc8\":\"E\",\"\\xc9\":\"E\",\"\\xca\":\"E\",\"\\xcb\":\"E\",\"\\xe8\":\"e\",\"\\xe9\":\"e\",\"\\xea\":\"e\",\"\\xeb\":\"e\",\"\\xcc\":\"I\",\"\\xcd\":\"I\",\"\\xce\":\"I\",\"\\xcf\":\"I\",\"\\xec\":\"i\",\"\\xed\":\"i\",\"\\xee\":\"i\",\"\\xef\":\"i\",\"\\xd1\":\"N\",\"\\xf1\":\"n\",\"\\xd2\":\"O\",\"\\xd3\":\"O\",\"\\xd4\":\"O\",\"\\xd5\":\"O\",\"\\xd6\":\"O\",\"\\xd8\":\"O\",\"\\xf2\":\"o\",\"\\xf3\":\"o\",\"\\xf4\":\"o\",\"\\xf5\":\"o\",\"\\xf6\":\"o\",\"\\xf8\":\"o\",\"\\xd9\":\"U\",\"\\xda\":\"U\",\"\\xdb\":\"U\",\"\\xdc\":\"U\",\"\\xf9\":\"u\",\"\\xfa\":\"u\",\"\\xfb\":\"u\",\"\\xfc\":\"u\",\"\\xdd\":\"Y\",\"\\xfd\":\"y\",\"\\xff\":\"y\",\"\\xc6\":\"Ae\",\r\n\"\\xe6\":\"ae\",\"\\xde\":\"Th\",\"\\xfe\":\"th\",\"\\xdf\":\"ss\",\"\\u0100\":\"A\",\"\\u0102\":\"A\",\"\\u0104\":\"A\",\"\\u0101\":\"a\",\"\\u0103\":\"a\",\"\\u0105\":\"a\",\"\\u0106\":\"C\",\"\\u0108\":\"C\",\"\\u010a\":\"C\",\"\\u010c\":\"C\",\"\\u0107\":\"c\",\"\\u0109\":\"c\",\"\\u010b\":\"c\",\"\\u010d\":\"c\",\"\\u010e\":\"D\",\"\\u0110\":\"D\",\"\\u010f\":\"d\",\"\\u0111\":\"d\",\"\\u0112\":\"E\",\"\\u0114\":\"E\",\"\\u0116\":\"E\",\"\\u0118\":\"E\",\"\\u011a\":\"E\",\"\\u0113\":\"e\",\"\\u0115\":\"e\",\"\\u0117\":\"e\",\"\\u0119\":\"e\",\"\\u011b\":\"e\",\"\\u011c\":\"G\",\"\\u011e\":\"G\",\"\\u0120\":\"G\",\"\\u0122\":\"G\",\"\\u011d\":\"g\",\"\\u011f\":\"g\",\"\\u0121\":\"g\",\r\n\"\\u0123\":\"g\",\"\\u0124\":\"H\",\"\\u0126\":\"H\",\"\\u0125\":\"h\",\"\\u0127\":\"h\",\"\\u0128\":\"I\",\"\\u012a\":\"I\",\"\\u012c\":\"I\",\"\\u012e\":\"I\",\"\\u0130\":\"I\",\"\\u0129\":\"i\",\"\\u012b\":\"i\",\"\\u012d\":\"i\",\"\\u012f\":\"i\",\"\\u0131\":\"i\",\"\\u0134\":\"J\",\"\\u0135\":\"j\",\"\\u0136\":\"K\",\"\\u0137\":\"k\",\"\\u0138\":\"k\",\"\\u0139\":\"L\",\"\\u013b\":\"L\",\"\\u013d\":\"L\",\"\\u013f\":\"L\",\"\\u0141\":\"L\",\"\\u013a\":\"l\",\"\\u013c\":\"l\",\"\\u013e\":\"l\",\"\\u0140\":\"l\",\"\\u0142\":\"l\",\"\\u0143\":\"N\",\"\\u0145\":\"N\",\"\\u0147\":\"N\",\"\\u014a\":\"N\",\"\\u0144\":\"n\",\"\\u0146\":\"n\",\"\\u0148\":\"n\",\"\\u014b\":\"n\",\"\\u014c\":\"O\",\r\n\"\\u014e\":\"O\",\"\\u0150\":\"O\",\"\\u014d\":\"o\",\"\\u014f\":\"o\",\"\\u0151\":\"o\",\"\\u0154\":\"R\",\"\\u0156\":\"R\",\"\\u0158\":\"R\",\"\\u0155\":\"r\",\"\\u0157\":\"r\",\"\\u0159\":\"r\",\"\\u015a\":\"S\",\"\\u015c\":\"S\",\"\\u015e\":\"S\",\"\\u0160\":\"S\",\"\\u015b\":\"s\",\"\\u015d\":\"s\",\"\\u015f\":\"s\",\"\\u0161\":\"s\",\"\\u0162\":\"T\",\"\\u0164\":\"T\",\"\\u0166\":\"T\",\"\\u0163\":\"t\",\"\\u0165\":\"t\",\"\\u0167\":\"t\",\"\\u0168\":\"U\",\"\\u016a\":\"U\",\"\\u016c\":\"U\",\"\\u016e\":\"U\",\"\\u0170\":\"U\",\"\\u0172\":\"U\",\"\\u0169\":\"u\",\"\\u016b\":\"u\",\"\\u016d\":\"u\",\"\\u016f\":\"u\",\"\\u0171\":\"u\",\"\\u0173\":\"u\",\"\\u0174\":\"W\",\"\\u0175\":\"w\",\r\n\"\\u0176\":\"Y\",\"\\u0177\":\"y\",\"\\u0178\":\"Y\",\"\\u0179\":\"Z\",\"\\u017b\":\"Z\",\"\\u017d\":\"Z\",\"\\u017a\":\"z\",\"\\u017c\":\"z\",\"\\u017e\":\"z\",\"\\u0132\":\"IJ\",\"\\u0133\":\"ij\",\"\\u0152\":\"Oe\",\"\\u0153\":\"oe\",\"\\u0149\":\"'n\",\"\\u017f\":\"s\"},go={\"&\":\"&\",\"<\":\"<\",\">\":\">\",\""\":'\"',\"'\":\"'\"},yo=parseFloat,bo=parseInt,_o=typeof global==\"object\"&&global&&global.Object===Object&&global,jo=typeof self==\"object\"&&self&&self.Object===Object&&self,wo=_o||jo||Function(\"return this\")(),xo=typeof exports==\"object\"&&exports&&!exports.nodeType&&exports,mo=xo&&typeof module==\"object\"&&module&&!module.nodeType&&module,Oo=mo&&mo.exports===xo,Ao=Oo&&_o.process,zo=function(){\r\ntry{return Ao&&Ao.binding&&Ao.binding(\"util\")}catch(n){}}(),Eo=zo&&zo.isTypedArray,Io=d(\"length\"),So=_(vo),To=_(go),ko=Array.prototype,Lo=Function.prototype,Uo=Object.prototype,$o=wo[\"__core-js_shared__\"],Co=Lo.toString,Ro=Uo.hasOwnProperty,Do=function(){var n=/[^.]+$/.exec($o&&$o.keys&&$o.keys.IE_PROTO||\"\");return n?\"Symbol(src)_1.\"+n:\"\"}(),Fo=Uo.toString,No=Co.call(Object),Po=RegExp(\"^\"+Co.call(Ro).replace(cu,\"\\\\$&\").replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g,\"$1.*?\")+\"$\"),Bo=Oo?wo.Buffer:ce,Mo=wo.Symbol,Zo=wo.Uint8Array,Wo=Bo?Bo.allocUnsafe:ce,qo=L(Object.getPrototypeOf,Object),Go=Object.create,Vo=Uo.propertyIsEnumerable,Ho=ko.splice,Yo=Mo?Mo.isConcatSpreadable:ce,Jo=Mo?Mo.toStringTag:ce,Ko=function(){\r\ntry{var n=Ct(Object,\"defineProperty\");return n({},\"\",{}),n}catch(n){}}(),Qo=Math.floor,Xo=Object.getOwnPropertySymbols,ni=Bo?Bo.isBuffer:ce,ti=L(Object.keys,Object),ri=Math.max,ei=Math.min,ui=Date.now,oi=Math.random,ii=Ct(wo,\"DataView\"),fi=Ct(wo,\"Map\"),ci=Ct(wo,\"Promise\"),ai=Ct(wo,\"Set\"),li=Ct(wo,\"WeakMap\"),si=Ct(Object,\"create\"),hi=er(ii),pi=er(fi),vi=er(ci),gi=er(ai),yi=er(li),bi=Mo?Mo.prototype:ce,di=bi?bi.valueOf:ce,_i=bi?bi.toString:ce,ji=function(){function n(){}return function(t){if(!Lr(t))return{};\r\nif(Go)return Go(t);n.prototype=t;var r=new n;return n.prototype=ce,r}}();B.prototype.clear=M,B.prototype.delete=Z,B.prototype.get=W,B.prototype.has=q,B.prototype.set=G,V.prototype.clear=H,V.prototype.delete=Y,V.prototype.get=J,V.prototype.has=K,V.prototype.set=Q,X.prototype.clear=nn,X.prototype.delete=tn,X.prototype.get=rn,X.prototype.has=en,X.prototype.set=un,on.prototype.add=on.prototype.push=fn,on.prototype.has=cn,an.prototype.clear=ln,an.prototype.delete=sn,an.prototype.get=hn,an.prototype.has=pn,\r\nan.prototype.set=vn;var wi=xt(En),xi=mt(),mi=Ko?function(n,t){return Ko(n,\"toString\",{configurable:true,enumerable:false,value:te(t),writable:true})}:re,Oi=ai&&1/U(new ai([,-0]))[1]==we?function(n){return new ai(n)}:ue,Ai=Xo?function(n){return null==n?[]:(n=Object(n),o(Xo(n),function(t){return Vo.call(n,t)}))}:ie,zi=Xo?function(n){for(var t=[];n;)a(t,Ai(n)),n=qo(n);return t}:ie,Ei=Tn;(ii&&Ei(new ii(new ArrayBuffer(1)))!=Ge||fi&&Ei(new fi)!=Ue||ci&&Ei(ci.resolve())!=De||ai&&Ei(new ai)!=Pe||li&&Ei(new li)!=We)&&(Ei=function(n){\r\nvar t=Tn(n),r=t==Re?n.constructor:ce,e=r?er(r):\"\";if(e)switch(e){case hi:return Ge;case pi:return Ue;case vi:return De;case gi:return Pe;case yi:return We}return t});var Ii=tr(mi),Si=Jt(function(n){var t=[];return iu.test(n)&&t.push(\"\"),n.replace(fu,function(n,r,e,u){t.push(e?u.replace(su,\"$1\"):r||n)}),t}),Ti=Qn(function(n,t){return zr(n)?On(n,zn(t,1,zr,true)):[]}),ki=Qn(ir),Li=zt(ur),Ui=jt(function(n,t,r){xn(n,r,t)}),$i=Qn(function(n,t){if(null==n)return[];var r=t.length;return r>1&&Zt(n,t[0],t[1])?t=[]:r>2&&Zt(t[0],t[1],t[2])&&(t=[t[0]]),\r\nVn(n,zn(t,1),[])}),Ci=function(){return wo.Date.now()};jr.Cache=X;var Ri=Un(function(){return arguments}())?Un:function(n){return Ur(n)&&Ro.call(n,\"callee\")&&!Vo.call(n,\"callee\")},Di=Array.isArray,Fi=ni||fe,Ni=Eo?m(Eo):Fn,Pi=wt(function(n,t,r){qn(n,t,r)}),Bi=At(function(n,t,r){return t=t.toLowerCase(),n+(r?Yr(t):t)}),Mi=At(function(n,t,r){return n+(r?\"-\":\"\")+t.toLowerCase()}),Zi=Ot(\"toUpperCase\");P.constant=te,P.debounce=_r,P.difference=Ti,P.filter=sr,P.iteratee=ee,P.keyBy=Ui,P.keys=Wr,P.keysIn=qr,\r\nP.map=vr,P.memoize=jr,P.merge=Pi,P.negate=wr,P.property=oe,P.pull=ki,P.pullAll=ir,P.pullAllBy=fr,P.reject=yr,P.remove=cr,P.sortBy=$i,P.take=ar,P.throttle=xr,P.toPlainObject=Pr,P.uniqBy=lr,P.values=Gr,P.words=ne,P.camelCase=Bi,P.capitalize=Yr,P.cloneDeep=mr,P.deburr=Jr,P.eq=Or,P.find=Li,P.findIndex=ur,P.forEach=hr,P.get=Mr,P.hasIn=Zr,P.identity=re,P.includes=pr,P.inRange=Vr,P.isArguments=Ri,P.isArray=Di,P.isArrayLike=Ar,P.isArrayLikeObject=zr,P.isBuffer=Fi,P.isEmpty=Er,P.isEqual=Ir,P.isFunction=Sr,\r\nP.isInteger=Tr,P.isLength=kr,P.isObject=Lr,P.isObjectLike=Ur,P.isPlainObject=$r,P.isString=Cr,P.isSymbol=Rr,P.isTypedArray=Ni,P.kebabCase=Mi,P.last=or,P.stubArray=ie,P.stubFalse=fe,P.noop=ue,P.now=Ci,P.random=Hr,P.reduce=gr,P.replace=Kr,P.size=br,P.some=dr,P.toFinite=Dr,P.toInteger=Fr,P.toNumber=Nr,P.toString=Br,P.trim=Qr,P.unescape=Xr,P.upperFirst=Zi,P.each=hr,P.VERSION=ae,typeof define==\"function\"&&typeof define.amd==\"object\"&&define.amd?(wo._=P, define(function(){return P})):mo?((mo.exports=P)._=P,\r\nxo._=P):wo._=P}).call(this);","!function(r){function n(r){for(var n=\"\",t=\"\",o=0,e=0,a=0,i=r.length;i>a;a++){var f=r.charCodeAt(a);128>f?e++:(t=2048>f?String.fromCharCode(f>>6|192,63&f|128):String.fromCharCode(f>>12|224,f>>6&63|128,63&f|128),e>o&&(n+=r.slice(o,e)),n+=t,o=e=a+1)}return e>o&&(n+=r.slice(o,i)),n}function t(r){var n,t;if(r+=\"\",s=!1,v=w=r.length,w>63){for(o(r.substring(0,64)),i(A),s=!0,n=128;w>=n;n+=64)o(r.substring(n-64,n)),f(A);r=r.substring(n-64),w=r.length}for(d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=0,n=0;w>n;n++)t=3&n,0===t?d[n>>2]=r.charCodeAt(n):d[n>>2]|=r.charCodeAt(n)<>2]|=h[3&n],n>55?(s?f(d):(i(d),s=!0),f([0,0,0,0,0,0,0,0,0,0,0,0,0,0,v<<3,0])):(d[14]=v<<3,void(s?f(d):i(d)))}function o(r){for(var n=16;n--;){var t=n<<2;A[n]=r.charCodeAt(t)+(r.charCodeAt(t+1)<<8)+(r.charCodeAt(t+2)<<16)+(r.charCodeAt(t+3)<<24)}}function e(r,o,e){t(o?r:n(r));var a=g[0];return u[1]=l[15&a],u[0]=l[15&(a>>=4)],u[3]=l[15&(a>>=4)],u[2]=l[15&(a>>=4)],u[5]=l[15&(a>>=4)],u[4]=l[15&(a>>=4)],u[7]=l[15&(a>>=4)],u[6]=l[15&(a>>=4)],a=g[1],u[9]=l[15&a],u[8]=l[15&(a>>=4)],u[11]=l[15&(a>>=4)],u[10]=l[15&(a>>=4)],u[13]=l[15&(a>>=4)],u[12]=l[15&(a>>=4)],u[15]=l[15&(a>>=4)],u[14]=l[15&(a>>=4)],a=g[2],u[17]=l[15&a],u[16]=l[15&(a>>=4)],u[19]=l[15&(a>>=4)],u[18]=l[15&(a>>=4)],u[21]=l[15&(a>>=4)],u[20]=l[15&(a>>=4)],u[23]=l[15&(a>>=4)],u[22]=l[15&(a>>=4)],a=g[3],u[25]=l[15&a],u[24]=l[15&(a>>=4)],u[27]=l[15&(a>>=4)],u[26]=l[15&(a>>=4)],u[29]=l[15&(a>>=4)],u[28]=l[15&(a>>=4)],u[31]=l[15&(a>>=4)],u[30]=l[15&(a>>=4)],e?u:u.join(\"\")}function a(r,n,t,o,e,a,i){return n+=r+o+i,(n<>>a)+t<<0}function i(r){c(0,0,0,0,r),g[0]=y[0]+1732584193<<0,g[1]=y[1]-271733879<<0,g[2]=y[2]-1732584194<<0,g[3]=y[3]+271733878<<0}function f(r){c(g[0],g[1],g[2],g[3],r),g[0]=y[0]+g[0]<<0,g[1]=y[1]+g[1]<<0,g[2]=y[2]+g[2]<<0,g[3]=y[3]+g[3]<<0}function c(r,n,t,o,e){var i,f;s?(r=a((t^o)&n^o,r,n,e[0],7,25,-680876936),o=a((n^t)&r^t,o,r,e[1],12,20,-389564586),t=a((r^n)&o^n,t,o,e[2],17,15,606105819),n=a((o^r)&t^r,n,t,e[3],22,10,-1044525330)):(r=e[0]-680876937,r=(r<<7|r>>>25)-271733879<<0,o=e[1]-117830708+(2004318071&r^-1732584194),o=(o<<12|o>>>20)+r<<0,t=e[2]-1126478375+((-271733879^r)&o^-271733879),t=(t<<17|t>>>15)+o<<0,n=e[3]-1316259209+((o^r)&t^r),n=(n<<22|n>>>10)+t<<0),r=a((t^o)&n^o,r,n,e[4],7,25,-176418897),o=a((n^t)&r^t,o,r,e[5],12,20,1200080426),t=a((r^n)&o^n,t,o,e[6],17,15,-1473231341),n=a((o^r)&t^r,n,t,e[7],22,10,-45705983),r=a((t^o)&n^o,r,n,e[8],7,25,1770035416),o=a((n^t)&r^t,o,r,e[9],12,20,-1958414417),t=a((r^n)&o^n,t,o,e[10],17,15,-42063),n=a((o^r)&t^r,n,t,e[11],22,10,-1990404162),r=a((t^o)&n^o,r,n,e[12],7,25,1804603682),o=a((n^t)&r^t,o,r,e[13],12,20,-40341101),t=a((r^n)&o^n,t,o,e[14],17,15,-1502002290),n=a((o^r)&t^r,n,t,e[15],22,10,1236535329),r=a((n^t)&o^t,r,n,e[1],5,27,-165796510),o=a((r^n)&t^n,o,r,e[6],9,23,-1069501632),t=a((o^r)&n^r,t,o,e[11],14,18,643717713),n=a((t^o)&r^o,n,t,e[0],20,12,-373897302),r=a((n^t)&o^t,r,n,e[5],5,27,-701558691),o=a((r^n)&t^n,o,r,e[10],9,23,38016083),t=a((o^r)&n^r,t,o,e[15],14,18,-660478335),n=a((t^o)&r^o,n,t,e[4],20,12,-405537848),r=a((n^t)&o^t,r,n,e[9],5,27,568446438),o=a((r^n)&t^n,o,r,e[14],9,23,-1019803690),t=a((o^r)&n^r,t,o,e[3],14,18,-187363961),n=a((t^o)&r^o,n,t,e[8],20,12,1163531501),r=a((n^t)&o^t,r,n,e[13],5,27,-1444681467),o=a((r^n)&t^n,o,r,e[2],9,23,-51403784),t=a((o^r)&n^r,t,o,e[7],14,18,1735328473),n=a((t^o)&r^o,n,t,e[12],20,12,-1926607734),i=n^t,r=a(i^o,r,n,e[5],4,28,-378558),o=a(i^r,o,r,e[8],11,21,-2022574463),f=o^r,t=a(f^n,t,o,e[11],16,16,1839030562),n=a(f^t,n,t,e[14],23,9,-35309556),i=n^t,r=a(i^o,r,n,e[1],4,28,-1530992060),o=a(i^r,o,r,e[4],11,21,1272893353),f=o^r,t=a(f^n,t,o,e[7],16,16,-155497632),n=a(f^t,n,t,e[10],23,9,-1094730640),i=n^t,r=a(i^o,r,n,e[13],4,28,681279174),o=a(i^r,o,r,e[0],11,21,-358537222),f=o^r,t=a(f^n,t,o,e[3],16,16,-722521979),n=a(f^t,n,t,e[6],23,9,76029189),i=n^t,r=a(i^o,r,n,e[9],4,28,-640364487),o=a(i^r,o,r,e[12],11,21,-421815835),f=o^r,t=a(f^n,t,o,e[15],16,16,530742520),n=a(f^t,n,t,e[2],23,9,-995338651),r=a(t^(n|~o),r,n,e[0],6,26,-198630844),o=a(n^(r|~t),o,r,e[7],10,22,1126891415),t=a(r^(o|~n),t,o,e[14],15,17,-1416354905),n=a(o^(t|~r),n,t,e[5],21,11,-57434055),r=a(t^(n|~o),r,n,e[12],6,26,1700485571),o=a(n^(r|~t),o,r,e[3],10,22,-1894986606),t=a(r^(o|~n),t,o,e[10],15,17,-1051523),n=a(o^(t|~r),n,t,e[1],21,11,-2054922799),r=a(t^(n|~o),r,n,e[8],6,26,1873313359),o=a(n^(r|~t),o,r,e[15],10,22,-30611744),t=a(r^(o|~n),t,o,e[6],15,17,-1560198380),n=a(o^(t|~r),n,t,e[13],21,11,1309151649),r=a(t^(n|~o),r,n,e[4],6,26,-145523070),o=a(n^(r|~t),o,r,e[11],10,22,-1120210379),t=a(r^(o|~n),t,o,e[2],15,17,718787259),n=a(o^(t|~r),n,t,e[9],21,11,-343485551),y[0]=r,y[1]=n,y[2]=t,y[3]=o}var u=[],d=[],A=[],h=[],l=\"0123456789abcdef\".split(\"\"),C=[],g=[],s=!1,v=0,w=0,y=[];if(r.Int32Array)d=new Int32Array(16),A=new Int32Array(16),h=new Int32Array(4),C=new Int32Array(4),g=new Int32Array(4),y=new Int32Array(4);else{var I;for(I=0;16>I;I++)d[I]=A[I]=0;for(I=0;4>I;I++)h[I]=C[I]=g[I]=y[I]=0}h[0]=128,h[1]=32768,h[2]=8388608,h[3]=-2147483648,C[0]=0,C[1]=8,C[2]=16,C[3]=24,r.md5=r.md5||e}(\"undefined\"==typeof global?window:global);","/* eslint-disable valid-jsdoc */\r\n/* eslint-disable angular/typecheck-function */\r\n/* eslint-disable angular/typecheck-string */\r\n/* eslint-disable angular/typecheck-number */\r\n/* eslint-disable angular/typecheck-array */\r\n/* eslint-disable angular/typecheck-object */\r\n\r\n(function () {\r\n var wsbConfig = {\r\n ws_url: window.location.host.indexOf('ow04.fr') != -1 || window.location.host.indexOf('localhost:5160') != -1 ? 'ws-preprod-cob.web-boosting.net' : 'ws-cob.web-boosting.net'\r\n };\r\n var wsbDisplay = wsbDisplay || {};\r\n\r\n /**\r\n * get publishing zone elements in the page\r\n * return object containing all html elements by element Id\r\n */\r\n if (typeof wsbDisplay.getZoneElements !== 'function') {\r\n wsbDisplay.getZoneElements = function () {\r\n var zoneElements = {};\r\n var elements = $('[ng-view]').last().find('.wsbPublishingZone');\r\n if (elements.length) {\r\n var modalElements = $('.modal').find('.wsbPublishingZone');\r\n if (modalElements.length) {\r\n elements = elements.add(modalElements);\r\n }\r\n } else {\r\n elements = $('.wsbPublishingZone');\r\n }\r\n elements = elements.toArray();\r\n for (var i = 0; i < elements.length; i++) {\r\n if (elements[i].getAttribute('data-wsb-used') === null) {\r\n var zoneId = elements[i].id;\r\n if (zoneId.indexOf('wsbPZ_') !== -1) {\r\n zoneId = zoneId.split('wsbPZ_')[1];\r\n }\r\n zoneElements[zoneId] = elements[i];\r\n }\r\n }\r\n return zoneElements;\r\n };\r\n }\r\n\r\n /**\r\n * Convert recommendation.id to objet with fields: \"msgId\", \"publishingZoneId\"\r\n */\r\n if (typeof wsbDisplay.getRecommendationIdentifier !== 'function') {\r\n wsbDisplay.getRecommendationIdentifier = function (recoElement) {\r\n var recoId = recoElement.id;\r\n var substring = recoId.substring(0, 5);\r\n if (substring === 'wsbR_') {\r\n recoId = recoId.substring(5);\r\n }\r\n var tokens = recoId.split('@');\r\n var zoneIdValue = tokens.splice(-1, 1)[0];\r\n var msgIdValue = tokens.join('@');\r\n return { msgId: msgIdValue, publishingZoneId: zoneIdValue };\r\n };\r\n }\r\n\r\n if (typeof wsbDisplay.display !== 'function') {\r\n wsbDisplay.display = function (recommendations) {\r\n if (window.NetwaveService) {\r\n window.NetwaveService.trigger(recommendations);\r\n }\r\n };\r\n }\r\n /**\r\n * wsbJSON handling based on JSON if exists and jquery-json otherwise\r\n **/\r\n var wsbJSON = {\r\n quoteString: function (str) {\r\n var escape = /[\"\\\\\\x00-\\x1f\\x7f-\\x9f]/g,\r\n meta = {\r\n '\\b': '\\\\b',\r\n '\\t': '\\\\t',\r\n '\\n': '\\\\n',\r\n '\\f': '\\\\f',\r\n '\\r': '\\\\r',\r\n '\"': '\\\\\"',\r\n '\\\\': '\\\\\\\\'\r\n };\r\n if (str.match(escape)) {\r\n return '\"' + str.replace(escape, function (a) {\r\n var c = meta[a];\r\n if (typeof c === 'string') {\r\n return c;\r\n }\r\n c = a.charCodeAt();\r\n return '\\\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);\r\n }) + '\"';\r\n }\r\n return '\"' + str + '\"';\r\n },\r\n stringify: function (content) {\r\n if (content === null) {\r\n return null;\r\n }\r\n if (window.JSON && window.JSON.stringify) {\r\n return window.JSON.stringify(content);\r\n }\r\n var pairs, k, name, val, type = typeof content;\r\n if (type === 'number' || type === 'boolean') {\r\n return String(content);\r\n }\r\n if (Object.prototype.toString.call(content) === '[object Boolean]') {\r\n return content ? 'true' : 'false';\r\n }\r\n if (Object.prototype.toString.call(content) === '[object Number]') {\r\n return String(content);\r\n }\r\n if (type === 'string') {\r\n return this.quoteString(content);\r\n }\r\n pairs = [];\r\n if (Object.prototype.toString.call(content) === '[object Array]') {\r\n for (k = 0; k < content.length; k++) {\r\n pairs.push(this.stringify(content[k]) || 'null');\r\n }\r\n return '[' + pairs.join(',') + ']';\r\n }\r\n if (type === 'object') {\r\n for (k in content) {\r\n if (content.hasOwnProperty(k)) {\r\n type = typeof k;\r\n if (type === 'number') {\r\n name = '\"' + k + '\"';\r\n } else if (type === 'string') {\r\n name = this.quoteString(k);\r\n } else {\r\n continue;\r\n }\r\n type = typeof content[k];\r\n if (type !== 'function' && type !== 'undefined') {\r\n val = this.stringify(content[k]);\r\n pairs.push(name + ':' + val);\r\n }\r\n }\r\n }\r\n return '{' + pairs.join(',') + '}';\r\n }\r\n },\r\n parse: function (content) {\r\n if (content === null) {\r\n return null;\r\n }\r\n if (window.JSON && window.JSON.parse) {\r\n return window.JSON.parse(content);\r\n }\r\n return eval('(' + content + ')');\r\n }\r\n };\r\n\r\n /**\r\n * WSBARTICLE CLASS\r\n *\r\n * Describes one cart element:\r\n */\r\n function WsbArticle(serviceId, productId, quantity, price) {\r\n this.serviceId = serviceId;\r\n this.productId = productId;\r\n this.quantity = quantity;\r\n this.price = price; // unit price\r\n }\r\n\r\n /**\r\n * WSB OBJECT\r\n * Manages communication with the Webservice\r\n */\r\n var wsb = wsb || {\r\n _userId: null,\r\n _clientId: null,\r\n _processDelays: [300, 800, 5000],\r\n _wsbHost: null,\r\n _currentPage: {},\r\n _lastMessageViewed: null,\r\n _lastMessageViewedDate: null,\r\n _built: false,\r\n _order: {articles: []},\r\n _filter: {},\r\n _navigationSent: false,\r\n _xhr: null,\r\n _nbSent: 0,\r\n _observed: {}, // object of all recommendation elements - variable elementId -> [element, visibility counter]; -1 means the visibility has been sent for this element\r\n _crmInfo: {},\r\n _intervalIdOfVisibility: 0,\r\n\r\n setDefaultValues: function () {\r\n this._userId = null;\r\n this._clientId = null;\r\n this._processDelays = [300, 800, 5000];\r\n this._wsbHost = null;\r\n this._currentPage = {};\r\n this._lastMessageViewed = null;\r\n this._lastMessageViewedDate = null;\r\n this._built = false;\r\n this._order = {articles: []};\r\n this._filter = {};\r\n this._navigationSent = false;\r\n this._xhr = null;\r\n this._nbSent = 0;\r\n this._observed = {};\r\n this._crmInfo = {};\r\n this._intervalIdOfVisibility = 0;\r\n },\r\n\r\n build: function () {\r\n if (this._built) {\r\n return;\r\n }\r\n try {\r\n this._userId = this.cookies.read('_wsbA');\r\n this._clientId = this.cookies.read('_wsbC');\r\n this._wsbHost = this.cookies.read('_wsbWsOverride');\r\n if (!this._wsbHost) {\r\n this._wsbHost = location.protocol + '//' + wsbConfig.ws_url + '/api/';\r\n }\r\n // Support: IE<10\r\n // Open request must be manually aborted on unload (#5280)\r\n // See https://support.microsoft.com/kb/2856746 for more info\r\n if (window.attachEvent) {\r\n window.attachEvent( 'onunload', function () {\r\n if (wsb._xhr !== null && wsb._xhr.readyState !== 4) {\r\n wsb._xhr.abort();\r\n wsb._xhr = null;\r\n }\r\n });\r\n }\r\n } catch (e) {\r\n if (window.console) {console.log(e);}\r\n }\r\n this.browser.addViewportEventHandler();\r\n this._built = true;\r\n setTimeout(function () {wsb._processMessages();}, 3000);\r\n },\r\n\r\n reset: function () {\r\n window.clearInterval(this._intervalIdOfVisibility);\r\n this.setDefaultValues();\r\n this.build();\r\n },\r\n\r\n cookies: {\r\n /**\r\n * Build new cookie or update existing one.\r\n * cookieLength is the cookie expiration delay in seconds\r\n */\r\n create: function (cookieName, cookieValue, cookieLength) {\r\n var date = new Date();\r\n date.setTime(date.getTime() + cookieLength);\r\n var expires = ((cookieLength) ? '; expires=' + date.toUTCString() : '');\r\n // Cookie created for the domain (no sub-domain)\r\n var c = cookieName + '=' + cookieValue + expires + '; path=/';\r\n if (typeof (document.domain) !== 'undefined') {\r\n // examples: www.sub.dom.com => ['www', 'sub', 'dom', 'com'] => ['dom', 'com'] => 'dom.com'\r\n var domain = document.domain.split('.').slice(-2).join('.');\r\n if (domain !== 'localhost') {\r\n c = c + '; domain=.' + domain;\r\n }\r\n }\r\n document.cookie = c;\r\n },\r\n\r\n /**\r\n * Reload cookie\r\n * Return null if it does not exist\r\n */\r\n read: function (cookieName) {\r\n var pattern = new RegExp('(^|;\\\\s*)' + cookieName + '\\=([^;]+)(;|$)');\r\n var result = pattern.exec(document.cookie);\r\n if (result) {\r\n return result[2];\r\n }\r\n return (null);\r\n }\r\n },\r\n\r\n browser: {\r\n addEventHandler: function (element, event, handler) {\r\n if (element.addEventListener) {\r\n element.addEventListener(event, handler, false);\r\n } else if (element.attachEvent) {\r\n element.attachEvent('on' + event, handler);\r\n } else {\r\n element['on' + event] = handler;\r\n }\r\n },\r\n removeEventHandler: function (element, event, handler) {\r\n if (element.removeEventListener) {\r\n element.removeEventListener(event, handler, false);\r\n } else if (element.detachEvent) {\r\n element.detachEvent('on' + event, handler);\r\n } else {\r\n element['on' + event] = null;\r\n }\r\n },\r\n mousedownHandler: function (event) {\r\n var sender = wsb.browser.getEventSender(event);\r\n wsb.browser.removeEventHandler(sender, 'mousedown', wsb.browser.mousedownHandler);\r\n wsb._addMessage('interact', wsbDisplay.getRecommendationIdentifier(sender), 10000);\r\n },\r\n mouseoverHandler: function (event) {\r\n wsb.lookedAt(wsb.browser.getEventSender(event));\r\n },\r\n mouseoutHandler: function (event) {\r\n wsb.lookedOut(wsb.browser.getEventSender(event), wsb.browser.removeLookEventHandler);\r\n },\r\n removeLookEventHandler: function (sender) {\r\n wsb.browser.removeEventHandler(sender, 'mouseover', wsb.browser.mouseoverHandler);\r\n wsb.browser.removeEventHandler(sender, 'mouseout', wsb.browser.mouseoutHandler);\r\n },\r\n addPossibleInteraction: function (element) {\r\n if (element.id && !(element.id in wsb._observed)) {\r\n wsb._observed[element.id] = [element, 0];\r\n wsb.browser.addEventHandler(element, 'mousedown', wsb.browser.mousedownHandler);\r\n wsb.browser.addEventHandler(element, 'mouseover', wsb.browser.mouseoverHandler);\r\n wsb.browser.addEventHandler(element, 'mouseout', wsb.browser.mouseoutHandler);\r\n }\r\n },\r\n getEventSender: function (event) {\r\n event = event || window.event;\r\n var sender = event.target || event.srcElement;\r\n // Go up looking for some WSB observed element\r\n while (sender && (!sender.id || !(sender.id in wsb._observed))) {\r\n sender = sender.parentNode;\r\n }\r\n return sender;\r\n },\r\n countVisibilityDuration: function () {\r\n var viewportWidth = document.documentElement.clientWidth || window.innerWidth;\r\n var viewportHeight = document.documentElement.clientHeight || window.innerHeight;\r\n var visibleIdsByZone = {};\r\n var hasVisibleObject = false;\r\n for (var elementId in wsb._observed) {\r\n if (wsb._observed[elementId][1] !== -1) {\r\n var isVisible = wsb.browser.isElementInViewport(wsb._observed[elementId][0], viewportWidth, viewportHeight);\r\n if (isVisible) {\r\n wsb._observed[elementId][1]++;\r\n } else {\r\n wsb._observed[elementId][1] = 0;\r\n }\r\n if (wsb._observed[elementId][1] > 3) {\r\n var visibleObject = wsbDisplay.getRecommendationIdentifier(wsb._observed[elementId][0]);\r\n var zoneId = visibleObject.publishingZoneId;\r\n if (!(zoneId in visibleIdsByZone)) {\r\n visibleIdsByZone[zoneId] = [];\r\n hasVisibleObject = true;\r\n }\r\n visibleIdsByZone[zoneId].push(visibleObject.msgId);\r\n wsb._observed[elementId][1] = -1;\r\n }\r\n }\r\n }\r\n if (hasVisibleObject) {\r\n wsb._addMessage('visible', { recommendations: visibleIdsByZone });\r\n }\r\n },\r\n addViewportEventHandler: function () {\r\n this._intervalIdOfVisibility = window.setInterval(wsb.browser.countVisibilityDuration, 500);\r\n },\r\n isElementInViewport: function (element, viewportWidth, viewportHeight) {\r\n var rect = element.getBoundingClientRect();\r\n var verticalMargin = (rect.right - rect.left) * 0.2;\r\n var horizontalMargin = (rect.bottom - rect.top) * 0.2;\r\n return (-verticalMargin <= rect.left && rect.left < rect.right && rect.right <= viewportWidth + verticalMargin &&\r\n -horizontalMargin <= rect.top && rect.top < rect.bottom && rect.bottom <= viewportHeight + horizontalMargin);\r\n }\r\n },\r\n\r\n /**\r\n * This method allow to override the webservice to use (useful for debugging)\r\n */\r\n overrideWsUrl: function (url) {\r\n // WS override\r\n this.cookies.create('_wsbWsOverride', url, 31968000000); // 370 days\r\n this._wsbHost = url;\r\n },\r\n removeWsOverride: function () {\r\n // WS override\r\n this.cookies.create('_wsbWsOverride', null, -1);\r\n window.location.reload();\r\n },\r\n\r\n /**\r\n * Send request to the webservice.\r\n * Context must be defined (client ID, page, cart content...)\r\n * WARNING: this method can be called only once per page! (all other calls will be NO-OP)\r\n */\r\n process: function () {\r\n if (this._navigationSent) {\r\n return;\r\n }\r\n if (document.referrer) {\r\n this._currentPage.referrer = document.referrer.split('?', 1)[0];\r\n }\r\n if (navigator.doNotTrack === 'yes' || navigator.doNotTrack === '1') {\r\n this._currentPage.doNotTrack = true;\r\n } else {\r\n this._currentPage.doNotTrack = false;\r\n }\r\n if (navigator.language) {\r\n this._currentPage.browserLang = navigator.language;\r\n }\r\n this._addMessage('setDataPage', this._currentPage, 0);\r\n this._navigationSent = true;\r\n },\r\n\r\n setCrmAttribute: function (attributeName, attributeValue) {\r\n if (typeof (attributeName) === 'undefined' || typeof (attributeValue) === 'undefined') {\r\n return;\r\n }\r\n this._crmInfo[attributeName] = attributeValue;\r\n },\r\n\r\n /**\r\n * When some article is added to the cart.\r\n * Note: price is the price per unit.\r\n */\r\n addArticleToCart: function (serviceId, productId, quantity, price) {\r\n if (typeof (serviceId) === 'undefined' || typeof (productId) === 'undefined' || typeof (quantity) === 'undefined' || typeof (price) === 'undefined') {\r\n return;\r\n }\r\n this._addMessage('cart/add', {article: new WsbArticle(serviceId, productId, quantity, price)}, 100);\r\n },\r\n\r\n /**\r\n * When some article is removed from the cart.\r\n * Note: price is the price per unit.\r\n */\r\n removeArticleFromCart: function (serviceId, productId, quantity, price) {\r\n if (typeof (serviceId) === 'undefined' || typeof (productId) === 'undefined' || typeof (quantity) === 'undefined' || typeof (price) === 'undefined') {\r\n return;\r\n }\r\n this._addMessage('cart/remove', {article: new WsbArticle(serviceId, productId, quantity, price)}, 100);\r\n },\r\n\r\n /**\r\n * Add article to the order description.\r\n * Note: price is the price per unit.\r\n */\r\n addArticle: function (serviceId, productId, quantity, price) {\r\n if (typeof (serviceId) === 'undefined' || typeof (productId) === 'undefined' || typeof (quantity) === 'undefined' || typeof (price) === 'undefined') {\r\n return;\r\n }\r\n this._order.articles.push(new WsbArticle(serviceId, productId, quantity, price));\r\n },\r\n\r\n /**\r\n * Add order description (order id, client id, total price)\r\n */\r\n addDetailsOrder: function (numOrder, numCli, totalPrice) {\r\n if (typeof (numOrder) === 'undefined' || typeof (numCli) === 'undefined' || typeof (totalPrice) === 'undefined') {\r\n return;\r\n }\r\n this._order.orderId = numOrder;\r\n this._order.orderAmount = totalPrice;\r\n this._clientId = numCli;\r\n },\r\n\r\n /**\r\n * Send order description to the web service.\r\n */\r\n sendOrder: function () {\r\n this._addMessage('order', this._order, 100);\r\n this._order = {articles: []};\r\n },\r\n\r\n sendCRM: function () {\r\n this._addMessage('crm', this._crmInfo, 100);\r\n },\r\n\r\n /**\r\n * To be called when products are filtred on the website.\r\n * Arguments: filter list with the values\r\n */\r\n filter: function () {\r\n if (typeof arguments !== 'undefined') {\r\n // Récupération des différents arguments\r\n var filters = [];\r\n Array.prototype.push.apply(filters, arguments);\r\n var serviceId = filters.shift();\r\n this._filter[filters.shift()] = filters;\r\n if (typeof (serviceId) === 'undefined' || typeof (this._filter) === 'undefined') {\r\n return;\r\n }\r\n this._addMessage('filter', {filters: this._filter, serviceId: serviceId}, 100);\r\n }\r\n },\r\n\r\n /**\r\n * Permet d'indiquer que l'utilisateur étudie la recommandation.\r\n * Doit être spécifié : (l'élèment DOM recommandation) OU recommendation (l'ID de la recommandation cliquée)\r\n */\r\n lookedAt: function (recommendation) {\r\n if (typeof recommandation === 'undefined') return;\r\n this._lastMessageViewed = recommendation.id;\r\n this._lastMessageViewedDate = new Date();\r\n },\r\n\r\n /**\r\n * Permet d'indiquer que l'utilisateur a arrêté d'étudier le message\r\n * Doit être spécifié : (l'élément DOM recommandation) OU recommendation (l'ID de la recommandation cliquée)\r\n */\r\n lookedOut: function (recommendation, removeLookEventHandler) {\r\n if (recommendation && recommendation.id === this._lastMessageViewed) {\r\n // Si l'utilisateur survole pendant plus d'une seconde la recommandation\r\n if ((new Date() - this._lastMessageViewedDate) > 1000) {\r\n this._addMessage('interest', wsbDisplay.getRecommendationIdentifier(recommendation));\r\n removeLookEventHandler(recommendation);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Définit le texte de recherche de l'internaute.\r\n */\r\n reset: function () {\r\n this._currentPage = {};\r\n },\r\n\r\n /**\r\n * Définit les informations sur la page: pageInformations, serviceId et optionId.\r\n */\r\n setPageInformations: function (pageType, serviceId, optionId) {\r\n if (typeof (pageType) !== 'undefined') {\r\n this._currentPage.pageInformations = pageType;\r\n }\r\n if (typeof (serviceId) !== 'undefined') {\r\n this._currentPage.serviceId = serviceId;\r\n }\r\n if (typeof (optionId) !== 'undefined') {\r\n this._currentPage.productId = optionId;\r\n }\r\n },\r\n\r\n /**\r\n * Définit le texte de recherche de l'internaute.\r\n */\r\n setSearchRequest: function (search) {\r\n this._currentPage.searchRequest = search;\r\n },\r\n\r\n /**\r\n * Définit le pageKey de la page web.\r\n */\r\n setPageKey: function (pageKey) {\r\n this._currentPage.pageKey = pageKey;\r\n },\r\n\r\n setLanguage: function (language) {\r\n this._currentPage.lang = language;\r\n },\r\n\r\n /**\r\n * get publishing zone Ids\r\n */\r\n _getPublishingZones: function () {\r\n var publishingZones = [];\r\n var elements = wsbDisplay.getZoneElements();\r\n for (var zoneId in elements) {\r\n if (elements.hasOwnProperty(zoneId)) {\r\n publishingZones.push({'publishingZoneId': zoneId});\r\n }\r\n }\r\n return publishingZones;\r\n },\r\n\r\n /**\r\n * Définit l'ID client associé au visiteur.\r\n */\r\n setClientId: function (clientId) {\r\n this._clientId = clientId;\r\n this.cookies.create('_wsbC', this._clientId, 31968000000); // 370 days\r\n },\r\n\r\n /**\r\n * Définit l'ID user associé au visiteur.\r\n */\r\n setUserId: function (userId) {\r\n this._userId = userId;\r\n this.cookies.create('_wsbA', this._userId, 31968000000); // 370 days\r\n },\r\n\r\n _getMessageQueue: function () {\r\n var cookie = this.cookies.read('_wsbMessages');\r\n if (cookie) {\r\n return wsbJSON.parse(decodeURIComponent(cookie));\r\n }\r\n return [];\r\n },\r\n\r\n /**\r\n * set the message queue. Queue is an array containing messages to send\r\n */\r\n _setMessageQueue: function (queue) {\r\n this.cookies.create('_wsbMessages', encodeURIComponent(wsbJSON.stringify(queue)), 1800000); // 30 min\r\n },\r\n\r\n /**\r\n * remove sent messages\r\n */\r\n _removeSentMessages: function () {\r\n if (this._nbSent > 0) {\r\n var queue = this._getMessageQueue();\r\n for (var i = 0; i < this._nbSent && queue.length > 0; i++) {\r\n queue.shift();\r\n }\r\n this._setMessageQueue(queue);\r\n this._nbSent = 0;\r\n }\r\n },\r\n\r\n /**\r\n * process all messages to send in the queue\r\n */\r\n _processMessages: function () {\r\n if (this._xhr === null) {\r\n var queue = this._getMessageQueue();\r\n if (queue.length > 0) {\r\n var action = queue[0].action;\r\n var body = queue[0].body;\r\n if (queue.length > 1) {\r\n action = 'pack';\r\n body = {actions: queue};\r\n }\r\n // complete body\r\n body.publishingZones = this._getPublishingZones();\r\n if (this._userId) {\r\n body.id = this._userId;\r\n }\r\n if (this._clientId) {\r\n body.clientId = this._clientId;\r\n }\r\n this._nbSent = queue.length;\r\n this._makeApiCall(action, body);\r\n } else {\r\n this._navigationSent = false;\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * process all messages to send in the queue after a delay (delay is the next value in the delay array)\r\n */\r\n _processMessagesWithNextDelay: function () {\r\n var timeout = this._processDelays[0];\r\n if (this._processDelays.length > 1) {\r\n timeout = this._processDelays.shift();\r\n }\r\n setTimeout(function () {wsb._processMessages();}, timeout);\r\n },\r\n\r\n /**\r\n * add a message to send\r\n */\r\n _addMessage: function (action, body, timeout) {\r\n var queue = this._getMessageQueue();\r\n if (action === 'pack') {\r\n for (var i = 0; i < body.actions.length; i++) {\r\n queue.push({action: body.actions[i].action, body: body.actions[i].body});\r\n }\r\n } else {\r\n queue.push({action: action, body: body});\r\n }\r\n this._setMessageQueue(queue);\r\n if (timeout) {\r\n setTimeout(function () {wsb._processMessages();}, timeout);\r\n } else {\r\n this._processMessages();\r\n }\r\n },\r\n\r\n /**\r\n * Ajax call to webservice\r\n */\r\n _makeApiCall: function (action, body) {\r\n this._xhr = this._createXhr();\r\n if (this._xhr !== null) {\r\n try {\r\n this._xhr.open('POST', this._wsbHost + action, true);\r\n this._xhr.send((body) ? wsbJSON.stringify(body) : null);\r\n return;\r\n } catch (e) {\r\n if (window.console) {console.log(e);}\r\n }\r\n }\r\n // AJAX request didn't go well, trying in legacy mode\r\n this._makeLegacyApiCall(action, body);\r\n },\r\n\r\n /**\r\n * process the webservice response\r\n */\r\n processWsResponse: function (status, result) {\r\n var delay = false;\r\n if (status === 200 && result && result.status) {\r\n switch (result.status) {\r\n case 'RECEIVED':\r\n this._removeSentMessages();\r\n if (result.id) {\r\n this.setUserId(result.id);\r\n }\r\n if (result.publishingZones && result.publishingZones.length > 0) {\r\n wsbDisplay.display(result.publishingZones);\r\n }\r\n break;\r\n case 'UNKNOWN':\r\n this._removeSentMessages();\r\n break;\r\n case 'MAINTENANCE':\r\n case 'TIMEOUT':\r\n delay = true;\r\n break;\r\n }\r\n } else if (status === 500 && result && result.errorType && result.errorType === 'IO_ERROR') {\r\n delay = true;\r\n } else {\r\n this._removeSentMessages();\r\n }\r\n wsb._xhr = null;\r\n if (delay) {\r\n this._processMessagesWithNextDelay();\r\n } else {\r\n this._processMessages();\r\n }\r\n },\r\n\r\n /**\r\n * WebService call for browser failing with cross-domain AJAX requests\r\n * query: request URI\r\n * content: request body (as object)\r\n */\r\n _makeLegacyApiCall: function (query, content) {\r\n try {\r\n var url = this._wsbHost + 'jsonp/' + query.replace(/\\//g, '-');\r\n if (content) {\r\n url += '?' + encodeURIComponent(wsbJSON.stringify(content));\r\n }\r\n var call = document.createElement('script');\r\n call.type = 'text/javascript';\r\n call.src = url;\r\n call.async = true;\r\n var target = document.getElementsByTagName('script')[0];\r\n target.parentNode.insertBefore(call, target);\r\n } catch (e) {\r\n if (window.console) {console.log(e);}\r\n }\r\n },\r\n\r\n /**\r\n * build object for AJAX requests (as requested for the browser)\r\n */\r\n _createXhr: function () {\r\n var result;\r\n if (window.XMLHttpRequest) {\r\n try {\r\n result = new XMLHttpRequest();\r\n // withCredentials to know if CORS are supported)\r\n if ('withCredentials' in result) {\r\n result.onreadystatechange = function () {\r\n if (result.readyState === 4) {\r\n var status = wsb._xhr.status;\r\n var response = null;\r\n try {\r\n response = wsbJSON.parse(wsb._xhr.responseText);\r\n } catch (e) {\r\n status = 500;\r\n if (window.console) {console.log(e);}\r\n }\r\n wsb.processWsResponse(status, response);\r\n }\r\n };\r\n return result;\r\n }\r\n } catch (e) {\r\n if (window.console) {console.log(e);}\r\n }\r\n }\r\n // try XDomainRequest\r\n if (window.XDomainRequest) {\r\n try {\r\n result = new XDomainRequest();\r\n result.onerror = function () {\r\n wsb.processWsResponse(500, null);\r\n };\r\n result.ontimeout = function () {\r\n wsb.processWsResponse(500, null);\r\n };\r\n result.onprogress = function () {return;};\r\n result.onload = function () {\r\n var status = 500;\r\n var response = null;\r\n try {\r\n response = wsbJSON.parse(wsb._xhr.responseText);\r\n status = 200;\r\n } catch (e) {\r\n if (window.console) {console.log(e);}\r\n }\r\n wsb.processWsResponse(status, response);\r\n };\r\n return result;\r\n } catch (e) {\r\n if (window.console) {console.log(e);}\r\n }\r\n }\r\n return (null);\r\n }\r\n };\r\n window.wsb = wsb;\r\n\r\n // wsbQueue type\r\n var WsbQueue = function () {\r\n // override push method\r\n this.push = function () {\r\n for (var i = 0; i < arguments.length; i++) {\r\n var element = arguments[i];\r\n if (typeof element === 'function') {\r\n wsb.element();\r\n } else {\r\n var functionName = element[0];\r\n var functionArguments = element.slice(1);\r\n // Calling method on wsb object\r\n wsb[functionName].apply(wsb, functionArguments);\r\n }\r\n }\r\n };\r\n };\r\n\r\n /* FIN */\r\n\r\n // Initialize a new wsbq as a wsbQueue object (keeping old array contents if exists)\r\n\r\n window.startWbs = function () {\r\n wsb.build();\r\n\r\n var oldWsbq = [];\r\n if (window.wsbq) {\r\n for (var i = 0; i < window.wsbq.length; i++) {\r\n oldWsbq[i] = window.wsbq[i];\r\n }\r\n }\r\n window.wsbq = new WsbQueue();\r\n window.wsbq.push.apply(window.wsbq, oldWsbq);\r\n };\r\n})();","/**\r\n * Owl Carousel v2.2.1\r\n * Copyright 2013-2017 David Deutsch\r\n * Licensed under ()\r\n */\r\n/**\r\n * Owl carousel\r\n * @version 2.1.6\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n * @todo Lazy Load Icon\r\n * @todo prevent animationend bubling\r\n * @todo itemsScaleUp\r\n * @todo Test Zepto\r\n * @todo stagePadding calculate wrong active classes\r\n */\r\n/* eslint-disable */\r\n; (function ($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates a carousel.\r\n\t * @class The Owl Carousel.\r\n\t * @public\r\n\t * @param {HTMLElement|jQuery} element - The element to create the carousel for.\r\n\t * @param {Object} [options] - The options\r\n\t */\r\n function Owl(element, options) {\r\n\r\n\t\t/**\r\n\t\t * Current settings for the carousel.\r\n\t\t * @public\r\n\t\t */\r\n this.settings = null;\r\n\r\n\t\t/**\r\n\t\t * Current options set by the caller including defaults.\r\n\t\t * @public\r\n\t\t */\r\n this.options = $.extend({}, Owl.Defaults, options);\r\n\r\n\t\t/**\r\n\t\t * Plugin element.\r\n\t\t * @public\r\n\t\t */\r\n this.$element = $(element);\r\n\r\n\t\t/**\r\n\t\t * Proxied event handlers.\r\n\t\t * @protected\r\n\t\t */\r\n this._handlers = {};\r\n\r\n\t\t/**\r\n\t\t * References to the running plugins of this carousel.\r\n\t\t * @protected\r\n\t\t */\r\n this._plugins = {};\r\n\r\n\t\t/**\r\n\t\t * Currently suppressed events to prevent them from beeing retriggered.\r\n\t\t * @protected\r\n\t\t */\r\n this._supress = {};\r\n\r\n\t\t/**\r\n\t\t * Absolute current position.\r\n\t\t * @protected\r\n\t\t */\r\n this._current = null;\r\n\r\n\t\t/**\r\n\t\t * Animation speed in milliseconds.\r\n\t\t * @protected\r\n\t\t */\r\n this._speed = null;\r\n\r\n\t\t/**\r\n\t\t * Coordinates of all items in pixel.\r\n\t\t * @todo The name of this member is missleading.\r\n\t\t * @protected\r\n\t\t */\r\n this._coordinates = [];\r\n\r\n\t\t/**\r\n\t\t * Current breakpoint.\r\n\t\t * @todo Real media queries would be nice.\r\n\t\t * @protected\r\n\t\t */\r\n this._breakpoint = null;\r\n\r\n\t\t/**\r\n\t\t * Current width of the plugin element.\r\n\t\t */\r\n this._width = null;\r\n\r\n\t\t/**\r\n\t\t * All real items.\r\n\t\t * @protected\r\n\t\t */\r\n this._items = [];\r\n\r\n\t\t/**\r\n\t\t * All cloned items.\r\n\t\t * @protected\r\n\t\t */\r\n this._clones = [];\r\n\r\n\t\t/**\r\n\t\t * Merge values of all items.\r\n\t\t * @todo Maybe this could be part of a plugin.\r\n\t\t * @protected\r\n\t\t */\r\n this._mergers = [];\r\n\r\n\t\t/**\r\n\t\t * Widths of all items.\r\n\t\t */\r\n this._widths = [];\r\n\r\n\t\t/**\r\n\t\t * Invalidated parts within the update process.\r\n\t\t * @protected\r\n\t\t */\r\n this._invalidated = {};\r\n\r\n\t\t/**\r\n\t\t * Ordered list of workers for the update process.\r\n\t\t * @protected\r\n\t\t */\r\n this._pipe = [];\r\n\r\n\t\t/**\r\n\t\t * Current state information for the drag operation.\r\n\t\t * @todo #261\r\n\t\t * @protected\r\n\t\t */\r\n this._drag = {\r\n time: null,\r\n target: null,\r\n pointer: null,\r\n stage: {\r\n start: null,\r\n current: null\r\n },\r\n direction: null\r\n };\r\n\r\n\t\t/**\r\n\t\t * Current state information and their tags.\r\n\t\t * @type {Object}\r\n\t\t * @protected\r\n\t\t */\r\n this._states = {\r\n current: {},\r\n tags: {\r\n 'initializing': ['busy'],\r\n 'animating': ['busy'],\r\n 'dragging': ['interacting']\r\n }\r\n };\r\n\r\n $.each(['onResize', 'onThrottledResize'], $.proxy(function (i, handler) {\r\n this._handlers[handler] = $.proxy(this[handler], this);\r\n }, this));\r\n\r\n $.each(Owl.Plugins, $.proxy(function (key, plugin) {\r\n this._plugins[key.charAt(0).toLowerCase() + key.slice(1)]\r\n = new plugin(this);\r\n }, this));\r\n\r\n $.each(Owl.Workers, $.proxy(function (priority, worker) {\r\n this._pipe.push({\r\n 'filter': worker.filter,\r\n 'run': $.proxy(worker.run, this)\r\n });\r\n }, this));\r\n\r\n this.setup();\r\n this.initialize();\r\n }\r\n\r\n\t/**\r\n\t * Default options for the carousel.\r\n\t * @public\r\n\t */\r\n Owl.Defaults = {\r\n items: 3,\r\n loop: false,\r\n center: false,\r\n rewind: true,\r\n\r\n mouseDrag: true,\r\n touchDrag: true,\r\n pullDrag: true,\r\n freeDrag: false,\r\n\r\n margin: 0,\r\n stagePadding: 0,\r\n\r\n merge: false,\r\n mergeFit: true,\r\n autoWidth: false,\r\n\r\n startPosition: 0,\r\n rtl: false,\r\n\r\n smartSpeed: 250,\r\n fluidSpeed: false,\r\n dragEndSpeed: false,\r\n\r\n responsive: {},\r\n responsiveRefreshRate: 200,\r\n responsiveBaseElement: window,\r\n\r\n fallbackEasing: 'swing',\r\n\r\n info: false,\r\n\r\n nestedItemSelector: false,\r\n itemElement: 'div',\r\n stageElement: 'div',\r\n\r\n refreshClass: 'owl-refresh',\r\n loadedClass: 'owl-loaded',\r\n loadingClass: 'owl-loading',\r\n rtlClass: 'owl-rtl',\r\n responsiveClass: 'owl-responsive',\r\n dragClass: 'owl-drag',\r\n itemClass: 'owl-item',\r\n stageClass: 'owl-stage',\r\n stageOuterClass: 'owl-stage-outer',\r\n grabClass: 'owl-grab'\r\n };\r\n\r\n\t/**\r\n\t * Enumeration for width.\r\n\t * @public\r\n\t * @readonly\r\n\t * @enum {String}\r\n\t */\r\n Owl.Width = {\r\n Default: 'default',\r\n Inner: 'inner',\r\n Outer: 'outer'\r\n };\r\n\r\n\t/**\r\n\t * Enumeration for types.\r\n\t * @public\r\n\t * @readonly\r\n\t * @enum {String}\r\n\t */\r\n Owl.Type = {\r\n Event: 'event',\r\n State: 'state'\r\n };\r\n\r\n\t/**\r\n\t * Contains all registered plugins.\r\n\t * @public\r\n\t */\r\n Owl.Plugins = {};\r\n\r\n\t/**\r\n\t * List of workers involved in the update process.\r\n\t */\r\n Owl.Workers = [{\r\n filter: ['width', 'settings'],\r\n run: function () {\r\n this._width = this.$element.width();\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n cache.current = this._items && this._items[this.relative(this._current)];\r\n }\r\n }, {\r\n filter: ['items', 'settings'],\r\n run: function () {\r\n this.$stage.children('.cloned').remove();\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n var margin = this.settings.margin || '',\r\n grid = !this.settings.autoWidth,\r\n rtl = this.settings.rtl,\r\n css = {\r\n 'width': 'auto',\r\n 'margin-left': rtl ? margin : '',\r\n 'margin-right': rtl ? '' : margin\r\n };\r\n\r\n !grid && this.$stage.children().css(css);\r\n\r\n cache.css = css;\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n var width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,\r\n merge = null,\r\n iterator = this._items.length,\r\n grid = !this.settings.autoWidth,\r\n widths = [];\r\n\r\n cache.items = {\r\n merge: false,\r\n width: width\r\n };\r\n\r\n while (iterator--) {\r\n merge = this._mergers[iterator];\r\n merge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;\r\n\r\n cache.items.merge = merge > 1 || cache.items.merge;\r\n\r\n widths[iterator] = !grid ? this._items[iterator].width() : width * merge;\r\n }\r\n\r\n this._widths = widths;\r\n }\r\n }, {\r\n filter: ['items', 'settings'],\r\n run: function () {\r\n var clones = [],\r\n items = this._items,\r\n settings = this.settings,\r\n view = Math.max(settings.items * 2, 4),\r\n size = Math.ceil(items.length / 2) * 2,\r\n repeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,\r\n append = '',\r\n prepend = '';\r\n\r\n repeat /= 2;\r\n\r\n while (repeat--) {\r\n clones.push(this.normalize(clones.length / 2, true));\r\n append = append + items[clones[clones.length - 1]][0].outerHTML;\r\n clones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));\r\n prepend = items[clones[clones.length - 1]][0].outerHTML + prepend;\r\n }\r\n\r\n this._clones = clones;\r\n\r\n $(append).addClass('cloned').appendTo(this.$stage);\r\n $(prepend).addClass('cloned').prependTo(this.$stage);\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function () {\r\n var rtl = this.settings.rtl ? 1 : -1,\r\n size = this._clones.length + this._items.length,\r\n iterator = -1,\r\n previous = 0,\r\n current = 0,\r\n coordinates = [];\r\n\r\n while (++iterator < size) {\r\n previous = coordinates[iterator - 1] || 0;\r\n current = this._widths[this.relative(iterator)] + this.settings.margin;\r\n coordinates.push(previous + current * rtl);\r\n }\r\n\r\n this._coordinates = coordinates;\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function () {\r\n var padding = this.settings.stagePadding,\r\n coordinates = this._coordinates,\r\n css = {\r\n 'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,\r\n 'padding-left': padding || '',\r\n 'padding-right': padding || ''\r\n };\r\n\r\n this.$stage.css(css);\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n var iterator = this._coordinates.length,\r\n grid = !this.settings.autoWidth,\r\n items = this.$stage.children();\r\n\r\n if (grid && cache.items.merge) {\r\n while (iterator--) {\r\n cache.css.width = this._widths[this.relative(iterator)];\r\n items.eq(iterator).css(cache.css);\r\n }\r\n } else if (grid) {\r\n cache.css.width = cache.items.width;\r\n items.css(cache.css);\r\n }\r\n }\r\n }, {\r\n filter: ['items'],\r\n run: function () {\r\n this._coordinates.length < 1 && this.$stage.removeAttr('style');\r\n }\r\n }, {\r\n filter: ['width', 'items', 'settings'],\r\n run: function (cache) {\r\n cache.current = cache.current ? this.$stage.children().index(cache.current) : 0;\r\n cache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));\r\n this.reset(cache.current);\r\n }\r\n }, {\r\n filter: ['position'],\r\n run: function () {\r\n this.animate(this.coordinates(this._current));\r\n }\r\n }, {\r\n filter: ['width', 'position', 'items', 'settings'],\r\n run: function () {\r\n var rtl = this.settings.rtl ? 1 : -1,\r\n padding = this.settings.stagePadding * 2,\r\n begin = this.coordinates(this.current()) + padding,\r\n end = begin + this.width() * rtl,\r\n inner, outer, matches = [], i, n;\r\n\r\n for (i = 0, n = this._coordinates.length; i < n; i++) {\r\n inner = this._coordinates[i - 1] || 0;\r\n outer = Math.abs(this._coordinates[i]) + padding * rtl;\r\n\r\n if ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))\r\n || (this.op(outer, '<', begin) && this.op(outer, '>', end))) {\r\n matches.push(i);\r\n }\r\n }\r\n\r\n this.$stage.children('.active').removeClass('active');\r\n this.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');\r\n\r\n if (this.settings.center) {\r\n this.$stage.children('.center').removeClass('center');\r\n this.$stage.children().eq(this.current()).addClass('center');\r\n }\r\n }\r\n }];\r\n\r\n\t/**\r\n\t * Initializes the carousel.\r\n\t * @protected\r\n\t */\r\n Owl.prototype.initialize = function () {\r\n this.enter('initializing');\r\n this.trigger('initialize');\r\n\r\n this.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);\r\n\r\n if (this.settings.autoWidth && !this.is('pre-loading')) {\r\n var imgs, nestedSelector, width;\r\n imgs = this.$element.find('img');\r\n nestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;\r\n width = this.$element.children(nestedSelector).width();\r\n\r\n if (imgs.length && width <= 0) {\r\n this.preloadAutoWidthImages(imgs);\r\n }\r\n }\r\n\r\n this.$element.addClass(this.options.loadingClass);\r\n\r\n // create stage\r\n this.$stage = $('<' + this.settings.stageElement + ' class=\"' + this.settings.stageClass + '\"/>')\r\n .wrap('
');\r\n\r\n // append stage\r\n this.$element.append(this.$stage.parent());\r\n\r\n // append content\r\n this.replace(this.$element.children().not(this.$stage.parent()));\r\n\r\n // check visibility\r\n if (this.$element.is(':visible')) {\r\n // update view\r\n this.refresh();\r\n } else {\r\n // invalidate width\r\n this.invalidate('width');\r\n }\r\n\r\n this.$element\r\n .removeClass(this.options.loadingClass)\r\n .addClass(this.options.loadedClass);\r\n\r\n // register event handlers\r\n this.registerEventHandlers();\r\n\r\n this.leave('initializing');\r\n this.trigger('initialized');\r\n };\r\n\r\n\t/**\r\n\t * Setups the current settings.\r\n\t * @todo Remove responsive classes. Why should adaptive designs be brought into IE8?\r\n\t * @todo Support for media queries by using `matchMedia` would be nice.\r\n\t * @public\r\n\t */\r\n Owl.prototype.setup = function () {\r\n var viewport = this.viewport(),\r\n overwrites = this.options.responsive,\r\n match = -1,\r\n settings = null;\r\n\r\n if (!overwrites) {\r\n settings = $.extend({}, this.options);\r\n } else {\r\n $.each(overwrites, function (breakpoint) {\r\n if (breakpoint <= viewport && breakpoint > match) {\r\n match = Number(breakpoint);\r\n }\r\n });\r\n\r\n settings = $.extend({}, this.options, overwrites[match]);\r\n if (typeof settings.stagePadding === 'function') {\r\n settings.stagePadding = settings.stagePadding();\r\n }\r\n delete settings.responsive;\r\n\r\n // responsive class\r\n if (settings.responsiveClass) {\r\n this.$element.attr('class',\r\n this.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\\\S+\\\\s', 'g'), '$1' + match)\r\n );\r\n }\r\n }\r\n\r\n this.trigger('change', { property: { name: 'settings', value: settings } });\r\n this._breakpoint = match;\r\n this.settings = settings;\r\n this.invalidate('settings');\r\n this.trigger('changed', { property: { name: 'settings', value: this.settings } });\r\n };\r\n\r\n\t/**\r\n\t * Updates option logic if necessery.\r\n\t * @protected\r\n\t */\r\n Owl.prototype.optionsLogic = function () {\r\n if (this.settings.autoWidth) {\r\n this.settings.stagePadding = false;\r\n this.settings.merge = false;\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Prepares an item before add.\r\n\t * @todo Rename event parameter `content` to `item`.\r\n\t * @protected\r\n\t * @returns {jQuery|HTMLElement} - The item container.\r\n\t */\r\n Owl.prototype.prepare = function (item) {\r\n var event = this.trigger('prepare', { content: item });\r\n\r\n if (!event.data) {\r\n event.data = $('<' + this.settings.itemElement + '/>')\r\n .addClass(this.options.itemClass).append(item)\r\n }\r\n\r\n this.trigger('prepared', { content: event.data });\r\n\r\n return event.data;\r\n };\r\n\r\n\t/**\r\n\t * Updates the view.\r\n\t * @public\r\n\t */\r\n Owl.prototype.update = function () {\r\n var i = 0,\r\n n = this._pipe.length,\r\n filter = $.proxy(function (p) { return this[p] }, this._invalidated),\r\n cache = {};\r\n\r\n while (i < n) {\r\n if (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {\r\n this._pipe[i].run(cache);\r\n }\r\n i++;\r\n }\r\n\r\n this._invalidated = {};\r\n\r\n !this.is('valid') && this.enter('valid');\r\n };\r\n\r\n\t/**\r\n\t * Gets the width of the view.\r\n\t * @public\r\n\t * @param {Owl.Width} [dimension=Owl.Width.Default] - The dimension to return.\r\n\t * @returns {Number} - The width of the view in pixel.\r\n\t */\r\n Owl.prototype.width = function (dimension) {\r\n dimension = dimension || Owl.Width.Default;\r\n switch (dimension) {\r\n case Owl.Width.Inner:\r\n case Owl.Width.Outer:\r\n return this._width;\r\n default:\r\n return this._width - this.settings.stagePadding * 2 + this.settings.margin;\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Refreshes the carousel primarily for adaptive purposes.\r\n\t * @public\r\n\t */\r\n Owl.prototype.refresh = function () {\r\n this.enter('refreshing');\r\n this.trigger('refresh');\r\n\r\n this.setup();\r\n\r\n this.optionsLogic();\r\n\r\n this.$element.addClass(this.options.refreshClass);\r\n\r\n this.update();\r\n\r\n this.$element.removeClass(this.options.refreshClass);\r\n\r\n this.leave('refreshing');\r\n this.trigger('refreshed');\r\n };\r\n\r\n\t/**\r\n\t * Checks window `resize` event.\r\n\t * @protected\r\n\t */\r\n Owl.prototype.onThrottledResize = function () {\r\n window.clearTimeout(this.resizeTimer);\r\n this.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);\r\n };\r\n\r\n\t/**\r\n\t * Checks window `resize` event.\r\n\t * @protected\r\n\t */\r\n Owl.prototype.onResize = function () {\r\n if (!this._items.length) {\r\n return false;\r\n }\r\n\r\n if (this._width === this.$element.width()) {\r\n return false;\r\n }\r\n\r\n if (!this.$element.is(':visible')) {\r\n return false;\r\n }\r\n\r\n this.enter('resizing');\r\n\r\n if (this.trigger('resize').isDefaultPrevented()) {\r\n this.leave('resizing');\r\n return false;\r\n }\r\n\r\n this.invalidate('width');\r\n\r\n this.refresh();\r\n\r\n this.leave('resizing');\r\n this.trigger('resized');\r\n };\r\n\r\n\t/**\r\n\t * Registers event handlers.\r\n\t * @todo Check `msPointerEnabled`\r\n\t * @todo #261\r\n\t * @protected\r\n\t */\r\n Owl.prototype.registerEventHandlers = function () {\r\n if ($.support.transition) {\r\n this.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));\r\n }\r\n\r\n if (this.settings.responsive !== false) {\r\n this.on(window, 'resize', this._handlers.onThrottledResize);\r\n }\r\n\r\n if (this.settings.mouseDrag) {\r\n this.$element.addClass(this.options.dragClass);\r\n this.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));\r\n this.$stage.on('dragstart.owl.core selectstart.owl.core', function () { return false });\r\n }\r\n\r\n if (this.settings.touchDrag) {\r\n this.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));\r\n this.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Handles `touchstart` and `mousedown` events.\r\n\t * @todo Horizontal swipe threshold as option\r\n\t * @todo #261\r\n\t * @protected\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n Owl.prototype.onDragStart = function (event) {\r\n var stage = null;\r\n\r\n if (event.which === 3) {\r\n return;\r\n }\r\n\r\n if ($.support.transform) {\r\n stage = this.$stage.css('transform').replace(/.*\\(|\\)| /g, '').split(',');\r\n stage = {\r\n x: stage[stage.length === 16 ? 12 : 4],\r\n y: stage[stage.length === 16 ? 13 : 5]\r\n };\r\n } else {\r\n stage = this.$stage.position();\r\n stage = {\r\n x: this.settings.rtl ?\r\n stage.left + this.$stage.width() - this.width() + this.settings.margin :\r\n stage.left,\r\n y: stage.top\r\n };\r\n }\r\n\r\n if (this.is('animating')) {\r\n $.support.transform ? this.animate(stage.x) : this.$stage.stop()\r\n this.invalidate('position');\r\n }\r\n\r\n this.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');\r\n\r\n this.speed(0);\r\n\r\n this._drag.time = new Date().getTime();\r\n this._drag.target = $(event.target);\r\n this._drag.stage.start = stage;\r\n this._drag.stage.current = stage;\r\n this._drag.pointer = this.pointer(event);\r\n\r\n $(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));\r\n\r\n $(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function (event) {\r\n var delta = this.difference(this._drag.pointer, this.pointer(event));\r\n\r\n $(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));\r\n\r\n if (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n this.enter('dragging');\r\n this.trigger('drag');\r\n }, this));\r\n };\r\n\r\n\t/**\r\n\t * Handles the `touchmove` and `mousemove` events.\r\n\t * @todo #261\r\n\t * @protected\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n Owl.prototype.onDragMove = function (event) {\r\n var minimum = null,\r\n maximum = null,\r\n pull = null,\r\n delta = this.difference(this._drag.pointer, this.pointer(event)),\r\n stage = this.difference(this._drag.stage.start, delta);\r\n\r\n if (!this.is('dragging')) {\r\n return;\r\n }\r\n\r\n event.preventDefault();\r\n\r\n if (this.settings.loop) {\r\n minimum = this.coordinates(this.minimum());\r\n maximum = this.coordinates(this.maximum() + 1) - minimum;\r\n stage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum;\r\n } else {\r\n minimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\r\n maximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\r\n pull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;\r\n stage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);\r\n }\r\n\r\n this._drag.stage.current = stage;\r\n\r\n this.animate(stage.x);\r\n };\r\n\r\n\t/**\r\n\t * Handles the `touchend` and `mouseup` events.\r\n\t * @todo #261\r\n\t * @todo Threshold for click event\r\n\t * @protected\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n Owl.prototype.onDragEnd = function (event) {\r\n var delta = this.difference(this._drag.pointer, this.pointer(event)),\r\n stage = this._drag.stage.current,\r\n direction = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';\r\n\r\n $(document).off('.owl.core');\r\n\r\n this.$element.removeClass(this.options.grabClass);\r\n\r\n if (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {\r\n this.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\r\n this.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));\r\n this.invalidate('position');\r\n this.update();\r\n\r\n this._drag.direction = direction;\r\n\r\n if (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {\r\n this._drag.target.one('click.owl.core', function () { return false; });\r\n }\r\n }\r\n\r\n if (!this.is('dragging')) {\r\n return;\r\n }\r\n\r\n this.leave('dragging');\r\n this.trigger('dragged');\r\n };\r\n\r\n\t/**\r\n\t * Gets absolute position of the closest item for a coordinate.\r\n\t * @todo Setting `freeDrag` makes `closest` not reusable. See #165.\r\n\t * @protected\r\n\t * @param {Number} coordinate - The coordinate in pixel.\r\n\t * @param {String} direction - The direction to check for the closest item. Ether `left` or `right`.\r\n\t * @return {Number} - The absolute position of the closest item.\r\n\t */\r\n Owl.prototype.closest = function (coordinate, direction) {\r\n var position = -1,\r\n pull = 30,\r\n width = this.width(),\r\n coordinates = this.coordinates();\r\n\r\n if (!this.settings.freeDrag) {\r\n // check closest item\r\n $.each(coordinates, $.proxy(function (index, value) {\r\n // on a left pull, check on current index\r\n if (direction === 'left' && coordinate > value - pull && coordinate < value + pull) {\r\n position = index;\r\n // on a right pull, check on previous index\r\n // to do so, subtract width from value and set position = index + 1\r\n } else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) {\r\n position = index + 1;\r\n } else if (this.op(coordinate, '<', value)\r\n && this.op(coordinate, '>', coordinates[index + 1] || value - width)) {\r\n position = direction === 'left' ? index + 1 : index;\r\n }\r\n return position === -1;\r\n }, this));\r\n }\r\n\r\n if (!this.settings.loop) {\r\n // non loop boundries\r\n if (this.op(coordinate, '>', coordinates[this.minimum()])) {\r\n position = coordinate = this.minimum();\r\n } else if (this.op(coordinate, '<', coordinates[this.maximum()])) {\r\n position = coordinate = this.maximum();\r\n }\r\n }\r\n\r\n return position;\r\n };\r\n\r\n\t/**\r\n\t * Animates the stage.\r\n\t * @todo #270\r\n\t * @public\r\n\t * @param {Number} coordinate - The coordinate in pixels.\r\n\t */\r\n Owl.prototype.animate = function (coordinate) {\r\n var animate = this.speed() > 0;\r\n\r\n this.is('animating') && this.onTransitionEnd();\r\n\r\n if (animate) {\r\n this.enter('animating');\r\n this.trigger('translate');\r\n }\r\n\r\n if ($.support.transform3d && $.support.transition) {\r\n this.$stage.css({\r\n transform: 'translate3d(' + coordinate + 'px,0px,0px)',\r\n transition: (this.speed() / 1000) + 's'\r\n });\r\n } else if (animate) {\r\n this.$stage.animate({\r\n left: coordinate + 'px'\r\n }, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));\r\n } else {\r\n this.$stage.css({\r\n left: coordinate + 'px'\r\n });\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Checks whether the carousel is in a specific state or not.\r\n\t * @param {String} state - The state to check.\r\n\t * @returns {Boolean} - The flag which indicates if the carousel is busy.\r\n\t */\r\n Owl.prototype.is = function (state) {\r\n return this._states.current[state] && this._states.current[state] > 0;\r\n };\r\n\r\n\t/**\r\n\t * Sets the absolute position of the current item.\r\n\t * @public\r\n\t * @param {Number} [position] - The new absolute position or nothing to leave it unchanged.\r\n\t * @returns {Number} - The absolute position of the current item.\r\n\t */\r\n Owl.prototype.current = function (position) {\r\n if (position === undefined) {\r\n return this._current;\r\n }\r\n\r\n if (this._items.length === 0) {\r\n return undefined;\r\n }\r\n\r\n position = this.normalize(position);\r\n\r\n if (this._current !== position) {\r\n var event = this.trigger('change', { property: { name: 'position', value: position } });\r\n\r\n if (event.data !== undefined) {\r\n position = this.normalize(event.data);\r\n }\r\n\r\n this._current = position;\r\n\r\n this.invalidate('position');\r\n\r\n this.trigger('changed', { property: { name: 'position', value: this._current } });\r\n }\r\n\r\n return this._current;\r\n };\r\n\r\n\t/**\r\n\t * Invalidates the given part of the update routine.\r\n\t * @param {String} [part] - The part to invalidate.\r\n\t * @returns {Array.} - The invalidated parts.\r\n\t */\r\n Owl.prototype.invalidate = function (part) {\r\n if ($.type(part) === 'string') {\r\n this._invalidated[part] = true;\r\n this.is('valid') && this.leave('valid');\r\n }\r\n return $.map(this._invalidated, function (v, i) { return i });\r\n };\r\n\r\n\t/**\r\n\t * Resets the absolute position of the current item.\r\n\t * @public\r\n\t * @param {Number} position - The absolute position of the new item.\r\n\t */\r\n Owl.prototype.reset = function (position) {\r\n position = this.normalize(position);\r\n\r\n if (position === undefined) {\r\n return;\r\n }\r\n\r\n this._speed = 0;\r\n this._current = position;\r\n\r\n this.suppress(['translate', 'translated']);\r\n\r\n this.animate(this.coordinates(position));\r\n\r\n this.release(['translate', 'translated']);\r\n };\r\n\r\n\t/**\r\n\t * Normalizes an absolute or a relative position of an item.\r\n\t * @public\r\n\t * @param {Number} position - The absolute or relative position to normalize.\r\n\t * @param {Boolean} [relative=false] - Whether the given position is relative or not.\r\n\t * @returns {Number} - The normalized position.\r\n\t */\r\n Owl.prototype.normalize = function (position, relative) {\r\n var n = this._items.length,\r\n m = relative ? 0 : this._clones.length;\r\n\r\n if (!this.isNumeric(position) || n < 1) {\r\n position = undefined;\r\n } else if (position < 0 || position >= n + m) {\r\n position = ((position - m / 2) % n + n) % n + m / 2;\r\n }\r\n\r\n return position;\r\n };\r\n\r\n\t/**\r\n\t * Converts an absolute position of an item into a relative one.\r\n\t * @public\r\n\t * @param {Number} position - The absolute position to convert.\r\n\t * @returns {Number} - The converted position.\r\n\t */\r\n Owl.prototype.relative = function (position) {\r\n position -= this._clones.length / 2;\r\n return this.normalize(position, true);\r\n };\r\n\r\n\t/**\r\n\t * Gets the maximum position for the current item.\r\n\t * @public\r\n\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\r\n\t * @returns {Number}\r\n\t */\r\n Owl.prototype.maximum = function (relative) {\r\n var settings = this.settings,\r\n maximum = this._coordinates.length,\r\n iterator,\r\n reciprocalItemsWidth,\r\n elementWidth;\r\n\r\n if (settings.loop) {\r\n maximum = this._clones.length / 2 + this._items.length - 1;\r\n } else if (settings.autoWidth || settings.merge) {\r\n iterator = this._items.length;\r\n if (iterator) {\r\n reciprocalItemsWidth = this._items[--iterator].width();\r\n elementWidth = this.$element.width();\r\n while (iterator--) {\r\n reciprocalItemsWidth += this._items[iterator].width() + this.settings.margin;\r\n if (reciprocalItemsWidth > elementWidth) {\r\n break;\r\n }\r\n }\r\n }\r\n maximum = iterator + 1;\r\n } else if (settings.center) {\r\n maximum = this._items.length - 1;\r\n } else {\r\n maximum = this._items.length - settings.items;\r\n }\r\n\r\n if (relative) {\r\n maximum -= this._clones.length / 2;\r\n }\r\n\r\n return Math.max(maximum, 0);\r\n };\r\n\r\n\t/**\r\n\t * Gets the minimum position for the current item.\r\n\t * @public\r\n\t * @param {Boolean} [relative=false] - Whether to return an absolute position or a relative position.\r\n\t * @returns {Number}\r\n\t */\r\n Owl.prototype.minimum = function (relative) {\r\n return relative ? 0 : this._clones.length / 2;\r\n };\r\n\r\n\t/**\r\n\t * Gets an item at the specified relative position.\r\n\t * @public\r\n\t * @param {Number} [position] - The relative position of the item.\r\n\t * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\r\n\t */\r\n Owl.prototype.items = function (position) {\r\n if (position === undefined) {\r\n return this._items.slice();\r\n }\r\n\r\n position = this.normalize(position, true);\r\n return this._items[position];\r\n };\r\n\r\n\t/**\r\n\t * Gets an item at the specified relative position.\r\n\t * @public\r\n\t * @param {Number} [position] - The relative position of the item.\r\n\t * @return {jQuery|Array.} - The item at the given position or all items if no position was given.\r\n\t */\r\n Owl.prototype.mergers = function (position) {\r\n if (position === undefined) {\r\n return this._mergers.slice();\r\n }\r\n\r\n position = this.normalize(position, true);\r\n return this._mergers[position];\r\n };\r\n\r\n\t/**\r\n\t * Gets the absolute positions of clones for an item.\r\n\t * @public\r\n\t * @param {Number} [position] - The relative position of the item.\r\n\t * @returns {Array.} - The absolute positions of clones for the item or all if no position was given.\r\n\t */\r\n Owl.prototype.clones = function (position) {\r\n var odd = this._clones.length / 2,\r\n even = odd + this._items.length,\r\n map = function (index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };\r\n\r\n if (position === undefined) {\r\n return $.map(this._clones, function (v, i) { return map(i) });\r\n }\r\n\r\n return $.map(this._clones, function (v, i) { return v === position ? map(i) : null });\r\n };\r\n\r\n\t/**\r\n\t * Sets the current animation speed.\r\n\t * @public\r\n\t * @param {Number} [speed] - The animation speed in milliseconds or nothing to leave it unchanged.\r\n\t * @returns {Number} - The current animation speed in milliseconds.\r\n\t */\r\n Owl.prototype.speed = function (speed) {\r\n if (speed !== undefined) {\r\n this._speed = speed;\r\n }\r\n\r\n return this._speed;\r\n };\r\n\r\n\t/**\r\n\t * Gets the coordinate of an item.\r\n\t * @todo The name of this method is missleanding.\r\n\t * @public\r\n\t * @param {Number} position - The absolute position of the item within `minimum()` and `maximum()`.\r\n\t * @returns {Number|Array.} - The coordinate of the item in pixel or all coordinates.\r\n\t */\r\n Owl.prototype.coordinates = function (position) {\r\n var multiplier = 1,\r\n newPosition = position - 1,\r\n coordinate;\r\n\r\n if (position === undefined) {\r\n return $.map(this._coordinates, $.proxy(function (coordinate, index) {\r\n return this.coordinates(index);\r\n }, this));\r\n }\r\n\r\n if (this.settings.center) {\r\n if (this.settings.rtl) {\r\n multiplier = -1;\r\n newPosition = position + 1;\r\n }\r\n\r\n coordinate = this._coordinates[position];\r\n coordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier;\r\n } else {\r\n coordinate = this._coordinates[newPosition] || 0;\r\n }\r\n\r\n coordinate = Math.ceil(coordinate);\r\n\r\n return coordinate;\r\n };\r\n\r\n\t/**\r\n\t * Calculates the speed for a translation.\r\n\t * @protected\r\n\t * @param {Number} from - The absolute position of the start item.\r\n\t * @param {Number} to - The absolute position of the target item.\r\n\t * @param {Number} [factor=undefined] - The time factor in milliseconds.\r\n\t * @returns {Number} - The time in milliseconds for the translation.\r\n\t */\r\n Owl.prototype.duration = function (from, to, factor) {\r\n if (factor === 0) {\r\n return 0;\r\n }\r\n\r\n return Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));\r\n };\r\n\r\n\t/**\r\n\t * Slides to the specified item.\r\n\t * @public\r\n\t * @param {Number} position - The position of the item.\r\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\r\n\t */\r\n Owl.prototype.to = function (position, speed) {\r\n var current = this.current(),\r\n revert = null,\r\n distance = position - this.relative(current),\r\n direction = (distance > 0) - (distance < 0),\r\n items = this._items.length,\r\n minimum = this.minimum(),\r\n maximum = this.maximum();\r\n\r\n if (this.settings.loop) {\r\n if (!this.settings.rewind && Math.abs(distance) > items / 2) {\r\n distance += direction * -1 * items;\r\n }\r\n\r\n position = current + distance;\r\n revert = ((position - minimum) % items + items) % items + minimum;\r\n\r\n if (revert !== position && revert - distance <= maximum && revert - distance > 0) {\r\n current = revert - distance;\r\n position = revert;\r\n this.reset(current);\r\n }\r\n } else if (this.settings.rewind) {\r\n maximum += 1;\r\n position = (position % maximum + maximum) % maximum;\r\n } else {\r\n position = Math.max(minimum, Math.min(maximum, position));\r\n }\r\n\r\n this.speed(this.duration(current, position, speed));\r\n this.current(position);\r\n\r\n if (this.$element.is(':visible')) {\r\n this.update();\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Slides to the next item.\r\n\t * @public\r\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\r\n\t */\r\n Owl.prototype.next = function (speed) {\r\n speed = speed || false;\r\n this.to(this.relative(this.current()) + 1, speed);\r\n };\r\n\r\n\t/**\r\n\t * Slides to the previous item.\r\n\t * @public\r\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\r\n\t */\r\n Owl.prototype.prev = function (speed) {\r\n speed = speed || false;\r\n this.to(this.relative(this.current()) - 1, speed);\r\n };\r\n\r\n\t/**\r\n\t * Handles the end of an animation.\r\n\t * @protected\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n Owl.prototype.onTransitionEnd = function (event) {\r\n\r\n // if css2 animation then event object is undefined\r\n if (event !== undefined) {\r\n event.stopPropagation();\r\n\r\n // Catch only owl-stage transitionEnd event\r\n if ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {\r\n return false;\r\n }\r\n }\r\n\r\n this.leave('animating');\r\n this.trigger('translated');\r\n };\r\n\r\n\t/**\r\n\t * Gets viewport width.\r\n\t * @protected\r\n\t * @return {Number} - The width in pixel.\r\n\t */\r\n Owl.prototype.viewport = function () {\r\n var width;\r\n if (this.options.responsiveBaseElement !== window) {\r\n width = $(this.options.responsiveBaseElement).width();\r\n } else if (window.innerWidth) {\r\n width = window.innerWidth;\r\n } else if (document.documentElement && document.documentElement.clientWidth) {\r\n width = document.documentElement.clientWidth;\r\n } else {\r\n console.warn('Can not detect viewport width.');\r\n }\r\n return width;\r\n };\r\n\r\n\t/**\r\n\t * Replaces the current content.\r\n\t * @public\r\n\t * @param {HTMLElement|jQuery|String} content - The new content.\r\n\t */\r\n Owl.prototype.replace = function (content) {\r\n this.$stage.empty();\r\n this._items = [];\r\n\r\n if (content) {\r\n content = (content instanceof jQuery) ? content : $(content);\r\n }\r\n\r\n if (this.settings.nestedItemSelector) {\r\n content = content.find('.' + this.settings.nestedItemSelector);\r\n }\r\n\r\n content.filter(function () {\r\n return this.nodeType === 1;\r\n }).each($.proxy(function (index, item) {\r\n item = this.prepare(item);\r\n this.$stage.append(item);\r\n this._items.push(item);\r\n this._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n }, this));\r\n\r\n this.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);\r\n\r\n this.invalidate('items');\r\n };\r\n\r\n\t/**\r\n\t * Adds an item.\r\n\t * @todo Use `item` instead of `content` for the event arguments.\r\n\t * @public\r\n\t * @param {HTMLElement|jQuery|String} content - The item content to add.\r\n\t * @param {Number} [position] - The relative position at which to insert the item otherwise the item will be added to the end.\r\n\t */\r\n Owl.prototype.add = function (content, position) {\r\n var current = this.relative(this._current);\r\n\r\n position = position === undefined ? this._items.length : this.normalize(position, true);\r\n content = content instanceof jQuery ? content : $(content);\r\n\r\n this.trigger('add', { content: content, position: position });\r\n\r\n content = this.prepare(content);\r\n\r\n if (this._items.length === 0 || position === this._items.length) {\r\n this._items.length === 0 && this.$stage.append(content);\r\n this._items.length !== 0 && this._items[position - 1].after(content);\r\n this._items.push(content);\r\n this._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n } else {\r\n this._items[position].before(content);\r\n this._items.splice(position, 0, content);\r\n this._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n }\r\n\r\n this._items[current] && this.reset(this._items[current].index());\r\n\r\n this.invalidate('items');\r\n\r\n this.trigger('added', { content: content, position: position });\r\n };\r\n\r\n\t/**\r\n\t * Removes an item by its position.\r\n\t * @todo Use `item` instead of `content` for the event arguments.\r\n\t * @public\r\n\t * @param {Number} position - The relative position of the item to remove.\r\n\t */\r\n Owl.prototype.remove = function (position) {\r\n position = this.normalize(position, true);\r\n\r\n if (position === undefined) {\r\n return;\r\n }\r\n\r\n this.trigger('remove', { content: this._items[position], position: position });\r\n\r\n this._items[position].remove();\r\n this._items.splice(position, 1);\r\n this._mergers.splice(position, 1);\r\n\r\n this.invalidate('items');\r\n\r\n this.trigger('removed', { content: null, position: position });\r\n };\r\n\r\n\t/**\r\n\t * Preloads images with auto width.\r\n\t * @todo Replace by a more generic approach\r\n\t * @protected\r\n\t */\r\n Owl.prototype.preloadAutoWidthImages = function (images) {\r\n images.each($.proxy(function (i, element) {\r\n this.enter('pre-loading');\r\n element = $(element);\r\n $(new Image()).one('load', $.proxy(function (e) {\r\n element.attr('src', e.target.src);\r\n element.css('opacity', 1);\r\n this.leave('pre-loading');\r\n !this.is('pre-loading') && !this.is('initializing') && this.refresh();\r\n }, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));\r\n }, this));\r\n };\r\n\r\n\t/**\r\n\t * Destroys the carousel.\r\n\t * @public\r\n\t */\r\n Owl.prototype.destroy = function () {\r\n\r\n this.$element.off('.owl.core');\r\n this.$stage.off('.owl.core');\r\n $(document).off('.owl.core');\r\n\r\n if (this.settings.responsive !== false) {\r\n window.clearTimeout(this.resizeTimer);\r\n this.off(window, 'resize', this._handlers.onThrottledResize);\r\n }\r\n\r\n for (var i in this._plugins) {\r\n this._plugins[i].destroy();\r\n }\r\n\r\n this.$stage.children('.cloned').remove();\r\n\r\n this.$stage.unwrap();\r\n this.$stage.children().contents().unwrap();\r\n this.$stage.children().unwrap();\r\n\r\n this.$element\r\n .removeClass(this.options.refreshClass)\r\n .removeClass(this.options.loadingClass)\r\n .removeClass(this.options.loadedClass)\r\n .removeClass(this.options.rtlClass)\r\n .removeClass(this.options.dragClass)\r\n .removeClass(this.options.grabClass)\r\n .attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\\\S+\\\\s', 'g'), ''))\r\n .removeData('owl.carousel');\r\n };\r\n\r\n\t/**\r\n\t * Operators to calculate right-to-left and left-to-right.\r\n\t * @protected\r\n\t * @param {Number} [a] - The left side operand.\r\n\t * @param {String} [o] - The operator.\r\n\t * @param {Number} [b] - The right side operand.\r\n\t */\r\n Owl.prototype.op = function (a, o, b) {\r\n var rtl = this.settings.rtl;\r\n switch (o) {\r\n case '<':\r\n return rtl ? a > b : a < b;\r\n case '>':\r\n return rtl ? a < b : a > b;\r\n case '>=':\r\n return rtl ? a <= b : a >= b;\r\n case '<=':\r\n return rtl ? a >= b : a <= b;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Attaches to an internal event.\r\n\t * @protected\r\n\t * @param {HTMLElement} element - The event source.\r\n\t * @param {String} event - The event name.\r\n\t * @param {Function} listener - The event handler to attach.\r\n\t * @param {Boolean} capture - Wether the event should be handled at the capturing phase or not.\r\n\t */\r\n Owl.prototype.on = function (element, event, listener, capture) {\r\n if (element.addEventListener) {\r\n element.addEventListener(event, listener, capture);\r\n } else if (element.attachEvent) {\r\n element.attachEvent('on' + event, listener);\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Detaches from an internal event.\r\n\t * @protected\r\n\t * @param {HTMLElement} element - The event source.\r\n\t * @param {String} event - The event name.\r\n\t * @param {Function} listener - The attached event handler to detach.\r\n\t * @param {Boolean} capture - Wether the attached event handler was registered as a capturing listener or not.\r\n\t */\r\n Owl.prototype.off = function (element, event, listener, capture) {\r\n if (element.removeEventListener) {\r\n element.removeEventListener(event, listener, capture);\r\n } else if (element.detachEvent) {\r\n element.detachEvent('on' + event, listener);\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Triggers a public event.\r\n\t * @todo Remove `status`, `relatedTarget` should be used instead.\r\n\t * @protected\r\n\t * @param {String} name - The event name.\r\n\t * @param {*} [data=null] - The event data.\r\n\t * @param {String} [namespace=carousel] - The event namespace.\r\n\t * @param {String} [state] - The state which is associated with the event.\r\n\t * @param {Boolean} [enter=false] - Indicates if the call enters the specified state or not.\r\n\t * @returns {Event} - The event arguments.\r\n\t */\r\n Owl.prototype.trigger = function (name, data, namespace, state, enter) {\r\n var status = {\r\n item: { count: this._items.length, index: this.current() }\r\n }, handler = $.camelCase(\r\n $.grep(['on', name, namespace], function (v) { return v })\r\n .join('-').toLowerCase()\r\n ), event = $.Event(\r\n [name, 'owl', namespace || 'carousel'].join('.').toLowerCase(),\r\n $.extend({ relatedTarget: this }, status, data)\r\n );\r\n\r\n if (!this._supress[name]) {\r\n $.each(this._plugins, function (name, plugin) {\r\n if (plugin.onTrigger) {\r\n plugin.onTrigger(event);\r\n }\r\n });\r\n\r\n this.register({ type: Owl.Type.Event, name: name });\r\n this.$element.trigger(event);\r\n\r\n if (this.settings && typeof this.settings[handler] === 'function') {\r\n this.settings[handler].call(this, event);\r\n }\r\n }\r\n\r\n return event;\r\n };\r\n\r\n\t/**\r\n\t * Enters a state.\r\n\t * @param name - The state name.\r\n\t */\r\n Owl.prototype.enter = function (name) {\r\n $.each([name].concat(this._states.tags[name] || []), $.proxy(function (i, name) {\r\n if (this._states.current[name] === undefined) {\r\n this._states.current[name] = 0;\r\n }\r\n\r\n this._states.current[name]++;\r\n }, this));\r\n };\r\n\r\n\t/**\r\n\t * Leaves a state.\r\n\t * @param name - The state name.\r\n\t */\r\n Owl.prototype.leave = function (name) {\r\n $.each([name].concat(this._states.tags[name] || []), $.proxy(function (i, name) {\r\n this._states.current[name]--;\r\n }, this));\r\n };\r\n\r\n\t/**\r\n\t * Registers an event or state.\r\n\t * @public\r\n\t * @param {Object} object - The event or state to register.\r\n\t */\r\n Owl.prototype.register = function (object) {\r\n if (object.type === Owl.Type.Event) {\r\n if (!$.event.special[object.name]) {\r\n $.event.special[object.name] = {};\r\n }\r\n\r\n if (!$.event.special[object.name].owl) {\r\n var _default = $.event.special[object.name]._default;\r\n $.event.special[object.name]._default = function (e) {\r\n if (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {\r\n return _default.apply(this, arguments);\r\n }\r\n return e.namespace && e.namespace.indexOf('owl') > -1;\r\n };\r\n $.event.special[object.name].owl = true;\r\n }\r\n } else if (object.type === Owl.Type.State) {\r\n if (!this._states.tags[object.name]) {\r\n this._states.tags[object.name] = object.tags;\r\n } else {\r\n this._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);\r\n }\r\n\r\n this._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function (tag, i) {\r\n return $.inArray(tag, this._states.tags[object.name]) === i;\r\n }, this));\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Suppresses events.\r\n\t * @protected\r\n\t * @param {Array.} events - The events to suppress.\r\n\t */\r\n Owl.prototype.suppress = function (events) {\r\n $.each(events, $.proxy(function (index, event) {\r\n this._supress[event] = true;\r\n }, this));\r\n };\r\n\r\n\t/**\r\n\t * Releases suppressed events.\r\n\t * @protected\r\n\t * @param {Array.} events - The events to release.\r\n\t */\r\n Owl.prototype.release = function (events) {\r\n $.each(events, $.proxy(function (index, event) {\r\n delete this._supress[event];\r\n }, this));\r\n };\r\n\r\n\t/**\r\n\t * Gets unified pointer coordinates from event.\r\n\t * @todo #261\r\n\t * @protected\r\n\t * @param {Event} - The `mousedown` or `touchstart` event.\r\n\t * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.\r\n\t */\r\n Owl.prototype.pointer = function (event) {\r\n var result = { x: null, y: null };\r\n\r\n event = event.originalEvent || event || window.event;\r\n\r\n event = event.touches && event.touches.length ?\r\n event.touches[0] : event.changedTouches && event.changedTouches.length ?\r\n event.changedTouches[0] : event;\r\n\r\n if (event.pageX) {\r\n result.x = event.pageX;\r\n result.y = event.pageY;\r\n } else {\r\n result.x = event.clientX;\r\n result.y = event.clientY;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n\t/**\r\n\t * Determines if the input is a Number or something that can be coerced to a Number\r\n\t * @protected\r\n\t * @param {Number|String|Object|Array|Boolean|RegExp|Function|Symbol} - The input to be tested\r\n\t * @returns {Boolean} - An indication if the input is a Number or can be coerced to a Number\r\n\t */\r\n Owl.prototype.isNumeric = function (number) {\r\n return !isNaN(parseFloat(number));\r\n };\r\n\r\n\t/**\r\n\t * Gets the difference of two vectors.\r\n\t * @todo #261\r\n\t * @protected\r\n\t * @param {Object} - The first vector.\r\n\t * @param {Object} - The second vector.\r\n\t * @returns {Object} - The difference.\r\n\t */\r\n Owl.prototype.difference = function (first, second) {\r\n return {\r\n x: first.x - second.x,\r\n y: first.y - second.y\r\n };\r\n };\r\n\r\n\t/**\r\n\t * The jQuery Plugin for the Owl Carousel\r\n\t * @todo Navigation plugin `next` and `prev`\r\n\t * @public\r\n\t */\r\n $.fn.owlCarousel = function (option) {\r\n var args = Array.prototype.slice.call(arguments, 1);\r\n\r\n return this.each(function () {\r\n var $this = $(this),\r\n data = $this.data('owl.carousel');\r\n\r\n if (!data) {\r\n data = new Owl(this, typeof option == 'object' && option);\r\n $this.data('owl.carousel', data);\r\n\r\n $.each([\r\n 'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'\r\n ], function (i, event) {\r\n data.register({ type: Owl.Type.Event, name: event });\r\n data.$element.on(event + '.owl.carousel.core', $.proxy(function (e) {\r\n if (e.namespace && e.relatedTarget !== this) {\r\n this.suppress([event]);\r\n data[event].apply(this, [].slice.call(arguments, 1));\r\n this.release([event]);\r\n }\r\n }, data));\r\n });\r\n }\r\n\r\n if (typeof option == 'string' && option.charAt(0) !== '_') {\r\n data[option].apply(data, args);\r\n }\r\n });\r\n };\r\n\r\n\t/**\r\n\t * The constructor for the jQuery Plugin\r\n\t * @public\r\n\t */\r\n $.fn.owlCarousel.Constructor = Owl;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * AutoRefresh Plugin\r\n * @version 2.1.0\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the auto refresh plugin.\r\n\t * @class The Auto Refresh Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n var AutoRefresh = function (carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n this._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * Refresh interval.\r\n\t\t * @protected\r\n\t\t * @type {number}\r\n\t\t */\r\n this._interval = null;\r\n\r\n\t\t/**\r\n\t\t * Whether the element is currently visible or not.\r\n\t\t * @protected\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n this._visible = null;\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n this._handlers = {\r\n 'initialized.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoRefresh) {\r\n this.watch();\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n };\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n AutoRefresh.Defaults = {\r\n autoRefresh: true,\r\n autoRefreshInterval: 500\r\n };\r\n\r\n\t/**\r\n\t * Watches the element.\r\n\t */\r\n AutoRefresh.prototype.watch = function () {\r\n if (this._interval) {\r\n return;\r\n }\r\n\r\n this._visible = this._core.$element.is(':visible');\r\n this._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);\r\n };\r\n\r\n\t/**\r\n\t * Refreshes the element.\r\n\t */\r\n AutoRefresh.prototype.refresh = function () {\r\n if (this._core.$element.is(':visible') === this._visible) {\r\n return;\r\n }\r\n\r\n this._visible = !this._visible;\r\n\r\n this._core.$element.toggleClass('owl-hidden', !this._visible);\r\n\r\n this._visible && (this._core.invalidate('width') && this._core.refresh());\r\n };\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t */\r\n AutoRefresh.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n window.clearInterval(this._interval);\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.AutoRefresh = AutoRefresh;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Lazy Plugin\r\n * @version 2.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the lazy plugin.\r\n\t * @class The Lazy Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n var Lazy = function (carousel) {\r\n\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n this._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * Already loaded items.\r\n\t\t * @protected\r\n\t\t * @type {Array.}\r\n\t\t */\r\n this._loaded = [];\r\n\r\n\t\t/**\r\n\t\t * Event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n this._handlers = {\r\n 'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function (e) {\r\n if (!e.namespace) {\r\n return;\r\n }\r\n\r\n if (!this._core.settings || !this._core.settings.lazyLoad) {\r\n return;\r\n }\r\n\r\n if ((e.property && e.property.name == 'position') || e.type == 'initialized') {\r\n var settings = this._core.settings,\r\n n = (settings.center && Math.ceil(settings.items / 2) || settings.items),\r\n i = ((settings.center && n * -1) || 0),\r\n position = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i,\r\n clones = this._core.clones().length,\r\n load = $.proxy(function (i, v) { this.load(v) }, this);\r\n //TODO: Need documentation for this new option\r\n if (settings.lazyLoadEager > 0) {\r\n n += settings.lazyLoadEager;\r\n // If the carousel is looping also preload images that are to the \"left\"\r\n if (settings.loop) {\r\n position -= settings.lazyLoadEager;\r\n n++;\r\n }\r\n }\r\n\r\n while (i++ < n) {\r\n this.load(clones / 2 + this._core.relative(position));\r\n clones && $.each(this._core.clones(this._core.relative(position)), load);\r\n position++;\r\n }\r\n }\r\n }, this)\r\n };\r\n\r\n // set the default options\r\n this._core.options = $.extend({}, Lazy.Defaults, this._core.options);\r\n\r\n // register event handler\r\n this._core.$element.on(this._handlers);\r\n };\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\r\n Lazy.Defaults = {\r\n lazyLoad: false,\r\n lazyLoadEager: 0,\r\n intersectionObserverSupport: 'IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype\r\n };\r\n\r\n Lazy.prototype.addOberver = function () {\r\n var _this = this;\r\n this._observer = new IntersectionObserver(function (entries, observer) {\r\n entries.forEach(function (entry) {\r\n if (entry.isIntersecting === true || entry.intersectionRatio > 0) {\r\n var element = entry.target,\r\n $element = $(element),\r\n url = element.getAttribute('data-src');\r\n observer.unobserve(element);\r\n\r\n var parentElement = element.parentNode;\r\n // Is the parent element a \r\n if (parentElement.tagName.toLowerCase() === 'picture') {\r\n [].slice.call(parentElement.querySelectorAll('source')).forEach(function (source) {\r\n source.setAttribute('srcset', source.getAttribute('data-srcset'));\r\n source.removeAttribute('data-srcset');\r\n });\r\n _this.setElementSrc(element);\r\n return;\r\n }\r\n\r\n var image = new Image();\r\n _this._core.trigger('load', { element: $element, url: url }, 'lazy');\r\n image.onload = $.proxy(function () {\r\n this.setElementSrc(element);\r\n }, _this);\r\n image.src = url;\r\n }\r\n });\r\n });\r\n };\r\n\r\n Lazy.prototype.setElementSrc = function (element) {\r\n var $element = $(element),\r\n url = element.getAttribute('data-src');\r\n element.src = url;\r\n element.removeAttribute('data-src');\r\n $element.css('opacity', 1);\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n };\r\n\r\n\t/**\r\n\t * Loads all resources of an item at the specified position.\r\n\t * @param {Number} position - The absolute position of the item.\r\n\t * @protected\r\n\t */\r\n Lazy.prototype.load = function (position) {\r\n var $item = this._core.$stage.children().eq(position),\r\n $elements = $item && $item.find('.owl-lazy');\r\n\r\n if (!$elements || $.inArray($item.get(0), this._loaded) > -1) {\r\n return;\r\n }\r\n\r\n $elements.each($.proxy(function (index, element) {\r\n var $element = $(element), image,\r\n url = (window.devicePixelRatio > 1 && $element.attr('data-src-retina')) || $element.attr('data-src') || $element.attr('data-srcset');\r\n\r\n if (this._core.options.intersectionObserverSupport) {\r\n if (!this._observer) {\r\n this.addOberver();\r\n }\r\n this._observer.observe(element)\r\n return;\r\n }\r\n\r\n if ($element.is('img') && !$element.attr('data-src')) {\r\n $element.css('opacity', 1);\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n } else {\r\n this._core.trigger('load', { element: $element, url: url }, 'lazy');\r\n\r\n if ($element.is('img')) {\r\n $element.one('load.owl.lazy', $.proxy(function () {\r\n $element.css('opacity', 1);\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n }, this)).attr('src', url);\r\n } else if ($element.is('source')) {\r\n $element.attr('srcset', $element.attr('data-srcset'));\r\n } else {\r\n image = new Image();\r\n image.onload = $.proxy(function () {\r\n $element.css({\r\n 'background-image': 'url(\"' + url + '\")',\r\n 'opacity': '1'\r\n });\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n }, this);\r\n image.src = url;\r\n }\r\n }\r\n\r\n }, this));\r\n\r\n this._loaded.push($item.get(0));\r\n };\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @public\r\n\t */\r\n Lazy.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n for (handler in this.handlers) {\r\n this._core.$element.off(handler, this.handlers[handler]);\r\n }\r\n if (this._observer) {\r\n this._observer.disconnect();\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Lazy = Lazy;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * AutoHeight Plugin\r\n * @version 2.1.0\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the auto height plugin.\r\n\t * @class The Auto Height Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n var AutoHeight = function (carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n this._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n this._handlers = {\r\n 'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoHeight) {\r\n this.update();\r\n }\r\n }, this),\r\n 'changed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoHeight && e.property.name === 'position') {\r\n this.update();\r\n }\r\n }, this),\r\n 'loaded.owl.lazy': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoHeight\r\n && e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {\r\n this.update();\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n };\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n AutoHeight.Defaults = {\r\n autoHeight: false,\r\n autoHeightClass: 'owl-height'\r\n };\r\n\r\n\t/**\r\n\t * Updates the view.\r\n\t */\r\n AutoHeight.prototype.update = function () {\r\n var start = this._core._current,\r\n end = start + this._core.settings.items,\r\n visible = this._core.$stage.children().toArray().slice(start, end),\r\n heights = [],\r\n maxheight = 0;\r\n\r\n $.each(visible, function (index, item) {\r\n heights.push($(item).height());\r\n });\r\n\r\n maxheight = Math.max.apply(null, heights);\r\n\r\n this._core.$stage.parent()\r\n .height(maxheight)\r\n .addClass(this._core.settings.autoHeightClass);\r\n };\r\n\r\n AutoHeight.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] !== 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.AutoHeight = AutoHeight;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Video Plugin\r\n * @version 2.1.0\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the video plugin.\r\n\t * @class The Video Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n var Video = function (carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n this._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * Cache all video URLs.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n this._videos = {};\r\n\r\n\t\t/**\r\n\t\t * Current playing item.\r\n\t\t * @protected\r\n\t\t * @type {jQuery}\r\n\t\t */\r\n this._playing = null;\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @todo The cloned content removale is too late\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n this._handlers = {\r\n 'initialized.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace) {\r\n this._core.register({ type: 'state', name: 'playing', tags: ['interacting'] });\r\n }\r\n }, this),\r\n 'resize.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.video && this.isInFullScreen()) {\r\n e.preventDefault();\r\n }\r\n }, this),\r\n 'refreshed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.is('resizing')) {\r\n this._core.$stage.find('.cloned .owl-video-frame').remove();\r\n }\r\n }, this),\r\n 'changed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && e.property.name === 'position' && this._playing) {\r\n this.stop();\r\n }\r\n }, this),\r\n 'prepared.owl.carousel': $.proxy(function (e) {\r\n if (!e.namespace) {\r\n return;\r\n }\r\n\r\n var $element = $(e.content).find('.owl-video');\r\n\r\n if ($element.length) {\r\n $element.css('display', 'none');\r\n this.fetch($element, $(e.content));\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, Video.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n\r\n this._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function (e) {\r\n this.play(e);\r\n }, this));\r\n };\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n Video.Defaults = {\r\n video: false,\r\n videoHeight: false,\r\n videoWidth: false\r\n };\r\n\r\n\t/**\r\n\t * Gets the video ID and the type (YouTube/Vimeo/vzaar only).\r\n\t * @protected\r\n\t * @param {jQuery} target - The target containing the video data.\r\n\t * @param {jQuery} item - The item containing the video.\r\n\t */\r\n Video.prototype.fetch = function (target, item) {\r\n var type = (function () {\r\n if (target.attr('data-vimeo-id')) {\r\n return 'vimeo';\r\n } else if (target.attr('data-vzaar-id')) {\r\n return 'vzaar'\r\n } else {\r\n return 'youtube';\r\n }\r\n })(),\r\n id = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'),\r\n width = target.attr('data-width') || this._core.settings.videoWidth,\r\n height = target.attr('data-height') || this._core.settings.videoHeight,\r\n url = target.attr('href');\r\n\r\n if (url) {\r\n\r\n\t\t\t/*\r\n\t\t\t\t\tParses the id's out of the following urls (and probably more):\r\n\t\t\t\t\thttps://www.youtube.com/watch?v=:id\r\n\t\t\t\t\thttps://youtu.be/:id\r\n\t\t\t\t\thttps://vimeo.com/:id\r\n\t\t\t\t\thttps://vimeo.com/channels/:channel/:id\r\n\t\t\t\t\thttps://vimeo.com/groups/:group/videos/:id\r\n\t\t\t\t\thttps://app.vzaar.com/videos/:id\r\n\r\n\t\t\t\t\tVisual example: https://regexper.com/#(http%3A%7Chttps%3A%7C)%5C%2F%5C%2F(player.%7Cwww.%7Capp.)%3F(vimeo%5C.com%7Cyoutu(be%5C.com%7C%5C.be%7Cbe%5C.googleapis%5C.com)%7Cvzaar%5C.com)%5C%2F(video%5C%2F%7Cvideos%5C%2F%7Cembed%5C%2F%7Cchannels%5C%2F.%2B%5C%2F%7Cgroups%5C%2F.%2B%5C%2F%7Cwatch%5C%3Fv%3D%7Cv%5C%2F)%3F(%5BA-Za-z0-9._%25-%5D*)(%5C%26%5CS%2B)%3F\r\n\t\t\t*/\r\n\r\n id = url.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/);\r\n\r\n if (id[3].indexOf('youtu') > -1) {\r\n type = 'youtube';\r\n } else if (id[3].indexOf('vimeo') > -1) {\r\n type = 'vimeo';\r\n } else if (id[3].indexOf('vzaar') > -1) {\r\n type = 'vzaar';\r\n } else {\r\n throw new Error('Video URL not supported.');\r\n }\r\n id = id[6];\r\n } else {\r\n throw new Error('Missing video URL.');\r\n }\r\n\r\n this._videos[url] = {\r\n type: type,\r\n id: id,\r\n width: width,\r\n height: height\r\n };\r\n\r\n item.attr('data-video', url);\r\n\r\n this.thumbnail(target, this._videos[url]);\r\n };\r\n\r\n\t/**\r\n\t * Creates video thumbnail.\r\n\t * @protected\r\n\t * @param {jQuery} target - The target containing the video data.\r\n\t * @param {Object} info - The video info object.\r\n\t * @see `fetch`\r\n\t */\r\n Video.prototype.thumbnail = function (target, video) {\r\n var tnLink,\r\n icon,\r\n path,\r\n dimensions = video.width && video.height ? 'style=\"width:' + video.width + 'px;height:' + video.height + 'px;\"' : '',\r\n customTn = target.find('img'),\r\n srcType = 'src',\r\n lazyClass = '',\r\n settings = this._core.settings,\r\n create = function (path) {\r\n icon = '
';\r\n\r\n if (settings.lazyLoad) {\r\n tnLink = '
';\r\n } else {\r\n tnLink = '
';\r\n }\r\n target.after(tnLink);\r\n target.after(icon);\r\n };\r\n\r\n // wrap video content into owl-video-wrapper div\r\n target.wrap('
');\r\n\r\n if (this._core.settings.lazyLoad) {\r\n srcType = 'data-src';\r\n lazyClass = 'owl-lazy';\r\n }\r\n\r\n // custom thumbnail\r\n if (customTn.length) {\r\n create(customTn.attr(srcType));\r\n customTn.remove();\r\n return false;\r\n }\r\n\r\n if (video.type === 'youtube') {\r\n path = \"//img.youtube.com/vi/\" + video.id + \"/hqdefault.jpg\";\r\n create(path);\r\n } else if (video.type === 'vimeo') {\r\n $.ajax({\r\n type: 'GET',\r\n url: '//vimeo.com/api/v2/video/' + video.id + '.json',\r\n jsonp: 'callback',\r\n dataType: 'jsonp',\r\n success: function (data) {\r\n path = data[0].thumbnail_large;\r\n create(path);\r\n }\r\n });\r\n } else if (video.type === 'vzaar') {\r\n $.ajax({\r\n type: 'GET',\r\n url: '//vzaar.com/api/videos/' + video.id + '.json',\r\n jsonp: 'callback',\r\n dataType: 'jsonp',\r\n success: function (data) {\r\n path = data.framegrab_url;\r\n create(path);\r\n }\r\n });\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Stops the current video.\r\n\t * @public\r\n\t */\r\n Video.prototype.stop = function () {\r\n this._core.trigger('stop', null, 'video');\r\n this._playing.find('.owl-video-frame').remove();\r\n this._playing.removeClass('owl-video-playing');\r\n this._playing = null;\r\n this._core.leave('playing');\r\n this._core.trigger('stopped', null, 'video');\r\n };\r\n\r\n\t/**\r\n\t * Starts the current video.\r\n\t * @public\r\n\t * @param {Event} event - The event arguments.\r\n\t */\r\n Video.prototype.play = function (event) {\r\n var target = $(event.target),\r\n item = target.closest('.' + this._core.settings.itemClass),\r\n video = this._videos[item.attr('data-video')],\r\n width = video.width || '100%',\r\n height = video.height || this._core.$stage.height(),\r\n html;\r\n\r\n if (this._playing) {\r\n return;\r\n }\r\n\r\n this._core.enter('playing');\r\n this._core.trigger('play', null, 'video');\r\n\r\n item = this._core.items(this._core.relative(item.index()));\r\n\r\n this._core.reset(item.index());\r\n\r\n if (video.type === 'youtube') {\r\n html = '';\r\n } else if (video.type === 'vimeo') {\r\n html = '';\r\n } else if (video.type === 'vzaar') {\r\n html = '';\r\n }\r\n\r\n $('
' + html + '
').insertAfter(item.find('.owl-video'));\r\n\r\n this._playing = item.addClass('owl-video-playing');\r\n };\r\n\r\n\t/**\r\n\t * Checks whether an video is currently in full screen mode or not.\r\n\t * @todo Bad style because looks like a readonly method but changes members.\r\n\t * @protected\r\n\t * @returns {Boolean}\r\n\t */\r\n Video.prototype.isInFullScreen = function () {\r\n var element = document.fullscreenElement || document.mozFullScreenElement ||\r\n document.webkitFullscreenElement;\r\n\r\n return element && $(element).parent().hasClass('owl-video-frame');\r\n };\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t */\r\n Video.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n this._core.$element.off('click.owl.video');\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Video = Video;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Animate Plugin\r\n * @version 2.1.0\r\n * @author Bartosz Wojciechowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the animate plugin.\r\n\t * @class The Navigation Plugin\r\n\t * @param {Owl} scope - The Owl Carousel\r\n\t */\r\n var Animate = function (scope) {\r\n this.core = scope;\r\n this.core.options = $.extend({}, Animate.Defaults, this.core.options);\r\n this.swapping = true;\r\n this.previous = undefined;\r\n this.next = undefined;\r\n\r\n this.handlers = {\r\n 'change.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && e.property.name == 'position') {\r\n this.previous = this.core.current();\r\n this.next = e.property.value;\r\n }\r\n }, this),\r\n 'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace) {\r\n this.swapping = e.type == 'translated';\r\n }\r\n }, this),\r\n 'translate.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\r\n this.swap();\r\n }\r\n }, this)\r\n };\r\n\r\n this.core.$element.on(this.handlers);\r\n };\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n Animate.Defaults = {\r\n animateOut: false,\r\n animateIn: false\r\n };\r\n\r\n\t/**\r\n\t * Toggles the animation classes whenever an translations starts.\r\n\t * @protected\r\n\t * @returns {Boolean|undefined}\r\n\t */\r\n Animate.prototype.swap = function () {\r\n\r\n if (this.core.settings.items !== 1) {\r\n return;\r\n }\r\n\r\n if (!$.support.animation || !$.support.transition) {\r\n return;\r\n }\r\n\r\n this.core.speed(0);\r\n\r\n var left,\r\n clear = $.proxy(this.clear, this),\r\n previous = this.core.$stage.children().eq(this.previous),\r\n next = this.core.$stage.children().eq(this.next),\r\n incoming = this.core.settings.animateIn,\r\n outgoing = this.core.settings.animateOut;\r\n\r\n if (this.core.current() === this.previous) {\r\n return;\r\n }\r\n\r\n if (outgoing) {\r\n left = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\r\n previous.one($.support.animation.end, clear)\r\n .css({ 'left': left + 'px' })\r\n .addClass('animated owl-animated-out')\r\n .addClass(outgoing);\r\n }\r\n\r\n if (incoming) {\r\n next.one($.support.animation.end, clear)\r\n .addClass('animated owl-animated-in')\r\n .addClass(incoming);\r\n }\r\n };\r\n\r\n Animate.prototype.clear = function (e) {\r\n $(e.target).css({ 'left': '' })\r\n .removeClass('animated owl-animated-out owl-animated-in')\r\n .removeClass(this.core.settings.animateIn)\r\n .removeClass(this.core.settings.animateOut);\r\n this.core.onTransitionEnd();\r\n };\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @public\r\n\t */\r\n Animate.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n for (handler in this.handlers) {\r\n this.core.$element.off(handler, this.handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Animate = Animate;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Autoplay Plugin\r\n * @version 2.1.0\r\n * @author Bartosz Wojciechowski\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n\t/**\r\n\t * Creates the autoplay plugin.\r\n\t * @class The Autoplay Plugin\r\n\t * @param {Owl} scope - The Owl Carousel\r\n\t */\r\n var Autoplay = function (carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n this._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * The autoplay timeout.\r\n\t\t * @type {Timeout}\r\n\t\t */\r\n this._timeout = null;\r\n\r\n\t\t/**\r\n\t\t * Indicates whenever the autoplay is paused.\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n this._paused = false;\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n this._handlers = {\r\n 'changed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && e.property.name === 'settings') {\r\n if (this._core.settings.autoplay) {\r\n this.play();\r\n } else {\r\n this.stop();\r\n }\r\n } else if (e.namespace && e.property.name === 'position') {\r\n //console.log('play?', e);\r\n if (this._core.settings.autoplay) {\r\n this._setAutoPlayInterval();\r\n }\r\n }\r\n }, this),\r\n 'initialized.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.autoplay) {\r\n this.play();\r\n }\r\n }, this),\r\n 'play.owl.autoplay': $.proxy(function (e, t, s) {\r\n if (e.namespace) {\r\n this.play(t, s);\r\n }\r\n }, this),\r\n 'stop.owl.autoplay': $.proxy(function (e) {\r\n if (e.namespace) {\r\n this.stop();\r\n }\r\n }, this),\r\n 'mouseover.owl.autoplay': $.proxy(function () {\r\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n this.pause();\r\n }\r\n }, this),\r\n 'mouseleave.owl.autoplay': $.proxy(function () {\r\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n this.play();\r\n }\r\n }, this),\r\n 'touchstart.owl.core': $.proxy(function () {\r\n if (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n this.pause();\r\n }\r\n }, this),\r\n 'touchend.owl.core': $.proxy(function () {\r\n if (this._core.settings.autoplayHoverPause) {\r\n this.play();\r\n }\r\n }, this)\r\n };\r\n\r\n // register event handlers\r\n this._core.$element.on(this._handlers);\r\n\r\n // set default options\r\n this._core.options = $.extend({}, Autoplay.Defaults, this._core.options);\r\n };\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n Autoplay.Defaults = {\r\n autoplay: false,\r\n autoplayTimeout: 5000,\r\n autoplayHoverPause: false,\r\n autoplaySpeed: false\r\n };\r\n\r\n\t/**\r\n\t * Starts the autoplay.\r\n\t * @public\r\n\t * @param {Number} [timeout] - The interval before the next animation starts.\r\n\t * @param {Number} [speed] - The animation speed for the animations.\r\n\t */\r\n Autoplay.prototype.play = function (timeout, speed) {\r\n this._paused = false;\r\n\r\n if (this._core.is('rotating')) {\r\n return;\r\n }\r\n\r\n this._core.enter('rotating');\r\n\r\n this._setAutoPlayInterval();\r\n };\r\n\r\n\t/**\r\n\t * Gets a new timeout\r\n\t * @private\r\n\t * @param {Number} [timeout] - The interval before the next animation starts.\r\n\t * @param {Number} [speed] - The animation speed for the animations.\r\n\t * @return {Timeout}\r\n\t */\r\n Autoplay.prototype._getNextTimeout = function (timeout, speed) {\r\n if (this._timeout) {\r\n window.clearTimeout(this._timeout);\r\n }\r\n return window.setTimeout($.proxy(function () {\r\n if (this._paused || this._core.is('busy') || this._core.is('interacting') || document.hidden) {\r\n return;\r\n }\r\n this._core.next(speed || this._core.settings.autoplaySpeed);\r\n }, this), timeout || this._core.settings.autoplayTimeout);\r\n };\r\n\r\n\t/**\r\n\t * Sets autoplay in motion.\r\n\t * @private\r\n\t */\r\n Autoplay.prototype._setAutoPlayInterval = function () {\r\n this._timeout = this._getNextTimeout();\r\n };\r\n\r\n\t/**\r\n\t * Stops the autoplay.\r\n\t * @public\r\n\t */\r\n Autoplay.prototype.stop = function () {\r\n if (!this._core.is('rotating')) {\r\n return;\r\n }\r\n\r\n window.clearTimeout(this._timeout);\r\n this._core.leave('rotating');\r\n };\r\n\r\n\t/**\r\n\t * Stops the autoplay.\r\n\t * @public\r\n\t */\r\n Autoplay.prototype.pause = function () {\r\n if (!this._core.is('rotating')) {\r\n return;\r\n }\r\n\r\n this._paused = true;\r\n };\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t */\r\n Autoplay.prototype.destroy = function () {\r\n var handler, property;\r\n\r\n this.stop();\r\n\r\n for (handler in this._handlers) {\r\n this._core.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.autoplay = Autoplay;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Navigation Plugin\r\n * @version 2.1.0\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n 'use strict';\r\n\r\n\t/**\r\n\t * Creates the navigation plugin.\r\n\t * @class The Navigation Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel.\r\n\t */\r\n var Navigation = function (carousel) {\r\n\t\t/**\r\n\t\t * Reference to the core.\r\n\t\t * @protected\r\n\t\t * @type {Owl}\r\n\t\t */\r\n this._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * Indicates whether the plugin is initialized or not.\r\n\t\t * @protected\r\n\t\t * @type {Boolean}\r\n\t\t */\r\n this._initialized = false;\r\n\r\n\t\t/**\r\n\t\t * The current paging indexes.\r\n\t\t * @protected\r\n\t\t * @type {Array}\r\n\t\t */\r\n this._pages = [];\r\n\r\n\t\t/**\r\n\t\t * All DOM elements of the user interface.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n this._controls = {};\r\n\r\n\t\t/**\r\n\t\t * Markup for an indicator.\r\n\t\t * @protected\r\n\t\t * @type {Array.}\r\n\t\t */\r\n this._templates = [];\r\n\r\n\t\t/**\r\n\t\t * The carousel element.\r\n\t\t * @type {jQuery}\r\n\t\t */\r\n this.$element = this._core.$element;\r\n\r\n\t\t/**\r\n\t\t * Overridden methods of the carousel.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n this._overrides = {\r\n next: this._core.next,\r\n prev: this._core.prev,\r\n to: this._core.to\r\n };\r\n\r\n\t\t/**\r\n\t\t * All event handlers.\r\n\t\t * @protected\r\n\t\t * @type {Object}\r\n\t\t */\r\n this._handlers = {\r\n 'prepared.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.dotsData) {\r\n this._templates.push('
' +\r\n $(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
');\r\n }\r\n }, this),\r\n 'added.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.dotsData) {\r\n this._templates.splice(e.position, 0, this._templates.pop());\r\n }\r\n }, this),\r\n 'remove.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._core.settings.dotsData) {\r\n this._templates.splice(e.position, 1);\r\n }\r\n }, this),\r\n 'changed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && e.property.name == 'position') {\r\n this.draw();\r\n }\r\n }, this),\r\n 'initialized.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && !this._initialized) {\r\n this._core.trigger('initialize', null, 'navigation');\r\n this.initialize();\r\n this.update();\r\n this.draw();\r\n this._initialized = true;\r\n this._core.trigger('initialized', null, 'navigation');\r\n }\r\n }, this),\r\n 'refreshed.owl.carousel': $.proxy(function (e) {\r\n if (e.namespace && this._initialized) {\r\n this._core.trigger('refresh', null, 'navigation');\r\n this.update();\r\n this.draw();\r\n this._core.trigger('refreshed', null, 'navigation');\r\n }\r\n }, this)\r\n };\r\n\r\n // set default options\r\n this._core.options = $.extend({}, Navigation.Defaults, this._core.options);\r\n\r\n // register event handlers\r\n this.$element.on(this._handlers);\r\n };\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t * @todo Rename `slideBy` to `navBy`\r\n\t */\r\n Navigation.Defaults = {\r\n nav: false,\r\n navText: ['prev', 'next'],\r\n navSpeed: false,\r\n navElement: 'div',\r\n navContainer: false,\r\n navContainerClass: 'owl-nav',\r\n navClass: ['owl-prev', 'owl-next'],\r\n slideBy: 1,\r\n dotClass: 'owl-dot',\r\n dotsClass: 'owl-dots',\r\n dots: true,\r\n dotsEach: false,\r\n dotsData: false,\r\n dotsSpeed: false,\r\n dotsContainer: false\r\n };\r\n\r\n\t/**\r\n\t * Initializes the layout of the plugin and extends the carousel.\r\n\t * @protected\r\n\t */\r\n Navigation.prototype.initialize = function () {\r\n var override,\r\n settings = this._core.settings;\r\n\r\n // create DOM structure for relative navigation\r\n this._controls.$relative = (settings.navContainer ? $(settings.navContainer)\r\n : $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n this._controls.$previous = $('<' + settings.navElement + '>')\r\n .addClass(settings.navClass[0])\r\n .html(settings.navText[0])\r\n .prependTo(this._controls.$relative)\r\n .on('click', $.proxy(function (e) {\r\n this.prev(settings.navSpeed);\r\n }, this));\r\n this._controls.$next = $('<' + settings.navElement + '>')\r\n .addClass(settings.navClass[1])\r\n .html(settings.navText[1])\r\n .appendTo(this._controls.$relative)\r\n .on('click', $.proxy(function (e) {\r\n this.next(settings.navSpeed);\r\n }, this));\r\n\r\n // create DOM structure for absolute navigation\r\n if (!settings.dotsData) {\r\n this._templates = [$('
')\r\n .addClass(settings.dotClass)\r\n .append($(''))\r\n .prop('outerHTML')];\r\n }\r\n\r\n this._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)\r\n : $('
').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n this._controls.$absolute.on('click', 'div', $.proxy(function (e) {\r\n var index = $(e.target).parent().is(this._controls.$absolute)\r\n ? $(e.target).index() : $(e.target).parent().index();\r\n\r\n e.preventDefault();\r\n\r\n this.to(index, settings.dotsSpeed);\r\n }, this));\r\n\r\n // override public methods of the carousel\r\n for (override in this._overrides) {\r\n this._core[override] = $.proxy(this[override], this);\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @protected\r\n\t */\r\n Navigation.prototype.destroy = function () {\r\n var handler, control, property, override;\r\n\r\n for (handler in this._handlers) {\r\n this.$element.off(handler, this._handlers[handler]);\r\n }\r\n for (control in this._controls) {\r\n this._controls[control].remove();\r\n }\r\n for (override in this.overides) {\r\n this._core[override] = this._overrides[override];\r\n }\r\n for (property in Object.getOwnPropertyNames(this)) {\r\n typeof this[property] != 'function' && (this[property] = null);\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Updates the internal state.\r\n\t * @protected\r\n\t */\r\n Navigation.prototype.update = function () {\r\n var i, j, k,\r\n lower = this._core.clones().length / 2,\r\n upper = lower + this._core.items().length,\r\n maximum = this._core.maximum(true),\r\n settings = this._core.settings,\r\n size = settings.center || settings.autoWidth || settings.dotsData\r\n ? 1 : settings.dotsEach || settings.items;\r\n\r\n if (settings.slideBy !== 'page') {\r\n settings.slideBy = Math.min(settings.slideBy, settings.items);\r\n }\r\n\r\n if (settings.dots || settings.slideBy == 'page') {\r\n this._pages = [];\r\n\r\n for (i = lower, j = 0, k = 0; i < upper; i++) {\r\n if (j >= size || j === 0) {\r\n this._pages.push({\r\n start: Math.min(maximum, i - lower),\r\n end: i - lower + size - 1\r\n });\r\n if (Math.min(maximum, i - lower) === maximum) {\r\n break;\r\n }\r\n j = 0, ++k;\r\n }\r\n j += this._core.mergers(this._core.relative(i));\r\n }\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Draws the user interface.\r\n\t * @todo The option `dotsData` wont work.\r\n\t * @protected\r\n\t */\r\n Navigation.prototype.draw = function () {\r\n var difference,\r\n settings = this._core.settings,\r\n disabled = this._core.items().length <= settings.items,\r\n index = this._core.relative(this._core.current()),\r\n loop = settings.loop || settings.rewind;\r\n\r\n this._controls.$relative.toggleClass('disabled', !settings.nav || disabled);\r\n\r\n if (settings.nav) {\r\n this._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));\r\n this._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));\r\n }\r\n\r\n this._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);\r\n\r\n if (settings.dots) {\r\n difference = this._pages.length - this._controls.$absolute.children().length;\r\n\r\n if (settings.dotsData && difference !== 0) {\r\n this._controls.$absolute.html(this._templates.join(''));\r\n } else if (difference > 0) {\r\n this._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));\r\n } else if (difference < 0) {\r\n this._controls.$absolute.children().slice(difference).remove();\r\n }\r\n\r\n this._controls.$absolute.find('.active').removeClass('active');\r\n this._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');\r\n }\r\n };\r\n\r\n\t/**\r\n\t * Extends event data.\r\n\t * @protected\r\n\t * @param {Event} event - The event object which gets thrown.\r\n\t */\r\n Navigation.prototype.onTrigger = function (event) {\r\n var settings = this._core.settings;\r\n\r\n event.page = {\r\n index: $.inArray(this.current(), this._pages),\r\n count: this._pages.length,\r\n size: settings && (settings.center || settings.autoWidth || settings.dotsData\r\n ? 1 : settings.dotsEach || settings.items)\r\n };\r\n };\r\n\r\n\t/**\r\n\t * Gets the current page position of the carousel.\r\n\t * @protected\r\n\t * @returns {Number}\r\n\t */\r\n Navigation.prototype.current = function () {\r\n var current = this._core.relative(this._core.current());\r\n return $.grep(this._pages, $.proxy(function (page, index) {\r\n return page.start <= current && page.end >= current;\r\n }, this)).pop();\r\n };\r\n\r\n\t/**\r\n\t * Gets the current succesor/predecessor position.\r\n\t * @protected\r\n\t * @returns {Number}\r\n\t */\r\n Navigation.prototype.getPosition = function (successor) {\r\n var position, length,\r\n settings = this._core.settings;\r\n\r\n if (settings.slideBy == 'page') {\r\n position = $.inArray(this.current(), this._pages);\r\n length = this._pages.length;\r\n successor ? ++position : --position;\r\n position = this._pages[((position % length) + length) % length].start;\r\n } else {\r\n position = this._core.relative(this._core.current());\r\n length = this._core.items().length;\r\n successor ? position += settings.slideBy : position -= settings.slideBy;\r\n }\r\n\r\n return position;\r\n };\r\n\r\n\t/**\r\n\t * Slides to the next item or page.\r\n\t * @public\r\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\r\n\t */\r\n Navigation.prototype.next = function (speed) {\r\n $.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);\r\n };\r\n\r\n\t/**\r\n\t * Slides to the previous item or page.\r\n\t * @public\r\n\t * @param {Number} [speed=false] - The time in milliseconds for the transition.\r\n\t */\r\n Navigation.prototype.prev = function (speed) {\r\n $.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);\r\n };\r\n\r\n\t/**\r\n\t * Slides to the specified item or page.\r\n\t * @public\r\n\t * @param {Number} position - The position of the item or page.\r\n\t * @param {Number} [speed] - The time in milliseconds for the transition.\r\n\t * @param {Boolean} [standard=false] - Whether to use the standard behaviour or not.\r\n\t */\r\n Navigation.prototype.to = function (position, speed, standard) {\r\n var length;\r\n\r\n if (!standard && this._pages.length) {\r\n length = this._pages.length;\r\n $.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);\r\n } else {\r\n $.proxy(this._overrides.to, this._core)(position, speed);\r\n }\r\n };\r\n\r\n $.fn.owlCarousel.Constructor.Plugins.Navigation = Navigation;\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n\r\n/**\r\n * Support Plugin\r\n *\r\n * @version 2.1.0\r\n * @author Vivid Planet Software GmbH\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @license The MIT License (MIT)\r\n */\r\n; (function ($, window, document, undefined) {\r\n\r\n var style = $('').get(0).style,\r\n prefixes = 'Webkit Moz O ms'.split(' '),\r\n events = {\r\n transition: {\r\n end: {\r\n WebkitTransition: 'webkitTransitionEnd',\r\n MozTransition: 'transitionend',\r\n OTransition: 'oTransitionEnd',\r\n transition: 'transitionend'\r\n }\r\n },\r\n animation: {\r\n end: {\r\n WebkitAnimation: 'webkitAnimationEnd',\r\n MozAnimation: 'animationend',\r\n OAnimation: 'oAnimationEnd',\r\n animation: 'animationend'\r\n }\r\n }\r\n },\r\n tests = {\r\n csstransforms: function () {\r\n return !!test('transform');\r\n },\r\n csstransforms3d: function () {\r\n return !!test('perspective');\r\n },\r\n csstransitions: function () {\r\n return !!test('transition');\r\n },\r\n cssanimations: function () {\r\n return !!test('animation');\r\n }\r\n };\r\n\r\n function test(property, prefixed) {\r\n var result = false,\r\n upper = property.charAt(0).toUpperCase() + property.slice(1);\r\n\r\n $.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function (i, property) {\r\n if (style[property] !== undefined) {\r\n result = prefixed ? property : true;\r\n return false;\r\n }\r\n });\r\n\r\n return result;\r\n }\r\n\r\n function prefixed(property) {\r\n return test(property, true);\r\n }\r\n\r\n if (tests.csstransitions()) {\r\n /* jshint -W053 */\r\n $.support.transition = new String(prefixed('transition'))\r\n $.support.transition.end = events.transition.end[$.support.transition];\r\n }\r\n\r\n if (tests.cssanimations()) {\r\n /* jshint -W053 */\r\n $.support.animation = new String(prefixed('animation'))\r\n $.support.animation.end = events.animation.end[$.support.animation];\r\n }\r\n\r\n if (tests.csstransforms()) {\r\n /* jshint -W053 */\r\n $.support.transform = new String(prefixed('transform'));\r\n $.support.transform3d = tests.csstransforms3d();\r\n }\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n","/**\r\n * @license AngularJS v1.7.6\r\n * (c) 2010-2018 Google, Inc. http://angularjs.org\r\n * License: MIT\r\n */\r\n(function(window, angular) {'use strict';\r\n\r\nvar ELEMENT_NODE = 1;\r\nvar COMMENT_NODE = 8;\r\n\r\nvar ADD_CLASS_SUFFIX = '-add';\r\nvar REMOVE_CLASS_SUFFIX = '-remove';\r\nvar EVENT_CLASS_PREFIX = 'ng-';\r\nvar ACTIVE_CLASS_SUFFIX = '-active';\r\nvar PREPARE_CLASS_SUFFIX = '-prepare';\r\n\r\nvar NG_ANIMATE_CLASSNAME = 'ng-animate';\r\nvar NG_ANIMATE_CHILDREN_DATA = '$$ngAnimateChildren';\r\n\r\n// Detect proper transitionend/animationend event names.\r\nvar CSS_PREFIX = '', TRANSITION_PROP, TRANSITIONEND_EVENT, ANIMATION_PROP, ANIMATIONEND_EVENT;\r\n\r\n// If unprefixed events are not supported but webkit-prefixed are, use the latter.\r\n// Otherwise, just use W3C names, browsers not supporting them at all will just ignore them.\r\n// Note: Chrome implements `window.onwebkitanimationend` and doesn't implement `window.onanimationend`\r\n// but at the same time dispatches the `animationend` event and not `webkitAnimationEnd`.\r\n// Register both events in case `window.onanimationend` is not supported because of that,\r\n// do the same for `transitionend` as Safari is likely to exhibit similar behavior.\r\n// Also, the only modern browser that uses vendor prefixes for transitions/keyframes is webkit\r\n// therefore there is no reason to test anymore for other vendor prefixes:\r\n// http://caniuse.com/#search=transition\r\nif ((window.ontransitionend === undefined) && (window.onwebkittransitionend !== undefined)) {\r\n CSS_PREFIX = '-webkit-';\r\n TRANSITION_PROP = 'WebkitTransition';\r\n TRANSITIONEND_EVENT = 'webkitTransitionEnd transitionend';\r\n} else {\r\n TRANSITION_PROP = 'transition';\r\n TRANSITIONEND_EVENT = 'transitionend';\r\n}\r\n\r\nif ((window.onanimationend === undefined) && (window.onwebkitanimationend !== undefined)) {\r\n CSS_PREFIX = '-webkit-';\r\n ANIMATION_PROP = 'WebkitAnimation';\r\n ANIMATIONEND_EVENT = 'webkitAnimationEnd animationend';\r\n} else {\r\n ANIMATION_PROP = 'animation';\r\n ANIMATIONEND_EVENT = 'animationend';\r\n}\r\n\r\nvar DURATION_KEY = 'Duration';\r\nvar PROPERTY_KEY = 'Property';\r\nvar DELAY_KEY = 'Delay';\r\nvar TIMING_KEY = 'TimingFunction';\r\nvar ANIMATION_ITERATION_COUNT_KEY = 'IterationCount';\r\nvar ANIMATION_PLAYSTATE_KEY = 'PlayState';\r\nvar SAFE_FAST_FORWARD_DURATION_VALUE = 9999;\r\n\r\nvar ANIMATION_DELAY_PROP = ANIMATION_PROP + DELAY_KEY;\r\nvar ANIMATION_DURATION_PROP = ANIMATION_PROP + DURATION_KEY;\r\nvar TRANSITION_DELAY_PROP = TRANSITION_PROP + DELAY_KEY;\r\nvar TRANSITION_DURATION_PROP = TRANSITION_PROP + DURATION_KEY;\r\n\r\nvar ngMinErr = angular.$$minErr('ng');\r\nfunction assertArg(arg, name, reason) {\r\n if (!arg) {\r\n throw ngMinErr('areq', 'Argument \\'{0}\\' is {1}', (name || '?'), (reason || 'required'));\r\n }\r\n return arg;\r\n}\r\n\r\nfunction mergeClasses(a,b) {\r\n if (!a && !b) return '';\r\n if (!a) return b;\r\n if (!b) return a;\r\n if (isArray(a)) a = a.join(' ');\r\n if (isArray(b)) b = b.join(' ');\r\n return a + ' ' + b;\r\n}\r\n\r\nfunction packageStyles(options) {\r\n var styles = {};\r\n if (options && (options.to || options.from)) {\r\n styles.to = options.to;\r\n styles.from = options.from;\r\n }\r\n return styles;\r\n}\r\n\r\nfunction pendClasses(classes, fix, isPrefix) {\r\n var className = '';\r\n classes = isArray(classes)\r\n ? classes\r\n : classes && isString(classes) && classes.length\r\n ? classes.split(/\\s+/)\r\n : [];\r\n forEach(classes, function(klass, i) {\r\n if (klass && klass.length > 0) {\r\n className += (i > 0) ? ' ' : '';\r\n className += isPrefix ? fix + klass\r\n : klass + fix;\r\n }\r\n });\r\n return className;\r\n}\r\n\r\nfunction removeFromArray(arr, val) {\r\n var index = arr.indexOf(val);\r\n if (val >= 0) {\r\n arr.splice(index, 1);\r\n }\r\n}\r\n\r\nfunction stripCommentsFromElement(element) {\r\n if (element instanceof jqLite) {\r\n switch (element.length) {\r\n case 0:\r\n return element;\r\n\r\n case 1:\r\n // there is no point of stripping anything if the element\r\n // is the only element within the jqLite wrapper.\r\n // (it's important that we retain the element instance.)\r\n if (element[0].nodeType === ELEMENT_NODE) {\r\n return element;\r\n }\r\n break;\r\n\r\n default:\r\n return jqLite(extractElementNode(element));\r\n }\r\n }\r\n\r\n if (element.nodeType === ELEMENT_NODE) {\r\n return jqLite(element);\r\n }\r\n}\r\n\r\nfunction extractElementNode(element) {\r\n if (!element[0]) return element;\r\n for (var i = 0; i < element.length; i++) {\r\n var elm = element[i];\r\n if (elm.nodeType === ELEMENT_NODE) {\r\n return elm;\r\n }\r\n }\r\n}\r\n\r\nfunction $$addClass($$jqLite, element, className) {\r\n forEach(element, function(elm) {\r\n $$jqLite.addClass(elm, className);\r\n });\r\n}\r\n\r\nfunction $$removeClass($$jqLite, element, className) {\r\n forEach(element, function(elm) {\r\n $$jqLite.removeClass(elm, className);\r\n });\r\n}\r\n\r\nfunction applyAnimationClassesFactory($$jqLite) {\r\n return function(element, options) {\r\n if (options.addClass) {\r\n $$addClass($$jqLite, element, options.addClass);\r\n options.addClass = null;\r\n }\r\n if (options.removeClass) {\r\n $$removeClass($$jqLite, element, options.removeClass);\r\n options.removeClass = null;\r\n }\r\n };\r\n}\r\n\r\nfunction prepareAnimationOptions(options) {\r\n options = options || {};\r\n if (!options.$$prepared) {\r\n var domOperation = options.domOperation || noop;\r\n options.domOperation = function() {\r\n options.$$domOperationFired = true;\r\n domOperation();\r\n domOperation = noop;\r\n };\r\n options.$$prepared = true;\r\n }\r\n return options;\r\n}\r\n\r\nfunction applyAnimationStyles(element, options) {\r\n applyAnimationFromStyles(element, options);\r\n applyAnimationToStyles(element, options);\r\n}\r\n\r\nfunction applyAnimationFromStyles(element, options) {\r\n if (options.from) {\r\n element.css(options.from);\r\n options.from = null;\r\n }\r\n}\r\n\r\nfunction applyAnimationToStyles(element, options) {\r\n if (options.to) {\r\n element.css(options.to);\r\n options.to = null;\r\n }\r\n}\r\n\r\nfunction mergeAnimationDetails(element, oldAnimation, newAnimation) {\r\n var target = oldAnimation.options || {};\r\n var newOptions = newAnimation.options || {};\r\n\r\n var toAdd = (target.addClass || '') + ' ' + (newOptions.addClass || '');\r\n var toRemove = (target.removeClass || '') + ' ' + (newOptions.removeClass || '');\r\n var classes = resolveElementClasses(element.attr('class'), toAdd, toRemove);\r\n\r\n if (newOptions.preparationClasses) {\r\n target.preparationClasses = concatWithSpace(newOptions.preparationClasses, target.preparationClasses);\r\n delete newOptions.preparationClasses;\r\n }\r\n\r\n // noop is basically when there is no callback; otherwise something has been set\r\n var realDomOperation = target.domOperation !== noop ? target.domOperation : null;\r\n\r\n extend(target, newOptions);\r\n\r\n // TODO(matsko or sreeramu): proper fix is to maintain all animation callback in array and call at last,but now only leave has the callback so no issue with this.\r\n if (realDomOperation) {\r\n target.domOperation = realDomOperation;\r\n }\r\n\r\n if (classes.addClass) {\r\n target.addClass = classes.addClass;\r\n } else {\r\n target.addClass = null;\r\n }\r\n\r\n if (classes.removeClass) {\r\n target.removeClass = classes.removeClass;\r\n } else {\r\n target.removeClass = null;\r\n }\r\n\r\n oldAnimation.addClass = target.addClass;\r\n oldAnimation.removeClass = target.removeClass;\r\n\r\n return target;\r\n}\r\n\r\nfunction resolveElementClasses(existing, toAdd, toRemove) {\r\n var ADD_CLASS = 1;\r\n var REMOVE_CLASS = -1;\r\n\r\n var flags = {};\r\n existing = splitClassesToLookup(existing);\r\n\r\n toAdd = splitClassesToLookup(toAdd);\r\n forEach(toAdd, function(value, key) {\r\n flags[key] = ADD_CLASS;\r\n });\r\n\r\n toRemove = splitClassesToLookup(toRemove);\r\n forEach(toRemove, function(value, key) {\r\n flags[key] = flags[key] === ADD_CLASS ? null : REMOVE_CLASS;\r\n });\r\n\r\n var classes = {\r\n addClass: '',\r\n removeClass: ''\r\n };\r\n\r\n forEach(flags, function(val, klass) {\r\n var prop, allow;\r\n if (val === ADD_CLASS) {\r\n prop = 'addClass';\r\n allow = !existing[klass] || existing[klass + REMOVE_CLASS_SUFFIX];\r\n } else if (val === REMOVE_CLASS) {\r\n prop = 'removeClass';\r\n allow = existing[klass] || existing[klass + ADD_CLASS_SUFFIX];\r\n }\r\n if (allow) {\r\n if (classes[prop].length) {\r\n classes[prop] += ' ';\r\n }\r\n classes[prop] += klass;\r\n }\r\n });\r\n\r\n function splitClassesToLookup(classes) {\r\n if (isString(classes)) {\r\n classes = classes.split(' ');\r\n }\r\n\r\n var obj = {};\r\n forEach(classes, function(klass) {\r\n // sometimes the split leaves empty string values\r\n // incase extra spaces were applied to the options\r\n if (klass.length) {\r\n obj[klass] = true;\r\n }\r\n });\r\n return obj;\r\n }\r\n\r\n return classes;\r\n}\r\n\r\nfunction getDomNode(element) {\r\n return (element instanceof jqLite) ? element[0] : element;\r\n}\r\n\r\nfunction applyGeneratedPreparationClasses($$jqLite, element, event, options) {\r\n var classes = '';\r\n if (event) {\r\n classes = pendClasses(event, EVENT_CLASS_PREFIX, true);\r\n }\r\n if (options.addClass) {\r\n classes = concatWithSpace(classes, pendClasses(options.addClass, ADD_CLASS_SUFFIX));\r\n }\r\n if (options.removeClass) {\r\n classes = concatWithSpace(classes, pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX));\r\n }\r\n if (classes.length) {\r\n options.preparationClasses = classes;\r\n element.addClass(classes);\r\n }\r\n}\r\n\r\nfunction clearGeneratedClasses(element, options) {\r\n if (options.preparationClasses) {\r\n element.removeClass(options.preparationClasses);\r\n options.preparationClasses = null;\r\n }\r\n if (options.activeClasses) {\r\n element.removeClass(options.activeClasses);\r\n options.activeClasses = null;\r\n }\r\n}\r\n\r\nfunction blockKeyframeAnimations(node, applyBlock) {\r\n var value = applyBlock ? 'paused' : '';\r\n var key = ANIMATION_PROP + ANIMATION_PLAYSTATE_KEY;\r\n applyInlineStyle(node, [key, value]);\r\n return [key, value];\r\n}\r\n\r\nfunction applyInlineStyle(node, styleTuple) {\r\n var prop = styleTuple[0];\r\n var value = styleTuple[1];\r\n node.style[prop] = value;\r\n}\r\n\r\nfunction concatWithSpace(a,b) {\r\n if (!a) return b;\r\n if (!b) return a;\r\n return a + ' ' + b;\r\n}\r\n\r\nvar helpers = {\r\n blockTransitions: function(node, duration) {\r\n // we use a negative delay value since it performs blocking\r\n // yet it doesn't kill any existing transitions running on the\r\n // same element which makes this safe for class-based animations\r\n var value = duration ? '-' + duration + 's' : '';\r\n applyInlineStyle(node, [TRANSITION_DELAY_PROP, value]);\r\n return [TRANSITION_DELAY_PROP, value];\r\n }\r\n};\r\n\r\nvar $$rAFSchedulerFactory = ['$$rAF', function($$rAF) {\r\n var queue, cancelFn;\r\n\r\n function scheduler(tasks) {\r\n // we make a copy since RAFScheduler mutates the state\r\n // of the passed in array variable and this would be difficult\r\n // to track down on the outside code\r\n queue = queue.concat(tasks);\r\n nextTick();\r\n }\r\n\r\n queue = scheduler.queue = [];\r\n\r\n /* waitUntilQuiet does two things:\r\n * 1. It will run the FINAL `fn` value only when an uncanceled RAF has passed through\r\n * 2. It will delay the next wave of tasks from running until the quiet `fn` has run.\r\n *\r\n * The motivation here is that animation code can request more time from the scheduler\r\n * before the next wave runs. This allows for certain DOM properties such as classes to\r\n * be resolved in time for the next animation to run.\r\n */\r\n scheduler.waitUntilQuiet = function(fn) {\r\n if (cancelFn) cancelFn();\r\n\r\n cancelFn = $$rAF(function() {\r\n cancelFn = null;\r\n fn();\r\n nextTick();\r\n });\r\n };\r\n\r\n return scheduler;\r\n\r\n function nextTick() {\r\n if (!queue.length) return;\r\n\r\n var items = queue.shift();\r\n for (var i = 0; i < items.length; i++) {\r\n items[i]();\r\n }\r\n\r\n if (!cancelFn) {\r\n $$rAF(function() {\r\n if (!cancelFn) nextTick();\r\n });\r\n }\r\n }\r\n}];\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ngAnimateChildren\r\n * @restrict AE\r\n * @element ANY\r\n *\r\n * @description\r\n *\r\n * ngAnimateChildren allows you to specify that children of this element should animate even if any\r\n * of the children's parents are currently animating. By default, when an element has an active `enter`, `leave`, or `move`\r\n * (structural) animation, child elements that also have an active structural animation are not animated.\r\n *\r\n * Note that even if `ngAnimateChildren` is set, no child animations will run when the parent element is removed from the DOM (`leave` animation).\r\n *\r\n *\r\n * @param {string} ngAnimateChildren If the value is empty, `true` or `on`,\r\n * then child animations are allowed. If the value is `false`, child animations are not allowed.\r\n *\r\n * @example\r\n * \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n List of items:\r\n
Item {{item}}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n\r\n .container.ng-enter,\r\n .container.ng-leave {\r\n transition: all ease 1.5s;\r\n }\r\n\r\n .container.ng-enter,\r\n .container.ng-leave-active {\r\n opacity: 0;\r\n }\r\n\r\n .container.ng-leave,\r\n .container.ng-enter-active {\r\n opacity: 1;\r\n }\r\n\r\n .item {\r\n background: firebrick;\r\n color: #FFF;\r\n margin-bottom: 10px;\r\n }\r\n\r\n .item.ng-enter,\r\n .item.ng-leave {\r\n transition: transform 1.5s ease;\r\n }\r\n\r\n .item.ng-enter {\r\n transform: translateX(50px);\r\n }\r\n\r\n .item.ng-enter-active {\r\n transform: translateX(0);\r\n }\r\n \r\n \r\n angular.module('ngAnimateChildren', ['ngAnimate'])\r\n .controller('MainController', function MainController() {\r\n this.animateChildren = false;\r\n this.enterElement = false;\r\n });\r\n \r\n
\r\n */\r\nvar $$AnimateChildrenDirective = ['$interpolate', function($interpolate) {\r\n return {\r\n link: function(scope, element, attrs) {\r\n var val = attrs.ngAnimateChildren;\r\n if (isString(val) && val.length === 0) { //empty attribute\r\n element.data(NG_ANIMATE_CHILDREN_DATA, true);\r\n } else {\r\n // Interpolate and set the value, so that it is available to\r\n // animations that run right after compilation\r\n setData($interpolate(val)(scope));\r\n attrs.$observe('ngAnimateChildren', setData);\r\n }\r\n\r\n function setData(value) {\r\n value = value === 'on' || value === 'true';\r\n element.data(NG_ANIMATE_CHILDREN_DATA, value);\r\n }\r\n }\r\n };\r\n}];\r\n\r\n/* exported $AnimateCssProvider */\r\n\r\nvar ANIMATE_TIMER_KEY = '$$animateCss';\r\n\r\n/**\r\n * @ngdoc service\r\n * @name $animateCss\r\n * @kind object\r\n *\r\n * @description\r\n * The `$animateCss` service is a useful utility to trigger customized CSS-based transitions/keyframes\r\n * from a JavaScript-based animation or directly from a directive. The purpose of `$animateCss` is NOT\r\n * to side-step how `$animate` and ngAnimate work, but the goal is to allow pre-existing animations or\r\n * directives to create more complex animations that can be purely driven using CSS code.\r\n *\r\n * Note that only browsers that support CSS transitions and/or keyframe animations are capable of\r\n * rendering animations triggered via `$animateCss` (bad news for IE9 and lower).\r\n *\r\n * ## General Use\r\n * Once again, `$animateCss` is designed to be used inside of a registered JavaScript animation that\r\n * is powered by ngAnimate. It is possible to use `$animateCss` directly inside of a directive, however,\r\n * any automatic control over cancelling animations and/or preventing animations from being run on\r\n * child elements will not be handled by AngularJS. For this to work as expected, please use `$animate` to\r\n * trigger the animation and then setup a JavaScript animation that injects `$animateCss` to trigger\r\n * the CSS animation.\r\n *\r\n * The example below shows how we can create a folding animation on an element using `ng-if`:\r\n *\r\n * ```html\r\n * \r\n *
\r\n * This element will go BOOM\r\n *
\r\n * \r\n * ```\r\n *\r\n * Now we create the **JavaScript animation** that will trigger the CSS transition:\r\n *\r\n * ```js\r\n * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) {\r\n * return {\r\n * enter: function(element, doneFn) {\r\n * var height = element[0].offsetHeight;\r\n * return $animateCss(element, {\r\n * from: { height:'0px' },\r\n * to: { height:height + 'px' },\r\n * duration: 1 // one second\r\n * });\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * ## More Advanced Uses\r\n *\r\n * `$animateCss` is the underlying code that ngAnimate uses to power **CSS-based animations** behind the scenes. Therefore CSS hooks\r\n * like `.ng-EVENT`, `.ng-EVENT-active`, `.ng-EVENT-stagger` are all features that can be triggered using `$animateCss` via JavaScript code.\r\n *\r\n * This also means that just about any combination of adding classes, removing classes, setting styles, dynamically setting a keyframe animation,\r\n * applying a hardcoded duration or delay value, changing the animation easing or applying a stagger animation are all options that work with\r\n * `$animateCss`. The service itself is smart enough to figure out the combination of options and examine the element styling properties in order\r\n * to provide a working animation that will run in CSS.\r\n *\r\n * The example below showcases a more advanced version of the `.fold-animation` from the example above:\r\n *\r\n * ```js\r\n * ngModule.animation('.fold-animation', ['$animateCss', function($animateCss) {\r\n * return {\r\n * enter: function(element, doneFn) {\r\n * var height = element[0].offsetHeight;\r\n * return $animateCss(element, {\r\n * addClass: 'red large-text pulse-twice',\r\n * easing: 'ease-out',\r\n * from: { height:'0px' },\r\n * to: { height:height + 'px' },\r\n * duration: 1 // one second\r\n * });\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * Since we're adding/removing CSS classes then the CSS transition will also pick those up:\r\n *\r\n * ```css\r\n * /* since a hardcoded duration value of 1 was provided in the JavaScript animation code,\r\n * the CSS classes below will be transitioned despite them being defined as regular CSS classes */\r\n * .red { background:red; }\r\n * .large-text { font-size:20px; }\r\n *\r\n * /* we can also use a keyframe animation and $animateCss will make it work alongside the transition */\r\n * .pulse-twice {\r\n * animation: 0.5s pulse linear 2;\r\n * -webkit-animation: 0.5s pulse linear 2;\r\n * }\r\n *\r\n * @keyframes pulse {\r\n * from { transform: scale(0.5); }\r\n * to { transform: scale(1.5); }\r\n * }\r\n *\r\n * @-webkit-keyframes pulse {\r\n * from { -webkit-transform: scale(0.5); }\r\n * to { -webkit-transform: scale(1.5); }\r\n * }\r\n * ```\r\n *\r\n * Given this complex combination of CSS classes, styles and options, `$animateCss` will figure everything out and make the animation happen.\r\n *\r\n * ## How the Options are handled\r\n *\r\n * `$animateCss` is very versatile and intelligent when it comes to figuring out what configurations to apply to the element to ensure the animation\r\n * works with the options provided. Say for example we were adding a class that contained a keyframe value and we wanted to also animate some inline\r\n * styles using the `from` and `to` properties.\r\n *\r\n * ```js\r\n * var animator = $animateCss(element, {\r\n * from: { background:'red' },\r\n * to: { background:'blue' }\r\n * });\r\n * animator.start();\r\n * ```\r\n *\r\n * ```css\r\n * .rotating-animation {\r\n * animation:0.5s rotate linear;\r\n * -webkit-animation:0.5s rotate linear;\r\n * }\r\n *\r\n * @keyframes rotate {\r\n * from { transform: rotate(0deg); }\r\n * to { transform: rotate(360deg); }\r\n * }\r\n *\r\n * @-webkit-keyframes rotate {\r\n * from { -webkit-transform: rotate(0deg); }\r\n * to { -webkit-transform: rotate(360deg); }\r\n * }\r\n * ```\r\n *\r\n * The missing pieces here are that we do not have a transition set (within the CSS code nor within the `$animateCss` options) and the duration of the animation is\r\n * going to be detected from what the keyframe styles on the CSS class are. In this event, `$animateCss` will automatically create an inline transition\r\n * style matching the duration detected from the keyframe style (which is present in the CSS class that is being added) and then prepare both the transition\r\n * and keyframe animations to run in parallel on the element. Then when the animation is underway the provided `from` and `to` CSS styles will be applied\r\n * and spread across the transition and keyframe animation.\r\n *\r\n * ## What is returned\r\n *\r\n * `$animateCss` works in two stages: a preparation phase and an animation phase. Therefore when `$animateCss` is first called it will NOT actually\r\n * start the animation. All that is going on here is that the element is being prepared for the animation (which means that the generated CSS classes are\r\n * added and removed on the element). Once `$animateCss` is called it will return an object with the following properties:\r\n *\r\n * ```js\r\n * var animator = $animateCss(element, { ... });\r\n * ```\r\n *\r\n * Now what do the contents of our `animator` variable look like:\r\n *\r\n * ```js\r\n * {\r\n * // starts the animation\r\n * start: Function,\r\n *\r\n * // ends (aborts) the animation\r\n * end: Function\r\n * }\r\n * ```\r\n *\r\n * To actually start the animation we need to run `animation.start()` which will then return a promise that we can hook into to detect when the animation ends.\r\n * If we choose not to run the animation then we MUST run `animation.end()` to perform a cleanup on the element (since some CSS classes and styles may have been\r\n * applied to the element during the preparation phase). Note that all other properties such as duration, delay, transitions and keyframes are just properties\r\n * and that changing them will not reconfigure the parameters of the animation.\r\n *\r\n * ### runner.done() vs runner.then()\r\n * It is documented that `animation.start()` will return a promise object and this is true, however, there is also an additional method available on the\r\n * runner called `.done(callbackFn)`. The done method works the same as `.finally(callbackFn)`, however, it does **not trigger a digest to occur**.\r\n * Therefore, for performance reasons, it's always best to use `runner.done(callback)` instead of `runner.then()`, `runner.catch()` or `runner.finally()`\r\n * unless you really need a digest to kick off afterwards.\r\n *\r\n * Keep in mind that, to make this easier, ngAnimate has tweaked the JS animations API to recognize when a runner instance is returned from $animateCss\r\n * (so there is no need to call `runner.done(doneFn)` inside of your JavaScript animation code).\r\n * Check the {@link ngAnimate.$animateCss#usage animation code above} to see how this works.\r\n *\r\n * @param {DOMElement} element the element that will be animated\r\n * @param {object} options the animation-related options that will be applied during the animation\r\n *\r\n * * `event` - The DOM event (e.g. enter, leave, move). When used, a generated CSS class of `ng-EVENT` and `ng-EVENT-active` will be applied\r\n * to the element during the animation. Multiple events can be provided when spaces are used as a separator. (Note that this will not perform any DOM operation.)\r\n * * `structural` - Indicates that the `ng-` prefix will be added to the event class. Setting to `false` or omitting will turn `ng-EVENT` and\r\n * `ng-EVENT-active` in `EVENT` and `EVENT-active`. Unused if `event` is omitted.\r\n * * `easing` - The CSS easing value that will be applied to the transition or keyframe animation (or both).\r\n * * `transitionStyle` - The raw CSS transition style that will be used (e.g. `1s linear all`).\r\n * * `keyframeStyle` - The raw CSS keyframe animation style that will be used (e.g. `1s my_animation linear`).\r\n * * `from` - The starting CSS styles (a key/value object) that will be applied at the start of the animation.\r\n * * `to` - The ending CSS styles (a key/value object) that will be applied across the animation via a CSS transition.\r\n * * `addClass` - A space separated list of CSS classes that will be added to the element and spread across the animation.\r\n * * `removeClass` - A space separated list of CSS classes that will be removed from the element and spread across the animation.\r\n * * `duration` - A number value representing the total duration of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `0`\r\n * is provided then the animation will be skipped entirely.\r\n * * `delay` - A number value representing the total delay of the transition and/or keyframe (note that a value of 1 is 1000ms). If a value of `true` is\r\n * used then whatever delay value is detected from the CSS classes will be mirrored on the elements styles (e.g. by setting delay true then the style value\r\n * of the element will be `transition-delay: DETECTED_VALUE`). Using `true` is useful when you want the CSS classes and inline styles to all share the same\r\n * CSS delay value.\r\n * * `stagger` - A numeric time value representing the delay between successively animated elements\r\n * ({@link ngAnimate#css-staggering-animations Click here to learn how CSS-based staggering works in ngAnimate.})\r\n * * `staggerIndex` - The numeric index representing the stagger item (e.g. a value of 5 is equal to the sixth item in the stagger; therefore when a\r\n * `stagger` option value of `0.1` is used then there will be a stagger delay of `600ms`)\r\n * * `applyClassesEarly` - Whether or not the classes being added or removed will be used when detecting the animation. This is set by `$animate` when enter/leave/move animations are fired to ensure that the CSS classes are resolved in time. (Note that this will prevent any transitions from occurring on the classes being added and removed.)\r\n * * `cleanupStyles` - Whether or not the provided `from` and `to` styles will be removed once\r\n * the animation is closed. This is useful for when the styles are used purely for the sake of\r\n * the animation and do not have a lasting visual effect on the element (e.g. a collapse and open animation).\r\n * By default this value is set to `false`.\r\n *\r\n * @return {object} an object with start and end methods and details about the animation.\r\n *\r\n * * `start` - The method to start the animation. This will return a `Promise` when called.\r\n * * `end` - This method will cancel the animation and remove all applied CSS classes and styles.\r\n */\r\nvar ONE_SECOND = 1000;\r\n\r\nvar ELAPSED_TIME_MAX_DECIMAL_PLACES = 3;\r\nvar CLOSING_TIME_BUFFER = 1.5;\r\n\r\nvar DETECT_CSS_PROPERTIES = {\r\n transitionDuration: TRANSITION_DURATION_PROP,\r\n transitionDelay: TRANSITION_DELAY_PROP,\r\n transitionProperty: TRANSITION_PROP + PROPERTY_KEY,\r\n animationDuration: ANIMATION_DURATION_PROP,\r\n animationDelay: ANIMATION_DELAY_PROP,\r\n animationIterationCount: ANIMATION_PROP + ANIMATION_ITERATION_COUNT_KEY\r\n};\r\n\r\nvar DETECT_STAGGER_CSS_PROPERTIES = {\r\n transitionDuration: TRANSITION_DURATION_PROP,\r\n transitionDelay: TRANSITION_DELAY_PROP,\r\n animationDuration: ANIMATION_DURATION_PROP,\r\n animationDelay: ANIMATION_DELAY_PROP\r\n};\r\n\r\nfunction getCssKeyframeDurationStyle(duration) {\r\n return [ANIMATION_DURATION_PROP, duration + 's'];\r\n}\r\n\r\nfunction getCssDelayStyle(delay, isKeyframeAnimation) {\r\n var prop = isKeyframeAnimation ? ANIMATION_DELAY_PROP : TRANSITION_DELAY_PROP;\r\n return [prop, delay + 's'];\r\n}\r\n\r\nfunction computeCssStyles($window, element, properties) {\r\n var styles = Object.create(null);\r\n var detectedStyles = $window.getComputedStyle(element) || {};\r\n forEach(properties, function(formalStyleName, actualStyleName) {\r\n var val = detectedStyles[formalStyleName];\r\n if (val) {\r\n var c = val.charAt(0);\r\n\r\n // only numerical-based values have a negative sign or digit as the first value\r\n if (c === '-' || c === '+' || c >= 0) {\r\n val = parseMaxTime(val);\r\n }\r\n\r\n // by setting this to null in the event that the delay is not set or is set directly as 0\r\n // then we can still allow for negative values to be used later on and not mistake this\r\n // value for being greater than any other negative value.\r\n if (val === 0) {\r\n val = null;\r\n }\r\n styles[actualStyleName] = val;\r\n }\r\n });\r\n\r\n return styles;\r\n}\r\n\r\nfunction parseMaxTime(str) {\r\n var maxValue = 0;\r\n var values = str.split(/\\s*,\\s*/);\r\n forEach(values, function(value) {\r\n // it's always safe to consider only second values and omit `ms` values since\r\n // getComputedStyle will always handle the conversion for us\r\n if (value.charAt(value.length - 1) === 's') {\r\n value = value.substring(0, value.length - 1);\r\n }\r\n value = parseFloat(value) || 0;\r\n maxValue = maxValue ? Math.max(value, maxValue) : value;\r\n });\r\n return maxValue;\r\n}\r\n\r\nfunction truthyTimingValue(val) {\r\n return val === 0 || val != null;\r\n}\r\n\r\nfunction getCssTransitionDurationStyle(duration, applyOnlyDuration) {\r\n var style = TRANSITION_PROP;\r\n var value = duration + 's';\r\n if (applyOnlyDuration) {\r\n style += DURATION_KEY;\r\n } else {\r\n value += ' linear all';\r\n }\r\n return [style, value];\r\n}\r\n\r\n// we do not reassign an already present style value since\r\n// if we detect the style property value again we may be\r\n// detecting styles that were added via the `from` styles.\r\n// We make use of `isDefined` here since an empty string\r\n// or null value (which is what getPropertyValue will return\r\n// for a non-existing style) will still be marked as a valid\r\n// value for the style (a falsy value implies that the style\r\n// is to be removed at the end of the animation). If we had a simple\r\n// \"OR\" statement then it would not be enough to catch that.\r\nfunction registerRestorableStyles(backup, node, properties) {\r\n forEach(properties, function(prop) {\r\n backup[prop] = isDefined(backup[prop])\r\n ? backup[prop]\r\n : node.style.getPropertyValue(prop);\r\n });\r\n}\r\n\r\nvar $AnimateCssProvider = ['$animateProvider', /** @this */ function($animateProvider) {\r\n\r\n this.$get = ['$window', '$$jqLite', '$$AnimateRunner', '$timeout', '$$animateCache',\r\n '$$forceReflow', '$sniffer', '$$rAFScheduler', '$$animateQueue',\r\n function($window, $$jqLite, $$AnimateRunner, $timeout, $$animateCache,\r\n $$forceReflow, $sniffer, $$rAFScheduler, $$animateQueue) {\r\n\r\n var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);\r\n\r\n function computeCachedCssStyles(node, className, cacheKey, allowNoDuration, properties) {\r\n var timings = $$animateCache.get(cacheKey);\r\n\r\n if (!timings) {\r\n timings = computeCssStyles($window, node, properties);\r\n if (timings.animationIterationCount === 'infinite') {\r\n timings.animationIterationCount = 1;\r\n }\r\n }\r\n\r\n // if a css animation has no duration we\r\n // should mark that so that repeated addClass/removeClass calls are skipped\r\n var hasDuration = allowNoDuration || (timings.transitionDuration > 0 || timings.animationDuration > 0);\r\n\r\n // we keep putting this in multiple times even though the value and the cacheKey are the same\r\n // because we're keeping an internal tally of how many duplicate animations are detected.\r\n $$animateCache.put(cacheKey, timings, hasDuration);\r\n\r\n return timings;\r\n }\r\n\r\n function computeCachedCssStaggerStyles(node, className, cacheKey, properties) {\r\n var stagger;\r\n var staggerCacheKey = 'stagger-' + cacheKey;\r\n\r\n // if we have one or more existing matches of matching elements\r\n // containing the same parent + CSS styles (which is how cacheKey works)\r\n // then staggering is possible\r\n if ($$animateCache.count(cacheKey) > 0) {\r\n stagger = $$animateCache.get(staggerCacheKey);\r\n\r\n if (!stagger) {\r\n var staggerClassName = pendClasses(className, '-stagger');\r\n\r\n $$jqLite.addClass(node, staggerClassName);\r\n\r\n stagger = computeCssStyles($window, node, properties);\r\n\r\n // force the conversion of a null value to zero incase not set\r\n stagger.animationDuration = Math.max(stagger.animationDuration, 0);\r\n stagger.transitionDuration = Math.max(stagger.transitionDuration, 0);\r\n\r\n $$jqLite.removeClass(node, staggerClassName);\r\n\r\n $$animateCache.put(staggerCacheKey, stagger, true);\r\n }\r\n }\r\n\r\n return stagger || {};\r\n }\r\n\r\n var rafWaitQueue = [];\r\n function waitUntilQuiet(callback) {\r\n rafWaitQueue.push(callback);\r\n $$rAFScheduler.waitUntilQuiet(function() {\r\n $$animateCache.flush();\r\n\r\n // DO NOT REMOVE THIS LINE OR REFACTOR OUT THE `pageWidth` variable.\r\n // PLEASE EXAMINE THE `$$forceReflow` service to understand why.\r\n var pageWidth = $$forceReflow();\r\n\r\n // we use a for loop to ensure that if the queue is changed\r\n // during this looping then it will consider new requests\r\n for (var i = 0; i < rafWaitQueue.length; i++) {\r\n rafWaitQueue[i](pageWidth);\r\n }\r\n rafWaitQueue.length = 0;\r\n });\r\n }\r\n\r\n function computeTimings(node, className, cacheKey, allowNoDuration) {\r\n var timings = computeCachedCssStyles(node, className, cacheKey, allowNoDuration, DETECT_CSS_PROPERTIES);\r\n var aD = timings.animationDelay;\r\n var tD = timings.transitionDelay;\r\n timings.maxDelay = aD && tD\r\n ? Math.max(aD, tD)\r\n : (aD || tD);\r\n timings.maxDuration = Math.max(\r\n timings.animationDuration * timings.animationIterationCount,\r\n timings.transitionDuration);\r\n\r\n return timings;\r\n }\r\n\r\n return function init(element, initialOptions) {\r\n // all of the animation functions should create\r\n // a copy of the options data, however, if a\r\n // parent service has already created a copy then\r\n // we should stick to using that\r\n var options = initialOptions || {};\r\n if (!options.$$prepared) {\r\n options = prepareAnimationOptions(copy(options));\r\n }\r\n\r\n var restoreStyles = {};\r\n var node = getDomNode(element);\r\n if (!node\r\n || !node.parentNode\r\n || !$$animateQueue.enabled()) {\r\n return closeAndReturnNoopAnimator();\r\n }\r\n\r\n var temporaryStyles = [];\r\n var classes = element.attr('class');\r\n var styles = packageStyles(options);\r\n var animationClosed;\r\n var animationPaused;\r\n var animationCompleted;\r\n var runner;\r\n var runnerHost;\r\n var maxDelay;\r\n var maxDelayTime;\r\n var maxDuration;\r\n var maxDurationTime;\r\n var startTime;\r\n var events = [];\r\n\r\n if (options.duration === 0 || (!$sniffer.animations && !$sniffer.transitions)) {\r\n return closeAndReturnNoopAnimator();\r\n }\r\n\r\n var method = options.event && isArray(options.event)\r\n ? options.event.join(' ')\r\n : options.event;\r\n\r\n var isStructural = method && options.structural;\r\n var structuralClassName = '';\r\n var addRemoveClassName = '';\r\n\r\n if (isStructural) {\r\n structuralClassName = pendClasses(method, EVENT_CLASS_PREFIX, true);\r\n } else if (method) {\r\n structuralClassName = method;\r\n }\r\n\r\n if (options.addClass) {\r\n addRemoveClassName += pendClasses(options.addClass, ADD_CLASS_SUFFIX);\r\n }\r\n\r\n if (options.removeClass) {\r\n if (addRemoveClassName.length) {\r\n addRemoveClassName += ' ';\r\n }\r\n addRemoveClassName += pendClasses(options.removeClass, REMOVE_CLASS_SUFFIX);\r\n }\r\n\r\n // there may be a situation where a structural animation is combined together\r\n // with CSS classes that need to resolve before the animation is computed.\r\n // However this means that there is no explicit CSS code to block the animation\r\n // from happening (by setting 0s none in the class name). If this is the case\r\n // we need to apply the classes before the first rAF so we know to continue if\r\n // there actually is a detected transition or keyframe animation\r\n if (options.applyClassesEarly && addRemoveClassName.length) {\r\n applyAnimationClasses(element, options);\r\n }\r\n\r\n var preparationClasses = [structuralClassName, addRemoveClassName].join(' ').trim();\r\n var fullClassName = classes + ' ' + preparationClasses;\r\n var hasToStyles = styles.to && Object.keys(styles.to).length > 0;\r\n var containsKeyframeAnimation = (options.keyframeStyle || '').length > 0;\r\n\r\n // there is no way we can trigger an animation if no styles and\r\n // no classes are being applied which would then trigger a transition,\r\n // unless there a is raw keyframe value that is applied to the element.\r\n if (!containsKeyframeAnimation\r\n && !hasToStyles\r\n && !preparationClasses) {\r\n return closeAndReturnNoopAnimator();\r\n }\r\n\r\n var stagger, cacheKey = $$animateCache.cacheKey(node, method, options.addClass, options.removeClass);\r\n if ($$animateCache.containsCachedAnimationWithoutDuration(cacheKey)) {\r\n preparationClasses = null;\r\n return closeAndReturnNoopAnimator();\r\n }\r\n\r\n if (options.stagger > 0) {\r\n var staggerVal = parseFloat(options.stagger);\r\n stagger = {\r\n transitionDelay: staggerVal,\r\n animationDelay: staggerVal,\r\n transitionDuration: 0,\r\n animationDuration: 0\r\n };\r\n } else {\r\n stagger = computeCachedCssStaggerStyles(node, preparationClasses, cacheKey, DETECT_STAGGER_CSS_PROPERTIES);\r\n }\r\n\r\n if (!options.$$skipPreparationClasses) {\r\n $$jqLite.addClass(element, preparationClasses);\r\n }\r\n\r\n var applyOnlyDuration;\r\n\r\n if (options.transitionStyle) {\r\n var transitionStyle = [TRANSITION_PROP, options.transitionStyle];\r\n applyInlineStyle(node, transitionStyle);\r\n temporaryStyles.push(transitionStyle);\r\n }\r\n\r\n if (options.duration >= 0) {\r\n applyOnlyDuration = node.style[TRANSITION_PROP].length > 0;\r\n var durationStyle = getCssTransitionDurationStyle(options.duration, applyOnlyDuration);\r\n\r\n // we set the duration so that it will be picked up by getComputedStyle later\r\n applyInlineStyle(node, durationStyle);\r\n temporaryStyles.push(durationStyle);\r\n }\r\n\r\n if (options.keyframeStyle) {\r\n var keyframeStyle = [ANIMATION_PROP, options.keyframeStyle];\r\n applyInlineStyle(node, keyframeStyle);\r\n temporaryStyles.push(keyframeStyle);\r\n }\r\n\r\n var itemIndex = stagger\r\n ? options.staggerIndex >= 0\r\n ? options.staggerIndex\r\n : $$animateCache.count(cacheKey)\r\n : 0;\r\n\r\n var isFirst = itemIndex === 0;\r\n\r\n // this is a pre-emptive way of forcing the setup classes to be added and applied INSTANTLY\r\n // without causing any combination of transitions to kick in. By adding a negative delay value\r\n // it forces the setup class' transition to end immediately. We later then remove the negative\r\n // transition delay to allow for the transition to naturally do it's thing. The beauty here is\r\n // that if there is no transition defined then nothing will happen and this will also allow\r\n // other transitions to be stacked on top of each other without any chopping them out.\r\n if (isFirst && !options.skipBlocking) {\r\n helpers.blockTransitions(node, SAFE_FAST_FORWARD_DURATION_VALUE);\r\n }\r\n\r\n var timings = computeTimings(node, fullClassName, cacheKey, !isStructural);\r\n var relativeDelay = timings.maxDelay;\r\n maxDelay = Math.max(relativeDelay, 0);\r\n maxDuration = timings.maxDuration;\r\n\r\n var flags = {};\r\n flags.hasTransitions = timings.transitionDuration > 0;\r\n flags.hasAnimations = timings.animationDuration > 0;\r\n flags.hasTransitionAll = flags.hasTransitions && timings.transitionProperty === 'all';\r\n flags.applyTransitionDuration = hasToStyles && (\r\n (flags.hasTransitions && !flags.hasTransitionAll)\r\n || (flags.hasAnimations && !flags.hasTransitions));\r\n flags.applyAnimationDuration = options.duration && flags.hasAnimations;\r\n flags.applyTransitionDelay = truthyTimingValue(options.delay) && (flags.applyTransitionDuration || flags.hasTransitions);\r\n flags.applyAnimationDelay = truthyTimingValue(options.delay) && flags.hasAnimations;\r\n flags.recalculateTimingStyles = addRemoveClassName.length > 0;\r\n\r\n if (flags.applyTransitionDuration || flags.applyAnimationDuration) {\r\n maxDuration = options.duration ? parseFloat(options.duration) : maxDuration;\r\n\r\n if (flags.applyTransitionDuration) {\r\n flags.hasTransitions = true;\r\n timings.transitionDuration = maxDuration;\r\n applyOnlyDuration = node.style[TRANSITION_PROP + PROPERTY_KEY].length > 0;\r\n temporaryStyles.push(getCssTransitionDurationStyle(maxDuration, applyOnlyDuration));\r\n }\r\n\r\n if (flags.applyAnimationDuration) {\r\n flags.hasAnimations = true;\r\n timings.animationDuration = maxDuration;\r\n temporaryStyles.push(getCssKeyframeDurationStyle(maxDuration));\r\n }\r\n }\r\n\r\n if (maxDuration === 0 && !flags.recalculateTimingStyles) {\r\n return closeAndReturnNoopAnimator();\r\n }\r\n\r\n var activeClasses = pendClasses(preparationClasses, ACTIVE_CLASS_SUFFIX);\r\n\r\n if (options.delay != null) {\r\n var delayStyle;\r\n if (typeof options.delay !== 'boolean') {\r\n delayStyle = parseFloat(options.delay);\r\n // number in options.delay means we have to recalculate the delay for the closing timeout\r\n maxDelay = Math.max(delayStyle, 0);\r\n }\r\n\r\n if (flags.applyTransitionDelay) {\r\n temporaryStyles.push(getCssDelayStyle(delayStyle));\r\n }\r\n\r\n if (flags.applyAnimationDelay) {\r\n temporaryStyles.push(getCssDelayStyle(delayStyle, true));\r\n }\r\n }\r\n\r\n // we need to recalculate the delay value since we used a pre-emptive negative\r\n // delay value and the delay value is required for the final event checking. This\r\n // property will ensure that this will happen after the RAF phase has passed.\r\n if (options.duration == null && timings.transitionDuration > 0) {\r\n flags.recalculateTimingStyles = flags.recalculateTimingStyles || isFirst;\r\n }\r\n\r\n maxDelayTime = maxDelay * ONE_SECOND;\r\n maxDurationTime = maxDuration * ONE_SECOND;\r\n if (!options.skipBlocking) {\r\n flags.blockTransition = timings.transitionDuration > 0;\r\n flags.blockKeyframeAnimation = timings.animationDuration > 0 &&\r\n stagger.animationDelay > 0 &&\r\n stagger.animationDuration === 0;\r\n }\r\n\r\n if (options.from) {\r\n if (options.cleanupStyles) {\r\n registerRestorableStyles(restoreStyles, node, Object.keys(options.from));\r\n }\r\n applyAnimationFromStyles(element, options);\r\n }\r\n\r\n if (flags.blockTransition || flags.blockKeyframeAnimation) {\r\n applyBlocking(maxDuration);\r\n } else if (!options.skipBlocking) {\r\n helpers.blockTransitions(node, false);\r\n }\r\n\r\n // TODO(matsko): for 1.5 change this code to have an animator object for better debugging\r\n return {\r\n $$willAnimate: true,\r\n end: endFn,\r\n start: function() {\r\n if (animationClosed) return;\r\n\r\n runnerHost = {\r\n end: endFn,\r\n cancel: cancelFn,\r\n resume: null, //this will be set during the start() phase\r\n pause: null\r\n };\r\n\r\n runner = new $$AnimateRunner(runnerHost);\r\n\r\n waitUntilQuiet(start);\r\n\r\n // we don't have access to pause/resume the animation\r\n // since it hasn't run yet. AnimateRunner will therefore\r\n // set noop functions for resume and pause and they will\r\n // later be overridden once the animation is triggered\r\n return runner;\r\n }\r\n };\r\n\r\n function endFn() {\r\n close();\r\n }\r\n\r\n function cancelFn() {\r\n close(true);\r\n }\r\n\r\n function close(rejected) {\r\n // if the promise has been called already then we shouldn't close\r\n // the animation again\r\n if (animationClosed || (animationCompleted && animationPaused)) return;\r\n animationClosed = true;\r\n animationPaused = false;\r\n\r\n if (preparationClasses && !options.$$skipPreparationClasses) {\r\n $$jqLite.removeClass(element, preparationClasses);\r\n }\r\n\r\n if (activeClasses) {\r\n $$jqLite.removeClass(element, activeClasses);\r\n }\r\n\r\n blockKeyframeAnimations(node, false);\r\n helpers.blockTransitions(node, false);\r\n\r\n forEach(temporaryStyles, function(entry) {\r\n // There is only one way to remove inline style properties entirely from elements.\r\n // By using `removeProperty` this works, but we need to convert camel-cased CSS\r\n // styles down to hyphenated values.\r\n node.style[entry[0]] = '';\r\n });\r\n\r\n applyAnimationClasses(element, options);\r\n applyAnimationStyles(element, options);\r\n\r\n if (Object.keys(restoreStyles).length) {\r\n forEach(restoreStyles, function(value, prop) {\r\n if (value) {\r\n node.style.setProperty(prop, value);\r\n } else {\r\n node.style.removeProperty(prop);\r\n }\r\n });\r\n }\r\n\r\n // the reason why we have this option is to allow a synchronous closing callback\r\n // that is fired as SOON as the animation ends (when the CSS is removed) or if\r\n // the animation never takes off at all. A good example is a leave animation since\r\n // the element must be removed just after the animation is over or else the element\r\n // will appear on screen for one animation frame causing an overbearing flicker.\r\n if (options.onDone) {\r\n options.onDone();\r\n }\r\n\r\n if (events && events.length) {\r\n // Remove the transitionend / animationend listener(s)\r\n element.off(events.join(' '), onAnimationProgress);\r\n }\r\n\r\n //Cancel the fallback closing timeout and remove the timer data\r\n var animationTimerData = element.data(ANIMATE_TIMER_KEY);\r\n if (animationTimerData) {\r\n $timeout.cancel(animationTimerData[0].timer);\r\n element.removeData(ANIMATE_TIMER_KEY);\r\n }\r\n\r\n // if the preparation function fails then the promise is not setup\r\n if (runner) {\r\n runner.complete(!rejected);\r\n }\r\n }\r\n\r\n function applyBlocking(duration) {\r\n if (flags.blockTransition) {\r\n helpers.blockTransitions(node, duration);\r\n }\r\n\r\n if (flags.blockKeyframeAnimation) {\r\n blockKeyframeAnimations(node, !!duration);\r\n }\r\n }\r\n\r\n function closeAndReturnNoopAnimator() {\r\n runner = new $$AnimateRunner({\r\n end: endFn,\r\n cancel: cancelFn\r\n });\r\n\r\n // should flush the cache animation\r\n waitUntilQuiet(noop);\r\n close();\r\n\r\n return {\r\n $$willAnimate: false,\r\n start: function() {\r\n return runner;\r\n },\r\n end: endFn\r\n };\r\n }\r\n\r\n function onAnimationProgress(event) {\r\n event.stopPropagation();\r\n var ev = event.originalEvent || event;\r\n\r\n if (ev.target !== node) {\r\n // Since TransitionEvent / AnimationEvent bubble up,\r\n // we have to ignore events by finished child animations\r\n return;\r\n }\r\n\r\n // we now always use `Date.now()` due to the recent changes with\r\n // event.timeStamp in Firefox, Webkit and Chrome (see #13494 for more info)\r\n var timeStamp = ev.$manualTimeStamp || Date.now();\r\n\r\n /* Firefox (or possibly just Gecko) likes to not round values up\r\n * when a ms measurement is used for the animation */\r\n var elapsedTime = parseFloat(ev.elapsedTime.toFixed(ELAPSED_TIME_MAX_DECIMAL_PLACES));\r\n\r\n /* $manualTimeStamp is a mocked timeStamp value which is set\r\n * within browserTrigger(). This is only here so that tests can\r\n * mock animations properly. Real events fallback to event.timeStamp,\r\n * or, if they don't, then a timeStamp is automatically created for them.\r\n * We're checking to see if the timeStamp surpasses the expected delay,\r\n * but we're using elapsedTime instead of the timeStamp on the 2nd\r\n * pre-condition since animationPauseds sometimes close off early */\r\n if (Math.max(timeStamp - startTime, 0) >= maxDelayTime && elapsedTime >= maxDuration) {\r\n // we set this flag to ensure that if the transition is paused then, when resumed,\r\n // the animation will automatically close itself since transitions cannot be paused.\r\n animationCompleted = true;\r\n close();\r\n }\r\n }\r\n\r\n function start() {\r\n if (animationClosed) return;\r\n if (!node.parentNode) {\r\n close();\r\n return;\r\n }\r\n\r\n // even though we only pause keyframe animations here the pause flag\r\n // will still happen when transitions are used. Only the transition will\r\n // not be paused since that is not possible. If the animation ends when\r\n // paused then it will not complete until unpaused or cancelled.\r\n var playPause = function(playAnimation) {\r\n if (!animationCompleted) {\r\n animationPaused = !playAnimation;\r\n if (timings.animationDuration) {\r\n var value = blockKeyframeAnimations(node, animationPaused);\r\n if (animationPaused) {\r\n temporaryStyles.push(value);\r\n } else {\r\n removeFromArray(temporaryStyles, value);\r\n }\r\n }\r\n } else if (animationPaused && playAnimation) {\r\n animationPaused = false;\r\n close();\r\n }\r\n };\r\n\r\n // checking the stagger duration prevents an accidentally cascade of the CSS delay style\r\n // being inherited from the parent. If the transition duration is zero then we can safely\r\n // rely that the delay value is an intentional stagger delay style.\r\n var maxStagger = itemIndex > 0\r\n && ((timings.transitionDuration && stagger.transitionDuration === 0) ||\r\n (timings.animationDuration && stagger.animationDuration === 0))\r\n && Math.max(stagger.animationDelay, stagger.transitionDelay);\r\n if (maxStagger) {\r\n $timeout(triggerAnimationStart,\r\n Math.floor(maxStagger * itemIndex * ONE_SECOND),\r\n false);\r\n } else {\r\n triggerAnimationStart();\r\n }\r\n\r\n // this will decorate the existing promise runner with pause/resume methods\r\n runnerHost.resume = function() {\r\n playPause(true);\r\n };\r\n\r\n runnerHost.pause = function() {\r\n playPause(false);\r\n };\r\n\r\n function triggerAnimationStart() {\r\n // just incase a stagger animation kicks in when the animation\r\n // itself was cancelled entirely\r\n if (animationClosed) return;\r\n\r\n applyBlocking(false);\r\n\r\n forEach(temporaryStyles, function(entry) {\r\n var key = entry[0];\r\n var value = entry[1];\r\n node.style[key] = value;\r\n });\r\n\r\n applyAnimationClasses(element, options);\r\n $$jqLite.addClass(element, activeClasses);\r\n\r\n if (flags.recalculateTimingStyles) {\r\n fullClassName = node.getAttribute('class') + ' ' + preparationClasses;\r\n cacheKey = $$animateCache.cacheKey(node, method, options.addClass, options.removeClass);\r\n\r\n timings = computeTimings(node, fullClassName, cacheKey, false);\r\n relativeDelay = timings.maxDelay;\r\n maxDelay = Math.max(relativeDelay, 0);\r\n maxDuration = timings.maxDuration;\r\n\r\n if (maxDuration === 0) {\r\n close();\r\n return;\r\n }\r\n\r\n flags.hasTransitions = timings.transitionDuration > 0;\r\n flags.hasAnimations = timings.animationDuration > 0;\r\n }\r\n\r\n if (flags.applyAnimationDelay) {\r\n relativeDelay = typeof options.delay !== 'boolean' && truthyTimingValue(options.delay)\r\n ? parseFloat(options.delay)\r\n : relativeDelay;\r\n\r\n maxDelay = Math.max(relativeDelay, 0);\r\n timings.animationDelay = relativeDelay;\r\n delayStyle = getCssDelayStyle(relativeDelay, true);\r\n temporaryStyles.push(delayStyle);\r\n node.style[delayStyle[0]] = delayStyle[1];\r\n }\r\n\r\n maxDelayTime = maxDelay * ONE_SECOND;\r\n maxDurationTime = maxDuration * ONE_SECOND;\r\n\r\n if (options.easing) {\r\n var easeProp, easeVal = options.easing;\r\n if (flags.hasTransitions) {\r\n easeProp = TRANSITION_PROP + TIMING_KEY;\r\n temporaryStyles.push([easeProp, easeVal]);\r\n node.style[easeProp] = easeVal;\r\n }\r\n if (flags.hasAnimations) {\r\n easeProp = ANIMATION_PROP + TIMING_KEY;\r\n temporaryStyles.push([easeProp, easeVal]);\r\n node.style[easeProp] = easeVal;\r\n }\r\n }\r\n\r\n if (timings.transitionDuration) {\r\n events.push(TRANSITIONEND_EVENT);\r\n }\r\n\r\n if (timings.animationDuration) {\r\n events.push(ANIMATIONEND_EVENT);\r\n }\r\n\r\n startTime = Date.now();\r\n var timerTime = maxDelayTime + CLOSING_TIME_BUFFER * maxDurationTime;\r\n var endTime = startTime + timerTime;\r\n\r\n var animationsData = element.data(ANIMATE_TIMER_KEY) || [];\r\n var setupFallbackTimer = true;\r\n if (animationsData.length) {\r\n var currentTimerData = animationsData[0];\r\n setupFallbackTimer = endTime > currentTimerData.expectedEndTime;\r\n if (setupFallbackTimer) {\r\n $timeout.cancel(currentTimerData.timer);\r\n } else {\r\n animationsData.push(close);\r\n }\r\n }\r\n\r\n if (setupFallbackTimer) {\r\n var timer = $timeout(onAnimationExpired, timerTime, false);\r\n animationsData[0] = {\r\n timer: timer,\r\n expectedEndTime: endTime\r\n };\r\n animationsData.push(close);\r\n element.data(ANIMATE_TIMER_KEY, animationsData);\r\n }\r\n\r\n if (events.length) {\r\n element.on(events.join(' '), onAnimationProgress);\r\n }\r\n\r\n if (options.to) {\r\n if (options.cleanupStyles) {\r\n registerRestorableStyles(restoreStyles, node, Object.keys(options.to));\r\n }\r\n applyAnimationToStyles(element, options);\r\n }\r\n }\r\n\r\n function onAnimationExpired() {\r\n var animationsData = element.data(ANIMATE_TIMER_KEY);\r\n\r\n // this will be false in the event that the element was\r\n // removed from the DOM (via a leave animation or something\r\n // similar)\r\n if (animationsData) {\r\n for (var i = 1; i < animationsData.length; i++) {\r\n animationsData[i]();\r\n }\r\n element.removeData(ANIMATE_TIMER_KEY);\r\n }\r\n }\r\n }\r\n };\r\n }];\r\n}];\r\n\r\nvar $$AnimateCssDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) {\r\n $$animationProvider.drivers.push('$$animateCssDriver');\r\n\r\n var NG_ANIMATE_SHIM_CLASS_NAME = 'ng-animate-shim';\r\n var NG_ANIMATE_ANCHOR_CLASS_NAME = 'ng-anchor';\r\n\r\n var NG_OUT_ANCHOR_CLASS_NAME = 'ng-anchor-out';\r\n var NG_IN_ANCHOR_CLASS_NAME = 'ng-anchor-in';\r\n\r\n function isDocumentFragment(node) {\r\n return node.parentNode && node.parentNode.nodeType === 11;\r\n }\r\n\r\n this.$get = ['$animateCss', '$rootScope', '$$AnimateRunner', '$rootElement', '$sniffer', '$$jqLite', '$document',\r\n function($animateCss, $rootScope, $$AnimateRunner, $rootElement, $sniffer, $$jqLite, $document) {\r\n\r\n // only browsers that support these properties can render animations\r\n if (!$sniffer.animations && !$sniffer.transitions) return noop;\r\n\r\n var bodyNode = $document[0].body;\r\n var rootNode = getDomNode($rootElement);\r\n\r\n var rootBodyElement = jqLite(\r\n // this is to avoid using something that exists outside of the body\r\n // we also special case the doc fragment case because our unit test code\r\n // appends the $rootElement to the body after the app has been bootstrapped\r\n isDocumentFragment(rootNode) || bodyNode.contains(rootNode) ? rootNode : bodyNode\r\n );\r\n\r\n return function initDriverFn(animationDetails) {\r\n return animationDetails.from && animationDetails.to\r\n ? prepareFromToAnchorAnimation(animationDetails.from,\r\n animationDetails.to,\r\n animationDetails.classes,\r\n animationDetails.anchors)\r\n : prepareRegularAnimation(animationDetails);\r\n };\r\n\r\n function filterCssClasses(classes) {\r\n //remove all the `ng-` stuff\r\n return classes.replace(/\\bng-\\S+\\b/g, '');\r\n }\r\n\r\n function getUniqueValues(a, b) {\r\n if (isString(a)) a = a.split(' ');\r\n if (isString(b)) b = b.split(' ');\r\n return a.filter(function(val) {\r\n return b.indexOf(val) === -1;\r\n }).join(' ');\r\n }\r\n\r\n function prepareAnchoredAnimation(classes, outAnchor, inAnchor) {\r\n var clone = jqLite(getDomNode(outAnchor).cloneNode(true));\r\n var startingClasses = filterCssClasses(getClassVal(clone));\r\n\r\n outAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME);\r\n inAnchor.addClass(NG_ANIMATE_SHIM_CLASS_NAME);\r\n\r\n clone.addClass(NG_ANIMATE_ANCHOR_CLASS_NAME);\r\n\r\n rootBodyElement.append(clone);\r\n\r\n var animatorIn, animatorOut = prepareOutAnimation();\r\n\r\n // the user may not end up using the `out` animation and\r\n // only making use of the `in` animation or vice-versa.\r\n // In either case we should allow this and not assume the\r\n // animation is over unless both animations are not used.\r\n if (!animatorOut) {\r\n animatorIn = prepareInAnimation();\r\n if (!animatorIn) {\r\n return end();\r\n }\r\n }\r\n\r\n var startingAnimator = animatorOut || animatorIn;\r\n\r\n return {\r\n start: function() {\r\n var runner;\r\n\r\n var currentAnimation = startingAnimator.start();\r\n currentAnimation.done(function() {\r\n currentAnimation = null;\r\n if (!animatorIn) {\r\n animatorIn = prepareInAnimation();\r\n if (animatorIn) {\r\n currentAnimation = animatorIn.start();\r\n currentAnimation.done(function() {\r\n currentAnimation = null;\r\n end();\r\n runner.complete();\r\n });\r\n return currentAnimation;\r\n }\r\n }\r\n // in the event that there is no `in` animation\r\n end();\r\n runner.complete();\r\n });\r\n\r\n runner = new $$AnimateRunner({\r\n end: endFn,\r\n cancel: endFn\r\n });\r\n\r\n return runner;\r\n\r\n function endFn() {\r\n if (currentAnimation) {\r\n currentAnimation.end();\r\n }\r\n }\r\n }\r\n };\r\n\r\n function calculateAnchorStyles(anchor) {\r\n var styles = {};\r\n\r\n var coords = getDomNode(anchor).getBoundingClientRect();\r\n\r\n // we iterate directly since safari messes up and doesn't return\r\n // all the keys for the coords object when iterated\r\n forEach(['width','height','top','left'], function(key) {\r\n var value = coords[key];\r\n switch (key) {\r\n case 'top':\r\n value += bodyNode.scrollTop;\r\n break;\r\n case 'left':\r\n value += bodyNode.scrollLeft;\r\n break;\r\n }\r\n styles[key] = Math.floor(value) + 'px';\r\n });\r\n return styles;\r\n }\r\n\r\n function prepareOutAnimation() {\r\n var animator = $animateCss(clone, {\r\n addClass: NG_OUT_ANCHOR_CLASS_NAME,\r\n delay: true,\r\n from: calculateAnchorStyles(outAnchor)\r\n });\r\n\r\n // read the comment within `prepareRegularAnimation` to understand\r\n // why this check is necessary\r\n return animator.$$willAnimate ? animator : null;\r\n }\r\n\r\n function getClassVal(element) {\r\n return element.attr('class') || '';\r\n }\r\n\r\n function prepareInAnimation() {\r\n var endingClasses = filterCssClasses(getClassVal(inAnchor));\r\n var toAdd = getUniqueValues(endingClasses, startingClasses);\r\n var toRemove = getUniqueValues(startingClasses, endingClasses);\r\n\r\n var animator = $animateCss(clone, {\r\n to: calculateAnchorStyles(inAnchor),\r\n addClass: NG_IN_ANCHOR_CLASS_NAME + ' ' + toAdd,\r\n removeClass: NG_OUT_ANCHOR_CLASS_NAME + ' ' + toRemove,\r\n delay: true\r\n });\r\n\r\n // read the comment within `prepareRegularAnimation` to understand\r\n // why this check is necessary\r\n return animator.$$willAnimate ? animator : null;\r\n }\r\n\r\n function end() {\r\n clone.remove();\r\n outAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME);\r\n inAnchor.removeClass(NG_ANIMATE_SHIM_CLASS_NAME);\r\n }\r\n }\r\n\r\n function prepareFromToAnchorAnimation(from, to, classes, anchors) {\r\n var fromAnimation = prepareRegularAnimation(from, noop);\r\n var toAnimation = prepareRegularAnimation(to, noop);\r\n\r\n var anchorAnimations = [];\r\n forEach(anchors, function(anchor) {\r\n var outElement = anchor['out'];\r\n var inElement = anchor['in'];\r\n var animator = prepareAnchoredAnimation(classes, outElement, inElement);\r\n if (animator) {\r\n anchorAnimations.push(animator);\r\n }\r\n });\r\n\r\n // no point in doing anything when there are no elements to animate\r\n if (!fromAnimation && !toAnimation && anchorAnimations.length === 0) return;\r\n\r\n return {\r\n start: function() {\r\n var animationRunners = [];\r\n\r\n if (fromAnimation) {\r\n animationRunners.push(fromAnimation.start());\r\n }\r\n\r\n if (toAnimation) {\r\n animationRunners.push(toAnimation.start());\r\n }\r\n\r\n forEach(anchorAnimations, function(animation) {\r\n animationRunners.push(animation.start());\r\n });\r\n\r\n var runner = new $$AnimateRunner({\r\n end: endFn,\r\n cancel: endFn // CSS-driven animations cannot be cancelled, only ended\r\n });\r\n\r\n $$AnimateRunner.all(animationRunners, function(status) {\r\n runner.complete(status);\r\n });\r\n\r\n return runner;\r\n\r\n function endFn() {\r\n forEach(animationRunners, function(runner) {\r\n runner.end();\r\n });\r\n }\r\n }\r\n };\r\n }\r\n\r\n function prepareRegularAnimation(animationDetails) {\r\n var element = animationDetails.element;\r\n var options = animationDetails.options || {};\r\n\r\n if (animationDetails.structural) {\r\n options.event = animationDetails.event;\r\n options.structural = true;\r\n options.applyClassesEarly = true;\r\n\r\n // we special case the leave animation since we want to ensure that\r\n // the element is removed as soon as the animation is over. Otherwise\r\n // a flicker might appear or the element may not be removed at all\r\n if (animationDetails.event === 'leave') {\r\n options.onDone = options.domOperation;\r\n }\r\n }\r\n\r\n // We assign the preparationClasses as the actual animation event since\r\n // the internals of $animateCss will just suffix the event token values\r\n // with `-active` to trigger the animation.\r\n if (options.preparationClasses) {\r\n options.event = concatWithSpace(options.event, options.preparationClasses);\r\n }\r\n\r\n var animator = $animateCss(element, options);\r\n\r\n // the driver lookup code inside of $$animation attempts to spawn a\r\n // driver one by one until a driver returns a.$$willAnimate animator object.\r\n // $animateCss will always return an object, however, it will pass in\r\n // a flag as a hint as to whether an animation was detected or not\r\n return animator.$$willAnimate ? animator : null;\r\n }\r\n }];\r\n}];\r\n\r\n// TODO(matsko): use caching here to speed things up for detection\r\n// TODO(matsko): add documentation\r\n// by the time...\r\n\r\nvar $$AnimateJsProvider = ['$animateProvider', /** @this */ function($animateProvider) {\r\n this.$get = ['$injector', '$$AnimateRunner', '$$jqLite',\r\n function($injector, $$AnimateRunner, $$jqLite) {\r\n\r\n var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);\r\n // $animateJs(element, 'enter');\r\n return function(element, event, classes, options) {\r\n var animationClosed = false;\r\n\r\n // the `classes` argument is optional and if it is not used\r\n // then the classes will be resolved from the element's className\r\n // property as well as options.addClass/options.removeClass.\r\n if (arguments.length === 3 && isObject(classes)) {\r\n options = classes;\r\n classes = null;\r\n }\r\n\r\n options = prepareAnimationOptions(options);\r\n if (!classes) {\r\n classes = element.attr('class') || '';\r\n if (options.addClass) {\r\n classes += ' ' + options.addClass;\r\n }\r\n if (options.removeClass) {\r\n classes += ' ' + options.removeClass;\r\n }\r\n }\r\n\r\n var classesToAdd = options.addClass;\r\n var classesToRemove = options.removeClass;\r\n\r\n // the lookupAnimations function returns a series of animation objects that are\r\n // matched up with one or more of the CSS classes. These animation objects are\r\n // defined via the module.animation factory function. If nothing is detected then\r\n // we don't return anything which then makes $animation query the next driver.\r\n var animations = lookupAnimations(classes);\r\n var before, after;\r\n if (animations.length) {\r\n var afterFn, beforeFn;\r\n if (event === 'leave') {\r\n beforeFn = 'leave';\r\n afterFn = 'afterLeave'; // TODO(matsko): get rid of this\r\n } else {\r\n beforeFn = 'before' + event.charAt(0).toUpperCase() + event.substr(1);\r\n afterFn = event;\r\n }\r\n\r\n if (event !== 'enter' && event !== 'move') {\r\n before = packageAnimations(element, event, options, animations, beforeFn);\r\n }\r\n after = packageAnimations(element, event, options, animations, afterFn);\r\n }\r\n\r\n // no matching animations\r\n if (!before && !after) return;\r\n\r\n function applyOptions() {\r\n options.domOperation();\r\n applyAnimationClasses(element, options);\r\n }\r\n\r\n function close() {\r\n animationClosed = true;\r\n applyOptions();\r\n applyAnimationStyles(element, options);\r\n }\r\n\r\n var runner;\r\n\r\n return {\r\n $$willAnimate: true,\r\n end: function() {\r\n if (runner) {\r\n runner.end();\r\n } else {\r\n close();\r\n runner = new $$AnimateRunner();\r\n runner.complete(true);\r\n }\r\n return runner;\r\n },\r\n start: function() {\r\n if (runner) {\r\n return runner;\r\n }\r\n\r\n runner = new $$AnimateRunner();\r\n var closeActiveAnimations;\r\n var chain = [];\r\n\r\n if (before) {\r\n chain.push(function(fn) {\r\n closeActiveAnimations = before(fn);\r\n });\r\n }\r\n\r\n if (chain.length) {\r\n chain.push(function(fn) {\r\n applyOptions();\r\n fn(true);\r\n });\r\n } else {\r\n applyOptions();\r\n }\r\n\r\n if (after) {\r\n chain.push(function(fn) {\r\n closeActiveAnimations = after(fn);\r\n });\r\n }\r\n\r\n runner.setHost({\r\n end: function() {\r\n endAnimations();\r\n },\r\n cancel: function() {\r\n endAnimations(true);\r\n }\r\n });\r\n\r\n $$AnimateRunner.chain(chain, onComplete);\r\n return runner;\r\n\r\n function onComplete(success) {\r\n close(success);\r\n runner.complete(success);\r\n }\r\n\r\n function endAnimations(cancelled) {\r\n if (!animationClosed) {\r\n (closeActiveAnimations || noop)(cancelled);\r\n onComplete(cancelled);\r\n }\r\n }\r\n }\r\n };\r\n\r\n function executeAnimationFn(fn, element, event, options, onDone) {\r\n var args;\r\n switch (event) {\r\n case 'animate':\r\n args = [element, options.from, options.to, onDone];\r\n break;\r\n\r\n case 'setClass':\r\n args = [element, classesToAdd, classesToRemove, onDone];\r\n break;\r\n\r\n case 'addClass':\r\n args = [element, classesToAdd, onDone];\r\n break;\r\n\r\n case 'removeClass':\r\n args = [element, classesToRemove, onDone];\r\n break;\r\n\r\n default:\r\n args = [element, onDone];\r\n break;\r\n }\r\n\r\n args.push(options);\r\n\r\n var value = fn.apply(fn, args);\r\n if (value) {\r\n if (isFunction(value.start)) {\r\n value = value.start();\r\n }\r\n\r\n if (value instanceof $$AnimateRunner) {\r\n value.done(onDone);\r\n } else if (isFunction(value)) {\r\n // optional onEnd / onCancel callback\r\n return value;\r\n }\r\n }\r\n\r\n return noop;\r\n }\r\n\r\n function groupEventedAnimations(element, event, options, animations, fnName) {\r\n var operations = [];\r\n forEach(animations, function(ani) {\r\n var animation = ani[fnName];\r\n if (!animation) return;\r\n\r\n // note that all of these animations will run in parallel\r\n operations.push(function() {\r\n var runner;\r\n var endProgressCb;\r\n\r\n var resolved = false;\r\n var onAnimationComplete = function(rejected) {\r\n if (!resolved) {\r\n resolved = true;\r\n (endProgressCb || noop)(rejected);\r\n runner.complete(!rejected);\r\n }\r\n };\r\n\r\n runner = new $$AnimateRunner({\r\n end: function() {\r\n onAnimationComplete();\r\n },\r\n cancel: function() {\r\n onAnimationComplete(true);\r\n }\r\n });\r\n\r\n endProgressCb = executeAnimationFn(animation, element, event, options, function(result) {\r\n var cancelled = result === false;\r\n onAnimationComplete(cancelled);\r\n });\r\n\r\n return runner;\r\n });\r\n });\r\n\r\n return operations;\r\n }\r\n\r\n function packageAnimations(element, event, options, animations, fnName) {\r\n var operations = groupEventedAnimations(element, event, options, animations, fnName);\r\n if (operations.length === 0) {\r\n var a, b;\r\n if (fnName === 'beforeSetClass') {\r\n a = groupEventedAnimations(element, 'removeClass', options, animations, 'beforeRemoveClass');\r\n b = groupEventedAnimations(element, 'addClass', options, animations, 'beforeAddClass');\r\n } else if (fnName === 'setClass') {\r\n a = groupEventedAnimations(element, 'removeClass', options, animations, 'removeClass');\r\n b = groupEventedAnimations(element, 'addClass', options, animations, 'addClass');\r\n }\r\n\r\n if (a) {\r\n operations = operations.concat(a);\r\n }\r\n if (b) {\r\n operations = operations.concat(b);\r\n }\r\n }\r\n\r\n if (operations.length === 0) return;\r\n\r\n // TODO(matsko): add documentation\r\n return function startAnimation(callback) {\r\n var runners = [];\r\n if (operations.length) {\r\n forEach(operations, function(animateFn) {\r\n runners.push(animateFn());\r\n });\r\n }\r\n\r\n if (runners.length) {\r\n $$AnimateRunner.all(runners, callback);\r\n } else {\r\n callback();\r\n }\r\n\r\n return function endFn(reject) {\r\n forEach(runners, function(runner) {\r\n if (reject) {\r\n runner.cancel();\r\n } else {\r\n runner.end();\r\n }\r\n });\r\n };\r\n };\r\n }\r\n };\r\n\r\n function lookupAnimations(classes) {\r\n classes = isArray(classes) ? classes : classes.split(' ');\r\n var matches = [], flagMap = {};\r\n for (var i = 0; i < classes.length; i++) {\r\n var klass = classes[i],\r\n animationFactory = $animateProvider.$$registeredAnimations[klass];\r\n if (animationFactory && !flagMap[klass]) {\r\n matches.push($injector.get(animationFactory));\r\n flagMap[klass] = true;\r\n }\r\n }\r\n return matches;\r\n }\r\n }];\r\n}];\r\n\r\nvar $$AnimateJsDriverProvider = ['$$animationProvider', /** @this */ function($$animationProvider) {\r\n $$animationProvider.drivers.push('$$animateJsDriver');\r\n this.$get = ['$$animateJs', '$$AnimateRunner', function($$animateJs, $$AnimateRunner) {\r\n return function initDriverFn(animationDetails) {\r\n if (animationDetails.from && animationDetails.to) {\r\n var fromAnimation = prepareAnimation(animationDetails.from);\r\n var toAnimation = prepareAnimation(animationDetails.to);\r\n if (!fromAnimation && !toAnimation) return;\r\n\r\n return {\r\n start: function() {\r\n var animationRunners = [];\r\n\r\n if (fromAnimation) {\r\n animationRunners.push(fromAnimation.start());\r\n }\r\n\r\n if (toAnimation) {\r\n animationRunners.push(toAnimation.start());\r\n }\r\n\r\n $$AnimateRunner.all(animationRunners, done);\r\n\r\n var runner = new $$AnimateRunner({\r\n end: endFnFactory(),\r\n cancel: endFnFactory()\r\n });\r\n\r\n return runner;\r\n\r\n function endFnFactory() {\r\n return function() {\r\n forEach(animationRunners, function(runner) {\r\n // at this point we cannot cancel animations for groups just yet. 1.5+\r\n runner.end();\r\n });\r\n };\r\n }\r\n\r\n function done(status) {\r\n runner.complete(status);\r\n }\r\n }\r\n };\r\n } else {\r\n return prepareAnimation(animationDetails);\r\n }\r\n };\r\n\r\n function prepareAnimation(animationDetails) {\r\n // TODO(matsko): make sure to check for grouped animations and delegate down to normal animations\r\n var element = animationDetails.element;\r\n var event = animationDetails.event;\r\n var options = animationDetails.options;\r\n var classes = animationDetails.classes;\r\n return $$animateJs(element, event, classes, options);\r\n }\r\n }];\r\n}];\r\n\r\nvar NG_ANIMATE_ATTR_NAME = 'data-ng-animate';\r\nvar NG_ANIMATE_PIN_DATA = '$ngAnimatePin';\r\nvar $$AnimateQueueProvider = ['$animateProvider', /** @this */ function($animateProvider) {\r\n var PRE_DIGEST_STATE = 1;\r\n var RUNNING_STATE = 2;\r\n var ONE_SPACE = ' ';\r\n\r\n var rules = this.rules = {\r\n skip: [],\r\n cancel: [],\r\n join: []\r\n };\r\n\r\n function getEventData(options) {\r\n return {\r\n addClass: options.addClass,\r\n removeClass: options.removeClass,\r\n from: options.from,\r\n to: options.to\r\n };\r\n }\r\n\r\n function makeTruthyCssClassMap(classString) {\r\n if (!classString) {\r\n return null;\r\n }\r\n\r\n var keys = classString.split(ONE_SPACE);\r\n var map = Object.create(null);\r\n\r\n forEach(keys, function(key) {\r\n map[key] = true;\r\n });\r\n return map;\r\n }\r\n\r\n function hasMatchingClasses(newClassString, currentClassString) {\r\n if (newClassString && currentClassString) {\r\n var currentClassMap = makeTruthyCssClassMap(currentClassString);\r\n return newClassString.split(ONE_SPACE).some(function(className) {\r\n return currentClassMap[className];\r\n });\r\n }\r\n }\r\n\r\n function isAllowed(ruleType, currentAnimation, previousAnimation) {\r\n return rules[ruleType].some(function(fn) {\r\n return fn(currentAnimation, previousAnimation);\r\n });\r\n }\r\n\r\n function hasAnimationClasses(animation, and) {\r\n var a = (animation.addClass || '').length > 0;\r\n var b = (animation.removeClass || '').length > 0;\r\n return and ? a && b : a || b;\r\n }\r\n\r\n rules.join.push(function(newAnimation, currentAnimation) {\r\n // if the new animation is class-based then we can just tack that on\r\n return !newAnimation.structural && hasAnimationClasses(newAnimation);\r\n });\r\n\r\n rules.skip.push(function(newAnimation, currentAnimation) {\r\n // there is no need to animate anything if no classes are being added and\r\n // there is no structural animation that will be triggered\r\n return !newAnimation.structural && !hasAnimationClasses(newAnimation);\r\n });\r\n\r\n rules.skip.push(function(newAnimation, currentAnimation) {\r\n // why should we trigger a new structural animation if the element will\r\n // be removed from the DOM anyway?\r\n return currentAnimation.event === 'leave' && newAnimation.structural;\r\n });\r\n\r\n rules.skip.push(function(newAnimation, currentAnimation) {\r\n // if there is an ongoing current animation then don't even bother running the class-based animation\r\n return currentAnimation.structural && currentAnimation.state === RUNNING_STATE && !newAnimation.structural;\r\n });\r\n\r\n rules.cancel.push(function(newAnimation, currentAnimation) {\r\n // there can never be two structural animations running at the same time\r\n return currentAnimation.structural && newAnimation.structural;\r\n });\r\n\r\n rules.cancel.push(function(newAnimation, currentAnimation) {\r\n // if the previous animation is already running, but the new animation will\r\n // be triggered, but the new animation is structural\r\n return currentAnimation.state === RUNNING_STATE && newAnimation.structural;\r\n });\r\n\r\n rules.cancel.push(function(newAnimation, currentAnimation) {\r\n // cancel the animation if classes added / removed in both animation cancel each other out,\r\n // but only if the current animation isn't structural\r\n\r\n if (currentAnimation.structural) return false;\r\n\r\n var nA = newAnimation.addClass;\r\n var nR = newAnimation.removeClass;\r\n var cA = currentAnimation.addClass;\r\n var cR = currentAnimation.removeClass;\r\n\r\n // early detection to save the global CPU shortage :)\r\n if ((isUndefined(nA) && isUndefined(nR)) || (isUndefined(cA) && isUndefined(cR))) {\r\n return false;\r\n }\r\n\r\n return hasMatchingClasses(nA, cR) || hasMatchingClasses(nR, cA);\r\n });\r\n\r\n this.$get = ['$$rAF', '$rootScope', '$rootElement', '$document', '$$Map',\r\n '$$animation', '$$AnimateRunner', '$templateRequest', '$$jqLite', '$$forceReflow',\r\n '$$isDocumentHidden',\r\n function($$rAF, $rootScope, $rootElement, $document, $$Map,\r\n $$animation, $$AnimateRunner, $templateRequest, $$jqLite, $$forceReflow,\r\n $$isDocumentHidden) {\r\n\r\n var activeAnimationsLookup = new $$Map();\r\n var disabledElementsLookup = new $$Map();\r\n var animationsEnabled = null;\r\n\r\n function removeFromDisabledElementsLookup(evt) {\r\n disabledElementsLookup.delete(evt.target);\r\n }\r\n\r\n function postDigestTaskFactory() {\r\n var postDigestCalled = false;\r\n return function(fn) {\r\n // we only issue a call to postDigest before\r\n // it has first passed. This prevents any callbacks\r\n // from not firing once the animation has completed\r\n // since it will be out of the digest cycle.\r\n if (postDigestCalled) {\r\n fn();\r\n } else {\r\n $rootScope.$$postDigest(function() {\r\n postDigestCalled = true;\r\n fn();\r\n });\r\n }\r\n };\r\n }\r\n\r\n // Wait until all directive and route-related templates are downloaded and\r\n // compiled. The $templateRequest.totalPendingRequests variable keeps track of\r\n // all of the remote templates being currently downloaded. If there are no\r\n // templates currently downloading then the watcher will still fire anyway.\r\n var deregisterWatch = $rootScope.$watch(\r\n function() { return $templateRequest.totalPendingRequests === 0; },\r\n function(isEmpty) {\r\n if (!isEmpty) return;\r\n deregisterWatch();\r\n\r\n // Now that all templates have been downloaded, $animate will wait until\r\n // the post digest queue is empty before enabling animations. By having two\r\n // calls to $postDigest calls we can ensure that the flag is enabled at the\r\n // very end of the post digest queue. Since all of the animations in $animate\r\n // use $postDigest, it's important that the code below executes at the end.\r\n // This basically means that the page is fully downloaded and compiled before\r\n // any animations are triggered.\r\n $rootScope.$$postDigest(function() {\r\n $rootScope.$$postDigest(function() {\r\n // we check for null directly in the event that the application already called\r\n // .enabled() with whatever arguments that it provided it with\r\n if (animationsEnabled === null) {\r\n animationsEnabled = true;\r\n }\r\n });\r\n });\r\n }\r\n );\r\n\r\n var callbackRegistry = Object.create(null);\r\n\r\n // remember that the `customFilter`/`classNameFilter` are set during the\r\n // provider/config stage therefore we can optimize here and setup helper functions\r\n var customFilter = $animateProvider.customFilter();\r\n var classNameFilter = $animateProvider.classNameFilter();\r\n var returnTrue = function() { return true; };\r\n\r\n var isAnimatableByFilter = customFilter || returnTrue;\r\n var isAnimatableClassName = !classNameFilter ? returnTrue : function(node, options) {\r\n var className = [node.getAttribute('class'), options.addClass, options.removeClass].join(' ');\r\n return classNameFilter.test(className);\r\n };\r\n\r\n var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);\r\n\r\n function normalizeAnimationDetails(element, animation) {\r\n return mergeAnimationDetails(element, animation, {});\r\n }\r\n\r\n // IE9-11 has no method \"contains\" in SVG element and in Node.prototype. Bug #10259.\r\n var contains = window.Node.prototype.contains || /** @this */ function(arg) {\r\n // eslint-disable-next-line no-bitwise\r\n return this === arg || !!(this.compareDocumentPosition(arg) & 16);\r\n };\r\n\r\n function findCallbacks(targetParentNode, targetNode, event) {\r\n var matches = [];\r\n var entries = callbackRegistry[event];\r\n if (entries) {\r\n forEach(entries, function(entry) {\r\n if (contains.call(entry.node, targetNode)) {\r\n matches.push(entry.callback);\r\n } else if (event === 'leave' && contains.call(entry.node, targetParentNode)) {\r\n matches.push(entry.callback);\r\n }\r\n });\r\n }\r\n\r\n return matches;\r\n }\r\n\r\n function filterFromRegistry(list, matchContainer, matchCallback) {\r\n var containerNode = extractElementNode(matchContainer);\r\n return list.filter(function(entry) {\r\n var isMatch = entry.node === containerNode &&\r\n (!matchCallback || entry.callback === matchCallback);\r\n return !isMatch;\r\n });\r\n }\r\n\r\n function cleanupEventListeners(phase, node) {\r\n if (phase === 'close' && !node.parentNode) {\r\n // If the element is not attached to a parentNode, it has been removed by\r\n // the domOperation, and we can safely remove the event callbacks\r\n $animate.off(node);\r\n }\r\n }\r\n\r\n var $animate = {\r\n on: function(event, container, callback) {\r\n var node = extractElementNode(container);\r\n callbackRegistry[event] = callbackRegistry[event] || [];\r\n callbackRegistry[event].push({\r\n node: node,\r\n callback: callback\r\n });\r\n\r\n // Remove the callback when the element is removed from the DOM\r\n jqLite(container).on('$destroy', function() {\r\n var animationDetails = activeAnimationsLookup.get(node);\r\n\r\n if (!animationDetails) {\r\n // If there's an animation ongoing, the callback calling code will remove\r\n // the event listeners. If we'd remove here, the callbacks would be removed\r\n // before the animation ends\r\n $animate.off(event, container, callback);\r\n }\r\n });\r\n },\r\n\r\n off: function(event, container, callback) {\r\n if (arguments.length === 1 && !isString(arguments[0])) {\r\n container = arguments[0];\r\n for (var eventType in callbackRegistry) {\r\n callbackRegistry[eventType] = filterFromRegistry(callbackRegistry[eventType], container);\r\n }\r\n\r\n return;\r\n }\r\n\r\n var entries = callbackRegistry[event];\r\n if (!entries) return;\r\n\r\n callbackRegistry[event] = arguments.length === 1\r\n ? null\r\n : filterFromRegistry(entries, container, callback);\r\n },\r\n\r\n pin: function(element, parentElement) {\r\n assertArg(isElement(element), 'element', 'not an element');\r\n assertArg(isElement(parentElement), 'parentElement', 'not an element');\r\n element.data(NG_ANIMATE_PIN_DATA, parentElement);\r\n },\r\n\r\n push: function(element, event, options, domOperation) {\r\n options = options || {};\r\n options.domOperation = domOperation;\r\n return queueAnimation(element, event, options);\r\n },\r\n\r\n // this method has four signatures:\r\n // () - global getter\r\n // (bool) - global setter\r\n // (element) - element getter\r\n // (element, bool) - element setter\r\n enabled: function(element, bool) {\r\n var argCount = arguments.length;\r\n\r\n if (argCount === 0) {\r\n // () - Global getter\r\n bool = !!animationsEnabled;\r\n } else {\r\n var hasElement = isElement(element);\r\n\r\n if (!hasElement) {\r\n // (bool) - Global setter\r\n bool = animationsEnabled = !!element;\r\n } else {\r\n var node = getDomNode(element);\r\n\r\n if (argCount === 1) {\r\n // (element) - Element getter\r\n bool = !disabledElementsLookup.get(node);\r\n } else {\r\n // (element, bool) - Element setter\r\n if (!disabledElementsLookup.has(node)) {\r\n // The element is added to the map for the first time.\r\n // Create a listener to remove it on `$destroy` (to avoid memory leak).\r\n jqLite(element).on('$destroy', removeFromDisabledElementsLookup);\r\n }\r\n disabledElementsLookup.set(node, !bool);\r\n }\r\n }\r\n }\r\n\r\n return bool;\r\n }\r\n };\r\n\r\n return $animate;\r\n\r\n function queueAnimation(originalElement, event, initialOptions) {\r\n // we always make a copy of the options since\r\n // there should never be any side effects on\r\n // the input data when running `$animateCss`.\r\n var options = copy(initialOptions);\r\n\r\n var element = stripCommentsFromElement(originalElement);\r\n var node = getDomNode(element);\r\n var parentNode = node && node.parentNode;\r\n\r\n options = prepareAnimationOptions(options);\r\n\r\n // we create a fake runner with a working promise.\r\n // These methods will become available after the digest has passed\r\n var runner = new $$AnimateRunner();\r\n\r\n // this is used to trigger callbacks in postDigest mode\r\n var runInNextPostDigestOrNow = postDigestTaskFactory();\r\n\r\n if (isArray(options.addClass)) {\r\n options.addClass = options.addClass.join(' ');\r\n }\r\n\r\n if (options.addClass && !isString(options.addClass)) {\r\n options.addClass = null;\r\n }\r\n\r\n if (isArray(options.removeClass)) {\r\n options.removeClass = options.removeClass.join(' ');\r\n }\r\n\r\n if (options.removeClass && !isString(options.removeClass)) {\r\n options.removeClass = null;\r\n }\r\n\r\n if (options.from && !isObject(options.from)) {\r\n options.from = null;\r\n }\r\n\r\n if (options.to && !isObject(options.to)) {\r\n options.to = null;\r\n }\r\n\r\n // If animations are hard-disabled for the whole application there is no need to continue.\r\n // There are also situations where a directive issues an animation for a jqLite wrapper that\r\n // contains only comment nodes. In this case, there is no way we can perform an animation.\r\n if (!animationsEnabled ||\r\n !node ||\r\n !isAnimatableByFilter(node, event, initialOptions) ||\r\n !isAnimatableClassName(node, options)) {\r\n close();\r\n return runner;\r\n }\r\n\r\n var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0;\r\n\r\n var documentHidden = $$isDocumentHidden();\r\n\r\n // This is a hard disable of all animations the element itself, therefore there is no need to\r\n // continue further past this point if not enabled\r\n // Animations are also disabled if the document is currently hidden (page is not visible\r\n // to the user), because browsers slow down or do not flush calls to requestAnimationFrame\r\n var skipAnimations = documentHidden || disabledElementsLookup.get(node);\r\n var existingAnimation = (!skipAnimations && activeAnimationsLookup.get(node)) || {};\r\n var hasExistingAnimation = !!existingAnimation.state;\r\n\r\n // there is no point in traversing the same collection of parent ancestors if a followup\r\n // animation will be run on the same element that already did all that checking work\r\n if (!skipAnimations && (!hasExistingAnimation || existingAnimation.state !== PRE_DIGEST_STATE)) {\r\n skipAnimations = !areAnimationsAllowed(node, parentNode, event);\r\n }\r\n\r\n if (skipAnimations) {\r\n // Callbacks should fire even if the document is hidden (regression fix for issue #14120)\r\n if (documentHidden) notifyProgress(runner, event, 'start', getEventData(options));\r\n close();\r\n if (documentHidden) notifyProgress(runner, event, 'close', getEventData(options));\r\n return runner;\r\n }\r\n\r\n if (isStructural) {\r\n closeChildAnimations(node);\r\n }\r\n\r\n var newAnimation = {\r\n structural: isStructural,\r\n element: element,\r\n event: event,\r\n addClass: options.addClass,\r\n removeClass: options.removeClass,\r\n close: close,\r\n options: options,\r\n runner: runner\r\n };\r\n\r\n if (hasExistingAnimation) {\r\n var skipAnimationFlag = isAllowed('skip', newAnimation, existingAnimation);\r\n if (skipAnimationFlag) {\r\n if (existingAnimation.state === RUNNING_STATE) {\r\n close();\r\n return runner;\r\n } else {\r\n mergeAnimationDetails(element, existingAnimation, newAnimation);\r\n return existingAnimation.runner;\r\n }\r\n }\r\n var cancelAnimationFlag = isAllowed('cancel', newAnimation, existingAnimation);\r\n if (cancelAnimationFlag) {\r\n if (existingAnimation.state === RUNNING_STATE) {\r\n // this will end the animation right away and it is safe\r\n // to do so since the animation is already running and the\r\n // runner callback code will run in async\r\n existingAnimation.runner.end();\r\n } else if (existingAnimation.structural) {\r\n // this means that the animation is queued into a digest, but\r\n // hasn't started yet. Therefore it is safe to run the close\r\n // method which will call the runner methods in async.\r\n existingAnimation.close();\r\n } else {\r\n // this will merge the new animation options into existing animation options\r\n mergeAnimationDetails(element, existingAnimation, newAnimation);\r\n\r\n return existingAnimation.runner;\r\n }\r\n } else {\r\n // a joined animation means that this animation will take over the existing one\r\n // so an example would involve a leave animation taking over an enter. Then when\r\n // the postDigest kicks in the enter will be ignored.\r\n var joinAnimationFlag = isAllowed('join', newAnimation, existingAnimation);\r\n if (joinAnimationFlag) {\r\n if (existingAnimation.state === RUNNING_STATE) {\r\n normalizeAnimationDetails(element, newAnimation);\r\n } else {\r\n applyGeneratedPreparationClasses($$jqLite, element, isStructural ? event : null, options);\r\n\r\n event = newAnimation.event = existingAnimation.event;\r\n options = mergeAnimationDetails(element, existingAnimation, newAnimation);\r\n\r\n //we return the same runner since only the option values of this animation will\r\n //be fed into the `existingAnimation`.\r\n return existingAnimation.runner;\r\n }\r\n }\r\n }\r\n } else {\r\n // normalization in this case means that it removes redundant CSS classes that\r\n // already exist (addClass) or do not exist (removeClass) on the element\r\n normalizeAnimationDetails(element, newAnimation);\r\n }\r\n\r\n // when the options are merged and cleaned up we may end up not having to do\r\n // an animation at all, therefore we should check this before issuing a post\r\n // digest callback. Structural animations will always run no matter what.\r\n var isValidAnimation = newAnimation.structural;\r\n if (!isValidAnimation) {\r\n // animate (from/to) can be quickly checked first, otherwise we check if any classes are present\r\n isValidAnimation = (newAnimation.event === 'animate' && Object.keys(newAnimation.options.to || {}).length > 0)\r\n || hasAnimationClasses(newAnimation);\r\n }\r\n\r\n if (!isValidAnimation) {\r\n close();\r\n clearElementAnimationState(node);\r\n return runner;\r\n }\r\n\r\n // the counter keeps track of cancelled animations\r\n var counter = (existingAnimation.counter || 0) + 1;\r\n newAnimation.counter = counter;\r\n\r\n markElementAnimationState(node, PRE_DIGEST_STATE, newAnimation);\r\n\r\n $rootScope.$$postDigest(function() {\r\n // It is possible that the DOM nodes inside `originalElement` have been replaced. This can\r\n // happen if the animated element is a transcluded clone and also has a `templateUrl`\r\n // directive on it. Therefore, we must recreate `element` in order to interact with the\r\n // actual DOM nodes.\r\n // Note: We still need to use the old `node` for certain things, such as looking up in\r\n // HashMaps where it was used as the key.\r\n\r\n element = stripCommentsFromElement(originalElement);\r\n\r\n var animationDetails = activeAnimationsLookup.get(node);\r\n var animationCancelled = !animationDetails;\r\n animationDetails = animationDetails || {};\r\n\r\n // if addClass/removeClass is called before something like enter then the\r\n // registered parent element may not be present. The code below will ensure\r\n // that a final value for parent element is obtained\r\n var parentElement = element.parent() || [];\r\n\r\n // animate/structural/class-based animations all have requirements. Otherwise there\r\n // is no point in performing an animation. The parent node must also be set.\r\n var isValidAnimation = parentElement.length > 0\r\n && (animationDetails.event === 'animate'\r\n || animationDetails.structural\r\n || hasAnimationClasses(animationDetails));\r\n\r\n // this means that the previous animation was cancelled\r\n // even if the follow-up animation is the same event\r\n if (animationCancelled || animationDetails.counter !== counter || !isValidAnimation) {\r\n // if another animation did not take over then we need\r\n // to make sure that the domOperation and options are\r\n // handled accordingly\r\n if (animationCancelled) {\r\n applyAnimationClasses(element, options);\r\n applyAnimationStyles(element, options);\r\n }\r\n\r\n // if the event changed from something like enter to leave then we do\r\n // it, otherwise if it's the same then the end result will be the same too\r\n if (animationCancelled || (isStructural && animationDetails.event !== event)) {\r\n options.domOperation();\r\n runner.end();\r\n }\r\n\r\n // in the event that the element animation was not cancelled or a follow-up animation\r\n // isn't allowed to animate from here then we need to clear the state of the element\r\n // so that any future animations won't read the expired animation data.\r\n if (!isValidAnimation) {\r\n clearElementAnimationState(node);\r\n }\r\n\r\n return;\r\n }\r\n\r\n // this combined multiple class to addClass / removeClass into a setClass event\r\n // so long as a structural event did not take over the animation\r\n event = !animationDetails.structural && hasAnimationClasses(animationDetails, true)\r\n ? 'setClass'\r\n : animationDetails.event;\r\n\r\n markElementAnimationState(node, RUNNING_STATE);\r\n var realRunner = $$animation(element, event, animationDetails.options);\r\n\r\n // this will update the runner's flow-control events based on\r\n // the `realRunner` object.\r\n runner.setHost(realRunner);\r\n notifyProgress(runner, event, 'start', getEventData(options));\r\n\r\n realRunner.done(function(status) {\r\n close(!status);\r\n var animationDetails = activeAnimationsLookup.get(node);\r\n if (animationDetails && animationDetails.counter === counter) {\r\n clearElementAnimationState(node);\r\n }\r\n notifyProgress(runner, event, 'close', getEventData(options));\r\n });\r\n });\r\n\r\n return runner;\r\n\r\n function notifyProgress(runner, event, phase, data) {\r\n runInNextPostDigestOrNow(function() {\r\n var callbacks = findCallbacks(parentNode, node, event);\r\n if (callbacks.length) {\r\n // do not optimize this call here to RAF because\r\n // we don't know how heavy the callback code here will\r\n // be and if this code is buffered then this can\r\n // lead to a performance regression.\r\n $$rAF(function() {\r\n forEach(callbacks, function(callback) {\r\n callback(element, phase, data);\r\n });\r\n cleanupEventListeners(phase, node);\r\n });\r\n } else {\r\n cleanupEventListeners(phase, node);\r\n }\r\n });\r\n runner.progress(event, phase, data);\r\n }\r\n\r\n function close(reject) {\r\n clearGeneratedClasses(element, options);\r\n applyAnimationClasses(element, options);\r\n applyAnimationStyles(element, options);\r\n options.domOperation();\r\n runner.complete(!reject);\r\n }\r\n }\r\n\r\n function closeChildAnimations(node) {\r\n var children = node.querySelectorAll('[' + NG_ANIMATE_ATTR_NAME + ']');\r\n forEach(children, function(child) {\r\n var state = parseInt(child.getAttribute(NG_ANIMATE_ATTR_NAME), 10);\r\n var animationDetails = activeAnimationsLookup.get(child);\r\n if (animationDetails) {\r\n switch (state) {\r\n case RUNNING_STATE:\r\n animationDetails.runner.end();\r\n /* falls through */\r\n case PRE_DIGEST_STATE:\r\n activeAnimationsLookup.delete(child);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n function clearElementAnimationState(node) {\r\n node.removeAttribute(NG_ANIMATE_ATTR_NAME);\r\n activeAnimationsLookup.delete(node);\r\n }\r\n\r\n /**\r\n * This fn returns false if any of the following is true:\r\n * a) animations on any parent element are disabled, and animations on the element aren't explicitly allowed\r\n * b) a parent element has an ongoing structural animation, and animateChildren is false\r\n * c) the element is not a child of the body\r\n * d) the element is not a child of the $rootElement\r\n */\r\n function areAnimationsAllowed(node, parentNode, event) {\r\n var bodyNode = $document[0].body;\r\n var rootNode = getDomNode($rootElement);\r\n\r\n var bodyNodeDetected = (node === bodyNode) || node.nodeName === 'HTML';\r\n var rootNodeDetected = (node === rootNode);\r\n var parentAnimationDetected = false;\r\n var elementDisabled = disabledElementsLookup.get(node);\r\n var animateChildren;\r\n\r\n var parentHost = jqLite.data(node, NG_ANIMATE_PIN_DATA);\r\n if (parentHost) {\r\n parentNode = getDomNode(parentHost);\r\n }\r\n\r\n while (parentNode) {\r\n if (!rootNodeDetected) {\r\n // AngularJS doesn't want to attempt to animate elements outside of the application\r\n // therefore we need to ensure that the rootElement is an ancestor of the current element\r\n rootNodeDetected = (parentNode === rootNode);\r\n }\r\n\r\n if (parentNode.nodeType !== ELEMENT_NODE) {\r\n // no point in inspecting the #document element\r\n break;\r\n }\r\n\r\n var details = activeAnimationsLookup.get(parentNode) || {};\r\n // either an enter, leave or move animation will commence\r\n // therefore we can't allow any animations to take place\r\n // but if a parent animation is class-based then that's ok\r\n if (!parentAnimationDetected) {\r\n var parentNodeDisabled = disabledElementsLookup.get(parentNode);\r\n\r\n if (parentNodeDisabled === true && elementDisabled !== false) {\r\n // disable animations if the user hasn't explicitly enabled animations on the\r\n // current element\r\n elementDisabled = true;\r\n // element is disabled via parent element, no need to check anything else\r\n break;\r\n } else if (parentNodeDisabled === false) {\r\n elementDisabled = false;\r\n }\r\n parentAnimationDetected = details.structural;\r\n }\r\n\r\n if (isUndefined(animateChildren) || animateChildren === true) {\r\n var value = jqLite.data(parentNode, NG_ANIMATE_CHILDREN_DATA);\r\n if (isDefined(value)) {\r\n animateChildren = value;\r\n }\r\n }\r\n\r\n // there is no need to continue traversing at this point\r\n if (parentAnimationDetected && animateChildren === false) break;\r\n\r\n if (!bodyNodeDetected) {\r\n // we also need to ensure that the element is or will be a part of the body element\r\n // otherwise it is pointless to even issue an animation to be rendered\r\n bodyNodeDetected = (parentNode === bodyNode);\r\n }\r\n\r\n if (bodyNodeDetected && rootNodeDetected) {\r\n // If both body and root have been found, any other checks are pointless,\r\n // as no animation data should live outside the application\r\n break;\r\n }\r\n\r\n if (!rootNodeDetected) {\r\n // If `rootNode` is not detected, check if `parentNode` is pinned to another element\r\n parentHost = jqLite.data(parentNode, NG_ANIMATE_PIN_DATA);\r\n if (parentHost) {\r\n // The pin target element becomes the next parent element\r\n parentNode = getDomNode(parentHost);\r\n continue;\r\n }\r\n }\r\n\r\n parentNode = parentNode.parentNode;\r\n }\r\n\r\n var allowAnimation = (!parentAnimationDetected || animateChildren) && elementDisabled !== true;\r\n return allowAnimation && rootNodeDetected && bodyNodeDetected;\r\n }\r\n\r\n function markElementAnimationState(node, state, details) {\r\n details = details || {};\r\n details.state = state;\r\n\r\n node.setAttribute(NG_ANIMATE_ATTR_NAME, state);\r\n\r\n var oldValue = activeAnimationsLookup.get(node);\r\n var newValue = oldValue\r\n ? extend(oldValue, details)\r\n : details;\r\n activeAnimationsLookup.set(node, newValue);\r\n }\r\n }];\r\n}];\r\n\r\n/** @this */\r\nvar $$AnimateCacheProvider = function() {\r\n\r\n var KEY = '$$ngAnimateParentKey';\r\n var parentCounter = 0;\r\n var cache = Object.create(null);\r\n\r\n this.$get = [function() {\r\n return {\r\n cacheKey: function(node, method, addClass, removeClass) {\r\n var parentNode = node.parentNode;\r\n var parentID = parentNode[KEY] || (parentNode[KEY] = ++parentCounter);\r\n var parts = [parentID, method, node.getAttribute('class')];\r\n if (addClass) {\r\n parts.push(addClass);\r\n }\r\n if (removeClass) {\r\n parts.push(removeClass);\r\n }\r\n return parts.join(' ');\r\n },\r\n\r\n containsCachedAnimationWithoutDuration: function(key) {\r\n var entry = cache[key];\r\n\r\n // nothing cached, so go ahead and animate\r\n // otherwise it should be a valid animation\r\n return (entry && !entry.isValid) || false;\r\n },\r\n\r\n flush: function() {\r\n cache = Object.create(null);\r\n },\r\n\r\n count: function(key) {\r\n var entry = cache[key];\r\n return entry ? entry.total : 0;\r\n },\r\n\r\n get: function(key) {\r\n var entry = cache[key];\r\n return entry && entry.value;\r\n },\r\n\r\n put: function(key, value, isValid) {\r\n if (!cache[key]) {\r\n cache[key] = { total: 1, value: value, isValid: isValid };\r\n } else {\r\n cache[key].total++;\r\n cache[key].value = value;\r\n }\r\n }\r\n };\r\n }];\r\n};\r\n\r\n/* exported $$AnimationProvider */\r\n\r\nvar $$AnimationProvider = ['$animateProvider', /** @this */ function($animateProvider) {\r\n var NG_ANIMATE_REF_ATTR = 'ng-animate-ref';\r\n\r\n var drivers = this.drivers = [];\r\n\r\n var RUNNER_STORAGE_KEY = '$$animationRunner';\r\n var PREPARE_CLASSES_KEY = '$$animatePrepareClasses';\r\n\r\n function setRunner(element, runner) {\r\n element.data(RUNNER_STORAGE_KEY, runner);\r\n }\r\n\r\n function removeRunner(element) {\r\n element.removeData(RUNNER_STORAGE_KEY);\r\n }\r\n\r\n function getRunner(element) {\r\n return element.data(RUNNER_STORAGE_KEY);\r\n }\r\n\r\n this.$get = ['$$jqLite', '$rootScope', '$injector', '$$AnimateRunner', '$$Map', '$$rAFScheduler', '$$animateCache',\r\n function($$jqLite, $rootScope, $injector, $$AnimateRunner, $$Map, $$rAFScheduler, $$animateCache) {\r\n\r\n var animationQueue = [];\r\n var applyAnimationClasses = applyAnimationClassesFactory($$jqLite);\r\n\r\n function sortAnimations(animations) {\r\n var tree = { children: [] };\r\n var i, lookup = new $$Map();\r\n\r\n // this is done first beforehand so that the map\r\n // is filled with a list of the elements that will be animated\r\n for (i = 0; i < animations.length; i++) {\r\n var animation = animations[i];\r\n lookup.set(animation.domNode, animations[i] = {\r\n domNode: animation.domNode,\r\n element: animation.element,\r\n fn: animation.fn,\r\n children: []\r\n });\r\n }\r\n\r\n for (i = 0; i < animations.length; i++) {\r\n processNode(animations[i]);\r\n }\r\n\r\n return flatten(tree);\r\n\r\n function processNode(entry) {\r\n if (entry.processed) return entry;\r\n entry.processed = true;\r\n\r\n var elementNode = entry.domNode;\r\n var parentNode = elementNode.parentNode;\r\n lookup.set(elementNode, entry);\r\n\r\n var parentEntry;\r\n while (parentNode) {\r\n parentEntry = lookup.get(parentNode);\r\n if (parentEntry) {\r\n if (!parentEntry.processed) {\r\n parentEntry = processNode(parentEntry);\r\n }\r\n break;\r\n }\r\n parentNode = parentNode.parentNode;\r\n }\r\n\r\n (parentEntry || tree).children.push(entry);\r\n return entry;\r\n }\r\n\r\n function flatten(tree) {\r\n var result = [];\r\n var queue = [];\r\n var i;\r\n\r\n for (i = 0; i < tree.children.length; i++) {\r\n queue.push(tree.children[i]);\r\n }\r\n\r\n var remainingLevelEntries = queue.length;\r\n var nextLevelEntries = 0;\r\n var row = [];\r\n\r\n for (i = 0; i < queue.length; i++) {\r\n var entry = queue[i];\r\n if (remainingLevelEntries <= 0) {\r\n remainingLevelEntries = nextLevelEntries;\r\n nextLevelEntries = 0;\r\n result.push(row);\r\n row = [];\r\n }\r\n row.push(entry);\r\n entry.children.forEach(function(childEntry) {\r\n nextLevelEntries++;\r\n queue.push(childEntry);\r\n });\r\n remainingLevelEntries--;\r\n }\r\n\r\n if (row.length) {\r\n result.push(row);\r\n }\r\n\r\n return result;\r\n }\r\n }\r\n\r\n // TODO(matsko): document the signature in a better way\r\n return function(element, event, options) {\r\n options = prepareAnimationOptions(options);\r\n var isStructural = ['enter', 'move', 'leave'].indexOf(event) >= 0;\r\n\r\n // there is no animation at the current moment, however\r\n // these runner methods will get later updated with the\r\n // methods leading into the driver's end/cancel methods\r\n // for now they just stop the animation from starting\r\n var runner = new $$AnimateRunner({\r\n end: function() { close(); },\r\n cancel: function() { close(true); }\r\n });\r\n\r\n if (!drivers.length) {\r\n close();\r\n return runner;\r\n }\r\n\r\n var classes = mergeClasses(element.attr('class'), mergeClasses(options.addClass, options.removeClass));\r\n var tempClasses = options.tempClasses;\r\n if (tempClasses) {\r\n classes += ' ' + tempClasses;\r\n options.tempClasses = null;\r\n }\r\n\r\n if (isStructural) {\r\n element.data(PREPARE_CLASSES_KEY, 'ng-' + event + PREPARE_CLASS_SUFFIX);\r\n }\r\n\r\n setRunner(element, runner);\r\n\r\n animationQueue.push({\r\n // this data is used by the postDigest code and passed into\r\n // the driver step function\r\n element: element,\r\n classes: classes,\r\n event: event,\r\n structural: isStructural,\r\n options: options,\r\n beforeStart: beforeStart,\r\n close: close\r\n });\r\n\r\n element.on('$destroy', handleDestroyedElement);\r\n\r\n // we only want there to be one function called within the post digest\r\n // block. This way we can group animations for all the animations that\r\n // were apart of the same postDigest flush call.\r\n if (animationQueue.length > 1) return runner;\r\n\r\n $rootScope.$$postDigest(function() {\r\n var animations = [];\r\n forEach(animationQueue, function(entry) {\r\n // the element was destroyed early on which removed the runner\r\n // form its storage. This means we can't animate this element\r\n // at all and it already has been closed due to destruction.\r\n if (getRunner(entry.element)) {\r\n animations.push(entry);\r\n } else {\r\n entry.close();\r\n }\r\n });\r\n\r\n // now any future animations will be in another postDigest\r\n animationQueue.length = 0;\r\n\r\n var groupedAnimations = groupAnimations(animations);\r\n var toBeSortedAnimations = [];\r\n\r\n forEach(groupedAnimations, function(animationEntry) {\r\n var element = animationEntry.from ? animationEntry.from.element : animationEntry.element;\r\n var extraClasses = options.addClass;\r\n\r\n extraClasses = (extraClasses ? (extraClasses + ' ') : '') + NG_ANIMATE_CLASSNAME;\r\n var cacheKey = $$animateCache.cacheKey(element[0], animationEntry.event, extraClasses, options.removeClass);\r\n\r\n toBeSortedAnimations.push({\r\n element: element,\r\n domNode: getDomNode(element),\r\n fn: function triggerAnimationStart() {\r\n var startAnimationFn, closeFn = animationEntry.close;\r\n\r\n // in the event that we've cached the animation status for this element\r\n // and it's in fact an invalid animation (something that has duration = 0)\r\n // then we should skip all the heavy work from here on\r\n if ($$animateCache.containsCachedAnimationWithoutDuration(cacheKey)) {\r\n closeFn();\r\n return;\r\n }\r\n\r\n // it's important that we apply the `ng-animate` CSS class and the\r\n // temporary classes before we do any driver invoking since these\r\n // CSS classes may be required for proper CSS detection.\r\n animationEntry.beforeStart();\r\n\r\n // in the event that the element was removed before the digest runs or\r\n // during the RAF sequencing then we should not trigger the animation.\r\n var targetElement = animationEntry.anchors\r\n ? (animationEntry.from.element || animationEntry.to.element)\r\n : animationEntry.element;\r\n\r\n if (getRunner(targetElement)) {\r\n var operation = invokeFirstDriver(animationEntry);\r\n if (operation) {\r\n startAnimationFn = operation.start;\r\n }\r\n }\r\n\r\n if (!startAnimationFn) {\r\n closeFn();\r\n } else {\r\n var animationRunner = startAnimationFn();\r\n animationRunner.done(function(status) {\r\n closeFn(!status);\r\n });\r\n updateAnimationRunners(animationEntry, animationRunner);\r\n }\r\n }\r\n });\r\n });\r\n\r\n // we need to sort each of the animations in order of parent to child\r\n // relationships. This ensures that the child classes are applied at the\r\n // right time.\r\n var finalAnimations = sortAnimations(toBeSortedAnimations);\r\n for (var i = 0; i < finalAnimations.length; i++) {\r\n var innerArray = finalAnimations[i];\r\n for (var j = 0; j < innerArray.length; j++) {\r\n var entry = innerArray[j];\r\n var element = entry.element;\r\n\r\n // the RAFScheduler code only uses functions\r\n finalAnimations[i][j] = entry.fn;\r\n\r\n // the first row of elements shouldn't have a prepare-class added to them\r\n // since the elements are at the top of the animation hierarchy and they\r\n // will be applied without a RAF having to pass...\r\n if (i === 0) {\r\n element.removeData(PREPARE_CLASSES_KEY);\r\n continue;\r\n }\r\n\r\n var prepareClassName = element.data(PREPARE_CLASSES_KEY);\r\n if (prepareClassName) {\r\n $$jqLite.addClass(element, prepareClassName);\r\n }\r\n }\r\n }\r\n\r\n $$rAFScheduler(finalAnimations);\r\n });\r\n\r\n return runner;\r\n\r\n // TODO(matsko): change to reference nodes\r\n function getAnchorNodes(node) {\r\n var SELECTOR = '[' + NG_ANIMATE_REF_ATTR + ']';\r\n var items = node.hasAttribute(NG_ANIMATE_REF_ATTR)\r\n ? [node]\r\n : node.querySelectorAll(SELECTOR);\r\n var anchors = [];\r\n forEach(items, function(node) {\r\n var attr = node.getAttribute(NG_ANIMATE_REF_ATTR);\r\n if (attr && attr.length) {\r\n anchors.push(node);\r\n }\r\n });\r\n return anchors;\r\n }\r\n\r\n function groupAnimations(animations) {\r\n var preparedAnimations = [];\r\n var refLookup = {};\r\n forEach(animations, function(animation, index) {\r\n var element = animation.element;\r\n var node = getDomNode(element);\r\n var event = animation.event;\r\n var enterOrMove = ['enter', 'move'].indexOf(event) >= 0;\r\n var anchorNodes = animation.structural ? getAnchorNodes(node) : [];\r\n\r\n if (anchorNodes.length) {\r\n var direction = enterOrMove ? 'to' : 'from';\r\n\r\n forEach(anchorNodes, function(anchor) {\r\n var key = anchor.getAttribute(NG_ANIMATE_REF_ATTR);\r\n refLookup[key] = refLookup[key] || {};\r\n refLookup[key][direction] = {\r\n animationID: index,\r\n element: jqLite(anchor)\r\n };\r\n });\r\n } else {\r\n preparedAnimations.push(animation);\r\n }\r\n });\r\n\r\n var usedIndicesLookup = {};\r\n var anchorGroups = {};\r\n forEach(refLookup, function(operations, key) {\r\n var from = operations.from;\r\n var to = operations.to;\r\n\r\n if (!from || !to) {\r\n // only one of these is set therefore we can't have an\r\n // anchor animation since all three pieces are required\r\n var index = from ? from.animationID : to.animationID;\r\n var indexKey = index.toString();\r\n if (!usedIndicesLookup[indexKey]) {\r\n usedIndicesLookup[indexKey] = true;\r\n preparedAnimations.push(animations[index]);\r\n }\r\n return;\r\n }\r\n\r\n var fromAnimation = animations[from.animationID];\r\n var toAnimation = animations[to.animationID];\r\n var lookupKey = from.animationID.toString();\r\n if (!anchorGroups[lookupKey]) {\r\n var group = anchorGroups[lookupKey] = {\r\n structural: true,\r\n beforeStart: function() {\r\n fromAnimation.beforeStart();\r\n toAnimation.beforeStart();\r\n },\r\n close: function() {\r\n fromAnimation.close();\r\n toAnimation.close();\r\n },\r\n classes: cssClassesIntersection(fromAnimation.classes, toAnimation.classes),\r\n from: fromAnimation,\r\n to: toAnimation,\r\n anchors: [] // TODO(matsko): change to reference nodes\r\n };\r\n\r\n // the anchor animations require that the from and to elements both have at least\r\n // one shared CSS class which effectively marries the two elements together to use\r\n // the same animation driver and to properly sequence the anchor animation.\r\n if (group.classes.length) {\r\n preparedAnimations.push(group);\r\n } else {\r\n preparedAnimations.push(fromAnimation);\r\n preparedAnimations.push(toAnimation);\r\n }\r\n }\r\n\r\n anchorGroups[lookupKey].anchors.push({\r\n 'out': from.element, 'in': to.element\r\n });\r\n });\r\n\r\n return preparedAnimations;\r\n }\r\n\r\n function cssClassesIntersection(a,b) {\r\n a = a.split(' ');\r\n b = b.split(' ');\r\n var matches = [];\r\n\r\n for (var i = 0; i < a.length; i++) {\r\n var aa = a[i];\r\n if (aa.substring(0,3) === 'ng-') continue;\r\n\r\n for (var j = 0; j < b.length; j++) {\r\n if (aa === b[j]) {\r\n matches.push(aa);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return matches.join(' ');\r\n }\r\n\r\n function invokeFirstDriver(animationDetails) {\r\n // we loop in reverse order since the more general drivers (like CSS and JS)\r\n // may attempt more elements, but custom drivers are more particular\r\n for (var i = drivers.length - 1; i >= 0; i--) {\r\n var driverName = drivers[i];\r\n var factory = $injector.get(driverName);\r\n var driver = factory(animationDetails);\r\n if (driver) {\r\n return driver;\r\n }\r\n }\r\n }\r\n\r\n function beforeStart() {\r\n tempClasses = (tempClasses ? (tempClasses + ' ') : '') + NG_ANIMATE_CLASSNAME;\r\n $$jqLite.addClass(element, tempClasses);\r\n\r\n var prepareClassName = element.data(PREPARE_CLASSES_KEY);\r\n if (prepareClassName) {\r\n $$jqLite.removeClass(element, prepareClassName);\r\n prepareClassName = null;\r\n }\r\n }\r\n\r\n function updateAnimationRunners(animation, newRunner) {\r\n if (animation.from && animation.to) {\r\n update(animation.from.element);\r\n update(animation.to.element);\r\n } else {\r\n update(animation.element);\r\n }\r\n\r\n function update(element) {\r\n var runner = getRunner(element);\r\n if (runner) runner.setHost(newRunner);\r\n }\r\n }\r\n\r\n function handleDestroyedElement() {\r\n var runner = getRunner(element);\r\n if (runner && (event !== 'leave' || !options.$$domOperationFired)) {\r\n runner.end();\r\n }\r\n }\r\n\r\n function close(rejected) {\r\n element.off('$destroy', handleDestroyedElement);\r\n removeRunner(element);\r\n\r\n applyAnimationClasses(element, options);\r\n applyAnimationStyles(element, options);\r\n options.domOperation();\r\n\r\n if (tempClasses) {\r\n $$jqLite.removeClass(element, tempClasses);\r\n }\r\n\r\n runner.complete(!rejected);\r\n }\r\n };\r\n }];\r\n}];\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ngAnimateSwap\r\n * @restrict A\r\n * @scope\r\n *\r\n * @description\r\n *\r\n * ngAnimateSwap is a animation-oriented directive that allows for the container to\r\n * be removed and entered in whenever the associated expression changes. A\r\n * common usecase for this directive is a rotating banner or slider component which\r\n * contains one image being present at a time. When the active image changes\r\n * then the old image will perform a `leave` animation and the new element\r\n * will be inserted via an `enter` animation.\r\n *\r\n * @animations\r\n * | Animation | Occurs |\r\n * |----------------------------------|--------------------------------------|\r\n * | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM |\r\n * | {@link ng.$animate#leave leave} | when the old element is removed from the DOM |\r\n *\r\n * @example\r\n * \r\n * \r\n *
\r\n *
\r\n * {{ number }}\r\n *
\r\n *
\r\n *
\r\n * \r\n * angular.module('ngAnimateSwapExample', ['ngAnimate'])\r\n * .controller('AppCtrl', ['$scope', '$interval', function($scope, $interval) {\r\n * $scope.number = 0;\r\n * $interval(function() {\r\n * $scope.number++;\r\n * }, 1000);\r\n *\r\n * var colors = ['red','blue','green','yellow','orange'];\r\n * $scope.colorClass = function(number) {\r\n * return colors[number % colors.length];\r\n * };\r\n * }]);\r\n * \r\n * \r\n * .container {\r\n * height:250px;\r\n * width:250px;\r\n * position:relative;\r\n * overflow:hidden;\r\n * border:2px solid black;\r\n * }\r\n * .container .cell {\r\n * font-size:150px;\r\n * text-align:center;\r\n * line-height:250px;\r\n * position:absolute;\r\n * top:0;\r\n * left:0;\r\n * right:0;\r\n * border-bottom:2px solid black;\r\n * }\r\n * .swap-animation.ng-enter, .swap-animation.ng-leave {\r\n * transition:0.5s linear all;\r\n * }\r\n * .swap-animation.ng-enter {\r\n * top:-250px;\r\n * }\r\n * .swap-animation.ng-enter-active {\r\n * top:0px;\r\n * }\r\n * .swap-animation.ng-leave {\r\n * top:0px;\r\n * }\r\n * .swap-animation.ng-leave-active {\r\n * top:250px;\r\n * }\r\n * .red { background:red; }\r\n * .green { background:green; }\r\n * .blue { background:blue; }\r\n * .yellow { background:yellow; }\r\n * .orange { background:orange; }\r\n * \r\n *
\r\n */\r\nvar ngAnimateSwapDirective = ['$animate', function($animate) {\r\n return {\r\n restrict: 'A',\r\n transclude: 'element',\r\n terminal: true,\r\n priority: 550, // We use 550 here to ensure that the directive is caught before others,\r\n // but after `ngIf` (at priority 600).\r\n link: function(scope, $element, attrs, ctrl, $transclude) {\r\n var previousElement, previousScope;\r\n scope.$watchCollection(attrs.ngAnimateSwap || attrs['for'], function(value) {\r\n if (previousElement) {\r\n $animate.leave(previousElement);\r\n }\r\n if (previousScope) {\r\n previousScope.$destroy();\r\n previousScope = null;\r\n }\r\n if (value || value === 0) {\r\n $transclude(function(clone, childScope) {\r\n previousElement = clone;\r\n previousScope = childScope;\r\n $animate.enter(clone, null, $element);\r\n });\r\n }\r\n });\r\n }\r\n };\r\n}];\r\n\r\n/**\r\n * @ngdoc module\r\n * @name ngAnimate\r\n * @description\r\n *\r\n * The `ngAnimate` module provides support for CSS-based animations (keyframes and transitions) as well as JavaScript-based animations via\r\n * callback hooks. Animations are not enabled by default, however, by including `ngAnimate` the animation hooks are enabled for an AngularJS app.\r\n *\r\n * ## Usage\r\n * Simply put, there are two ways to make use of animations when ngAnimate is used: by using **CSS** and **JavaScript**. The former works purely based\r\n * using CSS (by using matching CSS selectors/styles) and the latter triggers animations that are registered via `module.animation()`. For\r\n * both CSS and JS animations the sole requirement is to have a matching `CSS class` that exists both in the registered animation and within\r\n * the HTML element that the animation will be triggered on.\r\n *\r\n * ## Directive Support\r\n * The following directives are \"animation aware\":\r\n *\r\n * | Directive | Supported Animations |\r\n * |-------------------------------------------------------------------------------|---------------------------------------------------------------------------|\r\n * | {@link ng.directive:form#animations form / ngForm} | add and remove ({@link ng.directive:form#css-classes various classes}) |\r\n * | {@link ngAnimate.directive:ngAnimateSwap#animations ngAnimateSwap} | enter and leave |\r\n * | {@link ng.directive:ngClass#animations ngClass / {{class}​}} | add and remove |\r\n * | {@link ng.directive:ngClassEven#animations ngClassEven} | add and remove |\r\n * | {@link ng.directive:ngClassOdd#animations ngClassOdd} | add and remove |\r\n * | {@link ng.directive:ngHide#animations ngHide} | add and remove (the `ng-hide` class) |\r\n * | {@link ng.directive:ngIf#animations ngIf} | enter and leave |\r\n * | {@link ng.directive:ngInclude#animations ngInclude} | enter and leave |\r\n * | {@link module:ngMessages#animations ngMessage / ngMessageExp} | enter and leave |\r\n * | {@link module:ngMessages#animations ngMessages} | add and remove (the `ng-active`/`ng-inactive` classes) |\r\n * | {@link ng.directive:ngModel#animations ngModel} | add and remove ({@link ng.directive:ngModel#css-classes various classes}) |\r\n * | {@link ng.directive:ngRepeat#animations ngRepeat} | enter, leave, and move |\r\n * | {@link ng.directive:ngShow#animations ngShow} | add and remove (the `ng-hide` class) |\r\n * | {@link ng.directive:ngSwitch#animations ngSwitch} | enter and leave |\r\n * | {@link ngRoute.directive:ngView#animations ngView} | enter and leave |\r\n *\r\n * (More information can be found by visiting the documentation associated with each directive.)\r\n *\r\n * For a full breakdown of the steps involved during each animation event, refer to the\r\n * {@link ng.$animate `$animate` API docs}.\r\n *\r\n * ## CSS-based Animations\r\n *\r\n * CSS-based animations with ngAnimate are unique since they require no JavaScript code at all. By using a CSS class that we reference between our HTML\r\n * and CSS code we can create an animation that will be picked up by AngularJS when an underlying directive performs an operation.\r\n *\r\n * The example below shows how an `enter` animation can be made possible on an element using `ng-if`:\r\n *\r\n * ```html\r\n *
\r\n * Fade me in out\r\n *
\r\n * \r\n * \r\n * ```\r\n *\r\n * Notice the CSS class **fade**? We can now create the CSS transition code that references this class:\r\n *\r\n * ```css\r\n * /* The starting CSS styles for the enter animation */\r\n * .fade.ng-enter {\r\n * transition:0.5s linear all;\r\n * opacity:0;\r\n * }\r\n *\r\n * /* The finishing CSS styles for the enter animation */\r\n * .fade.ng-enter.ng-enter-active {\r\n * opacity:1;\r\n * }\r\n * ```\r\n *\r\n * The key thing to remember here is that, depending on the animation event (which each of the directives above trigger depending on what's going on) two\r\n * generated CSS classes will be applied to the element; in the example above we have `.ng-enter` and `.ng-enter-active`. For CSS transitions, the transition\r\n * code **must** be defined within the starting CSS class (in this case `.ng-enter`). The destination class is what the transition will animate towards.\r\n *\r\n * If for example we wanted to create animations for `leave` and `move` (ngRepeat triggers move) then we can do so using the same CSS naming conventions:\r\n *\r\n * ```css\r\n * /* now the element will fade out before it is removed from the DOM */\r\n * .fade.ng-leave {\r\n * transition:0.5s linear all;\r\n * opacity:1;\r\n * }\r\n * .fade.ng-leave.ng-leave-active {\r\n * opacity:0;\r\n * }\r\n * ```\r\n *\r\n * We can also make use of **CSS Keyframes** by referencing the keyframe animation within the starting CSS class:\r\n *\r\n * ```css\r\n * /* there is no need to define anything inside of the destination\r\n * CSS class since the keyframe will take charge of the animation */\r\n * .fade.ng-leave {\r\n * animation: my_fade_animation 0.5s linear;\r\n * -webkit-animation: my_fade_animation 0.5s linear;\r\n * }\r\n *\r\n * @keyframes my_fade_animation {\r\n * from { opacity:1; }\r\n * to { opacity:0; }\r\n * }\r\n *\r\n * @-webkit-keyframes my_fade_animation {\r\n * from { opacity:1; }\r\n * to { opacity:0; }\r\n * }\r\n * ```\r\n *\r\n * Feel free also mix transitions and keyframes together as well as any other CSS classes on the same element.\r\n *\r\n * ### CSS Class-based Animations\r\n *\r\n * Class-based animations (animations that are triggered via `ngClass`, `ngShow`, `ngHide` and some other directives) have a slightly different\r\n * naming convention. Class-based animations are basic enough that a standard transition or keyframe can be referenced on the class being added\r\n * and removed.\r\n *\r\n * For example if we wanted to do a CSS animation for `ngHide` then we place an animation on the `.ng-hide` CSS class:\r\n *\r\n * ```html\r\n *
\r\n * Show and hide me\r\n *
\r\n * \r\n *\r\n * \r\n * ```\r\n *\r\n * All that is going on here with ngShow/ngHide behind the scenes is the `.ng-hide` class is added/removed (when the hidden state is valid). Since\r\n * ngShow and ngHide are animation aware then we can match up a transition and ngAnimate handles the rest.\r\n *\r\n * In addition the addition and removal of the CSS class, ngAnimate also provides two helper methods that we can use to further decorate the animation\r\n * with CSS styles.\r\n *\r\n * ```html\r\n *
\r\n * Highlight this box\r\n *
\r\n * \r\n *\r\n * \r\n * ```\r\n *\r\n * We can also make use of CSS keyframes by placing them within the CSS classes.\r\n *\r\n *\r\n * ### CSS Staggering Animations\r\n * A Staggering animation is a collection of animations that are issued with a slight delay in between each successive operation resulting in a\r\n * curtain-like effect. The ngAnimate module (versions >=1.2) supports staggering animations and the stagger effect can be\r\n * performed by creating a **ng-EVENT-stagger** CSS class and attaching that class to the base CSS class used for\r\n * the animation. The style property expected within the stagger class can either be a **transition-delay** or an\r\n * **animation-delay** property (or both if your animation contains both transitions and keyframe animations).\r\n *\r\n * ```css\r\n * .my-animation.ng-enter {\r\n * /* standard transition code */\r\n * transition: 1s linear all;\r\n * opacity:0;\r\n * }\r\n * .my-animation.ng-enter-stagger {\r\n * /* this will have a 100ms delay between each successive leave animation */\r\n * transition-delay: 0.1s;\r\n *\r\n * /* As of 1.4.4, this must always be set: it signals ngAnimate\r\n * to not accidentally inherit a delay property from another CSS class */\r\n * transition-duration: 0s;\r\n *\r\n * /* if you are using animations instead of transitions you should configure as follows:\r\n * animation-delay: 0.1s;\r\n * animation-duration: 0s; */\r\n * }\r\n * .my-animation.ng-enter.ng-enter-active {\r\n * /* standard transition styles */\r\n * opacity:1;\r\n * }\r\n * ```\r\n *\r\n * Staggering animations work by default in ngRepeat (so long as the CSS class is defined). Outside of ngRepeat, to use staggering animations\r\n * on your own, they can be triggered by firing multiple calls to the same event on $animate. However, the restrictions surrounding this\r\n * are that each of the elements must have the same CSS className value as well as the same parent element. A stagger operation\r\n * will also be reset if one or more animation frames have passed since the multiple calls to `$animate` were fired.\r\n *\r\n * The following code will issue the **ng-leave-stagger** event on the element provided:\r\n *\r\n * ```js\r\n * var kids = parent.children();\r\n *\r\n * $animate.leave(kids[0]); //stagger index=0\r\n * $animate.leave(kids[1]); //stagger index=1\r\n * $animate.leave(kids[2]); //stagger index=2\r\n * $animate.leave(kids[3]); //stagger index=3\r\n * $animate.leave(kids[4]); //stagger index=4\r\n *\r\n * window.requestAnimationFrame(function() {\r\n * //stagger has reset itself\r\n * $animate.leave(kids[5]); //stagger index=0\r\n * $animate.leave(kids[6]); //stagger index=1\r\n *\r\n * $scope.$digest();\r\n * });\r\n * ```\r\n *\r\n * Stagger animations are currently only supported within CSS-defined animations.\r\n *\r\n * ### The `ng-animate` CSS class\r\n *\r\n * When ngAnimate is animating an element it will apply the `ng-animate` CSS class to the element for the duration of the animation.\r\n * This is a temporary CSS class and it will be removed once the animation is over (for both JavaScript and CSS-based animations).\r\n *\r\n * Therefore, animations can be applied to an element using this temporary class directly via CSS.\r\n *\r\n * ```css\r\n * .zipper.ng-animate {\r\n * transition:0.5s linear all;\r\n * }\r\n * .zipper.ng-enter {\r\n * opacity:0;\r\n * }\r\n * .zipper.ng-enter.ng-enter-active {\r\n * opacity:1;\r\n * }\r\n * .zipper.ng-leave {\r\n * opacity:1;\r\n * }\r\n * .zipper.ng-leave.ng-leave-active {\r\n * opacity:0;\r\n * }\r\n * ```\r\n *\r\n * (Note that the `ng-animate` CSS class is reserved and it cannot be applied on an element directly since ngAnimate will always remove\r\n * the CSS class once an animation has completed.)\r\n *\r\n *\r\n * ### The `ng-[event]-prepare` class\r\n *\r\n * This is a special class that can be used to prevent unwanted flickering / flash of content before\r\n * the actual animation starts. The class is added as soon as an animation is initialized, but removed\r\n * before the actual animation starts (after waiting for a $digest).\r\n * It is also only added for *structural* animations (`enter`, `move`, and `leave`).\r\n *\r\n * In practice, flickering can appear when nesting elements with structural animations such as `ngIf`\r\n * into elements that have class-based animations such as `ngClass`.\r\n *\r\n * ```html\r\n *
\r\n *
\r\n *
\r\n *
\r\n *
\r\n * ```\r\n *\r\n * It is possible that during the `enter` animation, the `.message` div will be briefly visible before it starts animating.\r\n * In that case, you can add styles to the CSS that make sure the element stays hidden before the animation starts:\r\n *\r\n * ```css\r\n * .message.ng-enter-prepare {\r\n * opacity: 0;\r\n * }\r\n * ```\r\n *\r\n * ### Animating between value changes\r\n *\r\n * Sometimes you need to animate between different expression states, whose values\r\n * don't necessary need to be known or referenced in CSS styles.\r\n * Unless possible with another {@link ngAnimate#directive-support \"animation aware\" directive},\r\n * that specific use case can always be covered with {@link ngAnimate.directive:ngAnimateSwap} as\r\n * can be seen in {@link ngAnimate.directive:ngAnimateSwap#examples this example}.\r\n *\r\n * Note that {@link ngAnimate.directive:ngAnimateSwap} is a *structural directive*, which means it\r\n * creates a new instance of the element (including any other/child directives it may have) and\r\n * links it to a new scope every time *swap* happens. In some cases this might not be desirable\r\n * (e.g. for performance reasons, or when you wish to retain internal state on the original\r\n * element instance).\r\n *\r\n * ## JavaScript-based Animations\r\n *\r\n * ngAnimate also allows for animations to be consumed by JavaScript code. The approach is similar to CSS-based animations (where there is a shared\r\n * CSS class that is referenced in our HTML code) but in addition we need to register the JavaScript animation on the module. By making use of the\r\n * `module.animation()` module function we can register the animation.\r\n *\r\n * Let's see an example of a enter/leave animation using `ngRepeat`:\r\n *\r\n * ```html\r\n *
\r\n * {{ item }}\r\n *
\r\n * ```\r\n *\r\n * See the **slide** CSS class? Let's use that class to define an animation that we'll structure in our module code by using `module.animation`:\r\n *\r\n * ```js\r\n * myModule.animation('.slide', [function() {\r\n * return {\r\n * // make note that other events (like addClass/removeClass)\r\n * // have different function input parameters\r\n * enter: function(element, doneFn) {\r\n * jQuery(element).fadeIn(1000, doneFn);\r\n *\r\n * // remember to call doneFn so that AngularJS\r\n * // knows that the animation has concluded\r\n * },\r\n *\r\n * move: function(element, doneFn) {\r\n * jQuery(element).fadeIn(1000, doneFn);\r\n * },\r\n *\r\n * leave: function(element, doneFn) {\r\n * jQuery(element).fadeOut(1000, doneFn);\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * The nice thing about JS-based animations is that we can inject other services and make use of advanced animation libraries such as\r\n * greensock.js and velocity.js.\r\n *\r\n * If our animation code class-based (meaning that something like `ngClass`, `ngHide` and `ngShow` triggers it) then we can still define\r\n * our animations inside of the same registered animation, however, the function input arguments are a bit different:\r\n *\r\n * ```html\r\n *
\r\n * this box is moody\r\n *
\r\n * \r\n * \r\n * \r\n * ```\r\n *\r\n * ```js\r\n * myModule.animation('.colorful', [function() {\r\n * return {\r\n * addClass: function(element, className, doneFn) {\r\n * // do some cool animation and call the doneFn\r\n * },\r\n * removeClass: function(element, className, doneFn) {\r\n * // do some cool animation and call the doneFn\r\n * },\r\n * setClass: function(element, addedClass, removedClass, doneFn) {\r\n * // do some cool animation and call the doneFn\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * ## CSS + JS Animations Together\r\n *\r\n * AngularJS 1.4 and higher has taken steps to make the amalgamation of CSS and JS animations more flexible. However, unlike earlier versions of AngularJS,\r\n * defining CSS and JS animations to work off of the same CSS class will not work anymore. Therefore the example below will only result in **JS animations taking\r\n * charge of the animation**:\r\n *\r\n * ```html\r\n *
\r\n * Slide in and out\r\n *
\r\n * ```\r\n *\r\n * ```js\r\n * myModule.animation('.slide', [function() {\r\n * return {\r\n * enter: function(element, doneFn) {\r\n * jQuery(element).slideIn(1000, doneFn);\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * ```css\r\n * .slide.ng-enter {\r\n * transition:0.5s linear all;\r\n * transform:translateY(-100px);\r\n * }\r\n * .slide.ng-enter.ng-enter-active {\r\n * transform:translateY(0);\r\n * }\r\n * ```\r\n *\r\n * Does this mean that CSS and JS animations cannot be used together? Do JS-based animations always have higher priority? We can make up for the\r\n * lack of CSS animations by using the `$animateCss` service to trigger our own tweaked-out, CSS-based animations directly from\r\n * our own JS-based animation code:\r\n *\r\n * ```js\r\n * myModule.animation('.slide', ['$animateCss', function($animateCss) {\r\n * return {\r\n * enter: function(element) {\r\n* // this will trigger `.slide.ng-enter` and `.slide.ng-enter-active`.\r\n * return $animateCss(element, {\r\n * event: 'enter',\r\n * structural: true\r\n * });\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * The nice thing here is that we can save bandwidth by sticking to our CSS-based animation code and we don't need to rely on a 3rd-party animation framework.\r\n *\r\n * The `$animateCss` service is very powerful since we can feed in all kinds of extra properties that will be evaluated and fed into a CSS transition or\r\n * keyframe animation. For example if we wanted to animate the height of an element while adding and removing classes then we can do so by providing that\r\n * data into `$animateCss` directly:\r\n *\r\n * ```js\r\n * myModule.animation('.slide', ['$animateCss', function($animateCss) {\r\n * return {\r\n * enter: function(element) {\r\n * return $animateCss(element, {\r\n * event: 'enter',\r\n * structural: true,\r\n * addClass: 'maroon-setting',\r\n * from: { height:0 },\r\n * to: { height: 200 }\r\n * });\r\n * }\r\n * }\r\n * }]);\r\n * ```\r\n *\r\n * Now we can fill in the rest via our transition CSS code:\r\n *\r\n * ```css\r\n * /* the transition tells ngAnimate to make the animation happen */\r\n * .slide.ng-enter { transition:0.5s linear all; }\r\n *\r\n * /* this extra CSS class will be absorbed into the transition\r\n * since the $animateCss code is adding the class */\r\n * .maroon-setting { background:red; }\r\n * ```\r\n *\r\n * And `$animateCss` will figure out the rest. Just make sure to have the `done()` callback fire the `doneFn` function to signal when the animation is over.\r\n *\r\n * To learn more about what's possible be sure to visit the {@link ngAnimate.$animateCss $animateCss service}.\r\n *\r\n * ## Animation Anchoring (via `ng-animate-ref`)\r\n *\r\n * ngAnimate in AngularJS 1.4 comes packed with the ability to cross-animate elements between\r\n * structural areas of an application (like views) by pairing up elements using an attribute\r\n * called `ng-animate-ref`.\r\n *\r\n * Let's say for example we have two views that are managed by `ng-view` and we want to show\r\n * that there is a relationship between two components situated in within these views. By using the\r\n * `ng-animate-ref` attribute we can identify that the two components are paired together and we\r\n * can then attach an animation, which is triggered when the view changes.\r\n *\r\n * Say for example we have the following template code:\r\n *\r\n * ```html\r\n * \r\n *
\r\n *
\r\n *\r\n * \r\n * \r\n * \r\n * \r\n *\r\n * \r\n * \r\n * ```\r\n *\r\n * Now, when the view changes (once the link is clicked), ngAnimate will examine the\r\n * HTML contents to see if there is a match reference between any components in the view\r\n * that is leaving and the view that is entering. It will scan both the view which is being\r\n * removed (leave) and inserted (enter) to see if there are any paired DOM elements that\r\n * contain a matching ref value.\r\n *\r\n * The two images match since they share the same ref value. ngAnimate will now create a\r\n * transport element (which is a clone of the first image element) and it will then attempt\r\n * to animate to the position of the second image element in the next view. For the animation to\r\n * work a special CSS class called `ng-anchor` will be added to the transported element.\r\n *\r\n * We can now attach a transition onto the `.banner.ng-anchor` CSS class and then\r\n * ngAnimate will handle the entire transition for us as well as the addition and removal of\r\n * any changes of CSS classes between the elements:\r\n *\r\n * ```css\r\n * .banner.ng-anchor {\r\n * /* this animation will last for 1 second since there are\r\n * two phases to the animation (an `in` and an `out` phase) */\r\n * transition:0.5s linear all;\r\n * }\r\n * ```\r\n *\r\n * We also **must** include animations for the views that are being entered and removed\r\n * (otherwise anchoring wouldn't be possible since the new view would be inserted right away).\r\n *\r\n * ```css\r\n * .view-animation.ng-enter, .view-animation.ng-leave {\r\n * transition:0.5s linear all;\r\n * position:fixed;\r\n * left:0;\r\n * top:0;\r\n * width:100%;\r\n * }\r\n * .view-animation.ng-enter {\r\n * transform:translateX(100%);\r\n * }\r\n * .view-animation.ng-leave,\r\n * .view-animation.ng-enter.ng-enter-active {\r\n * transform:translateX(0%);\r\n * }\r\n * .view-animation.ng-leave.ng-leave-active {\r\n * transform:translateX(-100%);\r\n * }\r\n * ```\r\n *\r\n * Now we can jump back to the anchor animation. When the animation happens, there are two stages that occur:\r\n * an `out` and an `in` stage. The `out` stage happens first and that is when the element is animated away\r\n * from its origin. Once that animation is over then the `in` stage occurs which animates the\r\n * element to its destination. The reason why there are two animations is to give enough time\r\n * for the enter animation on the new element to be ready.\r\n *\r\n * The example above sets up a transition for both the in and out phases, but we can also target the out or\r\n * in phases directly via `ng-anchor-out` and `ng-anchor-in`.\r\n *\r\n * ```css\r\n * .banner.ng-anchor-out {\r\n * transition: 0.5s linear all;\r\n *\r\n * /* the scale will be applied during the out animation,\r\n * but will be animated away when the in animation runs */\r\n * transform: scale(1.2);\r\n * }\r\n *\r\n * .banner.ng-anchor-in {\r\n * transition: 1s linear all;\r\n * }\r\n * ```\r\n *\r\n *\r\n *\r\n *\r\n * ### Anchoring Demo\r\n *\r\n \r\n \r\n Home\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n angular.module('anchoringExample', ['ngAnimate', 'ngRoute'])\r\n .config(['$routeProvider', function($routeProvider) {\r\n $routeProvider.when('/', {\r\n templateUrl: 'home.html',\r\n controller: 'HomeController as home'\r\n });\r\n $routeProvider.when('/profile/:id', {\r\n templateUrl: 'profile.html',\r\n controller: 'ProfileController as profile'\r\n });\r\n }])\r\n .run(['$rootScope', function($rootScope) {\r\n $rootScope.records = [\r\n { id: 1, title: 'Miss Beulah Roob' },\r\n { id: 2, title: 'Trent Morissette' },\r\n { id: 3, title: 'Miss Ava Pouros' },\r\n { id: 4, title: 'Rod Pouros' },\r\n { id: 5, title: 'Abdul Rice' },\r\n { id: 6, title: 'Laurie Rutherford Sr.' },\r\n { id: 7, title: 'Nakia McLaughlin' },\r\n { id: 8, title: 'Jordon Blanda DVM' },\r\n { id: 9, title: 'Rhoda Hand' },\r\n { id: 10, title: 'Alexandrea Sauer' }\r\n ];\r\n }])\r\n .controller('HomeController', [function() {\r\n //empty\r\n }])\r\n .controller('ProfileController', ['$rootScope', '$routeParams',\r\n function ProfileController($rootScope, $routeParams) {\r\n var index = parseInt($routeParams.id, 10);\r\n var record = $rootScope.records[index - 1];\r\n\r\n this.title = record.title;\r\n this.id = record.id;\r\n }]);\r\n \r\n \r\n

Welcome to the home page

\r\n

Please click on an element

\r\n \r\n {{ record.title }}\r\n \r\n
\r\n \r\n
\r\n {{ profile.title }}\r\n
\r\n
\r\n \r\n .record {\r\n display:block;\r\n font-size:20px;\r\n }\r\n .profile {\r\n background:black;\r\n color:white;\r\n font-size:100px;\r\n }\r\n .view-container {\r\n position:relative;\r\n }\r\n .view-container > .view.ng-animate {\r\n position:absolute;\r\n top:0;\r\n left:0;\r\n width:100%;\r\n min-height:500px;\r\n }\r\n .view.ng-enter, .view.ng-leave,\r\n .record.ng-anchor {\r\n transition:0.5s linear all;\r\n }\r\n .view.ng-enter {\r\n transform:translateX(100%);\r\n }\r\n .view.ng-enter.ng-enter-active, .view.ng-leave {\r\n transform:translateX(0%);\r\n }\r\n .view.ng-leave.ng-leave-active {\r\n transform:translateX(-100%);\r\n }\r\n .record.ng-anchor-out {\r\n background:red;\r\n }\r\n \r\n
\r\n *\r\n * ### How is the element transported?\r\n *\r\n * When an anchor animation occurs, ngAnimate will clone the starting element and position it exactly where the starting\r\n * element is located on screen via absolute positioning. The cloned element will be placed inside of the root element\r\n * of the application (where ng-app was defined) and all of the CSS classes of the starting element will be applied. The\r\n * element will then animate into the `out` and `in` animations and will eventually reach the coordinates and match\r\n * the dimensions of the destination element. During the entire animation a CSS class of `.ng-animate-shim` will be applied\r\n * to both the starting and destination elements in order to hide them from being visible (the CSS styling for the class\r\n * is: `visibility:hidden`). Once the anchor reaches its destination then it will be removed and the destination element\r\n * will become visible since the shim class will be removed.\r\n *\r\n * ### How is the morphing handled?\r\n *\r\n * CSS Anchoring relies on transitions and keyframes and the internal code is intelligent enough to figure out\r\n * what CSS classes differ between the starting element and the destination element. These different CSS classes\r\n * will be added/removed on the anchor element and a transition will be applied (the transition that is provided\r\n * in the anchor class). Long story short, ngAnimate will figure out what classes to add and remove which will\r\n * make the transition of the element as smooth and automatic as possible. Be sure to use simple CSS classes that\r\n * do not rely on DOM nesting structure so that the anchor element appears the same as the starting element (since\r\n * the cloned element is placed inside of root element which is likely close to the body element).\r\n *\r\n * Note that if the root element is on the `` element then the cloned node will be placed inside of body.\r\n *\r\n *\r\n * ## Using $animate in your directive code\r\n *\r\n * So far we've explored how to feed in animations into an AngularJS application, but how do we trigger animations within our own directives in our application?\r\n * By injecting the `$animate` service into our directive code, we can trigger structural and class-based hooks which can then be consumed by animations. Let's\r\n * imagine we have a greeting box that shows and hides itself when the data changes\r\n *\r\n * ```html\r\n * Hi there\r\n * ```\r\n *\r\n * ```js\r\n * ngModule.directive('greetingBox', ['$animate', function($animate) {\r\n * return function(scope, element, attrs) {\r\n * attrs.$observe('active', function(value) {\r\n * value ? $animate.addClass(element, 'on') : $animate.removeClass(element, 'on');\r\n * });\r\n * });\r\n * }]);\r\n * ```\r\n *\r\n * Now the `on` CSS class is added and removed on the greeting box component. Now if we add a CSS class on top of the greeting box element\r\n * in our HTML code then we can trigger a CSS or JS animation to happen.\r\n *\r\n * ```css\r\n * /* normally we would create a CSS class to reference on the element */\r\n * greeting-box.on { transition:0.5s linear all; background:green; color:white; }\r\n * ```\r\n *\r\n * The `$animate` service contains a variety of other methods like `enter`, `leave`, `animate` and `setClass`. To learn more about what's\r\n * possible be sure to visit the {@link ng.$animate $animate service API page}.\r\n *\r\n *\r\n * ## Callbacks and Promises\r\n *\r\n * When `$animate` is called it returns a promise that can be used to capture when the animation has ended. Therefore if we were to trigger\r\n * an animation (within our directive code) then we can continue performing directive and scope related activities after the animation has\r\n * ended by chaining onto the returned promise that animation method returns.\r\n *\r\n * ```js\r\n * // somewhere within the depths of the directive\r\n * $animate.enter(element, parent).then(function() {\r\n * //the animation has completed\r\n * });\r\n * ```\r\n *\r\n * (Note that earlier versions of AngularJS prior to v1.4 required the promise code to be wrapped using `$scope.$apply(...)`. This is not the case\r\n * anymore.)\r\n *\r\n * In addition to the animation promise, we can also make use of animation-related callbacks within our directives and controller code by registering\r\n * an event listener using the `$animate` service. Let's say for example that an animation was triggered on our view\r\n * routing controller to hook into that:\r\n *\r\n * ```js\r\n * ngModule.controller('HomePageController', ['$animate', function($animate) {\r\n * $animate.on('enter', ngViewElement, function(element) {\r\n * // the animation for this route has completed\r\n * }]);\r\n * }])\r\n * ```\r\n *\r\n * (Note that you will need to trigger a digest within the callback to get AngularJS to notice any scope-related changes.)\r\n */\r\n\r\nvar copy;\r\nvar extend;\r\nvar forEach;\r\nvar isArray;\r\nvar isDefined;\r\nvar isElement;\r\nvar isFunction;\r\nvar isObject;\r\nvar isString;\r\nvar isUndefined;\r\nvar jqLite;\r\nvar noop;\r\n\r\n/**\r\n * @ngdoc service\r\n * @name $animate\r\n * @kind object\r\n *\r\n * @description\r\n * The ngAnimate `$animate` service documentation is the same for the core `$animate` service.\r\n *\r\n * Click here {@link ng.$animate to learn more about animations with `$animate`}.\r\n */\r\nangular.module('ngAnimate', [], function initAngularHelpers() {\r\n // Access helpers from AngularJS core.\r\n // Do it inside a `config` block to ensure `window.angular` is available.\r\n noop = angular.noop;\r\n copy = angular.copy;\r\n extend = angular.extend;\r\n jqLite = angular.element;\r\n forEach = angular.forEach;\r\n isArray = angular.isArray;\r\n isString = angular.isString;\r\n isObject = angular.isObject;\r\n isUndefined = angular.isUndefined;\r\n isDefined = angular.isDefined;\r\n isFunction = angular.isFunction;\r\n isElement = angular.isElement;\r\n})\r\n .info({ angularVersion: '1.7.6' })\r\n .directive('ngAnimateSwap', ngAnimateSwapDirective)\r\n\r\n .directive('ngAnimateChildren', $$AnimateChildrenDirective)\r\n .factory('$$rAFScheduler', $$rAFSchedulerFactory)\r\n\r\n .provider('$$animateQueue', $$AnimateQueueProvider)\r\n .provider('$$animateCache', $$AnimateCacheProvider)\r\n .provider('$$animation', $$AnimationProvider)\r\n\r\n .provider('$animateCss', $AnimateCssProvider)\r\n .provider('$$animateCssDriver', $$AnimateCssDriverProvider)\r\n\r\n .provider('$$animateJs', $$AnimateJsProvider)\r\n .provider('$$animateJsDriver', $$AnimateJsDriverProvider);\r\n\r\n\r\n})(window, window.angular);\r\n","/**\r\n * @license AngularJS v1.7.6\r\n * (c) 2010-2018 Google, Inc. http://angularjs.org\r\n * License: MIT\r\n */\r\n(function(window, angular) {'use strict';\r\n\r\n/* global shallowCopy: true */\r\n\r\n/**\r\n * Creates a shallow copy of an object, an array or a primitive.\r\n *\r\n * Assumes that there are no proto properties for objects.\r\n */\r\nfunction shallowCopy(src, dst) {\r\n if (isArray(src)) {\r\n dst = dst || [];\r\n\r\n for (var i = 0, ii = src.length; i < ii; i++) {\r\n dst[i] = src[i];\r\n }\r\n } else if (isObject(src)) {\r\n dst = dst || {};\r\n\r\n for (var key in src) {\r\n if (!(key.charAt(0) === '$' && key.charAt(1) === '$')) {\r\n dst[key] = src[key];\r\n }\r\n }\r\n }\r\n\r\n return dst || src;\r\n}\r\n\r\n/* global routeToRegExp: true */\r\n\r\n/**\r\n * @param {string} path - The path to parse. (It is assumed to have query and hash stripped off.)\r\n * @param {Object} opts - Options.\r\n * @return {Object} - An object containing an array of path parameter names (`keys`) and a regular\r\n * expression (`regexp`) that can be used to identify a matching URL and extract the path\r\n * parameter values.\r\n *\r\n * @description\r\n * Parses the given path, extracting path parameter names and a regular expression to match URLs.\r\n *\r\n * Originally inspired by `pathRexp` in `visionmedia/express/lib/utils.js`.\r\n */\r\nfunction routeToRegExp(path, opts) {\r\n var keys = [];\r\n\r\n var pattern = path\r\n .replace(/([().])/g, '\\\\$1')\r\n .replace(/(\\/)?:(\\w+)(\\*\\?|[?*])?/g, function(_, slash, key, option) {\r\n var optional = option === '?' || option === '*?';\r\n var star = option === '*' || option === '*?';\r\n keys.push({name: key, optional: optional});\r\n slash = slash || '';\r\n return (\r\n (optional ? '(?:' + slash : slash + '(?:') +\r\n (star ? '(.+?)' : '([^/]+)') +\r\n (optional ? '?)?' : ')')\r\n );\r\n })\r\n .replace(/([/$*])/g, '\\\\$1');\r\n\r\n if (opts.ignoreTrailingSlashes) {\r\n pattern = pattern.replace(/\\/+$/, '') + '/*';\r\n }\r\n\r\n return {\r\n keys: keys,\r\n regexp: new RegExp(\r\n '^' + pattern + '(?:[?#]|$)',\r\n opts.caseInsensitiveMatch ? 'i' : ''\r\n )\r\n };\r\n}\r\n\r\n/* global routeToRegExp: false */\r\n/* global shallowCopy: false */\r\n\r\n// `isArray` and `isObject` are necessary for `shallowCopy()` (included via `src/shallowCopy.js`).\r\n// They are initialized inside the `$RouteProvider`, to ensure `window.angular` is available.\r\nvar isArray;\r\nvar isObject;\r\nvar isDefined;\r\nvar noop;\r\n\r\n/**\r\n * @ngdoc module\r\n * @name ngRoute\r\n * @description\r\n *\r\n * The `ngRoute` module provides routing and deeplinking services and directives for AngularJS apps.\r\n *\r\n * ## Example\r\n * See {@link ngRoute.$route#examples $route} for an example of configuring and using `ngRoute`.\r\n *\r\n */\r\n/* global -ngRouteModule */\r\nvar ngRouteModule = angular.\r\n module('ngRoute', []).\r\n info({ angularVersion: '1.7.6' }).\r\n provider('$route', $RouteProvider).\r\n // Ensure `$route` will be instantiated in time to capture the initial `$locationChangeSuccess`\r\n // event (unless explicitly disabled). This is necessary in case `ngView` is included in an\r\n // asynchronously loaded template.\r\n run(instantiateRoute);\r\nvar $routeMinErr = angular.$$minErr('ngRoute');\r\nvar isEagerInstantiationEnabled;\r\n\r\n\r\n/**\r\n * @ngdoc provider\r\n * @name $routeProvider\r\n * @this\r\n *\r\n * @description\r\n *\r\n * Used for configuring routes.\r\n *\r\n * ## Example\r\n * See {@link ngRoute.$route#examples $route} for an example of configuring and using `ngRoute`.\r\n *\r\n * ## Dependencies\r\n * Requires the {@link ngRoute `ngRoute`} module to be installed.\r\n */\r\nfunction $RouteProvider() {\r\n isArray = angular.isArray;\r\n isObject = angular.isObject;\r\n isDefined = angular.isDefined;\r\n noop = angular.noop;\r\n\r\n function inherit(parent, extra) {\r\n return angular.extend(Object.create(parent), extra);\r\n }\r\n\r\n var routes = {};\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $routeProvider#when\r\n *\r\n * @param {string} path Route path (matched against `$location.path`). If `$location.path`\r\n * contains redundant trailing slash or is missing one, the route will still match and the\r\n * `$location.path` will be updated to add or drop the trailing slash to exactly match the\r\n * route definition.\r\n *\r\n * * `path` can contain named groups starting with a colon: e.g. `:name`. All characters up\r\n * to the next slash are matched and stored in `$routeParams` under the given `name`\r\n * when the route matches.\r\n * * `path` can contain named groups starting with a colon and ending with a star:\r\n * e.g.`:name*`. All characters are eagerly stored in `$routeParams` under the given `name`\r\n * when the route matches.\r\n * * `path` can contain optional named groups with a question mark: e.g.`:name?`.\r\n *\r\n * For example, routes like `/color/:color/largecode/:largecode*\\/edit` will match\r\n * `/color/brown/largecode/code/with/slashes/edit` and extract:\r\n *\r\n * * `color: brown`\r\n * * `largecode: code/with/slashes`.\r\n *\r\n *\r\n * @param {Object} route Mapping information to be assigned to `$route.current` on route\r\n * match.\r\n *\r\n * Object properties:\r\n *\r\n * - `controller` – `{(string|Function)=}` – Controller fn that should be associated with\r\n * newly created scope or the name of a {@link angular.Module#controller registered\r\n * controller} if passed as a string.\r\n * - `controllerAs` – `{string=}` – An identifier name for a reference to the controller.\r\n * If present, the controller will be published to scope under the `controllerAs` name.\r\n * - `template` – `{(string|Function)=}` – html template as a string or a function that\r\n * returns an html template as a string which should be used by {@link\r\n * ngRoute.directive:ngView ngView} or {@link ng.directive:ngInclude ngInclude} directives.\r\n * This property takes precedence over `templateUrl`.\r\n *\r\n * If `template` is a function, it will be called with the following parameters:\r\n *\r\n * - `{Array.}` - route parameters extracted from the current\r\n * `$location.path()` by applying the current route\r\n *\r\n * One of `template` or `templateUrl` is required.\r\n *\r\n * - `templateUrl` – `{(string|Function)=}` – path or function that returns a path to an html\r\n * template that should be used by {@link ngRoute.directive:ngView ngView}.\r\n *\r\n * If `templateUrl` is a function, it will be called with the following parameters:\r\n *\r\n * - `{Array.}` - route parameters extracted from the current\r\n * `$location.path()` by applying the current route\r\n *\r\n * One of `templateUrl` or `template` is required.\r\n *\r\n * - `resolve` - `{Object.=}` - An optional map of dependencies which should\r\n * be injected into the controller. If any of these dependencies are promises, the router\r\n * will wait for them all to be resolved or one to be rejected before the controller is\r\n * instantiated.\r\n * If all the promises are resolved successfully, the values of the resolved promises are\r\n * injected and {@link ngRoute.$route#$routeChangeSuccess $routeChangeSuccess} event is\r\n * fired. If any of the promises are rejected the\r\n * {@link ngRoute.$route#$routeChangeError $routeChangeError} event is fired.\r\n * For easier access to the resolved dependencies from the template, the `resolve` map will\r\n * be available on the scope of the route, under `$resolve` (by default) or a custom name\r\n * specified by the `resolveAs` property (see below). This can be particularly useful, when\r\n * working with {@link angular.Module#component components} as route templates.
\r\n *
\r\n * **Note:** If your scope already contains a property with this name, it will be hidden\r\n * or overwritten. Make sure, you specify an appropriate name for this property, that\r\n * does not collide with other properties on the scope.\r\n *
\r\n * The map object is:\r\n *\r\n * - `key` – `{string}`: a name of a dependency to be injected into the controller.\r\n * - `factory` - `{string|Function}`: If `string` then it is an alias for a service.\r\n * Otherwise if function, then it is {@link auto.$injector#invoke injected}\r\n * and the return value is treated as the dependency. If the result is a promise, it is\r\n * resolved before its value is injected into the controller. Be aware that\r\n * `ngRoute.$routeParams` will still refer to the previous route within these resolve\r\n * functions. Use `$route.current.params` to access the new route parameters, instead.\r\n *\r\n * - `resolveAs` - `{string=}` - The name under which the `resolve` map will be available on\r\n * the scope of the route. If omitted, defaults to `$resolve`.\r\n *\r\n * - `redirectTo` – `{(string|Function)=}` – value to update\r\n * {@link ng.$location $location} path with and trigger route redirection.\r\n *\r\n * If `redirectTo` is a function, it will be called with the following parameters:\r\n *\r\n * - `{Object.}` - route parameters extracted from the current\r\n * `$location.path()` by applying the current route templateUrl.\r\n * - `{string}` - current `$location.path()`\r\n * - `{Object}` - current `$location.search()`\r\n *\r\n * The custom `redirectTo` function is expected to return a string which will be used\r\n * to update `$location.url()`. If the function throws an error, no further processing will\r\n * take place and the {@link ngRoute.$route#$routeChangeError $routeChangeError} event will\r\n * be fired.\r\n *\r\n * Routes that specify `redirectTo` will not have their controllers, template functions\r\n * or resolves called, the `$location` will be changed to the redirect url and route\r\n * processing will stop. The exception to this is if the `redirectTo` is a function that\r\n * returns `undefined`. In this case the route transition occurs as though there was no\r\n * redirection.\r\n *\r\n * - `resolveRedirectTo` – `{Function=}` – a function that will (eventually) return the value\r\n * to update {@link ng.$location $location} URL with and trigger route redirection. In\r\n * contrast to `redirectTo`, dependencies can be injected into `resolveRedirectTo` and the\r\n * return value can be either a string or a promise that will be resolved to a string.\r\n *\r\n * Similar to `redirectTo`, if the return value is `undefined` (or a promise that gets\r\n * resolved to `undefined`), no redirection takes place and the route transition occurs as\r\n * though there was no redirection.\r\n *\r\n * If the function throws an error or the returned promise gets rejected, no further\r\n * processing will take place and the\r\n * {@link ngRoute.$route#$routeChangeError $routeChangeError} event will be fired.\r\n *\r\n * `redirectTo` takes precedence over `resolveRedirectTo`, so specifying both on the same\r\n * route definition, will cause the latter to be ignored.\r\n *\r\n * - `[reloadOnUrl=true]` - `{boolean=}` - reload route when any part of the URL changes\r\n * (including the path) even if the new URL maps to the same route.\r\n *\r\n * If the option is set to `false` and the URL in the browser changes, but the new URL maps\r\n * to the same route, then a `$routeUpdate` event is broadcasted on the root scope (without\r\n * reloading the route).\r\n *\r\n * - `[reloadOnSearch=true]` - `{boolean=}` - reload route when only `$location.search()`\r\n * or `$location.hash()` changes.\r\n *\r\n * If the option is set to `false` and the URL in the browser changes, then a `$routeUpdate`\r\n * event is broadcasted on the root scope (without reloading the route).\r\n *\r\n *
\r\n * **Note:** This option has no effect if `reloadOnUrl` is set to `false`.\r\n *
\r\n *\r\n * - `[caseInsensitiveMatch=false]` - `{boolean=}` - match routes without being case sensitive\r\n *\r\n * If the option is set to `true`, then the particular route can be matched without being\r\n * case sensitive\r\n *\r\n * @returns {Object} self\r\n *\r\n * @description\r\n * Adds a new route definition to the `$route` service.\r\n */\r\n this.when = function(path, route) {\r\n //copy original route object to preserve params inherited from proto chain\r\n var routeCopy = shallowCopy(route);\r\n if (angular.isUndefined(routeCopy.reloadOnUrl)) {\r\n routeCopy.reloadOnUrl = true;\r\n }\r\n if (angular.isUndefined(routeCopy.reloadOnSearch)) {\r\n routeCopy.reloadOnSearch = true;\r\n }\r\n if (angular.isUndefined(routeCopy.caseInsensitiveMatch)) {\r\n routeCopy.caseInsensitiveMatch = this.caseInsensitiveMatch;\r\n }\r\n routes[path] = angular.extend(\r\n routeCopy,\r\n {originalPath: path},\r\n path && routeToRegExp(path, routeCopy)\r\n );\r\n\r\n // create redirection for trailing slashes\r\n if (path) {\r\n var redirectPath = (path[path.length - 1] === '/')\r\n ? path.substr(0, path.length - 1)\r\n : path + '/';\r\n\r\n routes[redirectPath] = angular.extend(\r\n {originalPath: path, redirectTo: path},\r\n routeToRegExp(redirectPath, routeCopy)\r\n );\r\n }\r\n\r\n return this;\r\n };\r\n\r\n /**\r\n * @ngdoc property\r\n * @name $routeProvider#caseInsensitiveMatch\r\n * @description\r\n *\r\n * A boolean property indicating if routes defined\r\n * using this provider should be matched using a case insensitive\r\n * algorithm. Defaults to `false`.\r\n */\r\n this.caseInsensitiveMatch = false;\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $routeProvider#otherwise\r\n *\r\n * @description\r\n * Sets route definition that will be used on route change when no other route definition\r\n * is matched.\r\n *\r\n * @param {Object|string} params Mapping information to be assigned to `$route.current`.\r\n * If called with a string, the value maps to `redirectTo`.\r\n * @returns {Object} self\r\n */\r\n this.otherwise = function(params) {\r\n if (typeof params === 'string') {\r\n params = {redirectTo: params};\r\n }\r\n this.when(null, params);\r\n return this;\r\n };\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $routeProvider#eagerInstantiationEnabled\r\n * @kind function\r\n *\r\n * @description\r\n * Call this method as a setter to enable/disable eager instantiation of the\r\n * {@link ngRoute.$route $route} service upon application bootstrap. You can also call it as a\r\n * getter (i.e. without any arguments) to get the current value of the\r\n * `eagerInstantiationEnabled` flag.\r\n *\r\n * Instantiating `$route` early is necessary for capturing the initial\r\n * {@link ng.$location#$locationChangeStart $locationChangeStart} event and navigating to the\r\n * appropriate route. Usually, `$route` is instantiated in time by the\r\n * {@link ngRoute.ngView ngView} directive. Yet, in cases where `ngView` is included in an\r\n * asynchronously loaded template (e.g. in another directive's template), the directive factory\r\n * might not be called soon enough for `$route` to be instantiated _before_ the initial\r\n * `$locationChangeSuccess` event is fired. Eager instantiation ensures that `$route` is always\r\n * instantiated in time, regardless of when `ngView` will be loaded.\r\n *\r\n * The default value is true.\r\n *\r\n * **Note**:
\r\n * You may want to disable the default behavior when unit-testing modules that depend on\r\n * `ngRoute`, in order to avoid an unexpected request for the default route's template.\r\n *\r\n * @param {boolean=} enabled - If provided, update the internal `eagerInstantiationEnabled` flag.\r\n *\r\n * @returns {*} The current value of the `eagerInstantiationEnabled` flag if used as a getter or\r\n * itself (for chaining) if used as a setter.\r\n */\r\n isEagerInstantiationEnabled = true;\r\n this.eagerInstantiationEnabled = function eagerInstantiationEnabled(enabled) {\r\n if (isDefined(enabled)) {\r\n isEagerInstantiationEnabled = enabled;\r\n return this;\r\n }\r\n\r\n return isEagerInstantiationEnabled;\r\n };\r\n\r\n\r\n this.$get = ['$rootScope',\r\n '$location',\r\n '$routeParams',\r\n '$q',\r\n '$injector',\r\n '$templateRequest',\r\n '$sce',\r\n '$browser',\r\n function($rootScope, $location, $routeParams, $q, $injector, $templateRequest, $sce, $browser) {\r\n\r\n /**\r\n * @ngdoc service\r\n * @name $route\r\n * @requires $location\r\n * @requires $routeParams\r\n *\r\n * @property {Object} current Reference to the current route definition.\r\n * The route definition contains:\r\n *\r\n * - `controller`: The controller constructor as defined in the route definition.\r\n * - `locals`: A map of locals which is used by {@link ng.$controller $controller} service for\r\n * controller instantiation. The `locals` contain\r\n * the resolved values of the `resolve` map. Additionally the `locals` also contain:\r\n *\r\n * - `$scope` - The current route scope.\r\n * - `$template` - The current route template HTML.\r\n *\r\n * The `locals` will be assigned to the route scope's `$resolve` property. You can override\r\n * the property name, using `resolveAs` in the route definition. See\r\n * {@link ngRoute.$routeProvider $routeProvider} for more info.\r\n *\r\n * @property {Object} routes Object with all route configuration Objects as its properties.\r\n *\r\n * @description\r\n * `$route` is used for deep-linking URLs to controllers and views (HTML partials).\r\n * It watches `$location.url()` and tries to map the path to an existing route definition.\r\n *\r\n * Requires the {@link ngRoute `ngRoute`} module to be installed.\r\n *\r\n * You can define routes through {@link ngRoute.$routeProvider $routeProvider}'s API.\r\n *\r\n * The `$route` service is typically used in conjunction with the\r\n * {@link ngRoute.directive:ngView `ngView`} directive and the\r\n * {@link ngRoute.$routeParams `$routeParams`} service.\r\n *\r\n * @example\r\n * This example shows how changing the URL hash causes the `$route` to match a route against the\r\n * URL, and the `ngView` pulls in the partial.\r\n *\r\n * \r\n * \r\n *
\r\n * Choose:\r\n * Moby |\r\n * Moby: Ch1 |\r\n * Gatsby |\r\n * Gatsby: Ch4 |\r\n * Scarlet Letter
\r\n *\r\n *
\r\n *\r\n *
\r\n *\r\n *
$location.path() = {{$location.path()}}
\r\n *
$route.current.templateUrl = {{$route.current.templateUrl}}
\r\n *
$route.current.params = {{$route.current.params}}
\r\n *
$route.current.scope.name = {{$route.current.scope.name}}
\r\n *
$routeParams = {{$routeParams}}
\r\n *
\r\n *
\r\n *\r\n * \r\n * controller: {{name}}
\r\n * Book Id: {{params.bookId}}
\r\n *
\r\n *\r\n * \r\n * controller: {{name}}
\r\n * Book Id: {{params.bookId}}
\r\n * Chapter Id: {{params.chapterId}}\r\n *
\r\n *\r\n * \r\n * angular.module('ngRouteExample', ['ngRoute'])\r\n *\r\n * .controller('MainController', function($scope, $route, $routeParams, $location) {\r\n * $scope.$route = $route;\r\n * $scope.$location = $location;\r\n * $scope.$routeParams = $routeParams;\r\n * })\r\n *\r\n * .controller('BookController', function($scope, $routeParams) {\r\n * $scope.name = 'BookController';\r\n * $scope.params = $routeParams;\r\n * })\r\n *\r\n * .controller('ChapterController', function($scope, $routeParams) {\r\n * $scope.name = 'ChapterController';\r\n * $scope.params = $routeParams;\r\n * })\r\n *\r\n * .config(function($routeProvider, $locationProvider) {\r\n * $routeProvider\r\n * .when('/Book/:bookId', {\r\n * templateUrl: 'book.html',\r\n * controller: 'BookController',\r\n * resolve: {\r\n * // I will cause a 1 second delay\r\n * delay: function($q, $timeout) {\r\n * var delay = $q.defer();\r\n * $timeout(delay.resolve, 1000);\r\n * return delay.promise;\r\n * }\r\n * }\r\n * })\r\n * .when('/Book/:bookId/ch/:chapterId', {\r\n * templateUrl: 'chapter.html',\r\n * controller: 'ChapterController'\r\n * });\r\n *\r\n * // configure html5 to get links working on jsfiddle\r\n * $locationProvider.html5Mode(true);\r\n * });\r\n *\r\n * \r\n *\r\n * \r\n * it('should load and compile correct template', function() {\r\n * element(by.linkText('Moby: Ch1')).click();\r\n * var content = element(by.css('[ng-view]')).getText();\r\n * expect(content).toMatch(/controller: ChapterController/);\r\n * expect(content).toMatch(/Book Id: Moby/);\r\n * expect(content).toMatch(/Chapter Id: 1/);\r\n *\r\n * element(by.partialLinkText('Scarlet')).click();\r\n *\r\n * content = element(by.css('[ng-view]')).getText();\r\n * expect(content).toMatch(/controller: BookController/);\r\n * expect(content).toMatch(/Book Id: Scarlet/);\r\n * });\r\n * \r\n *
\r\n */\r\n\r\n /**\r\n * @ngdoc event\r\n * @name $route#$routeChangeStart\r\n * @eventType broadcast on root scope\r\n * @description\r\n * Broadcasted before a route change. At this point the route services starts\r\n * resolving all of the dependencies needed for the route change to occur.\r\n * Typically this involves fetching the view template as well as any dependencies\r\n * defined in `resolve` route property. Once all of the dependencies are resolved\r\n * `$routeChangeSuccess` is fired.\r\n *\r\n * The route change (and the `$location` change that triggered it) can be prevented\r\n * by calling `preventDefault` method of the event. See {@link ng.$rootScope.Scope#$on}\r\n * for more details about event object.\r\n *\r\n * @param {Object} angularEvent Synthetic event object.\r\n * @param {Route} next Future route information.\r\n * @param {Route} current Current route information.\r\n */\r\n\r\n /**\r\n * @ngdoc event\r\n * @name $route#$routeChangeSuccess\r\n * @eventType broadcast on root scope\r\n * @description\r\n * Broadcasted after a route change has happened successfully.\r\n * The `resolve` dependencies are now available in the `current.locals` property.\r\n *\r\n * {@link ngRoute.directive:ngView ngView} listens for the directive\r\n * to instantiate the controller and render the view.\r\n *\r\n * @param {Object} angularEvent Synthetic event object.\r\n * @param {Route} current Current route information.\r\n * @param {Route|Undefined} previous Previous route information, or undefined if current is\r\n * first route entered.\r\n */\r\n\r\n /**\r\n * @ngdoc event\r\n * @name $route#$routeChangeError\r\n * @eventType broadcast on root scope\r\n * @description\r\n * Broadcasted if a redirection function fails or any redirection or resolve promises are\r\n * rejected.\r\n *\r\n * @param {Object} angularEvent Synthetic event object\r\n * @param {Route} current Current route information.\r\n * @param {Route} previous Previous route information.\r\n * @param {Route} rejection The thrown error or the rejection reason of the promise. Usually\r\n * the rejection reason is the error that caused the promise to get rejected.\r\n */\r\n\r\n /**\r\n * @ngdoc event\r\n * @name $route#$routeUpdate\r\n * @eventType broadcast on root scope\r\n * @description\r\n * Broadcasted if the same instance of a route (including template, controller instance,\r\n * resolved dependencies, etc.) is being reused. This can happen if either `reloadOnSearch` or\r\n * `reloadOnUrl` has been set to `false`.\r\n *\r\n * @param {Object} angularEvent Synthetic event object\r\n * @param {Route} current Current/previous route information.\r\n */\r\n\r\n var forceReload = false,\r\n preparedRoute,\r\n preparedRouteIsUpdateOnly,\r\n $route = {\r\n routes: routes,\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $route#reload\r\n *\r\n * @description\r\n * Causes `$route` service to reload the current route even if\r\n * {@link ng.$location $location} hasn't changed.\r\n *\r\n * As a result of that, {@link ngRoute.directive:ngView ngView}\r\n * creates new scope and reinstantiates the controller.\r\n */\r\n reload: function() {\r\n forceReload = true;\r\n\r\n var fakeLocationEvent = {\r\n defaultPrevented: false,\r\n preventDefault: function fakePreventDefault() {\r\n this.defaultPrevented = true;\r\n forceReload = false;\r\n }\r\n };\r\n\r\n $rootScope.$evalAsync(function() {\r\n prepareRoute(fakeLocationEvent);\r\n if (!fakeLocationEvent.defaultPrevented) commitRoute();\r\n });\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $route#updateParams\r\n *\r\n * @description\r\n * Causes `$route` service to update the current URL, replacing\r\n * current route parameters with those specified in `newParams`.\r\n * Provided property names that match the route's path segment\r\n * definitions will be interpolated into the location's path, while\r\n * remaining properties will be treated as query params.\r\n *\r\n * @param {!Object} newParams mapping of URL parameter names to values\r\n */\r\n updateParams: function(newParams) {\r\n if (this.current && this.current.$$route) {\r\n newParams = angular.extend({}, this.current.params, newParams);\r\n $location.path(interpolate(this.current.$$route.originalPath, newParams));\r\n // interpolate modifies newParams, only query params are left\r\n $location.search(newParams);\r\n } else {\r\n throw $routeMinErr('norout', 'Tried updating route with no current route');\r\n }\r\n }\r\n };\r\n\r\n $rootScope.$on('$locationChangeStart', prepareRoute);\r\n $rootScope.$on('$locationChangeSuccess', commitRoute);\r\n\r\n return $route;\r\n\r\n /////////////////////////////////////////////////////\r\n\r\n /**\r\n * @param on {string} current url\r\n * @param route {Object} route regexp to match the url against\r\n * @return {?Object}\r\n *\r\n * @description\r\n * Check if the route matches the current url.\r\n *\r\n * Inspired by match in\r\n * visionmedia/express/lib/router/router.js.\r\n */\r\n function switchRouteMatcher(on, route) {\r\n var keys = route.keys,\r\n params = {};\r\n\r\n if (!route.regexp) return null;\r\n\r\n var m = route.regexp.exec(on);\r\n if (!m) return null;\r\n\r\n for (var i = 1, len = m.length; i < len; ++i) {\r\n var key = keys[i - 1];\r\n\r\n var val = m[i];\r\n\r\n if (key && val) {\r\n params[key.name] = val;\r\n }\r\n }\r\n return params;\r\n }\r\n\r\n function prepareRoute($locationEvent) {\r\n var lastRoute = $route.current;\r\n\r\n preparedRoute = parseRoute();\r\n preparedRouteIsUpdateOnly = isNavigationUpdateOnly(preparedRoute, lastRoute);\r\n\r\n if (!preparedRouteIsUpdateOnly && (lastRoute || preparedRoute)) {\r\n if ($rootScope.$broadcast('$routeChangeStart', preparedRoute, lastRoute).defaultPrevented) {\r\n if ($locationEvent) {\r\n $locationEvent.preventDefault();\r\n }\r\n }\r\n }\r\n }\r\n\r\n function commitRoute() {\r\n var lastRoute = $route.current;\r\n var nextRoute = preparedRoute;\r\n\r\n if (preparedRouteIsUpdateOnly) {\r\n lastRoute.params = nextRoute.params;\r\n angular.copy(lastRoute.params, $routeParams);\r\n $rootScope.$broadcast('$routeUpdate', lastRoute);\r\n } else if (nextRoute || lastRoute) {\r\n forceReload = false;\r\n $route.current = nextRoute;\r\n\r\n var nextRoutePromise = $q.resolve(nextRoute);\r\n\r\n $browser.$$incOutstandingRequestCount('$route');\r\n\r\n nextRoutePromise.\r\n then(getRedirectionData).\r\n then(handlePossibleRedirection).\r\n then(function(keepProcessingRoute) {\r\n return keepProcessingRoute && nextRoutePromise.\r\n then(resolveLocals).\r\n then(function(locals) {\r\n // after route change\r\n if (nextRoute === $route.current) {\r\n if (nextRoute) {\r\n nextRoute.locals = locals;\r\n angular.copy(nextRoute.params, $routeParams);\r\n }\r\n $rootScope.$broadcast('$routeChangeSuccess', nextRoute, lastRoute);\r\n }\r\n });\r\n }).catch(function(error) {\r\n if (nextRoute === $route.current) {\r\n $rootScope.$broadcast('$routeChangeError', nextRoute, lastRoute, error);\r\n }\r\n }).finally(function() {\r\n // Because `commitRoute()` is called from a `$rootScope.$evalAsync` block (see\r\n // `$locationWatch`), this `$$completeOutstandingRequest()` call will not cause\r\n // `outstandingRequestCount` to hit zero. This is important in case we are redirecting\r\n // to a new route which also requires some asynchronous work.\r\n\r\n $browser.$$completeOutstandingRequest(noop, '$route');\r\n });\r\n }\r\n }\r\n\r\n function getRedirectionData(route) {\r\n var data = {\r\n route: route,\r\n hasRedirection: false\r\n };\r\n\r\n if (route) {\r\n if (route.redirectTo) {\r\n if (angular.isString(route.redirectTo)) {\r\n data.path = interpolate(route.redirectTo, route.params);\r\n data.search = route.params;\r\n data.hasRedirection = true;\r\n } else {\r\n var oldPath = $location.path();\r\n var oldSearch = $location.search();\r\n var newUrl = route.redirectTo(route.pathParams, oldPath, oldSearch);\r\n\r\n if (angular.isDefined(newUrl)) {\r\n data.url = newUrl;\r\n data.hasRedirection = true;\r\n }\r\n }\r\n } else if (route.resolveRedirectTo) {\r\n return $q.\r\n resolve($injector.invoke(route.resolveRedirectTo)).\r\n then(function(newUrl) {\r\n if (angular.isDefined(newUrl)) {\r\n data.url = newUrl;\r\n data.hasRedirection = true;\r\n }\r\n\r\n return data;\r\n });\r\n }\r\n }\r\n\r\n return data;\r\n }\r\n\r\n function handlePossibleRedirection(data) {\r\n var keepProcessingRoute = true;\r\n\r\n if (data.route !== $route.current) {\r\n keepProcessingRoute = false;\r\n } else if (data.hasRedirection) {\r\n var oldUrl = $location.url();\r\n var newUrl = data.url;\r\n\r\n if (newUrl) {\r\n $location.\r\n url(newUrl).\r\n replace();\r\n } else {\r\n newUrl = $location.\r\n path(data.path).\r\n search(data.search).\r\n replace().\r\n url();\r\n }\r\n\r\n if (newUrl !== oldUrl) {\r\n // Exit out and don't process current next value,\r\n // wait for next location change from redirect\r\n keepProcessingRoute = false;\r\n }\r\n }\r\n\r\n return keepProcessingRoute;\r\n }\r\n\r\n function resolveLocals(route) {\r\n if (route) {\r\n var locals = angular.extend({}, route.resolve);\r\n angular.forEach(locals, function(value, key) {\r\n locals[key] = angular.isString(value) ?\r\n $injector.get(value) :\r\n $injector.invoke(value, null, null, key);\r\n });\r\n var template = getTemplateFor(route);\r\n if (angular.isDefined(template)) {\r\n locals['$template'] = template;\r\n }\r\n return $q.all(locals);\r\n }\r\n }\r\n\r\n function getTemplateFor(route) {\r\n var template, templateUrl;\r\n if (angular.isDefined(template = route.template)) {\r\n if (angular.isFunction(template)) {\r\n template = template(route.params);\r\n }\r\n } else if (angular.isDefined(templateUrl = route.templateUrl)) {\r\n if (angular.isFunction(templateUrl)) {\r\n templateUrl = templateUrl(route.params);\r\n }\r\n if (angular.isDefined(templateUrl)) {\r\n route.loadedTemplateUrl = $sce.valueOf(templateUrl);\r\n template = $templateRequest(templateUrl);\r\n }\r\n }\r\n return template;\r\n }\r\n\r\n /**\r\n * @returns {Object} the current active route, by matching it against the URL\r\n */\r\n function parseRoute() {\r\n // Match a route\r\n var params, match;\r\n angular.forEach(routes, function(route, path) {\r\n if (!match && (params = switchRouteMatcher($location.path(), route))) {\r\n match = inherit(route, {\r\n params: angular.extend({}, $location.search(), params),\r\n pathParams: params});\r\n match.$$route = route;\r\n }\r\n });\r\n // No route matched; fallback to \"otherwise\" route\r\n return match || routes[null] && inherit(routes[null], {params: {}, pathParams:{}});\r\n }\r\n\r\n /**\r\n * @param {Object} newRoute - The new route configuration (as returned by `parseRoute()`).\r\n * @param {Object} oldRoute - The previous route configuration (as returned by `parseRoute()`).\r\n * @returns {boolean} Whether this is an \"update-only\" navigation, i.e. the URL maps to the same\r\n * route and it can be reused (based on the config and the type of change).\r\n */\r\n function isNavigationUpdateOnly(newRoute, oldRoute) {\r\n // IF this is not a forced reload\r\n return !forceReload\r\n // AND both `newRoute`/`oldRoute` are defined\r\n && newRoute && oldRoute\r\n // AND they map to the same Route Definition Object\r\n && (newRoute.$$route === oldRoute.$$route)\r\n // AND `reloadOnUrl` is disabled\r\n && (!newRoute.reloadOnUrl\r\n // OR `reloadOnSearch` is disabled\r\n || (!newRoute.reloadOnSearch\r\n // AND both routes have the same path params\r\n && angular.equals(newRoute.pathParams, oldRoute.pathParams)\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * @returns {string} interpolation of the redirect path with the parameters\r\n */\r\n function interpolate(string, params) {\r\n var result = [];\r\n angular.forEach((string || '').split(':'), function(segment, i) {\r\n if (i === 0) {\r\n result.push(segment);\r\n } else {\r\n var segmentMatch = segment.match(/(\\w+)(?:[?*])?(.*)/);\r\n var key = segmentMatch[1];\r\n result.push(params[key]);\r\n result.push(segmentMatch[2] || '');\r\n delete params[key];\r\n }\r\n });\r\n return result.join('');\r\n }\r\n }];\r\n}\r\n\r\ninstantiateRoute.$inject = ['$injector'];\r\nfunction instantiateRoute($injector) {\r\n if (isEagerInstantiationEnabled) {\r\n // Instantiate `$route`\r\n $injector.get('$route');\r\n }\r\n}\r\n\r\nngRouteModule.provider('$routeParams', $RouteParamsProvider);\r\n\r\n\r\n/**\r\n * @ngdoc service\r\n * @name $routeParams\r\n * @requires $route\r\n * @this\r\n *\r\n * @description\r\n * The `$routeParams` service allows you to retrieve the current set of route parameters.\r\n *\r\n * Requires the {@link ngRoute `ngRoute`} module to be installed.\r\n *\r\n * The route parameters are a combination of {@link ng.$location `$location`}'s\r\n * {@link ng.$location#search `search()`} and {@link ng.$location#path `path()`}.\r\n * The `path` parameters are extracted when the {@link ngRoute.$route `$route`} path is matched.\r\n *\r\n * In case of parameter name collision, `path` params take precedence over `search` params.\r\n *\r\n * The service guarantees that the identity of the `$routeParams` object will remain unchanged\r\n * (but its properties will likely change) even when a route change occurs.\r\n *\r\n * Note that the `$routeParams` are only updated *after* a route change completes successfully.\r\n * This means that you cannot rely on `$routeParams` being correct in route resolve functions.\r\n * Instead you can use `$route.current.params` to access the new route's parameters.\r\n *\r\n * @example\r\n * ```js\r\n * // Given:\r\n * // URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby\r\n * // Route: /Chapter/:chapterId/Section/:sectionId\r\n * //\r\n * // Then\r\n * $routeParams ==> {chapterId:'1', sectionId:'2', search:'moby'}\r\n * ```\r\n */\r\nfunction $RouteParamsProvider() {\r\n this.$get = function() { return {}; };\r\n}\r\n\r\nngRouteModule.directive('ngView', ngViewFactory);\r\nngRouteModule.directive('ngView', ngViewFillContentFactory);\r\n\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name ngView\r\n * @restrict ECA\r\n *\r\n * @description\r\n * `ngView` is a directive that complements the {@link ngRoute.$route $route} service by\r\n * including the rendered template of the current route into the main layout (`index.html`) file.\r\n * Every time the current route changes, the included view changes with it according to the\r\n * configuration of the `$route` service.\r\n *\r\n * Requires the {@link ngRoute `ngRoute`} module to be installed.\r\n *\r\n * @animations\r\n * | Animation | Occurs |\r\n * |----------------------------------|-------------------------------------|\r\n * | {@link ng.$animate#enter enter} | when the new element is inserted to the DOM |\r\n * | {@link ng.$animate#leave leave} | when the old element is removed from to the DOM |\r\n *\r\n * The enter and leave animation occur concurrently.\r\n *\r\n * @scope\r\n * @priority 400\r\n * @param {string=} onload Expression to evaluate whenever the view updates.\r\n *\r\n * @param {string=} autoscroll Whether `ngView` should call {@link ng.$anchorScroll\r\n * $anchorScroll} to scroll the viewport after the view is updated.\r\n *\r\n * - If the attribute is not set, disable scrolling.\r\n * - If the attribute is set without value, enable scrolling.\r\n * - Otherwise enable scrolling only if the `autoscroll` attribute value evaluated\r\n * as an expression yields a truthy value.\r\n * @example\r\n \r\n \r\n
\r\n Choose:\r\n Moby |\r\n Moby: Ch1 |\r\n Gatsby |\r\n Gatsby: Ch4 |\r\n Scarlet Letter
\r\n\r\n
\r\n
\r\n
\r\n
\r\n\r\n
$location.path() = {{main.$location.path()}}
\r\n
$route.current.templateUrl = {{main.$route.current.templateUrl}}
\r\n
$route.current.params = {{main.$route.current.params}}
\r\n
$routeParams = {{main.$routeParams}}
\r\n
\r\n
\r\n\r\n \r\n
\r\n controller: {{book.name}}
\r\n Book Id: {{book.params.bookId}}
\r\n
\r\n
\r\n\r\n \r\n
\r\n controller: {{chapter.name}}
\r\n Book Id: {{chapter.params.bookId}}
\r\n Chapter Id: {{chapter.params.chapterId}}\r\n
\r\n
\r\n\r\n \r\n .view-animate-container {\r\n position:relative;\r\n height:100px!important;\r\n background:white;\r\n border:1px solid black;\r\n height:40px;\r\n overflow:hidden;\r\n }\r\n\r\n .view-animate {\r\n padding:10px;\r\n }\r\n\r\n .view-animate.ng-enter, .view-animate.ng-leave {\r\n transition:all cubic-bezier(0.250, 0.460, 0.450, 0.940) 1.5s;\r\n\r\n display:block;\r\n width:100%;\r\n border-left:1px solid black;\r\n\r\n position:absolute;\r\n top:0;\r\n left:0;\r\n right:0;\r\n bottom:0;\r\n padding:10px;\r\n }\r\n\r\n .view-animate.ng-enter {\r\n left:100%;\r\n }\r\n .view-animate.ng-enter.ng-enter-active {\r\n left:0;\r\n }\r\n .view-animate.ng-leave.ng-leave-active {\r\n left:-100%;\r\n }\r\n \r\n\r\n \r\n angular.module('ngViewExample', ['ngRoute', 'ngAnimate'])\r\n .config(['$routeProvider', '$locationProvider',\r\n function($routeProvider, $locationProvider) {\r\n $routeProvider\r\n .when('/Book/:bookId', {\r\n templateUrl: 'book.html',\r\n controller: 'BookCtrl',\r\n controllerAs: 'book'\r\n })\r\n .when('/Book/:bookId/ch/:chapterId', {\r\n templateUrl: 'chapter.html',\r\n controller: 'ChapterCtrl',\r\n controllerAs: 'chapter'\r\n });\r\n\r\n $locationProvider.html5Mode(true);\r\n }])\r\n .controller('MainCtrl', ['$route', '$routeParams', '$location',\r\n function MainCtrl($route, $routeParams, $location) {\r\n this.$route = $route;\r\n this.$location = $location;\r\n this.$routeParams = $routeParams;\r\n }])\r\n .controller('BookCtrl', ['$routeParams', function BookCtrl($routeParams) {\r\n this.name = 'BookCtrl';\r\n this.params = $routeParams;\r\n }])\r\n .controller('ChapterCtrl', ['$routeParams', function ChapterCtrl($routeParams) {\r\n this.name = 'ChapterCtrl';\r\n this.params = $routeParams;\r\n }]);\r\n\r\n \r\n\r\n \r\n it('should load and compile correct template', function() {\r\n element(by.linkText('Moby: Ch1')).click();\r\n var content = element(by.css('[ng-view]')).getText();\r\n expect(content).toMatch(/controller: ChapterCtrl/);\r\n expect(content).toMatch(/Book Id: Moby/);\r\n expect(content).toMatch(/Chapter Id: 1/);\r\n\r\n element(by.partialLinkText('Scarlet')).click();\r\n\r\n content = element(by.css('[ng-view]')).getText();\r\n expect(content).toMatch(/controller: BookCtrl/);\r\n expect(content).toMatch(/Book Id: Scarlet/);\r\n });\r\n \r\n
\r\n */\r\n\r\n\r\n/**\r\n * @ngdoc event\r\n * @name ngView#$viewContentLoaded\r\n * @eventType emit on the current ngView scope\r\n * @description\r\n * Emitted every time the ngView content is reloaded.\r\n */\r\nngViewFactory.$inject = ['$route', '$anchorScroll', '$animate'];\r\nfunction ngViewFactory($route, $anchorScroll, $animate) {\r\n return {\r\n restrict: 'ECA',\r\n terminal: true,\r\n priority: 400,\r\n transclude: 'element',\r\n link: function(scope, $element, attr, ctrl, $transclude) {\r\n var currentScope,\r\n currentElement,\r\n previousLeaveAnimation,\r\n autoScrollExp = attr.autoscroll,\r\n onloadExp = attr.onload || '';\r\n\r\n scope.$on('$routeChangeSuccess', update);\r\n update();\r\n\r\n function cleanupLastView() {\r\n if (previousLeaveAnimation) {\r\n $animate.cancel(previousLeaveAnimation);\r\n previousLeaveAnimation = null;\r\n }\r\n\r\n if (currentScope) {\r\n currentScope.$destroy();\r\n currentScope = null;\r\n }\r\n if (currentElement) {\r\n previousLeaveAnimation = $animate.leave(currentElement);\r\n previousLeaveAnimation.done(function(response) {\r\n if (response !== false) previousLeaveAnimation = null;\r\n });\r\n currentElement = null;\r\n }\r\n }\r\n\r\n function update() {\r\n var locals = $route.current && $route.current.locals,\r\n template = locals && locals.$template;\r\n\r\n if (angular.isDefined(template)) {\r\n var newScope = scope.$new();\r\n var current = $route.current;\r\n\r\n // Note: This will also link all children of ng-view that were contained in the original\r\n // html. If that content contains controllers, ... they could pollute/change the scope.\r\n // However, using ng-view on an element with additional content does not make sense...\r\n // Note: We can't remove them in the cloneAttchFn of $transclude as that\r\n // function is called before linking the content, which would apply child\r\n // directives to non existing elements.\r\n var clone = $transclude(newScope, function(clone) {\r\n $animate.enter(clone, null, currentElement || $element).done(function onNgViewEnter(response) {\r\n if (response !== false && angular.isDefined(autoScrollExp)\r\n && (!autoScrollExp || scope.$eval(autoScrollExp))) {\r\n $anchorScroll();\r\n }\r\n });\r\n cleanupLastView();\r\n });\r\n\r\n currentElement = clone;\r\n currentScope = current.scope = newScope;\r\n currentScope.$emit('$viewContentLoaded');\r\n currentScope.$eval(onloadExp);\r\n } else {\r\n cleanupLastView();\r\n }\r\n }\r\n }\r\n };\r\n}\r\n\r\n// This directive is called during the $transclude call of the first `ngView` directive.\r\n// It will replace and compile the content of the element with the loaded template.\r\n// We need this directive so that the element content is already filled when\r\n// the link function of another directive on the same element as ngView\r\n// is called.\r\nngViewFillContentFactory.$inject = ['$compile', '$controller', '$route'];\r\nfunction ngViewFillContentFactory($compile, $controller, $route) {\r\n return {\r\n restrict: 'ECA',\r\n priority: -400,\r\n link: function(scope, $element) {\r\n var current = $route.current,\r\n locals = current.locals;\r\n\r\n $element.html(locals.$template);\r\n\r\n var link = $compile($element.contents());\r\n\r\n if (current.controller) {\r\n locals.$scope = scope;\r\n var controller = $controller(current.controller, locals);\r\n if (current.controllerAs) {\r\n scope[current.controllerAs] = controller;\r\n }\r\n $element.data('$ngControllerController', controller);\r\n $element.children().data('$ngControllerController', controller);\r\n }\r\n scope[current.resolveAs || '$resolve'] = locals;\r\n\r\n link(scope);\r\n }\r\n };\r\n}\r\n\r\n\r\n})(window, window.angular);\r\n","(function () {\nangular.module(\"gulp-routes\", [])\n.constant(\"Routes\", [\n {\n \"Name\": \"CategoryMessage\",\n \"Controller\": \"CategoryMessage\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"{categoryName}-cmsg-{categoryId:int}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-cmsg-{categoryId:int}\"\n }\n },\n {\n \"Name\": \"CategoryMessagePage\",\n \"Controller\": \"CategoryMessage\",\n \"Action\": \"ShowPage\",\n \"fr\": {\n \"URL\": \"{categoryName}-cmsg-{categoryId:int}-{page:int}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-cmsg-{categoryId:int}-{page:int}\"\n }\n },\n {\n \"Name\": \"Product\",\n \"Controller\": \"Product\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}\"\n }\n },\n {\n \"Name\": \"Product1Attribute\",\n \"Controller\": \"Product\",\n \"Action\": \"Show1Attribute\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}\"\n }\n },\n {\n \"Name\": \"Product2Attributes\",\n \"Controller\": \"Product\",\n \"Action\": \"Show2Attributes\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}\"\n }\n },\n {\n \"Name\": \"Product3Attributes\",\n \"Controller\": \"Product\",\n \"Action\": \"Show3Attributes\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}\"\n }\n },\n {\n \"Name\": \"ProductWithElasticSearch\",\n \"Controller\": \"Product\",\n \"Action\": \"ShowWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/es/{query}\"\n }\n },\n {\n \"Name\": \"Product1AttributeWithElasticSearch\",\n \"Controller\": \"Product\",\n \"Action\": \"Show1AttributeWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/es/{query}\"\n }\n },\n {\n \"Name\": \"Product2AttributesWithElasticSearch\",\n \"Controller\": \"Product\",\n \"Action\": \"Show2AttributesWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/es/{query}\"\n }\n },\n {\n \"Name\": \"Product3AttributesWithElasticSearch\",\n \"Controller\": \"Product\",\n \"Action\": \"Show3AttributesWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{productName}-p-{productId:int}/{keyAttribute1}/{keyAttribute2}/{keyAttribute3}/es/{query}\"\n }\n },\n {\n \"Name\": \"Cart\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier\"\n },\n \"en\": {\n \"URL\": \"cart\"\n }\n },\n {\n \"Name\": \"CartOutdated\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier-expire\"\n },\n \"en\": {\n \"URL\": \"outdated-cart\"\n }\n },\n {\n \"Name\": \"CartIdentification\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier/identification\"\n },\n \"en\": {\n \"URL\": \"cart/authentification\"\n }\n },\n {\n \"Name\": \"CartShipping\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier/livraison\"\n },\n \"en\": {\n \"URL\": \"cart/delivery\"\n }\n },\n {\n \"Name\": \"CartPayment\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier/paiement\"\n },\n \"en\": {\n \"URL\": \"cart/payment\"\n }\n },\n {\n \"Name\": \"CartValidation\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"panier/validation\"\n },\n \"en\": {\n \"URL\": \"cart/validation\"\n }\n },\n {\n \"Name\": \"CartOnePageCheckout\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"commander\"\n },\n \"en\": {\n \"URL\": \"checkout\"\n }\n },\n {\n \"Name\": \"CartOnePageCheckoutPayment\",\n \"Controller\": \"Cart\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"retour-paiement\"\n },\n \"en\": {\n \"URL\": \"back-to-payment\"\n }\n },\n {\n \"Name\": \"CartRecognition\",\n \"Controller\": \"Cart\",\n \"Action\": \"Recognition\",\n \"fr\": {\n \"URL\": \"reconnaissance-panier/{idFolder:int}/{token}\"\n },\n \"en\": {\n \"URL\": \"cart-recognition/{idFolder:int}/{token}\"\n }\n },\n {\n \"Name\": \"CartPaymentRedirect\",\n \"Controller\": \"Cart\",\n \"Action\": \"Redirect\",\n \"fr\": {\n \"URL\": \"redirection-panier-paiement\"\n },\n \"en\": {\n \"URL\": \"cart-payment-redirect\"\n }\n },\n {\n \"Name\": \"QuotationPaymentError\",\n \"Controller\": \"Quotation\",\n \"Action\": \"PaymentError\",\n \"fr\": {\n \"URL\": \"paiement/erreur/{idFolder:int}\"\n },\n \"en\": {\n \"URL\": \"payment/error/{idFolder:int}\"\n }\n },\n {\n \"Name\": \"CartPaymentError\",\n \"Controller\": \"Cart\",\n \"Action\": \"PaymentError\",\n \"fr\": {\n \"URL\": \"paiement/erreur\"\n },\n \"en\": {\n \"URL\": \"payment/error\"\n }\n },\n {\n \"Name\": \"AccountValidationPage\",\n \"Controller\": \"Authentication\",\n \"Action\": \"AccountValidationPage\",\n \"fr\": {\n \"URL\": \"validation-compte/validation/{EncryptedIdCard}\"\n },\n \"en\": {\n \"URL\": \"account-validation/validate/{EncryptedIdCard}\"\n }\n },\n {\n \"Name\": \"ResendAccountValidationEmail\",\n \"Controller\": \"AccountCreate\",\n \"Action\": \"ResendAccountValidationEmail\",\n \"fr\": {\n \"URL\": \"validation-compte/renvoi/{EncryptedIdCard}\"\n },\n \"en\": {\n \"URL\": \"account-validation/resend/{EncryptedIdCard}\"\n }\n },\n {\n \"Name\": \"AccountValidateEmailToken\",\n \"Controller\": \"Authentication\",\n \"Action\": \"AccountValidateEmailToken\",\n \"fr\": {\n \"URL\": \"identification/{validEmailToken}\"\n },\n \"en\": {\n \"URL\": \"authentication/{validEmailToken}\"\n }\n },\n {\n \"Name\": \"Login\",\n \"Controller\": \"Authentication\",\n \"Action\": \"Login\",\n \"fr\": {\n \"URL\": \"identification\"\n },\n \"en\": {\n \"URL\": \"authentication\"\n }\n },\n {\n \"Name\": \"LoginFromFacebook\",\n \"Controller\": \"Authentication\",\n \"Action\": \"LoginFromFacebook\",\n \"fr\": {\n \"URL\": \"identification-facebook\"\n },\n \"en\": {\n \"URL\": \"authentication-facebook\"\n }\n },\n {\n \"Name\": \"AccountHome\",\n \"Controller\": \"AccountHome\",\n \"Action\": \"AccountHome\",\n \"fr\": {\n \"URL\": \"mon-compte\"\n },\n \"en\": {\n \"URL\": \"my-account\"\n }\n },\n {\n \"Name\": \"AccountUpdate\",\n \"Controller\": \"AccountUpdate\",\n \"Action\": \"AccountUpdate\",\n \"fr\": {\n \"URL\": \"profil\"\n },\n \"en\": {\n \"URL\": \"profile\"\n }\n },\n {\n \"Name\": \"AccountPasswordReset\",\n \"Controller\": \"AccountPasswordReset\",\n \"Action\": \"AccountPasswordReset\",\n \"fr\": {\n \"URL\": \"mot-de-passe\"\n },\n \"en\": {\n \"URL\": \"password\"\n }\n },\n {\n \"Name\": \"AccountOrderTracking\",\n \"Controller\": \"AccountOrderTracking\",\n \"Action\": \"AccountOrderTracking\",\n \"fr\": {\n \"URL\": \"suivi-de-commande\"\n },\n \"en\": {\n \"URL\": \"order-tracking\"\n }\n },\n {\n \"Name\": \"AccountInvoices\",\n \"Controller\": \"AccountInvoices\",\n \"Action\": \"AccountInvoices\",\n \"fr\": {\n \"URL\": \"factures\"\n },\n \"en\": {\n \"URL\": \"invoices\"\n }\n },\n {\n \"Name\": \"AccountClaim\",\n \"Controller\": \"AccountClaim\",\n \"Action\": \"AccountClaim\",\n \"fr\": {\n \"URL\": \"reclamation\"\n },\n \"en\": {\n \"URL\": \"claim\"\n }\n },\n {\n \"Name\": \"AccountReturns\",\n \"Controller\": \"AccountReturns\",\n \"Action\": \"AccountReturns\",\n \"fr\": {\n \"URL\": \"retours\"\n },\n \"en\": {\n \"URL\": \"returns\"\n }\n },\n {\n \"Name\": \"AccountSavedCarts\",\n \"Controller\": \"AccountSavedCarts\",\n \"Action\": \"AccountSavedCarts\",\n \"fr\": {\n \"URL\": \"paniers-sauvegardes\"\n },\n \"en\": {\n \"URL\": \"saved-cart\"\n }\n },\n {\n \"Name\": \"AccountNumericProducts\",\n \"Controller\": \"AccountNumericProducts\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"produits-numeriques\"\n },\n \"en\": {\n \"URL\": \"digital-products\"\n }\n },\n {\n \"Name\": \"AccountVouchers\",\n \"Controller\": \"AccountVouchers\",\n \"Action\": \"Index\",\n \"fr\": {\n \"URL\": \"bons-d-achat\"\n },\n \"en\": {\n \"URL\": \"vouchers\"\n }\n },\n {\n \"Name\": \"AccountLoyaltyPoints\",\n \"Controller\": \"AccountLoyaltyPoints\",\n \"Action\": \"AccountLoyaltyPoints\",\n \"fr\": {\n \"URL\": \"points-fidelite\"\n },\n \"en\": {\n \"URL\": \"loyalty-point\"\n }\n },\n {\n \"Name\": \"AccountWishList\",\n \"Controller\": \"AccountWishList\",\n \"Action\": \"WishList\",\n \"fr\": {\n \"URL\": \"liste-de-souhaits\"\n },\n \"en\": {\n \"URL\": \"wish-list\"\n }\n },\n {\n \"Name\": \"AccountMultiWishList\",\n \"Controller\": \"AccountWishList\",\n \"Action\": \"WishList\",\n \"fr\": {\n \"URL\": \"mes-listes-de-souhaits\"\n },\n \"en\": {\n \"URL\": \"my-wish-list\"\n }\n },\n {\n \"Name\": \"AccountQuotations\",\n \"Controller\": \"AccountQuotation\",\n \"Action\": \"Account\",\n \"fr\": {\n \"URL\": \"devis\"\n },\n \"en\": {\n \"URL\": \"quote\"\n }\n },\n {\n \"Name\": \"AccountAdvancedQuotations\",\n \"Controller\": \"AccountQuotation\",\n \"Action\": \"Account\",\n \"fr\": {\n \"URL\": \"mes-devis\"\n },\n \"en\": {\n \"URL\": \"my-quote\"\n }\n },\n {\n \"Name\": \"AccountCredits\",\n \"Controller\": \"AccountCredits\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"avoirs\"\n },\n \"en\": {\n \"URL\": \"credit-note\"\n }\n },\n {\n \"Name\": \"AccountGiftCards\",\n \"Controller\": \"AccountGiftCards\",\n \"Action\": \"AccountGiftCards\",\n \"fr\": {\n \"URL\": \"cheques-cadeaux\"\n },\n \"en\": {\n \"URL\": \"gift-voucher\"\n }\n },\n {\n \"Name\": \"AccountSponsorShip\",\n \"Controller\": \"AccountSponsorShip\",\n \"Action\": \"AccountSponsorShip\",\n \"fr\": {\n \"URL\": \"parrainage\"\n },\n \"en\": {\n \"URL\": \"sponsorship\"\n }\n },\n {\n \"Name\": \"Search\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche\"\n },\n \"en\": {\n \"URL\": \"research\"\n }\n },\n {\n \"Name\": \"SearchAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche/{q}\"\n },\n \"en\": {\n \"URL\": \"research/{q}\"\n }\n },\n {\n \"Name\": \"SearchPageAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche/{q}/{p:int}\"\n },\n \"en\": {\n \"URL\": \"research/{q}/{p:int}\"\n }\n },\n {\n \"Name\": \"SortedSearchPageAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche/{q}/{p:int}/{sort:alpha}\"\n },\n \"en\": {\n \"URL\": \"research/{q}/{p:int}/{sort:alpha}\"\n }\n },\n {\n \"Name\": \"SortedSearchAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche/{q}/{sort:alpha}\"\n },\n \"en\": {\n \"URL\": \"research/{q}/{sort:alpha}\"\n }\n },\n {\n \"Name\": \"SearchProducts\",\n \"Controller\": \"Search\",\n \"Action\": \"SearchProducts\",\n \"fr\": {\n \"URL\": \"produits\"\n },\n \"en\": {\n \"URL\": \"products\"\n }\n },\n {\n \"Name\": \"SearchProductsPageAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"SearchProducts\",\n \"fr\": {\n \"URL\": \"produits/{p:int}\"\n },\n \"en\": {\n \"URL\": \"products/{p:int}\"\n }\n },\n {\n \"Name\": \"SortedSearchProductsAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"SearchProducts\",\n \"fr\": {\n \"URL\": \"produits/{sort:alpha}\"\n },\n \"en\": {\n \"URL\": \"products/{sort:alpha}\"\n }\n },\n {\n \"Name\": \"SortedSearchProductsPageAngular\",\n \"Controller\": \"Search\",\n \"Action\": \"SearchProducts\",\n \"fr\": {\n \"URL\": \"produits/{p:int}/{sort:alpha}\"\n },\n \"en\": {\n \"URL\": \"products/{p:int}/{sort:alpha}\"\n }\n },\n {\n \"Name\": \"Stores\",\n \"Controller\": \"Stores\",\n \"Action\": \"Stores\",\n \"fr\": {\n \"URL\": \"magasins\"\n },\n \"en\": {\n \"URL\": \"stores\"\n }\n },\n {\n \"Name\": \"StoresWebsite\",\n \"Controller\": \"Stores\",\n \"Action\": \"StoresWebsite\",\n \"fr\": {\n \"URL\": \"liste-magasins\"\n },\n \"en\": {\n \"URL\": \"stores-list\"\n }\n },\n {\n \"Name\": \"Contact\",\n \"Controller\": \"Form\",\n \"Action\": \"Contact\",\n \"fr\": {\n \"URL\": \"contact\"\n },\n \"en\": {\n \"URL\": \"contact\"\n }\n },\n {\n \"Name\": \"Jobs\",\n \"Controller\": \"Form\",\n \"Action\": \"Jobs\",\n \"fr\": {\n \"URL\": \"jobs\"\n },\n \"en\": {\n \"URL\": \"jobs\"\n }\n },\n {\n \"Name\": \"MessageCatalogRequest\",\n \"Controller\": \"Message\",\n \"Action\": \"CatalogRequest\",\n \"fr\": {\n \"URL\": \"Message/Catalogue\"\n },\n \"en\": {\n \"URL\": \"Message/Catalog\"\n }\n },\n {\n \"Name\": \"MessageContact\",\n \"Controller\": \"Message\",\n \"Action\": \"Contact\",\n \"fr\": {\n \"URL\": \"Message/Contact\"\n },\n \"en\": {\n \"URL\": \"Message/Contact\"\n }\n },\n {\n \"Name\": \"MessageAccountClaim\",\n \"Controller\": \"Message\",\n \"Action\": \"Claim\",\n \"fr\": {\n \"URL\": \"Message/Claim\"\n },\n \"en\": {\n \"URL\": \"Message/Claim\"\n }\n },\n {\n \"Name\": \"MessageCatalogRequestAdd\",\n \"Controller\": \"Message\",\n \"Action\": \"AddCatalogRequest\",\n \"fr\": {\n \"URL\": \"Message/Add/CatalogRequest\"\n },\n \"en\": {\n \"URL\": \"Message/Add/CatalogRequest\"\n }\n },\n {\n \"Name\": \"MessageAccountClaimAdd\",\n \"Controller\": \"Message\",\n \"Action\": \"AddClaim\",\n \"fr\": {\n \"URL\": \"Message/Add/Reclamation\"\n },\n \"en\": {\n \"URL\": \"Message/Add/Claim\"\n }\n },\n {\n \"Name\": \"CartQuotationPaymentList\",\n \"Controller\": \"Payment\",\n \"Action\": \"PaymentListQuotation\",\n \"fr\": {\n \"URL\": \"devis/choix-paiement/{idFolder:int}\"\n },\n \"en\": {\n \"URL\": \"quote/payment-choice/{idFolder:int}\"\n }\n },\n {\n \"Name\": \"PaymentListAdvance\",\n \"Controller\": \"Payment\",\n \"Action\": \"PaymentListAdvance\",\n \"fr\": {\n \"URL\": \"acompte/choix-paiement/{idFolder:int}/{idAdvance:int}\"\n },\n \"en\": {\n \"URL\": \"advance/payment-choice/{idFolder:int}/{idAdvance:int}\"\n }\n },\n {\n \"Name\": \"SellerPage\",\n \"Controller\": \"Seller\",\n \"Action\": \"Seller\",\n \"fr\": {\n \"URL\": \"{sellerName}-v-{sellerId:int}/{keyMessageType?}\"\n },\n \"en\": {\n \"URL\": \"{sellerName}-v-{sellerId:int}/{keyMessageType?}\"\n }\n },\n {\n \"Name\": \"AppParams\",\n \"Controller\": \"App\",\n \"Action\": \"AppParams\",\n \"fr\": {\n \"URL\": \"appParams\"\n },\n \"en\": {\n \"URL\": \"appParams\"\n }\n },\n {\n \"Name\": \"AdvancedReviewsForm\",\n \"Controller\": \"AccountAdvancedReviews\",\n \"Action\": \"Form\",\n \"fr\": {\n \"URL\": \"avis-articles/{token}\"\n },\n \"en\": {\n \"URL\": \"product-reviews/{token}\"\n }\n },\n {\n \"Name\": \"AccountAdvancedReviews\",\n \"Controller\": \"AccountAdvancedReviews\",\n \"Action\": \"AccountAdvancedReviews\",\n \"fr\": {\n \"URL\": \"avis-articles\"\n },\n \"en\": {\n \"URL\": \"product-reviews\"\n }\n },\n {\n \"Name\": \"AccountDedicatedProducts\",\n \"Controller\": \"AccountDedicatedProducts\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"produits-personnalises\"\n },\n \"en\": {\n \"URL\": \"dedicated-products\"\n }\n },\n {\n \"Name\": \"UpdateLineQuantityCart\",\n \"Controller\": \"Cart\",\n \"Action\": \"UpdateLineQuantityCart\",\n \"fr\": {\n \"URL\": \"UpdateLineQuantityCart/{idLine:int}/{RemovedQuantity:int}\"\n },\n \"en\": {\n \"URL\": \"UpdateLineQuantityCart/{idLine:int}/{RemovedQuantity:int}\"\n }\n },\n {\n \"Name\": \"Click2Call\",\n \"Controller\": \"OVH\",\n \"Action\": \"Click2Call\",\n \"fr\": {\n \"URL\": \"clickToCall\"\n },\n \"en\": {\n \"URL\": \"clickToCall\"\n }\n },\n {\n \"Name\": \"AlmaCheckEligibility\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaCheckEligibility\",\n \"fr\": {\n \"URL\": \"AlmaCheckEligibility\"\n },\n \"en\": {\n \"URL\": \"AlmaCheckEligibility\"\n }\n },\n {\n \"Name\": \"AlmaGetPaymentInfos\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaGetPaymentInfos\",\n \"fr\": {\n \"URL\": \"AlmaGetPaymentInfos\"\n },\n \"en\": {\n \"URL\": \"AlmaGetPaymentInfos\"\n }\n },\n {\n \"Name\": \"AlmaGetApiInfos\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaGetApiInfos\",\n \"fr\": {\n \"URL\": \"AlmaGetApiInfos\"\n },\n \"en\": {\n \"URL\": \"AlmaGetApiInfos\"\n }\n },\n {\n \"Name\": \"AlmaPrePaymentRequest\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaPrePaymentRequest\",\n \"fr\": {\n \"URL\": \"AlmaPrePaymentRequest\"\n },\n \"en\": {\n \"URL\": \"AlmaPrePaymentRequest\"\n }\n },\n {\n \"Name\": \"AlmaConfirm\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaConfirm\",\n \"fr\": {\n \"URL\": \"AlmaConfirm\"\n },\n \"en\": {\n \"URL\": \"AlmaConfirm\"\n }\n },\n {\n \"Name\": \"AlmaAsyncResponse\",\n \"Controller\": \"Alma\",\n \"Action\": \"AlmaAsyncResponse\",\n \"fr\": {\n \"URL\": \"AlmaAsyncResponse\"\n },\n \"en\": {\n \"URL\": \"AlmaAsyncResponse\"\n }\n },\n {\n \"Name\": \"NetWaveGetProducts\",\n \"Controller\": \"Netwave\",\n \"Action\": \"GetProducts\",\n \"fr\": {\n \"URL\": \"GetProducts\"\n },\n \"en\": {\n \"URL\": \"GetProducts\"\n }\n },\n {\n \"Name\": \"NetWaveGetCategoryProduct\",\n \"Controller\": \"Netwave\",\n \"Action\": \"GetCategoryProduct\",\n \"fr\": {\n \"URL\": \"GetCategoryProduct/{productId:int}\"\n },\n \"en\": {\n \"URL\": \"GetCategoryProduct/{productId:int}\"\n }\n },\n {\n \"Name\": \"GetNetWaveInfo\",\n \"Controller\": \"Netwave\",\n \"Action\": \"GetNetWaveInfo\",\n \"fr\": {\n \"URL\": \"GetNetWaveInfo\"\n },\n \"en\": {\n \"URL\": \"GetNetWaveInfo\"\n }\n },\n {\n \"Name\": \"SortedCategoryPage\",\n \"Controller\": \"CategoryOverride\",\n \"Action\": \"ShowSortedPage\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"SortedCategory\",\n \"Controller\": \"CategoryOverride\",\n \"Action\": \"ShowSorted\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"CategoryPage\",\n \"Controller\": \"CategoryOverride\",\n \"Action\": \"ShowPage\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}\"\n }\n },\n {\n \"Name\": \"Category\",\n \"Controller\": \"CategoryOverride\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}\"\n }\n },\n {\n \"Name\": \"CategoryWithElasticSearch\",\n \"Controller\": \"CategoryOverride\",\n \"Action\": \"ShowWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}\"\n }\n },\n {\n \"Name\": \"SortedCategoryPageWithElasticSearch\",\n \"Controller\": \"CategoryOverride\",\n \"Action\": \"ShowSortedPageWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}-{page:int}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"CatalogRequest\",\n \"Controller\": \"\",\n \"Action\": \"\",\n \"fr\": {\n \"URL\": \"\"\n }\n },\n {\n \"Name\": \"ContactExclu\",\n \"Controller\": \"MessageOverride\",\n \"Action\": \"Exclu\",\n \"fr\": {\n \"URL\": \"Exclu\"\n }\n },\n {\n \"Name\": \"ContactNegociezPrix\",\n \"Controller\": \"MessageOverride\",\n \"Action\": \"NegociezPrix\",\n \"fr\": {\n \"URL\": \"NegociezPrix\"\n }\n },\n {\n \"Name\": \"ContactNegociezPrixFormulaire\",\n \"Controller\": \"MessageOverride\",\n \"Action\": \"NegociezPrixFormulaire\",\n \"fr\": {\n \"URL\": \"NegociezPrixFormulaire\"\n }\n },\n {\n \"Name\": \"MessageContactAdd\",\n \"Controller\": \"MessageOverride\",\n \"Action\": \"AddContactObject\",\n \"fr\": {\n \"URL\": \"Message/Add/Contact\"\n },\n \"en\": {\n \"URL\": \"Message/Add/Contact\"\n }\n },\n {\n \"Name\": \"QuickOrder\",\n \"Controller\": \"\",\n \"Action\": \"\",\n \"fr\": {\n \"URL\": \"\"\n }\n },\n {\n \"Name\": \"CartPaymentAction\",\n \"Controller\": \"PaymentOverride\",\n \"Action\": \"Payment\",\n \"fr\": {\n \"URL\": \"paiement\"\n }\n }\n]);\n})();\n","(function (ng) {\n'use strict';\nng.module('gulp-dependencies', ['angucomplete-alt','app.account-create','app.account-password-revovery','app.authentication','app.autocomplete','app.autocomplete-select','app.category','app.category.background','app.category.filters','app.comparator','app.footer','app.form','app.home','app.payment-error','app.product','app.product-gallery','app.product-kit','app.product-share','app.product.customization','app.product.price','app.product.reviews','app.search','app.searchfinder','app.service.compare','app.service.quotation','app.store-detail','app.stores','compare.checkbox','directive.infos-store','directive.oney.widget','main.nav','minilogin','newsletter','service.authentication']);\n})(angular);","angular.module(\"gulp-templates\", []).run([\"$templateCache\", function($templateCache) {$templateCache.put(\"component.addtocart-quantity.tpl\",\"\");\n$templateCache.put(\"component.addtocart.tpl\",\"
\");\n$templateCache.put(\"component.delete-cart-item.tpl\",\"\");\n$templateCache.put(\"component.modify-cart-item.tpl\",\"\");\n$templateCache.put(\"directive.video-player.tpl\",\"
\");\n$templateCache.put(\"rzslider.tpl\",\"
\");\n$templateCache.put(\"toast.tpl\",\"
{{::title}}
{{::message}}
\");\n$templateCache.put(\"toast_addtocart.tpl\",\"
{{::title}}
{{::message}}
\");\n$templateCache.put(\"toast_message.tpl\",\"
{{::title}}
{{::message}}
\");\n$templateCache.put(\"toast_progressbar.tpl\",\"
\");\n$templateCache.put(\"toast_authentication.tpl\",\"
{{::title}}
{{::message}}
\");\n$templateCache.put(\"facet-accordion-group.tpl\",\"
\");\n$templateCache.put(\"facet-accordion.tpl\",\"
\");\n$templateCache.put(\"autocomplete-select.tpl\",\"\");\n$templateCache.put(\"toast_comparator.tpl\",\"
{{::title}}
{{::message}}
\");}]);","(function () {\nangular.module(\"gulp-client\", [])\n.constant(\"DefaultLocalization\", \"fr\");\n})();\n","/*\r\n*\r\n* Version : 1.0.0\r\n* 04/09/2016 - 10h18\r\n*\r\n*! Octave Web7 !*/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular.module('app', [\r\n /* /angular */\r\n 'ngSanitize',\r\n 'ngAnimate',\r\n 'ngCookies',\r\n 'ngRoute',\r\n\r\n /* /lib */\r\n 'ui.bootstrap',\r\n 'toastr',\r\n 'bootstrap.angular.validation',\r\n 'hl.sticky',\r\n 'AngularGM',\r\n 'smoothScroll',\r\n 'module.spinner',\r\n 'angular-scroll-animate',\r\n\r\n /* /components */\r\n 'component.addtocart',\r\n 'component.addtocart-quantity',\r\n 'component.modify-cart-item',\r\n 'component.delete-cart-item',\r\n\r\n /* /modules */\r\n 'module.owl-carousel',\r\n 'module.products-grid',\r\n 'module.modal',\r\n 'module.modal-controllers',\r\n 'module.lazy',\r\n 'module.cdn',\r\n 'module.parallax',\r\n 'module.netwave',\r\n\r\n /* /directives */\r\n 'directive.mini-cart',\r\n 'directive.page-head',\r\n 'directives.breadcrumb',\r\n 'directive.collapse-menu',\r\n 'directives.form',\r\n 'directive.bootstrap-select',\r\n 'directive.clear-uib-tab',\r\n 'directive.tab-equal-heights',\r\n 'directive.video-player',\r\n 'directive.flip',\r\n 'directive.back-to-top',\r\n 'directive.responsive-img',\r\n 'directive.searchlink',\r\n 'directive.stop-propagation',\r\n 'infinite-scroll',\r\n 'angular-nicescroll',\r\n\r\n /* /services */\r\n 'service.app',\r\n 'service.account',\r\n 'service.http',\r\n 'service.window-events',\r\n 'service.responsive',\r\n 'service.date',\r\n 'service.gtm',\r\n 'service.gmap',\r\n 'service.load',\r\n 'service.ga4',\r\n\r\n /* /filters */\r\n 'filter.price',\r\n 'filter.discount',\r\n 'filter.format',\r\n 'filter.phone',\r\n 'filter.truncate-date',\r\n 'filter.decimal',\r\n\r\n 'gulp-client',\r\n 'gulp-dependencies',\r\n 'gulp-routes',\r\n 'gulp-templates',\r\n\r\n 'directive.debug'\r\n ])\r\n\r\n /* Ne pas modifier, Gulp > master.min.js */\r\n .constant('Environment', 'dev')\r\n\r\n /* @ngInject */\r\n .controller('mainController', [\"$scope\", \"$timeout\", \"$templateCache\", \"DeviceService\", \"HttpService\", function ($scope, $timeout, $templateCache, DeviceService, HttpService) {\r\n var ctrl = this;\r\n\r\n setTimeout(function () {\r\n loadModalAddToCart();\r\n });\r\n\r\n $scope.$on('pageTitle', function (event, checkout) {\r\n $timeout(function () {\r\n ctrl.checkout = checkout;\r\n });\r\n });\r\n\r\n $scope.showPageLoader = false;\r\n $scope.$on('showPageLoader', function (event, value) {\r\n $scope.showPageLoader = value;\r\n });\r\n\r\n $scope.device = {};\r\n\r\n $scope.device.size = DeviceService.getSize($scope, function (size) {\r\n $scope.device.size = size;\r\n });\r\n\r\n $scope.device.xxs = DeviceService.onChange($scope, 'xxs', function (match) {\r\n $scope.device.xxs = match;\r\n });\r\n $scope.device.xs = DeviceService.onChange($scope, 'xs', function (match) {\r\n $scope.device.xs = match;\r\n });\r\n $scope.device.sm = DeviceService.onChange($scope, 'sm', function (match) {\r\n $scope.device.sm = match;\r\n });\r\n $scope.device.md = DeviceService.onChange($scope, 'md', function (match) {\r\n $scope.device.md = match;\r\n });\r\n $scope.device.lg = DeviceService.onChange($scope, 'lg', function (match) {\r\n $scope.device.lg = match;\r\n });\r\n\r\n $scope.device.desktop = DeviceService.onChange($scope, 'md, lg', function (match) {\r\n $scope.device.desktop = match;\r\n });\r\n $scope.device.mobile = DeviceService.onChange($scope, 'xxs, xs', function (match) {\r\n $scope.device.mobile = match;\r\n });\r\n\r\n $scope.device.isTouch = DeviceService.isTouch();\r\n\r\n $scope.device.ios = DeviceService.isIOS();\r\n\r\n $scope.device.isIe = DeviceService.isIE().isIE;\r\n $scope.device.ieVersion = DeviceService.isIE().isIE ? 'ie' + DeviceService.isIE().version : null;\r\n\r\n DeviceService.isWebp().then(function (result) {\r\n $scope.device.webp = result;\r\n });\r\n\r\n $scope.scrollIn = function (targets, scope) {\r\n _.each(targets, function (target) {\r\n $(target).addClass('scroll-active');\r\n });\r\n };\r\n $scope.scrollOut = function (targets, scope) {\r\n _.each(targets, function (target) {\r\n $(target).removeClass('scroll-active');\r\n });\r\n };\r\n\r\n ctrl.stickyEvent = function (data) {\r\n if (data.event === 'stick') {\r\n $('#header').addClass('is-sticky');\r\n if (!$scope.device.lg) {\r\n $('#headerActionsBtns').appendTo($('#main-nav').find('.navbar-header'));\r\n }\r\n if ($scope.device.md) {\r\n $('#logo').prependTo($('#main-nav').find('.navbar-header'));\r\n }\r\n } else {\r\n $('#header').removeClass('is-sticky');\r\n $('#headerActionsBtns').appendTo('#headerActions');\r\n $('#logo').appendTo($('#headerLogo'));\r\n }\r\n };\r\n\r\n $scope.$on('searchBlur', function () {\r\n ctrl.searchOpened = false;\r\n });\r\n\r\n function loadModalAddToCart() {\r\n HttpService.get({\r\n url: '/Template/Modal/ModalAddToCart',\r\n cache: true\r\n })\r\n .then(function (data) {\r\n $templateCache.put('/Template/Modal/ModalAddToCart', data);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .config([\"$compileProvider\", \"Environment\", 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([\"lazyConfigProvider\", 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 .config([\"toastrConfig\", function (toastrConfig) {\r\n angular.extend(toastrConfig, {\r\n timeOut: 3000,\r\n closeButton: true,\r\n closeHtml: '',\r\n iconClasses: {\r\n success: ['success', 'glyphicon glyphicon-ok'],\r\n error: ['error', 'glyphicon glyphicon-exclamation-sign'],\r\n info: ['info', 'glyphicon glyphicon-info-sign'],\r\n warning: ['warning', 'glyphicon glyphicon-exclamation-sign']\r\n },\r\n templates: {\r\n toast: 'toast.tpl',\r\n progressbar: 'toast_progressbar.tpl'\r\n }\r\n });\r\n }])\r\n\r\n /* @ngInject */\r\n .config([\"bsValidationConfigProvider\", function (bsValidationConfigProvider) {\r\n bsValidationConfigProvider.global.setValidateFieldsOn(['blur', 'submit']);\r\n bsValidationConfigProvider.global.setDisplayErrorsAs('tooltip');\r\n bsValidationConfigProvider.global.tooltipAppendToBody = false;\r\n bsValidationConfigProvider.global.errorMessagePrefix = '  ';\r\n }])\r\n\r\n .config([\"dropzoneOpsProvider\", function (dropzoneOpsProvider) {\r\n dropzoneOpsProvider.setOptions({\r\n url: '/Upload',\r\n uploadMultiple: true,\r\n parallelUploads: 10,\r\n maxFilesize: '4',\r\n addRemoveLinks: true,\r\n renameFilename: function (name) {\r\n return new Date().getTime() + '_!_' + name;\r\n },\r\n dictRemoveFile: ''\r\n });\r\n }])\r\n\r\n /* @ngInject */\r\n .run([\"AppService\", \"bsValidationConfig\", function (AppService, bsValidationConfig) {\r\n\r\n AppService.getParams();\r\n\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n _.each(translate.forms, function (value, key) {\r\n translate.forms[key] = value.replace('{validValue}', '{{validValue}}').replace('{matchName}', '{{matchName}}');\r\n });\r\n bsValidationConfig.setMessages(translate.forms);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n window.onunload = function () { };\r\n\r\n PointerEventsPolyfill.initialize({});\r\n\r\n window.startWbs();\r\n }]);\r\n\r\n angular.element(function () {\r\n angular.bootstrap(document, ['app'], {\r\n strictDi: true\r\n });\r\n });\r\n\r\n /* Ne pas modifier, Gulp > service-worker.js */\r\n var hasServiceWorker = true;\r\n\r\n if (hasServiceWorker && 'serviceWorker' in navigator) {\r\n window.addEventListener('load', function () {\r\n\r\n navigator.serviceWorker.getRegistrations().then(function (registrations) {\r\n registrations.forEach(function (registration) {\r\n if (registration.active && !registration.active.scriptURL.includes('service-worker.js')) {\r\n console.log('unregister', registration);\r\n registration.unregister()\r\n .then(function () {\r\n return self.clients.matchAll();\r\n })\r\n .then(function (clients) {\r\n clients.forEach(function (client) {\r\n client.navigate(client.url);\r\n });\r\n });\r\n }\r\n });\r\n });\r\n\r\n navigator.serviceWorker.register('/service-worker.js').then(function (registration) {\r\n console.log('ServiceWorker registration success scope:', registration.scope);\r\n }).catch(function (err) {\r\n console.log('ServiceWorker registration failed:', err);\r\n });\r\n });\r\n }\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('component.addtocart-quantity', [])\r\n\r\n .component('buttonAddToCartQuantity', {\r\n require: {\r\n productCtrl: '?^^productDetail',\r\n quotationCtrl: '?^^accountAdvancedQuotations'\r\n },\r\n bindings: {\r\n isProductButton: ' $window.innerHeight && sc < lastPos ? true : false;\r\n ctrl.class = '';\r\n if ($('#idz_btn:visible').length) {\r\n ctrl.class = $('#idz_btn').children('.type_mini').length ? 'bottom' : 'bottom-middle';\r\n } else if ($('#idz_chatglobal:visible').length) {\r\n ctrl.class = 'bottom-large';\r\n } else if ($('#idz_chatbar_mini:visible').length) {\r\n ctrl.class = 'bottom';\r\n }\r\n ctrl.class += active ? ' in' : '';\r\n });\r\n lastPos = sc;\r\n }\r\n }]\r\n };\r\n\r\n });\r\n\r\n})();\r\n","/*\r\n * Bootstrap Select directive\r\n * Version 1.0.0\r\n * Octave\r\n **/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.bootstrap-select', [])\r\n\r\n /* @ngInject */\r\n .factory('SelectpickerService', function () {\r\n var _mobile,\r\n load,\r\n queue = [];\r\n\r\n var service = {\r\n add: add\r\n };\r\n return service;\r\n\r\n ////////////\r\n\r\n function add(element, mobile) {\r\n _mobile = mobile;\r\n if (angular.isUndefined($.fn.selectpicker)) {\r\n queue.push(element);\r\n if (!load) {\r\n load = true;\r\n $.ajax({\r\n url: '/js/bootstrap-select.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n start();\r\n }\r\n });\r\n }\r\n } else {\r\n init(element);\r\n }\r\n }\r\n\r\n function start() {\r\n _.each(queue, function (element) {\r\n init(element);\r\n });\r\n }\r\n\r\n function init(element) {\r\n element.selectpicker({\r\n mobile: _mobile\r\n });\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .directive('selectpicker', [\"$timeout\", \"SelectpickerService\", function ($timeout, SelectpickerService) {\r\n return {\r\n restrict: 'A',\r\n scope: false,\r\n link: function (scope, element, attrs) {\r\n scope.$eval(attrs.ngModel + '=\"' + element.val() + '\"');\r\n\r\n SelectpickerService.add(element, scope.device ? scope.device.mobile : false);\r\n\r\n if (attrs.ngModel) {\r\n var unwatch = scope.$watch(attrs.ngModel, function () {\r\n $timeout(function () {\r\n if (angular.isDefined(element.selectpicker)) {\r\n element.selectpicker('refresh');\r\n }\r\n });\r\n }, true);\r\n }\r\n\r\n scope.$on('$destroy', function () {\r\n if (angular.isDefined(element.selectpicker)) {\r\n element.selectpicker('destroy');\r\n }\r\n if (unwatch) {\r\n unwatch();\r\n }\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('app.bxslider', [])\r\n\r\n /* @ngInject */\r\n .directive('bxslider', [\"WindowEventsService\", function (WindowEventsService) {\r\n\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n device: '<'\r\n },\r\n link: function (scope, element) {\r\n var slider;\r\n if (scope.device.mobile) return;\r\n\r\n\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 (slider) {\r\n slider.destroySlider();\r\n }\r\n });\r\n\r\n initBxSlider();\r\n\r\n //if (slider) {\r\n // slider.redrawSlider();\r\n //}\r\n\r\n\r\n function initBxSlider() {\r\n\r\n if (slider) {\r\n 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\r\n\r\n if (scope.device.mobile) return;\r\n\r\n setTimeout(function () {\r\n\r\n /* var nb = 5;\r\n nb = scope.device.md ? 4 : nb;\r\n nb = scope.device.sm ? 3 : nb; */\r\n\r\n var margin = 10,\r\n sc = element.closest('.d-table-cell'),\r\n main = element.closest('.height-style');\r\n\r\n\r\n var width = Math.floor(sc.innerWidth()) - 23,\r\n height = Math.floor(sc.parent().height() - 20),\r\n nb = Math.floor(height / width);\r\n\r\n\r\n element.show().parent().css({\r\n 'height': height,\r\n 'width': width\r\n });\r\n\r\n\r\n\r\n slider = element.bxSlider({\r\n mode: 'vertical',\r\n minSlides: 5,\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 hideControlOnEnd: true,\r\n shrinkItems: true,\r\n onSliderLoad: function () {\r\n\r\n element.show().parent().closest('.bxslider-container').addClass('in');\r\n\r\n //element.show().parent().css({ \r\n // 'height': height\r\n //}).closest('.bxslider-container').addClass('in'); \r\n\r\n }\r\n });\r\n }, 500);\r\n\r\n //slider.redrawSlider();\r\n\r\n }\r\n\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","/*\r\n * Remove empty Tabset\r\n * Version 1.0\r\n * Octave\r\n **/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.clear-uib-tab', [])\r\n\r\n .directive('uibTabset', function () {\r\n return {\r\n priority: 0,\r\n // eslint-disable-next-line\r\n link: function (scope, element, attrs) {\r\n if (!element.find('uib-tab').length) {\r\n var $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\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n /*\r\n * Collapse Menu directive\r\n * Version 1.0.0\r\n * Octave\r\n **/\r\n\r\n angular\r\n .module('directive.collapse-menu', [])\r\n\r\n /* @ngInject */\r\n .directive('collapseMenu', [\"$document\", function ($document) {\r\n var directive = {\r\n restrict: 'A',\r\n link: link,\r\n scope: true\r\n };\r\n return directive;\r\n\r\n function link(scope, element) {\r\n\r\n scope.isOpen = false;\r\n\r\n function onBodyClick(event) {\r\n if (scope.isOpen && !element[0].contains(event.target)) {\r\n scope.$apply(function () {\r\n scope.isOpen = false;\r\n });\r\n $document.off('click', onBodyClick);\r\n }\r\n }\r\n\r\n scope.clickMenu = function (event) {\r\n if (scope.device.isTouch) {\r\n if (!scope.isOpen) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n element.find('*[lazy-container]').scroll();\r\n $document.on('click', onBodyClick);\r\n }\r\n scope.isOpen = !scope.isOpen;\r\n }\r\n };\r\n\r\n scope.showMenu = function () {\r\n if (scope.device.isTouch) return;\r\n scope.isOpen = true;\r\n element.find('*[lazy-container]').scroll();\r\n };\r\n\r\n scope.hideMenu = function () {\r\n scope.isOpen = false;\r\n };\r\n\r\n scope.$on('$destroy', function () {\r\n $document.off('click', onBodyClick);\r\n });\r\n }\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.debug', [])\r\n\r\n /* @ngInject */\r\n .directive('debug', function () {\r\n return {\r\n restrict: 'E',\r\n template: '
',\r\n controllerAs: 'debugCtrl',\r\n /* @ngInject */\r\n controller: [\"$scope\", \"$document\", function ($scope, $document) {\r\n var ctrl = this,\r\n ctrlKey = false,\r\n altKey = false,\r\n active = false;\r\n\r\n ctrl.isMenuCollapse = false;\r\n ctrl.toggleMenuCollapse = function () {\r\n ctrl.isMenuCollapse = !ctrl.isMenuCollapse;\r\n };\r\n\r\n $document.on('keydown', function (event) {\r\n if (event.ctrlKey) ctrlKey = true;\r\n if (event.altKey) altKey = true;\r\n if (ctrlKey && altKey && event.keyCode === 68) {\r\n active = !active;\r\n $scope.$apply(function () {\r\n ctrl.template = active ? '/Template/Debug/Index' : '';\r\n });\r\n }\r\n });\r\n $document.on('keyup', function () {\r\n ctrlKey = altKey = false;\r\n });\r\n }]\r\n };\r\n\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.flip', [])\r\n\r\n /* @ngInject */\r\n .directive('flip', [\"$timeout\", function ($timeout) {\r\n return {\r\n restrict: 'A',\r\n scope: true,\r\n link: function (scope, element, attrs) {\r\n\r\n var flip = attrs.flip;\r\n\r\n setTimeout(resize);\r\n\r\n scope.toggle = function () {\r\n scope.flipped = !scope.flipped;\r\n resize();\r\n };\r\n\r\n scope.$on('toggle_' + flip, function () {\r\n scope.toggle();\r\n });\r\n\r\n scope.$on('flipBack_' + flip, function () {\r\n scope.flipped = true;\r\n scope.direct = true;\r\n $timeout(function () {\r\n scope.direct = false;\r\n }, 500);\r\n });\r\n\r\n scope.$on('resize_' + flip, function () {\r\n setTimeout(resize);\r\n });\r\n\r\n scope.$on('watchResize', function () {\r\n var time = new Date().getTime();\r\n var inter = setInterval(function () {\r\n resize();\r\n var ntime = new Date().getTime();\r\n if (ntime > time + 700) {\r\n clearInterval(inter);\r\n }\r\n }, 50);\r\n });\r\n\r\n function resize() {\r\n scope.$emit('resized');\r\n var selector = !scope.flipped ? '.front' : '.back',\r\n height = Math.floor(element.find(selector).children().outerHeight(true)) + 1;\r\n element.css('min-height', height);\r\n }\r\n\r\n }\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n 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: [\"$scope\", \"$element\", \"AppService\", \"RoutesService\", \"ModalService\", function ($scope, $element, AppService, RoutesService, ModalService) {\r\n var ctrl = this;\r\n\r\n // Translate\r\n var tplTranslate = {};\r\n $element.children('.translate').children().each(function () {\r\n var $this = $(this);\r\n tplTranslate[$this.attr('key')] = $this.html();\r\n });\r\n\r\n getCart();\r\n\r\n ctrl.emptyCart = function () {\r\n ModalService.show(\r\n '/Template/Cart/ModalClearCartConfirm',\r\n { cart: ctrl.data},\r\n null,\r\n 'clearCartConfirmModalCtrl'\r\n );\r\n };\r\n\r\n ctrl.remove = function (line) {\r\n var 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: function () {\r\n AppService.deleteLine(line.IDLine, product, line.Product.Designation, line.Product.IDPicture, tplTranslate.titleDeleteOk);\r\n }\r\n },\r\n null,\r\n 'deleteConfirmModalCtrl'\r\n );\r\n };\r\n\r\n $scope.$on('cartUpdate', function () {\r\n getCart();\r\n });\r\n\r\n function getCart() {\r\n AppService.getParams()\r\n .then(function (params) {\r\n ctrl.hasCart = params.HasCart;\r\n ctrl.cartLink = !ctrl.hasCart ? '' : '/' + RoutesService.getUrlByName('Cart');\r\n ctrl.count = 0;\r\n if (ctrl.hasCart) {\r\n ctrl.data = params.Cart;\r\n var count = 0;\r\n _.each(ctrl.data.Products, function (line) {\r\n count += line.Quantity;\r\n });\r\n ctrl.count = count;\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }],\r\n controllerAs: 'miniCartCtrl'\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('deleteConfirmModalCtrl', [\"data\", \"device\", \"options\", \"ModalService\", function (data, device, options, ModalService) {\r\n var ctrl = this;\r\n\r\n ctrl.submit = function () {\r\n ModalService.close();\r\n data.action();\r\n };\r\n ctrl.cancel = function () {\r\n ModalService.close();\r\n if (data.cancel) data.cancel();\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('clearCartConfirmModalCtrl', [\"data\", \"$rootScope\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", \"GA4Service\", function (data, $rootScope, HttpService, AppService, ModalService, toastr, GA4Service) {\r\n var ctrl = this;\r\n\r\n ctrl.submit = function () {\r\n ModalService.close();\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.post({\r\n url: 'Cart/ClearCart',\r\n data: {}\r\n })\r\n .then(function (response) {\r\n\r\n try {\r\n // GA4 Remove From Cart\r\n if (response.status === 'OK') {\r\n var currency = response.results && response.results.Currency && response.results.Currency.ISOCode ? response.results.Currency.ISOCode : null;\r\n GA4Service.removeFromCart([], response.removedProducts, currency, response.results.Localization.TradeName);\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n AppService.updateParams(response.results);\r\n toastr.success('', translate.messages.ClearCartOK, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n if (data.action) data.action();\r\n } else {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n $rootScope.$broadcast('showPageLoader', false);\r\n })\r\n .catch(function (error) {\r\n console.error(error);\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","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.page-head', [])\r\n\r\n /* @ngInject */\r\n .directive('pageTitle', [\"$window\", function ($window) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n title: '@',\r\n checkout: '@?',\r\n absoluteHeader: '@?'\r\n },\r\n link: function (scope, element) {\r\n if (scope.absoluteHeader) {\r\n $('#header').addClass('absolute');\r\n } else {\r\n $('#header').removeClass('absolute');\r\n }\r\n if (scope.checkout && scope.checkout === 'true') {\r\n $(document.body).addClass('checkout');\r\n } else {\r\n $(document.body).removeClass('checkout');\r\n }\r\n scope.$emit('pageTitle', scope.checkout && scope.checkout === 'true');\r\n $window.document.title = scope.title;\r\n }\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .directive('pageMetaDescription', function () {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n content: '@'\r\n },\r\n link: function (scope, element) {\r\n $('meta[name=\"description\"]').attr('content', scope.content);\r\n }\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.responsive-img', [])\r\n\r\n /* @ngInject */\r\n .directive('responsiveImg', [\"CdnService\", function (CdnService) {\r\n return {\r\n restrict: 'A',\r\n priority: 100,\r\n link: function (scope, element, attrs) {\r\n if (angular.isDefined(attrs.lazy)) {\r\n attrs.$set('lazy', '');\r\n }\r\n var deregister = attrs.$observe('responsiveImg', function (size) {\r\n CdnService.get(attrs.responsiveImgId, scope.$eval(attrs.responsiveImgSizes)[size].size, attrs.responsiveImgDesignation)\r\n .then(function (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 {\r\n element.attr('src', res);\r\n }\r\n } else {\r\n if (angular.isDefined(attrs.lazy) && !element.hasClass('loaded')) {\r\n attrs.$set('lazy', res);\r\n } else {\r\n element.css('background-image', 'url(\"' + res + '\")');\r\n }\r\n }\r\n })\r\n .catch(function (err) {\r\n console.error(err);\r\n });\r\n });\r\n scope.$on('$destroy', deregister);\r\n }\r\n };\r\n\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.searchlink', [])\r\n\r\n /* @ngInject */\r\n .directive('searchLink', [\"HttpService\", function (HttpService) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attrs) {\r\n element.click(function (event) {\r\n HttpService.post({\r\n url: 'Search/SearchLog',\r\n data: {\r\n Query: attrs.searchQuery,\r\n Id: attrs.searchId,\r\n Index: attrs.searchIndex,\r\n Type: ''\r\n }\r\n });\r\n });\r\n scope.$on('$destroy', function () {\r\n element.off('click');\r\n });\r\n }\r\n };\r\n }]);\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n 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: function (scope, element) {\r\n\r\n element.click(function (event) {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n });\r\n scope.$on('$destroy', function () {\r\n element.off('click');\r\n });\r\n\r\n }\r\n };\r\n\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.tab-equal-heights', [])\r\n\r\n /* @ngInject */\r\n .directive('tabEqualHeights', [\"$timeout\", function ($timeout) {\r\n return {\r\n link: function (scope, element) {\r\n $timeout(function () {\r\n var $tabs = element.children('.tab-pane');\r\n $tabs.show().children('.content').equalHeights().end().removeAttr('style');\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directive.video-player', [])\r\n\r\n /* @ngInject */\r\n .factory('VideoPlayerService', [\"$timeout\", function ($timeout) {\r\n var load,\r\n queue = [];\r\n\r\n var service = {\r\n add: add\r\n };\r\n return service;\r\n\r\n ////////////\r\n\r\n function add(element, scope) {\r\n if (angular.isUndefined($.fn.pPlayer)) {\r\n queue.push({ element: element, scope: scope });\r\n if (!load) {\r\n load = true;\r\n $.ajax({\r\n url: '/js/jquery.pplayer.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n start();\r\n }\r\n });\r\n }\r\n } else {\r\n init(element, scope);\r\n }\r\n }\r\n\r\n function start() {\r\n _.each(queue, function (item) {\r\n init(item.element, item.scope);\r\n });\r\n }\r\n\r\n function init(element, scope) {\r\n var id = getYouTubeIdFromUrl(scope.url);\r\n element.children('.player').pPlayer({\r\n youtubeVideoId: id,\r\n autoplay: scope.autoplay ? 1 : 0,\r\n adapter: 'Youtube',\r\n showinfo: 0,\r\n features: [ 'playpause', 'progress', 'timer', 'quality', 'mute', 'fullscreen' ],\r\n resizeVideo: false,\r\n afterInit: function () {\r\n $timeout(function () {\r\n scope.showLoader = false;\r\n });\r\n var $mainVideo = element.parent().parent();\r\n if ($mainVideo.hasClass('main-video')) {\r\n $mainVideo.children('.inner').addClass('in');\r\n }\r\n }\r\n });\r\n }\r\n\r\n function getYouTubeIdFromUrl(youtubeUrl) {\r\n var regExp = /^.*(youtu.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=)([^#\\&\\?]*).*/;\r\n var match = youtubeUrl.match(regExp);\r\n if (match && match[2].length === 11) {\r\n return match[2];\r\n }\r\n return false;\r\n }\r\n }])\r\n\r\n /* @ngInject */\r\n .directive('videoPlayer', [\"VideoPlayerService\", function (VideoPlayerService) {\r\n return {\r\n restrict: 'E',\r\n scope: {\r\n url: '@',\r\n autoplay: '<'\r\n },\r\n templateUrl: 'directive.video-player.tpl',\r\n link: function (scope, element) {\r\n scope.showLoader = true;\r\n VideoPlayerService.add(element, scope);\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('directives.breadcrumb', [])\r\n\r\n /* @ngInject */\r\n .directive('breadcrumb', function () {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element) {\r\n $('#navMenu, #navSecondary, #navAside').find('li.active').removeClass('active');\r\n\r\n var $items = element.find('.item'),\r\n i,\r\n len = $items.length;\r\n\r\n for (i = 0; i < len; i++) {\r\n var 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\r\n /* @ngInject */\r\n .directive('breadcrumbAccount', [\"$timeout\", function ($timeout) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element) {\r\n $('#navMenu, #navSecondary, #navAside').find('li.active').removeClass('active');\r\n\r\n var $items = element.find('.item-3'),\r\n i,\r\n len = $items.length;\r\n\r\n for (i = 0; i < len; i++) {\r\n var menu = $($items[i]).data('menu');\r\n $timeout(addActive, 0, true, menu);\r\n }\r\n }\r\n };\r\n\r\n // Functions\r\n\r\n function addActive(menu) {\r\n $('#navAside').find('li[data-menu=\"' + menu + '\"]').addClass('active');\r\n }\r\n\r\n }]);\r\n\r\n})();\r\n","/*\r\n * Input directive\r\n * Version 1.0.0\r\n * Octave\r\n * Modified from .\r\n **/\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n noZoomDirective.$inject = [\"$document\"];\r\n angular\r\n .module('directives.form', [])\r\n\r\n /* @ngInject */\r\n .directive('rbInput', function () {\r\n\r\n var template = ['',\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: function (scope, element, attrs) {\r\n\r\n var $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 || 'nariko';\r\n attrs.type = attrs.type || 'text';\r\n attrs.color = attrs.color || '1';\r\n var optRequired = attrs.optRequired === 'true' ? ' opt-required' : '';\r\n\r\n var inputClass = 'input-filled';\r\n\r\n element\r\n .addClass('form-control input-field input-field-' + attrs.theme)\r\n .parent().addClass('input-' + attrs.theme + optRequired);\r\n\r\n var $label = element.parent().find('label');\r\n $label\r\n .attr('for', attrs.id)\r\n .addClass('input-label-' + attrs.theme)\r\n .find('.input-label-content').addClass('input-label-content-' + attrs.theme);\r\n\r\n if (angular.isDefined(attrs.label)) {\r\n if (attrs.required) {\r\n scope.label = scope.label + ' *';\r\n }\r\n $label.find('.input-label-content').html(scope.label);\r\n }\r\n\r\n if (angular.isDefined(attrs.placeholder)) {\r\n if (attrs.required) {\r\n element.attr('placeholder', attrs.placeholder + ' *');\r\n }\r\n }\r\n\r\n if (scope.icon && scope.icon !== '') {\r\n element.addClass('with-icon');\r\n $label.prepend('');\r\n }\r\n\r\n onInputChange();\r\n scope.input.on('focus', onInputFocus);\r\n scope.input.on('blur', onInputBlur);\r\n\r\n // To detect browser autofill\r\n scope.input.on('change', onInputChange);\r\n\r\n if (angular.isDefined(attrs.ngRequired)) {\r\n scope.$watch(function () { return scope.ngRequired; }, function (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 scope.$watch(function () { return scope.input.val(); }, function () {\r\n onInputChange();\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', [\"$parse\", function ($parse) {\r\n return {\r\n restrict: 'A',\r\n require: 'ngModel',\r\n link: function (scope, element, attrs) {\r\n var 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\n /* @ngInject */\r\n function noZoomDirective($document) {\r\n var maxScale = ',maximum-scale=';\r\n\r\n var viewport = _.find($document[0].getElementsByTagName('meta'), function (tag) {\r\n return tag.name === 'viewport';\r\n });\r\n var content = viewport.content;\r\n\r\n function changeViewport(event) {\r\n if (event.type === 'blur') {\r\n viewport.content = content;\r\n } else {\r\n viewport.content = content + maxScale + 1;\r\n }\r\n }\r\n\r\n return {\r\n link: function (scope, element) {\r\n element.on('focus blur', changeViewport);\r\n }\r\n };\r\n }\r\n\r\n})();\r\n","!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=4)}([function(t,e,n){var r,i,a;!function(o,s){\"use strict\";i=[n(3)],void 0===(a=\"function\"==typeof(r=function(t){var e=/(^|@)\\S+\\:\\d+/,n=/^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m,r=/^(eval@)?(\\[native code\\])?$/;function i(t,e,n){if(\"function\"==typeof Array.prototype.map)return t.map(e,n);for(var r=new Array(t.length),i=0;i-1&&(e=e.replace(/eval code/g,\"eval\").replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g,\"\"));var n=e.replace(/^\\s+/,\"\").replace(/\\(eval code/g,\"(\").split(/\\s+/).slice(1),r=this.extractLocation(n.pop()),i=n.join(\" \")||void 0,a=function(t,e){if(\"function\"==typeof Array.prototype.indexOf)return t.indexOf(e);for(var n=0;n\"],r[0])>-1?void 0:r[0];return new t(i,void 0,a,r[1],r[2],e)}),this)},parseFFOrSafari:function(e){return i(a(e.stack.split(\"\\n\"),(function(t){return!t.match(r)}),this),(function(e){if(e.indexOf(\" > eval\")>-1&&(e=e.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g,\":$1\")),-1===e.indexOf(\"@\")&&-1===e.indexOf(\":\"))return new t(e);var n=e.split(\"@\"),r=this.extractLocation(n.pop()),i=n.join(\"@\")||void 0;return new t(i,void 0,r[0],r[1],r[2],e)}),this)},parseOpera:function(t){return!t.stacktrace||t.message.indexOf(\"\\n\")>-1&&t.message.split(\"\\n\").length>t.stacktrace.split(\"\\n\").length?this.parseOpera9(t):t.stack?this.parseOpera11(t):this.parseOpera10(t)},parseOpera9:function(e){for(var n=/Line (\\d+).*script (?:in )?(\\S+)/i,r=e.message.split(\"\\n\"),i=[],a=2,o=r.length;a/,\"$2\").replace(/\\([^\\)]*\\)/g,\"\")||void 0;a.match(/\\(([^\\)]*)\\)/)&&(n=a.replace(/^[^\\(]+\\(([^\\)]*)\\)$/,\"$1\"));var s=void 0===n||\"[arguments not available]\"===n?void 0:n.split(\",\");return new t(o,s,i[0],i[1],i[2],e)}),this)}}})?r.apply(e,i):r)||(t.exports=a)}()},,,function(t,e,n){var r,i,a;!function(n,o){\"use strict\";i=[],void 0===(a=\"function\"==typeof(r=function(){function t(t){return!isNaN(parseFloat(t))&&isFinite(t)}function e(t,e,n,r,i,a){void 0!==t&&this.setFunctionName(t),void 0!==e&&this.setArgs(e),void 0!==n&&this.setFileName(n),void 0!==r&&this.setLineNumber(r),void 0!==i&&this.setColumnNumber(i),void 0!==a&&this.setSource(a)}return e.prototype={getFunctionName:function(){return this.functionName},setFunctionName:function(t){this.functionName=String(t)},getArgs:function(){return this.args},setArgs:function(t){if(\"[object Array]\"!==Object.prototype.toString.call(t))throw new TypeError(\"Args must be an Array\");this.args=t},getFileName:function(){return this.fileName},setFileName:function(t){this.fileName=String(t)},getLineNumber:function(){return this.lineNumber},setLineNumber:function(e){if(!t(e))throw new TypeError(\"Line Number must be a Number\");this.lineNumber=Number(e)},getColumnNumber:function(){return this.columnNumber},setColumnNumber:function(e){if(!t(e))throw new TypeError(\"Column Number must be a Number\");this.columnNumber=Number(e)},getSource:function(){return this.source},setSource:function(t){this.source=String(t)},toString:function(){return(this.getFunctionName()||\"{anonymous}\")+(\"(\"+(this.getArgs()||[]).join(\",\")+\")\")+(this.getFileName()?\"@\"+this.getFileName():\"\")+(t(this.getLineNumber())?\":\"+this.getLineNumber():\"\")+(t(this.getColumnNumber())?\":\"+this.getColumnNumber():\"\")}},e})?r.apply(e,i):r)||(t.exports=a)}()},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"init\",(function(){return le})),n.d(e,\"apmBase\",(function(){return pe})),n.d(e,\"ApmBase\",(function(){return de})),n.d(e,\"apm\",(function(){return pe}));var r=function(t){var e=this.constructor;return this.then((function(n){return e.resolve(t()).then((function(){return n}))}),(function(n){return e.resolve(t()).then((function(){return e.reject(n)}))}))},i=setTimeout;function a(t){return Boolean(t&&void 0!==t.length)}function o(){}function s(t){if(!(this instanceof s))throw new TypeError(\"Promises must be constructed via new\");if(\"function\"!=typeof t)throw new TypeError(\"not a function\");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],l(t,this)}function c(t,e){for(;3===t._state;)t=t._value;0!==t._state?(t._handled=!0,s._immediateFn((function(){var n=1===t._state?e.onFulfilled:e.onRejected;if(null!==n){var r;try{r=n(t._value)}catch(t){return void f(e.promise,t)}u(e.promise,r)}else(1===t._state?u:f)(e.promise,t._value)}))):t._deferreds.push(e)}function u(t,e){try{if(e===t)throw new TypeError(\"A promise cannot be resolved with itself.\");if(e&&(\"object\"==typeof e||\"function\"==typeof e)){var n=e.then;if(e instanceof s)return t._state=3,t._value=e,void d(t);if(\"function\"==typeof n)return void l((r=n,i=e,function(){r.apply(i,arguments)}),t)}t._state=1,t._value=e,d(t)}catch(e){f(t,e)}var r,i}function f(t,e){t._state=2,t._value=e,d(t)}function d(t){2===t._state&&0===t._deferreds.length&&s._immediateFn((function(){t._handled||s._unhandledRejectionFn(t._value)}));for(var e=0,n=t._deferreds.length;e0)return r}}()}}function I(t){return O(t,m.call(arguments,1),!1)}function j(t){return O(t,m.call(arguments,1),!0)}function F(t){return void 0===t}function A(){}function P(t){return t.replace(/[.*\"]/g,\"_\")}function R(){return _.now()}function q(t){return\"number\"==typeof t&&t>=0?t:R()}function M(t,e){return F(e)||F(t)?null:parseInt(e-t)}function H(t){g.resolve().then(t)}function z(){return\"function\"==typeof _.getEntriesByType}function D(t){return\"undefined\"!=typeof PerformanceObserver&&PerformanceObserver.supportedEntryTypes&&PerformanceObserver.supportedEntryTypes.indexOf(t)>=0}var B={fetchInProgress:!1};function U(t){return\"__apm_symbol__\"+t}function $(t,e,n){for(var r=t;r&&!r.hasOwnProperty(e);)r=Object.getPrototypeOf(r);!r&&t[e]&&(r=t);var i,a,o,s,c=U(e);if(r&&!(i=r[c])){i=r[c]=r[e];var u=r&&Object.getOwnPropertyDescriptor(r,e);if(!(s=u)||!1!==s.writable&&(\"function\"!=typeof s.get||void 0!==s.set)){var f=n(i,c,e);r[e]=function(){return f(this,arguments)},a=r[e],o=i,a[U(\"OriginalDelegate\")]=o}}return i}var V=U(\"xhrIgnore\"),J=U(\"xhrSync\"),X=U(\"xhrURL\"),Z=U(\"xhrMethod\"),G=\"invoke\",W=[\"link\",\"css\",\"script\",\"img\",\"xmlhttprequest\",\"fetch\",\"beacon\",\"iframe\"],K=\"page-load\",Q=[K,\"route-change\",\"user-interaction\",\"http-request\",\"custom\",\"temporary\"];function Y(t){var e=XMLHttpRequest.prototype;if(e&&e.addEventListener)var n=$(e,\"open\",(function(){return function(t,e){return t[V]||(t[Z]=e[0],t[X]=e[1],t[J]=!1===e[2]),n.apply(t,e)}})),r=$(e,\"send\",(function(){return function(e,n){if(e[V])return r.apply(e,n);var a={source:\"xmlhttprequest\",state:\"\",type:\"macroTask\",data:{target:e,method:e[Z],sync:e[J],url:e[X],status:\"\"}};try{return function(e){if(\"schedule\"!==e.state){e.state=\"schedule\",t(\"schedule\",e);var n=e.data.target;r(\"readystatechange\"),r(\"load\"),r(\"timeout\"),r(\"error\"),r(\"abort\")}function r(t){n.addEventListener(t,(function(t){var r=t.type;\"readystatechange\"===r?4===n.readyState&&0!==n.status&&i(e,\"success\"):i(e,\"load\"===r?\"success\":r)}))}}(a),r.apply(e,n)}catch(t){throw i(a,\"error\"),t}}}));function i(e,n){e.state!==G&&(e.state=G,e.data.status=n,t(G,e))}}for(var tt=[\"click\"],et={},nt=0;nt=0&&\"function\"==typeof n}var at=function(){function t(){this.observers={}}var e=t.prototype;return e.observe=function(t,e){var n=this;if(\"function\"==typeof e)return this.observers[t]||(this.observers[t]=[]),this.observers[t].push(e),function(){var r=n.observers[t].indexOf(e);r>-1&&n.observers[t].splice(r,1)}},e.sendOnly=function(t,e){var n=this.observers[t];n&&n.forEach((function(t){try{t.apply(void 0,e)}catch(t){console.log(t,t.stack)}}))},e.send=function(t,e){this.sendOnly(t+\":before\",e),this.sendOnly(t,e),this.sendOnly(t+\":after\",e)},t}(),ot=new at,st=!1;function ct(){return st||(st=!0,Y((function(t,e){ot.send(\"xmlhttprequest\",[t,e])})),function(t){if(window.fetch&&window.Request){var e=window.fetch;window.fetch=function(t,i){var a,o,s=this,c=arguments;if(\"string\"==typeof t)a=new Request(t,i),o=t;else{if(!t)return e.apply(s,c);o=(a=t).url}var u={source:\"fetch\",state:\"\",type:\"macroTask\",data:{target:a,method:a.method,url:o,aborted:!1}};return new g((function(t,i){var o;B.fetchInProgress=!0,n(u);try{o=e.apply(s,[a])}catch(t){return i(t),u.data.error=t,r(u),void(B.fetchInProgress=!1)}o.then((function(e){t(e),H((function(){u.data.response=e,r(u)}))}),(function(t){i(t),H((function(){u.data.error=t,r(u)}))})),B.fetchInProgress=!1}))}}function n(e){e.state=\"schedule\",t(\"schedule\",e)}function r(e){e.state=G,t(G,e)}}((function(t,e){ot.send(\"fetch\",[t,e])})),function(t){if(window.history){var e=history.pushState;\"function\"==typeof e&&(history.pushState=function(n,r,i){var a={source:\"history\",data:{state:n,title:r,url:i}};t(G,a),e.apply(this,arguments)})}}((function(t,e){ot.send(\"history\",[t,e])})),function(t){if(window.EventTarget){var e=window.EventTarget.prototype,n=e.addEventListener,r=e.removeEventListener;e.addEventListener=function(t,e,r){var i=this;if(!it(i,t,e))return n.apply(i,arguments);var a=o(i,t,e,r),s=Array.prototype.slice.call(arguments);return s[1]=a,n.apply(i,s)},e.removeEventListener=function(t,e,n){var i=this;if(!it(i,t,e))return r.apply(i,arguments);var a=s(i,t,e,n),o=Array.prototype.slice.call(arguments);return o[1]=a,r.apply(i,o)}}function i(t,e,n,r){for(var i=0;i1?[\"Object\",n[n.length-1]].join(\".\"):n[0]).replace(/.<$/gi,\".\")).replace(/^Anonymous function$/,\"\"),e=(n=e.split(\".\")).length>1?n[n.length-1]:n[0])),t;var e,n})).map((function(t){var e=t.fileName,n=t.lineNumber,r=t.columnNumber,i=t.functionName,a=void 0===i?\"\":i;if(!e&&!n)return{};if(!r&&!n)return{};var o,s,c=function(t){return void 0===t&&(t=\"\"),\"\"===t&&(t=\"\"),t}(e),u=(o=c,s=window.location.origin||window.location.protocol+\"//\"+window.location.hostname+(window.location.port?\":\"+window.location.port:\"\"),o.indexOf(s)>-1&&(o=o.replace(s+\"/\",\"\")),o);return function(t){return!!t&&0===window.location.href.indexOf(t)}(c)&&(u=\"(inline script)\"),{abs_path:e,filename:u,function:a,lineno:n,colno:r}}))}var ht=[[\"#\",\"hash\"],[\"?\",\"query\"],[\"/\",\"path\"],[\"@\",\"auth\",1],[NaN,\"host\",void 0,1]],gt=/^([a-z][a-z0-9.+-]*:)?(\\/\\/)?([\\S\\s]*)/i,mt=function(){function t(t){var e,n=this.extractProtocol(t||\"\"),r=n.protocol,i=n.address,a=n.slashes,o=!r&&!a,s=this.getLocation(),c=ht.slice();i=i.replace(\"\\\\\",\"/\"),a||(c[2]=[NaN,\"path\"]);for(var u=0;u=0||(i[n]=t[n]);return i}(n,[\"tags\"])),i=bt(),a={};if(t.type===K&&z()){var o=_.getEntriesByType(\"navigation\");o&&o.length>0&&(a={response:yt(o[0])})}t.addContext(i,a,r)}var Tt={service:{name:[1024,!0],version:!0,agent:{version:[1024,!0]},environment:!0},labels:{\"*\":!0}},Et={\"*\":!0,headers:{\"*\":!0}},xt={user:{id:!0,email:!0,username:!0},tags:{\"*\":!0},http:{response:Et},destination:{address:[1024],service:{\"*\":[1024,!0]}},response:Et},kt={name:[1024,!0],type:[1024,!0],id:[1024,!0],trace_id:[1024,!0],parent_id:[1024,!0],transaction_id:[1024,!0],subtype:!0,action:!0,context:xt},Lt={name:!0,parent_id:!0,type:[1024,!0],id:[1024,!0],trace_id:[1024,!0],span_count:{started:[1024,!0]},context:xt},Ct={id:[1024,!0],trace_id:!0,transaction_id:!0,parent_id:!0,culprit:!0,exception:{type:!0},transaction:{type:!0},context:xt};function Ot(t){return null==t||\"\"===t||void 0===t}function Nt(t,e,n){var r=function(t,e,n,r){return void 0===e&&(e=1024),void 0===n&&(n=!1),void 0===r&&(r=\"N/A\"),n&&Ot(t)&&(t=r),\"string\"==typeof t?t.substring(0,e):t}(t[e],n[0],n[1]);Ot(r)?delete t[e]:t[e]=r}function It(t,e,n){void 0===t&&(t={}),void 0===n&&(n=e);for(var r=Object.keys(t),i=[],a=function(a){var o=r[a],s=!0===t[o]?i:t[o];Array.isArray(s)?\"*\"===o?Object.keys(n).forEach((function(t){return Nt(n,t,s)})):Nt(n,o,s):It(s,e,n[o])},o=0;o=0)){var i=t[r];if(null!=i&&\"function\"!=typeof i){if(\"object\"==typeof i){if(\"function\"!=typeof i.toISOString)return;i=i.toISOString()}n[r]=i,e=!0}}})),e)return n}(a);u&&(c.custom=u)}s||o&&o.indexOf(\":\")>-1&&(s=o.split(\":\")[0]);var f=this._transactionService.getCurrentTransaction(),d=f?f.context:{},p=this._configService.get(\"context\"),l=(p.tags,function(t,e){if(null==t)return{};var n,r,i={},a=Object.keys(t);for(r=0;r=0||(i[n]=t[n]);return i}(p,[\"tags\"])),v=j({},bt(),d,l,c),h={id:T(),culprit:n,exception:{message:o,stacktrace:e,type:s},context:v};return f&&(h=I(h,{trace_id:f.traceId,parent_id:f.id,transaction_id:f.id,transaction:{type:f.type,sampled:f.sampled}})),It(Ct,h)},e.logErrorEvent=function(t){if(void 0!==t){var e=this.createErrorDataModel(t);void 0!==e.exception.message&&this._apmServer.addError(e)}},e.registerListeners=function(){var t=this;window.addEventListener(\"error\",(function(e){return t.logErrorEvent(e)})),window.addEventListener(\"unhandledrejection\",(function(e){return t.logPromiseEvent(e)}))},e.logPromiseEvent=function(t){var e,n=\"Unhandled promise rejection: \",r=t.reason,i=void 0===r?\"\":r;\"string\"==typeof i.message?e={error:i,message:n+(i.name?i.name+\": \":\"\")+i.message}:e={message:n+(i=\"object\"==typeof i?\"\":\"function\"==typeof i?\"\":i)};this.logErrorEvent(e)},e.logError=function(t){var e={};return\"string\"==typeof t?e.message=t:e.error=t,this.logErrorEvent(e)},t}(),At=function(){function t(t,e){void 0===e&&(e={}),this.onFlush=t,this.items=[],this.queueLimit=e.queueLimit||-1,this.flushInterval=e.flushInterval||0,this.timeoutId=void 0}var e=t.prototype;return e._setTimer=function(){var t=this;this.timeoutId=setTimeout((function(){return t.flush()}),this.flushInterval)},e._clear=function(){void 0!==this.timeoutId&&(clearTimeout(this.timeoutId),this.timeoutId=void 0),this.items=[]},e.flush=function(){this.onFlush(this.items),this._clear()},e.add=function(t){this.items.push(t),-1!==this.queueLimit&&this.items.length>=this.queueLimit?this.flush():void 0===this.timeoutId&&this._setTimer()},t}();var Pt=function(){function t(){}return t.stringify=function(t){return JSON.stringify(t)+\"\\n\"},t}(),Rt=function(){function t(t,e,n){void 0===n&&(n={}),t||(t=\"Unknown\"),e||(e=\"custom\"),this.name=t,this.type=e,this.options=n,this.id=n.id||T(16),this.traceId=n.traceId,this.sampled=n.sampled,this.timestamp=n.timestamp,this._start=q(n.startTime),this._end=void 0,this.ended=!1,this.outcome=void 0,this.onEnd=n.onEnd}var e=t.prototype;return e.ensureContext=function(){this.context||(this.context={})},e.addLabels=function(t){this.ensureContext();var e=this.context;e.tags||(e.tags={}),Object.keys(t).forEach((function(n){return k(n,t[n],e.tags)}))},e.addContext=function(){for(var t=arguments.length,e=new Array(t),n=0;n=i&&e>t&&t-i>=n&&e-i<=r&&e-t<3e5&&t-i<3e5&&e-i<3e5}function zt(t){var e=t.name,n=t.initiatorType,r=t.startTime,i=t.responseEnd,a=\"resource\";n&&(a+=\".\"+n);var o=L(e),s=new qt(o,a);return s._start=r,s.end(i,{url:e,entry:t}),s}function Dt(t,e){return null!=e&&t>e}var Bt=[\"fetchStart\",\"domainLookupStart\",\"domainLookupEnd\",\"connectStart\",\"connectEnd\",\"requestStart\",\"responseStart\",\"responseEnd\",\"domLoading\",\"domInteractive\",\"domContentLoadedEventStart\",\"domContentLoadedEventEnd\",\"domComplete\",\"loadEventStart\",\"loadEventEnd\"],Ut=[\"fs\",\"ls\",\"le\",\"cs\",\"ce\",\"qs\",\"rs\",\"re\",\"dl\",\"di\",\"ds\",\"de\",\"dc\",\"es\",\"ee\"];function $t(t){var e=function(t){var e=t.fetchStart,n=t.navigationStart,r=t.responseStart,i=t.responseEnd;if(e>=n&&r>=e&&i>=r){var a={};return Bt.forEach((function(n){var r=t[n];r&&r>=e&&(a[n]=parseInt(r-e))})),a}return null}(t);return null==e?null:{navigationTiming:e,agent:{timeToFirstByte:e.responseStart,domInteractive:e.domInteractive,domComplete:e.domComplete}}}function Vt(t){if(t.captureTimings){var e=t._end;if(t.type===K){if(t.marks&&t.marks.custom){var n=t.marks.custom;Object.keys(n).forEach((function(e){n[e]+=t._start}))}t._start=0;var r=_.timing;(function(t,e,n,r){for(var i=[],a=0;aa&&\"function\"==typeof e?e.apply(i,arguments):t.apply(i,arguments)}}(this.queue.add.bind(this.queue),(function(){return t._loggingService.warn(\"Dropped events due to throttling!\")}),{limit:r,interval:6e4})},e._postJson=function(t,e){var n=this,r={\"Content-Type\":\"application/x-ndjson\"};return function(t,e,n){void 0===n&&(n=\"gzip\");var r=\"function\"==typeof CompressionStream;return new g((function(i){if(!r)return i({payload:t,headers:e});var a=new Blob([t]).stream().pipeThrough(new CompressionStream(n));return new Response(a).blob().then((function(t){return e[\"Content-Encoding\"]=n,i({payload:t,headers:e})}))}))}(e,r).catch((function(t){return{payload:e,headers:r}})).then((function(e){return n._makeHttpRequest(\"POST\",t,e)})).then((function(t){return t.responseText}))},e._constructError=function(t){var e=t.url,n=t.status;t.responseText;if(void 0===n)return t;var r=e+\" HTTP status: \"+n;return new Error(r)},e._makeHttpRequest=function(t,e,n){var r=void 0===n?{}:n,i=r.timeout,a=void 0===i?1e4:i,o=r.payload,s=r.headers;return new g((function(n,r){var i=new window.XMLHttpRequest;if(i[V]=!0,i.open(t,e,!0),i.timeout=a,s)for(var c in s)s.hasOwnProperty(c)&&i.setRequestHeader(c,s[c]);i.onreadystatechange=function(){if(4===i.readyState){var t=i.status,a=i.responseText;0===t||t>399&&t<600?r({url:e,status:t,responseText:a}):n(i)}},i.onerror=function(){var t=i.status,n=i.responseText;r({url:e,status:t,responseText:n})},i.send(o)}))},e.fetchConfig=function(t,e){var n=this,r=this._configService.get(\"serverUrl\")+\"/config/v1/rum/agents\";if(!t)return g.reject(\"serviceName is required for fetching central config.\");r+=\"?service.name=\"+t,e&&(r+=\"&service.environment=\"+e);var i=this._configService.getLocalConfig();return i&&(r+=\"&ifnonematch=\"+i.etag),this._makeHttpRequest(\"GET\",r,{timeout:5e3}).then((function(t){var e=t.status,r=t.responseText;if(304===e)return i;var a=JSON.parse(r),o=t.getResponseHeader(\"etag\");return o&&(a.etag=o.replace(/[\"]/g,\"\"),n._configService.setLocalConfig(a)),a})).catch((function(t){var e=n._constructError(t);return g.reject(e)}))},e.createMetaData=function(){var t=this._configService,e={service:{name:t.get(\"serviceName\"),version:t.get(\"serviceVersion\"),agent:{name:\"rum-js\",version:t.version},language:{name:\"javascript\"},environment:t.get(\"environment\")},labels:t.get(\"context.tags\")};return It(Tt,e)},e.addError=function(t){var e;this.throttleEvents(((e={}).errors=t,e))},e.addTransaction=function(t){var e;this.throttleEvents(((e={}).transactions=t,e))},e.ndjsonErrors=function(t,e){var n=e?\"e\":\"error\";return t.map((function(t){var r;return Pt.stringify(((r={})[n]=e?function(t){var e,n=t.exception,r={id:t.id,cl:t.culprit,ex:{mg:n.message,st:(e=n.stacktrace,e.map((function(t){return{ap:t.abs_path,f:t.filename,fn:t.function,li:t.lineno,co:t.colno}}))),t:t.type},c:Xt(t.context)},i=t.transaction;return i&&(r.tid=t.trace_id,r.pid=t.parent_id,r.xid=t.transaction_id,r.x={t:i.type,sm:i.sampled}),r}(t):t,r))}))},e.ndjsonMetricsets=function(t){return t.map((function(t){return Pt.stringify({metricset:t})})).join(\"\")},e.ndjsonTransactions=function(t,e){var n=this,r=e?\"x\":\"transaction\";return t.map((function(t){var i,a=\"\",o=\"\";return e||(t.spans&&(a=t.spans.map((function(t){return Pt.stringify({span:t})})).join(\"\"),delete t.spans),t.breakdown&&(o=n.ndjsonMetricsets(t.breakdown),delete t.breakdown)),Pt.stringify(((i={})[r]=e?function(t){var e,n=t.spans.map((function(e){var n={id:e.id,n:e.name,t:e.type,s:e.start,d:e.duration,c:Xt(e.context),o:e.outcome};return e.parent_id!==t.id&&(n.pid=e.parent_id),!0===e.sync&&(n.sy=!0),e.subtype&&(n.su=e.subtype),e.action&&(n.ac=e.action),n})),r={id:t.id,tid:t.trace_id,n:t.name,t:t.type,d:t.duration,c:Xt(t.context),m:Zt(t.marks),me:(e=t.breakdown,e.map((function(t){var e=t.span,n=t.samples,r=null!=e;return r?{y:{t:e.type},sa:{ysc:{v:n[\"span.self_time.count\"].value},yss:{v:n[\"span.self_time.sum.us\"].value}}}:{sa:{xdc:{v:n[\"transaction.duration.count\"].value},xds:{v:n[\"transaction.duration.sum.us\"].value},xbc:{v:n[\"transaction.breakdown.count\"].value}}}}))),y:n,yc:{sd:n.length},sm:t.sampled,o:t.outcome};if(t.experience){var i=t.experience,a=i.cls,o=i.fid,s=i.tbt,c=i.longtask;r.exp={cls:a,fid:o,tbt:s,lt:c}}return r}(t):t,i))+a+o}))},e.sendEvents=function(t){var e,n;if(0!==t.length){for(var r=[],i=[],a=0;a2,p=[],l=this.createMetaData(),v=d?\"m\":\"metadata\";p.push(Pt.stringify(((n={})[v]=d?function(t){var e=t.service,n=t.labels,r=e.agent,i=e.language;return{se:{n:e.name,ve:e.version,a:{n:r.name,ve:r.version},la:{n:i.name},en:e.environment},l:n}}(l):l,n)));var h=(p=p.concat(this.ndjsonErrors(u.errors,d),this.ndjsonTransactions(u.transactions,d))).join(\"\"),g=s.get(\"serverUrl\")+\"/intake/v\"+f+\"/rum/events\";return this._postJson(g,h)}this._loggingService.warn(\"Dropped payload due to filtering!\")}}},t}();var Wt,Kt=function(){function t(){this.config={serviceName:\"\",serviceVersion:\"\",environment:\"\",serverUrl:\"http://localhost:8200\",active:!0,instrument:!0,disableInstrumentations:[],logLevel:\"warn\",breakdownMetrics:!1,ignoreTransactions:[],eventsLimit:80,queueLimit:-1,flushInterval:500,distributedTracing:!0,distributedTracingOrigins:[],distributedTracingHeaderName:\"traceparent\",pageLoadTraceId:\"\",pageLoadSpanId:\"\",pageLoadSampled:!1,pageLoadTransactionName:\"\",transactionSampleRate:1,centralConfig:!1,monitorLongtasks:!0,apiVersion:2,context:{}},this.events=new at,this.filters=[],this.version=\"\"}var e=t.prototype;return e.init=function(){var t=function(t){if(!t)return{};for(var e={},n=/^data-([\\w-]+)$/,r=t.attributes,i=0;i0?t.charAt(0).toUpperCase()+t.substring(1):t})).join(\"\");e[o]=a.value||a.nodeValue}}return e}(N());this.setConfig(t)},e.setVersion=function(t){this.version=t},e.addFilter=function(t){if(\"function\"!=typeof t)throw new Error(\"Argument to must be function\");this.filters.push(t)},e.applyFilters=function(t){for(var e=0;e0&&(n=1e-4),t.transactionSampleRate=Math.round(1e4*n)/1e4),j(this.config,t),this.events.send(\"config:change\",[this.config])},e.validate=function(t){void 0===t&&(t={});var e=[\"serviceName\",\"serverUrl\"],n={missing:[],invalid:[]};Object.keys(t).forEach((function(r){-1===e.indexOf(r)||t[r]||n.missing.push(r)})),t.serviceName&&!/^[a-zA-Z0-9 _-]+$/.test(t.serviceName)&&n.invalid.push({key:\"serviceName\",value:t.serviceName,allowed:\"a-z, A-Z, 0-9, _, -, \"});var r=t.transactionSampleRate;return void 0!==r&&(\"number\"!=typeof r||isNaN(r)||r<0||r>1)&&n.invalid.push({key:\"transactionSampleRate\",value:r,allowed:\"Number between 0 and 1\"}),n},e.getLocalConfig=function(){var t=sessionStorage.getItem(\"elastic_apm_config\");if(t)return JSON.parse(t)},e.setLocalConfig=function(t){t&&sessionStorage.setItem(\"elastic_apm_config\",JSON.stringify(t))},t}(),Qt=function(){function t(t){void 0===t&&(t={}),this.levels=[\"trace\",\"debug\",\"info\",\"warn\",\"error\"],this.level=t.level||\"warn\",this.prefix=t.prefix||\"\",this.resetLogMethods()}var e=t.prototype;return e.shouldLog=function(t){return this.levels.indexOf(t)>=this.levels.indexOf(this.level)},e.setLevel=function(t){t!==this.level&&(this.level=t,this.resetLogMethods())},e.resetLogMethods=function(){var t=this;this.levels.forEach((function(e){t[e]=t.shouldLog(e)?function(){var t=e;\"trace\"!==e&&\"debug\"!==e||(t=\"info\");var n=arguments;if(n[0]=this.prefix+n[0],console){var r=console[t]||console.log;\"function\"==typeof r&&r.apply(console,n)}}:A}))},t}(),Yt=((Wt={}).ConfigService=function(){return new Kt},Wt.LoggingService=function(){return new Qt({prefix:\"[Elastic APM] \"})},Wt.ApmServer=function(t){var e=t.getService([\"ConfigService\",\"LoggingService\"]),n=e[0],r=e[1];return new Gt(n,r)},Wt),te=function(){function t(){this.instances={},this.initialized=!1}var e=t.prototype;return e.init=function(){if(!this.initialized){this.initialized=!0;var t=this.getService(\"ConfigService\");t.init();var e=this.getService([\"LoggingService\",\"ApmServer\"]),n=e[0],r=e[1];t.events.observe(\"config:change\",(function(){var e=t.get(\"logLevel\");n.setLevel(e)})),r.init()}},e.getService=function(t){var e=this;return\"string\"==typeof t?(this.instances[t]||\"function\"==typeof Yt[t]&&(this.instances[t]=Yt[t](this)),this.instances[t]):Array.isArray(t)?t.map((function(t){return e.getService(t)})):void 0},t}();var ee=function(){function t(t,e,n,r){this._apmServer=t,this._configService=e,this._logginService=n,this._transactionService=r}var e=t.prototype;return e.init=function(t){var e=this;void 0===t&&(t={}),this._configService.events.observe(\"transaction:end:after\",(function(t){var n=e.createTransactionPayload(t);n&&e._apmServer.addTransaction(n)})),t.history&&ot.observe(\"history\",this.getHistorySub()),t.xmlhttprequest&&ot.observe(\"xmlhttprequest\",this.getXHRSub()),t.fetch&&ot.observe(\"fetch\",this.getFetchSub()),t.eventtarget&&ot.observe(\"eventtarget\",this.getEventTargetSub())},e.getEventTargetSub=function(){var t=this._transactionService;return function(e,n){if(\"schedule\"===e&&\"eventtarget\"===n.source&&\"click\"===n.eventType){var r=n.target,i=r.getAttribute(\"name\"),a=\"\";i&&(a='[\"'+i+'\"]');var o=r.tagName.toLowerCase(),s=t.startTransaction(\"Click - \"+o+a,\"user-interaction\",{managed:!0,canReuse:!0,reuseThreshold:100});if(s){var c=r.getAttribute(\"class\");c&&s.addContext({custom:{classes:c}})}}}},e.getHistorySub=function(){var t=this._transactionService;return function(e,n){\"history\"===n.source&&e===G&&t.startTransaction(n.data.title,\"route-change\",{managed:!0,canReuse:!0})}},e.getXHRSub=function(){var t=this;return function(e,n){\"xmlhttprequest\"!==n.source||B.fetchInProgress||t.processAPICalls(e,n)}},e.getFetchSub=function(){var t=this;return function(e,n){\"fetch\"===n.source&&t.processAPICalls(e,n)}},e.processAPICalls=function(t,e){var n=this._configService,r=this._transactionService;if(\"schedule\"===t&&e.data){var i=e.data,a=new mt(i.url),o=i.method+\" \"+(a.relative?a.path:L(a.href));r.getCurrentTransaction()||r.startTransaction(o,\"http-request\",{managed:!0});var s=r.startSpan(o,\"external.http\",{blocking:!0});if(!s)return;var c=n.get(\"distributedTracing\"),u=n.get(\"distributedTracingOrigins\"),f=new mt(window.location.href),d=E(a.origin,f.origin)||E(a.origin,u),p=i.target;c&&d&&p&&this.injectDtHeader(s,p),i.sync&&(s.sync=i.sync),i.span=s}else if(t===G){var l=e.data;if(l&&l.span){var v,h,g=l.span,m=l.response,y=l.target;v=m?m.status:y.status,\"abort\"!=l.status&&(h=v>=400||0==v?\"failure\":\"success\"),g.outcome=h;var _=r.getCurrentTransaction();_&&\"http-request\"===_.type&&(_.outcome=h),r.endSpan(g,l)}}},e.injectDtHeader=function(t,e){var n,r=this._configService.get(\"distributedTracingHeaderName\"),i=function(t){if(t&&t.traceId&&t.id&&t.parentId){var e=t.sampled?\"01\":\"00\",n=t.sampled?t.id:t.parentId;return\"00-\"+t.traceId+\"-\"+n+\"-\"+e}}(t),a=/^[\\da-f]{2}-[\\da-f]{32}-[\\da-f]{16}-[\\da-f]{2}$/.test(n=i)&&\"00000000000000000000000000000000\"!==n.slice(3,35)&&\"0000000000000000\"!==n.slice(36,52);r&&i&&a&&(\"function\"==typeof e.setRequestHeader?e.setRequestHeader(r,i):e.headers&&\"function\"==typeof e.headers.append?e.headers.append(r,i):e[r]=i)},e.extractDtHeader=function(t){var e=this._configService.get(\"distributedTracingHeaderName\");if(t)return function(t){var e=/^([\\da-f]{2})-([\\da-f]{32})-([\\da-f]{16})-([\\da-f]{2})$/.exec(t);if(e){var n=\"00\"!==e[4];return{traceId:e[2],id:e[3],sampled:n}}}(t[e])},e.filterTransaction=function(t){var e=t.duration();if(!e)return!1;if(t.isManaged()){if(e>6e4)return!1;if(t.sampled&&0===t.spans.length)return!1}return!0},e.createTransactionDataModel=function(t){var e=t._start,n=t.spans.map((function(n){var r={id:n.id,transaction_id:t.id,parent_id:n.parentId||t.id,trace_id:t.traceId,name:n.name,type:n.type,subtype:n.subtype,action:n.action,sync:n.sync,start:parseInt(n._start-e),duration:n.duration(),context:n.context,outcome:n.outcome};return It(kt,r)})),r={id:t.id,trace_id:t.traceId,name:t.name,type:t.type,duration:t.duration(),spans:n,context:t.context,marks:t.marks,breakdown:t.breakdownTimings,span_count:{started:n.length},sampled:t.sampled,experience:t.experience,outcome:t.outcome};return It(Lt,r)},e.createTransactionPayload=function(t){var e=function(t){if(t.sampled){var e=t.spans.filter((function(e){return e.duration()>0&&e._start>=t._start&&e._end<=t._end}));if(t.isManaged()){var n=function(t,e,n){t.sort((function(t,e){return t._start-e._start}));var r=[],i=1;return t.forEach((function(a,o){if(0===r.length)r.push(a);else{var s=r[r.length-1],c=s.type===a.type&&s.subtype===a.subtype&&s.action===a.action&&s.name===a.name&&a.duration()/e1&&(!c||u)&&(s.name=i+\"x \"+s.name,i=1),c||r.push(a)}})),r}(e,t.duration(),.05);t.spans=n}else t.spans=e}else t.resetSpans();return t}(t);if(this.filterTransaction(e))return this.createTransactionDataModel(t)},t}(),ne=[[\"domainLookupStart\",\"domainLookupEnd\",\"DNS\"],[\"connectStart\",\"connectEnd\",\"TCP\"],[\"requestStart\",\"responseStart\",\"Request\"],[\"responseStart\",\"responseEnd\",\"Response\"],[\"domLoading\",\"domComplete\",\"Processing\"],[\"loadEventStart\",\"loadEventEnd\",\"Load\"]];function re(t){return{value:t}}function ie(t,e){var n=e.details,r=e.count,i=void 0===r?1:r,a=e.duration;return{transaction:t,span:n,samples:{\"span.self_time.count\":re(i),\"span.self_time.sum.us\":re(a)}}}var ae=function(t){var e,n;function r(e,n,r){var i;return(i=t.call(this,e,n,r)||this).traceId=T(),i.marks=void 0,i.spans=[],i._activeSpans={},i._activeTasks=new Set,i.blocked=!1,i.captureTimings=!1,i.breakdownTimings=[],i.sampled=Math.random()<=i.options.transactionSampleRate,i}n=t,(e=r).prototype=Object.create(n.prototype),e.prototype.constructor=e,e.__proto__=n;var i=r.prototype;return i.addMarks=function(t){this.marks=j(this.marks||{},t)},i.mark=function(t){var e=P(t),n=R()-this._start,r={};r[e]=n,this.addMarks({custom:r})},i.canReuse=function(){var t=this.options.reuseThreshold||5e3;return!!this.options.canReuse&&!this.ended&&R()-this._starts?(c+=o-s,s=a):a>s&&(s=a);return se.max&&(e.max=s),c.length>0){var d=c[0],p=d.name,l=d.containerType,v=d.containerName,h=d.containerId,g={attribution:p,type:l};v&&(g.name=v),h&&(g.id=h),f.addContext({custom:g})}f.end(u),n.push(f)}return n}(r,oe.longtask),marks:{}};if(!n)return i;var a=t.getEntriesByType(\"largest-contentful-paint\"),o=a[a.length-1];if(o){var s=parseInt(o.startTime);oe.lcp=s,i.marks.largestContentfulPaint=s}var c=_.timing,u=c.fetchStart-c.navigationStart,f=t.getEntriesByName(\"first-contentful-paint\")[0];if(f){var d=parseInt(u>=0?f.startTime-u:f.startTime);oe.fcp=d,i.marks.firstContentfulPaint=d}var p=function(t){var e=t[0];if(e){var n=e.startTime,r=e.processingStart,i=new qt(\"First Input Delay\",\"first-input\",{startTime:n});return i.end(r),i}}(t.getEntriesByType(\"first-input\"));return p&&(oe.fid=p.duration(),i.spans.push(p)),function(t){t.forEach((function(t){var e=t.name,n=t.startTime,r=t.duration;if(!(n0&&(oe.tbt.duration+=i)}}))}(r),function(t){t.forEach((function(t){t.hadRecentInput||(oe.cls+=t.value)}))}(t.getEntriesByType(\"layout-shift\")),i}var ce=function(){function t(t){this.po={observe:A,disconnect:A},window.PerformanceObserver&&(this.po=new PerformanceObserver(t))}var e=t.prototype;return e.start=function(t){try{var e=!0;\"longtask\"===t&&(e=!1),this.po.observe({type:t,buffered:e})}catch(t){}},e.stop=function(){this.po.disconnect()},t}(),ue=function(){function t(t,e){var n=this;this._config=e,this._logger=t,this.currentTransaction=void 0,this.respIntervalId=void 0,this.recorder=new ce((function(t){var e=n.getCurrentTransaction();if(e&&e.captureTimings){var r,i=!1;e.type===K&&(i=!0);var a=se(t,{capturePaint:i}),o=a.spans,s=a.marks;(r=e.spans).push.apply(r,o),e.addMarks({agent:s})}}))}var e=t.prototype;return e.createCurrentTransaction=function(t,e,n){var r=new ae(t,e,n);return this.currentTransaction=r,r},e.getCurrentTransaction=function(){if(this.currentTransaction&&!this.currentTransaction.ended)return this.currentTransaction},e.createOptions=function(t){var e=this._config.config,n=I({transactionSampleRate:e.transactionSampleRate},t);return n.managed&&(n=I({pageLoadTraceId:e.pageLoadTraceId,pageLoadSampled:e.pageLoadSampled,pageLoadSpanId:e.pageLoadSpanId,pageLoadTransactionName:e.pageLoadTransactionName},n)),n},e.startManagedTransaction=function(t,e,n){var r=this.getCurrentTransaction(),i=!1;if(r)if(r.canReuse()&&n.canReuse){var a=r.type,o=Q.indexOf(r.type),s=Q.indexOf(e);o>=0&&s=t._start||e.shouldIgnoreTransaction(r)||\"temporary\"===i)){if(i===K){var a=e._config.get(\"pageLoadTransactionName\");if(\"Unknown\"===r&&a&&(t.name=a),t.captureTimings){var o=oe.cls,s=oe.fid,c=oe.tbt,u=oe.longtask;c.duration>0&&t.spans.push((d=(f=c).start,p=f.duration,(l=new qt(\"Total Blocking Time\",\"longtask\",{startTime:d})).end(d+p),l)),t.experience={},D(\"longtask\")&&(t.experience.tbt=c.duration),D(\"layout-shift\")&&(t.experience.cls=o),s>0&&(t.experience.fid=s),u.count>0&&(t.experience.longtask={count:u.count,sum:u.duration,max:u.max})}}var f,d,p,l;\"Unknown\"===t.name&&(t.name=function(t,e){void 0===e&&(e=2);for(var n=new mt(t),r=n.query,i=n.path.substring(1).split(\"/\"),a=/\\W|_/g,o=/[0-9]/g,s=/[a-z]/g,c=/[A-Z]/g,u=[],f=!1,d=0;de-1){p&&u.push(\"*\");break}if((p.match(a)||[]).length>=2)u.push(\":id\"),f=!0;else{var l=(p.match(o)||[]).length;if(l>3||p.length>3&&l/p.length>=.3)u.push(\":id\"),f=!0;else{var v=(p.match(c)||[]).length,h=(p.match(s)||[]).length/p.length,g=v/p.length;p.length>5&&(g>.3&&g<.6||h>.3&&h<.6)?(u.push(\":id\"),f=!0):p&&u.push(p)}}}return\"/\"+(u.length>=2?u.join(\"/\"):u.join(\"\"))+(r?\"?{query}\":\"\")}(n)),Vt(t),e.adjustTransactionTime(t),e._config.get(\"breakdownMetrics\")&&t.captureBreakdown();var v=e._config.get(\"context\");wt(t,v),e._config.events.send(\"transaction:end\",[t])}}),(function(t){0}))},e.adjustTransactionTime=function(t){var e=t.spans,n=function(t){for(var e=t[0],n=1;nr._start&&(e=r)}return e}(e);n&&n._startt._end&&(t._end=r._end);for(var i=t._end,a=0;ai&&(o._end=i,o.type+=\".truncated\"),o._start>i&&(o._start=i)}},e.shouldIgnoreTransaction=function(t){var e=this._config.get(\"ignoreTransactions\");if(e&&e.length)for(var n=0;n0&&(o+=r.join(\", \")+\" is missing\",i.length>0&&(o+=\", \")),i.forEach((function(t,e){var n=t.key,r=t.value,a=t.allowed;o+=n+' \"'+r+'\" contains invalid characters! (allowed: '+a+\")\"+(e!==i.length-1?\", \":\"\")})),a.error(o),e.setConfig({active:!1})}},e.setUserContext=function(t){this.serviceFactory.getService(\"ConfigService\").setUserContext(t)},e.setCustomContext=function(t){this.serviceFactory.getService(\"ConfigService\").setCustomContext(t)},e.addLabels=function(t){this.serviceFactory.getService(\"ConfigService\").addLabels(t)},e.setInitialPageLoadName=function(t){this.serviceFactory.getService(\"ConfigService\").setConfig({pageLoadTransactionName:t})},e.startTransaction=function(t,e,n){if(this.isEnabled())return this.serviceFactory.getService(\"TransactionService\").startTransaction(t,e,n)},e.startSpan=function(t,e,n){if(this.isEnabled())return this.serviceFactory.getService(\"TransactionService\").startSpan(t,e,n)},e.getCurrentTransaction=function(){if(this.isEnabled())return this.serviceFactory.getService(\"TransactionService\").getCurrentTransaction()},e.captureError=function(t){if(this.isEnabled())return this.serviceFactory.getService(\"ErrorLogging\").logError(t)},e.addFilter=function(t){this.serviceFactory.getService(\"ConfigService\").addFilter(t)},t}();var pe=function(){if(y&&window.elasticApm)return window.elasticApm;var t=dt(),e=fe(),n=new de(e,!t);return y&&(window.elasticApm=n),n}(),le=pe.init.bind(pe);e.default=le}]);\r\n//# sourceMappingURL=elastic-apm-rum.umd.min.js.map","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.decimal', [])\r\n\r\n .filter('decimal', function () {\r\n return function (value) {\r\n return String(value).replace('.', ',');\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.discount', [])\r\n\r\n /* @ngInject */\r\n .filter('discount', [\"AppService\", function (AppService) {\r\n var 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(function (data) {\r\n params = data;\r\n })\r\n .catch(function (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 var loc = params.Localization,\r\n template = loc.DiscountHTMLFormat,\r\n render = template.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\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.format', [])\r\n\r\n /* @ngInject */\r\n .filter('format', function () {\r\n return function (value) {\r\n if (!value) return value;\r\n if (arguments.length > 1) {\r\n var str = value;\r\n for (var i = 1; i < arguments.length; i++) {\r\n var reg = new RegExp('\\\\{' + (i - 1) + '\\\\}');\r\n str = str.replace(reg, arguments[i]);\r\n }\r\n return str;\r\n }\r\n return value;\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.phone', [])\r\n\r\n .filter('phoneNumber', function () {\r\n return function (num) {\r\n return _.replace(num, /\\./g, ' ');\r\n };\r\n });\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.price', [])\r\n\r\n /* @ngInject */\r\n .filter('price', [\"$rootScope\", \"AppService\", function ($rootScope, AppService) {\r\n var 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(function (data) {\r\n params = data;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function getPriceFilter(prices, str, ttc) {\r\n if (!angular.isFunction(format)) return prices;\r\n\r\n var loc = params.Localization,\r\n value,\r\n template = params.Visitor.CardType.ShowTTCPrice ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n\r\n switch (str) {\r\n case '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 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 var strMontant = format(loc.PriceFormat, parseFloat(value)),\r\n separatorIndex = strMontant.indexOf('.');\r\n\r\n var render = template.replace('[%amount%]', strMontant)\r\n .replace(',', '##PriceTSep##')\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('.', loc.PriceDecimalSeparator)\r\n .replace('##PriceTSep##', loc.PriceThousandSeparator)\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', function () {\r\n params = null;\r\n });\r\n\r\n priceFilter.$stateful = true;\r\n return priceFilter;\r\n }]);\r\n\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('filter.truncate-date', [])\r\n\r\n /* @ngInject */\r\n .filter('truncateDate', function () {\r\n return function (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\r\n})();\r\n","/**!\r\n * AngularJS dropzone directive\r\n * @author Uday Hiwarale \r\n * https://www.github.com/thatisuday/ngDropzone\r\n */\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('thatisuday.dropzone', [])\r\n\r\n .provider('dropzoneOps', function () {\r\n var defOps = {};\r\n return {\r\n setOptions: function (newOps) {\r\n angular.extend(defOps, newOps);\r\n },\r\n $get: function () {\r\n return defOps;\r\n }\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .factory('DropzoneService', function () {\r\n var load,\r\n queue = [];\r\n\r\n var service = {\r\n add: add\r\n };\r\n return service;\r\n\r\n ////////////\r\n\r\n function add(element, scope, options) {\r\n if (angular.isUndefined(window.Dropzone)) {\r\n queue.push({ element: element, scope: scope, options: options });\r\n if (!load) {\r\n load = true;\r\n $.ajax({\r\n url: '/js/dropzone.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n start();\r\n }\r\n });\r\n }\r\n } else {\r\n init(element, scope, options);\r\n }\r\n }\r\n\r\n function start() {\r\n _.each(queue, function (item) {\r\n init(item.element, item.scope, item.options);\r\n });\r\n }\r\n\r\n function init(element, scope, options) {\r\n //Instantiate dropzone with options\r\n var dropzone = new Dropzone(element[0], options);\r\n\r\n /*********************************************/\r\n\r\n //Instantiate Dropzone methods (Control actions)\r\n scope.methods = scope.methods || {};\r\n\r\n scope.methods.getDropzone = function () {\r\n return dropzone; //Return dropzone instance\r\n };\r\n\r\n scope.methods.getAllFiles = function () {\r\n return dropzone.files; //Return all files\r\n };\r\n\r\n var controlMethods = [\r\n 'removeFile', 'removeAllFiles', 'processQueue',\r\n 'getAcceptedFiles', 'getRejectedFiles', 'getQueuedFiles', 'getUploadingFiles',\r\n 'disable', 'enable', 'confirm', 'createThumbnailFromUrl'\r\n ];\r\n\r\n angular.forEach(controlMethods, function (methodName) {\r\n scope.methods[methodName] = function () {\r\n dropzone[methodName].apply(dropzone, arguments);\r\n if (!scope.$$phase && !scope.$root.$$phase) scope.$apply();\r\n };\r\n });\r\n\r\n /*********************************************/\r\n\r\n //Set invents (callbacks)\r\n if (scope.callbacks) {\r\n /*var callbackMethods = [\r\n 'drop', 'dragstart', 'dragend',\r\n 'dragenter', 'dragover', 'dragleave', 'addedfile', 'removedfile',\r\n 'thumbnail', 'error', 'processing', 'uploadprogress',\r\n 'sending', 'success', 'complete', 'canceled', 'maxfilesreached',\r\n 'maxfilesexceeded', 'processingmultiple', 'sendingmultiple', 'successmultiple',\r\n 'completemultiple', 'canceledmultiple', 'totaluploadprogress', 'reset', 'queuecomplete'\r\n ]; Hack */\r\n var callbackMethods = ['addedfile', 'complete', 'canceled', 'error', 'success', 'successmultiple', 'removedfile'];\r\n angular.forEach(callbackMethods, function (method) {\r\n var callback = (scope.callbacks[method] || angular.noop);\r\n dropzone.on(method, function () {\r\n var args = [].slice.call(arguments);\r\n if (scope.target) {\r\n args.splice(1, 0, scope.target);\r\n }\r\n callback.apply(null, args);\r\n if (!scope.$$phase && !scope.$root.$$phase) scope.$apply();\r\n });\r\n });\r\n }\r\n\r\n if (scope.success) {\r\n dropzone.on('success', function (file) {\r\n scope.$apply(function () {\r\n scope.success({\r\n file: file\r\n });\r\n });\r\n });\r\n }\r\n if (scope.removedfile) {\r\n dropzone.on('removedfile', function (file) {\r\n scope.$apply(function () {\r\n scope.removedfile({\r\n file: file\r\n });\r\n });\r\n });\r\n }\r\n\r\n dropzone.on('addedfile', function (file) {\r\n var self = this;\r\n if (typeof window.loadImage === 'undefined') {\r\n /* chargement ajax du plugin loadImage */\r\n $.ajax({\r\n url: '/js/load-image.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n parseMetaData(self, file);\r\n }\r\n });\r\n } else {\r\n parseMetaData(self, file);\r\n }\r\n });\r\n\r\n scope.$emit('dropzone', dropzone);\r\n }\r\n\r\n function parseMetaData(target, file) {\r\n window.loadImage.parseMetaData(file, function (data) {\r\n // use embedded thumbnail if exists.\r\n if (data.exif) {\r\n var thumbnail = data.exif.get('Thumbnail');\r\n var orientation = data.exif.get('Orientation');\r\n if (thumbnail && orientation) {\r\n window.loadImage(thumbnail, function (img) {\r\n target.emit('thumbnail', file, img.toDataURL());\r\n }, { orientation: orientation });\r\n return;\r\n }\r\n }\r\n // use default implementation for PNG, etc.\r\n target.createThumbnail(file);\r\n });\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .directive('ngDropzone', [\"dropzoneOps\", \"DropzoneService\", function (dropzoneOps, DropzoneService) {\r\n return {\r\n restrict: 'AE',\r\n template: '
',\r\n replace: true,\r\n scope: {\r\n options: '=?', //http://www.dropzonejs.com/#configuration-options\r\n callbacks: '=?', //http://www.dropzonejs.com/#events\r\n target: '=?',\r\n methods: '=?', //http://www.dropzonejs.com/#dropzone-methods\r\n acceptedFiles: '@?',\r\n success: '&?',\r\n removedfile: '&?'\r\n },\r\n link: function (scope, element) {\r\n //Set options for dropzone {override from dropzone options provider}\r\n scope.options = scope.options || {};\r\n\r\n if (scope.options.dictFileTooBig) {\r\n scope.options.dictFileTooBig = scope.options.dictFileTooBig.replace('{maxFilesize}', '{{maxFilesize}}');\r\n }\r\n\r\n if (scope.options.maxFiles === 1) {\r\n scope.options.init = function () {\r\n this.on('maxfilesexceeded', function (file) {\r\n this.removeAllFiles();\r\n this.addFile(file);\r\n });\r\n };\r\n }\r\n\r\n if (scope.acceptedFiles) {\r\n scope.options.acceptedFiles = scope.acceptedFiles;\r\n }\r\n\r\n var options = angular.extend({}, dropzoneOps, scope.options);\r\n\r\n DropzoneService.add(element, scope, options);\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","/**\r\n * AngularGM - Google Maps Directives for AngularJS\r\n * @version v1.0.2 - 2016-11-19\r\n * @link https://github.com/dylanfprice/angular-gm\r\n * @author Dylan Price \r\n * @license MIT License, http://www.opensource.org/licenses/MIT\r\n */\r\n/**\r\n * @doc module\r\n * @name angulargm\r\n *\r\n * @description\r\n * Module for embedding Google Maps into AngularJS applications.\r\n *\r\n * # Example Plunkers ([fullscreen](http://embed.plnkr.co/PYDYjVuRHaJpdntoJtqL))\r\n *\r\n * \r\n *\r\n * Author: Dylan Price \r\n */\r\n(function() {\r\n'use strict';\r\n\r\n angular.module('AngularGM', []).\r\n\r\n /**\r\n * @ngdoc service\r\n * @name angulargm.service:angulargmDefaults\r\n *\r\n * @description\r\n * Default configuration.\r\n *\r\n * To provide your own default config, use the following\r\n * ```js\r\n * angular.module('myModule').config(function($provide) {\r\n * $provide.decorator('angulargmDefaults', function($delegate) {\r\n * return angular.extend($delegate, {\r\n * 'precision': 3,\r\n * 'markerConstructor': myCustomMarkerConstructor,\r\n * 'polylineConstructor': myCustomPolylineConstructor,\r\n * 'mapOptions': {\r\n * center: {lat: 55, lng: 111},\r\n * mapTypeId: google.maps.MapTypeId.SATELLITE,\r\n * ...\r\n * }\r\n * });\r\n * });\r\n * });\r\n * ```\r\n */\r\n factory('angulargmDefaults', function() {\r\n return {\r\n 'precision': 3,\r\n 'markerConstructor': google.maps.Marker,\r\n 'polylineConstructor': google.maps.Polyline,\r\n 'circleConstructor': google.maps.Circle,\r\n 'mapOptions': {\r\n zoom : 8,\r\n center : {lat: 46, lng: -120},\r\n mapTypeId : google.maps.MapTypeId.ROADMAP\r\n }\r\n };\r\n });\r\n\r\n})();\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name angulargm.directive:gmInfoWindow\r\n * @element ANY\r\n *\r\n * @description\r\n * A directive for creating a google.maps.InfoWindow.\r\n *\r\n * @param {expression} gm-info-window scope variable to store the\r\n * [google.maps.InfoWindow](https://developers.google.com/maps/documentation/javascript/reference#InfoWindow)\r\n * in. Does not have to already exist.\r\n *\r\n * @param {expression} gm-info-window-options object in the current scope\r\n * that is a\r\n * [google.maps.InfoWindowOptions](https://developers.google.com/maps/documentation/javascript/reference#InfoWindowOptions)\r\n * object. If unspecified, google maps api defaults will be used.\r\n *\r\n * @param {expression} gm-on-*event* an angular expression which evaluates to an\r\n * event handler. This handler will be attached to the InfoWindow's \\*event\\*\r\n * event. The variable `infoWindow` evaluates to the InfoWindow. For example:\r\n * ```html\r\n * gm-on-closeclick=\"myCloseclickFn(infoWindow)\"\r\n * ```\r\n * will call your myCloseclickFn whenever the InfoWindow is clicked closed. You\r\n * may have multiple `gm-on-*event*` handlers, but only one for each type of\r\n * event.\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n /*\r\n * Much of this code is taken from the Angular UI team, see:\r\n * https://github.com/angular-ui/ui-map/blob/master/ui-map.js\r\n */\r\n directive('gmInfoWindow',\r\n ['$parse', '$compile', '$timeout', 'angulargmUtils',\r\n function ($parse, $compile, $timeout, angulargmUtils) {\r\n\r\n /** aliases */\r\n var getEventHandlers = angulargmUtils.getEventHandlers;\r\n\r\n function link(scope, element, attrs, controller) {\r\n var opts = angular.extend({}, scope.$eval(attrs.gmInfoWindowOptions));\r\n opts.content = element[0];\r\n var model = $parse(attrs.gmInfoWindow);\r\n var infoWindow = model(scope);\r\n\r\n if (!infoWindow) {\r\n infoWindow = new google.maps.InfoWindow(opts);\r\n model.assign(scope, infoWindow);\r\n }\r\n\r\n var handlers = getEventHandlers(attrs);\r\n\r\n // set up info window event handlers\r\n angular.forEach(handlers, function(handler, event) {\r\n google.maps.event.addListener(infoWindow, event, function() {\r\n $timeout(function() {\r\n handler(scope, {\r\n infoWindow: infoWindow\r\n });\r\n });\r\n });\r\n });\r\n }\r\n\r\n return {\r\n restrict: 'A',\r\n priority: 100,\r\n scope: false,\r\n link: link\r\n };\r\n\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name angulargm.directive:gmMap\r\n * @element ANY\r\n *\r\n * @description\r\n * A directive for embedding google maps into your app.\r\n *\r\n * `gm-map-id` is required. The `gm-center`, `gm-zoom`, `gm-bounds`, and\r\n * `gm-map-type-id` variables do not have to exist in the current scope--they\r\n * will be created if necessary. All three have bi-directional association,\r\n * i.e. drag or zoom the map and they will update, update them and the map\r\n * will change. However, any initial state of these three variables will be\r\n * ignored.\r\n *\r\n * If you need to get a handle on the google.maps.Map object, see\r\n * {@link angulargm.service:angulargmContainer angulargmContainer}\r\n *\r\n * @param {expression} gm-map-id angular expression that evaluates to a unique\r\n * string id for the map, e.g. `'map_canvas'` or `myMapId` where myMapId is a\r\n * variable in the current scope. This allows you to have multiple\r\n * maps/instances of the directive.\r\n *\r\n *\r\n * @param {expression} gm-center center variable in the current scope. The\r\n * value will be a google.maps.LatLngLiteral object.\r\n *\r\n *\r\n * @param {expression} gm-zoom zoom variable in the current scope. Value will\r\n * be an integer.\r\n *\r\n *\r\n * @param {expression} gm-bounds bounds variable in the current scope. Value\r\n * will be a google.maps.LatLngBounds object.\r\n *\r\n *\r\n * @param {expression} gm-map-type-id mapTypeId variable in the current scope.\r\n * Value will be a string.\r\n *\r\n *\r\n * @param {expression} gm-map-options object in the current scope that is a\r\n * google.maps.MapOptions object. If unspecified, will use the values in\r\n * angulargmDefaults.mapOptions. {@link angulargm.service:angulargmDefaults angulargmDefaults} is a service, so it is\r\n * both injectable and overrideable (using $provide.decorator).\r\n *\r\n * @param {expression} gm-on-*event* an angular expression which evaluates to\r\n * an event handler. This handler will be attached to each marker's \\*event\\*\r\n * event. The variables 'map' and 'event' evaluate to the map and the\r\n * [google.maps.MouseEvent](https://developers.google.com/maps/documentation/javascript/reference#MouseEvent),\r\n * respectively. The map is always passed in, but the MouseEvent is only passed in if the event emits it. For example:\r\n * ```html\r\n * gm-on-click=\"myClickFn(map, event)\"\r\n * ```\r\n * will call your `myClickFn` whenever the map is clicked. You may have\r\n * multiple `gm-on-*event*` handlers, but only one for each type of event. For events that have an underscore in their\r\n * name, such as 'center_changed', write it as 'gm-on-center-changed'.\r\n *\r\n *\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMap#gmMapResize\r\n * @eventOf angulargm.directive:gmMap\r\n * @eventType listen on current gmMap scope\r\n *\r\n * @description Alias for google.maps.event.trigger(map, 'resize')\r\n *\r\n * @param {string} mapId Required. The id of your map.\r\n * @example\r\n * ```js\r\n * $scope.$broadcast('gmMapResize', 'myMapId')\r\n * ```\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMap#gmMapIdle\r\n * @eventOf angulargm.directive:gmMap\r\n * @eventType emit on current gmMap scope\r\n *\r\n * @description Emitted when the map is finished loading (when the map fires\r\n * the 'idle' event).\r\n *\r\n * @param {string} mapId the id of the map which finished loading.\r\n *\r\n * @example\r\n * ```js\r\n * $scope.$on('gmMapIdle', function(event, mapId) {\r\n * if (mapId === 'myMapId') {\r\n * ...\r\n * }\r\n * });\r\n * ```\r\n */\r\n\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n\r\n directive('gmMap', ['$timeout', 'angulargmUtils', 'debounce', function ($timeout, angulargmUtils, debounce) {\r\n\r\n /** aliases **/\r\n var getEventHandlers = angulargmUtils.getEventHandlers;\r\n var validateLatLng = angulargmUtils.validateLatLng;\r\n var latLngLiteralEqual = angulargmUtils.latLngLiteralEqual;\r\n\r\n /** link function **/\r\n function link(scope, element, attrs, controller) {\r\n // initialize scope\r\n if (!angular.isDefined(scope.gmCenter)) {\r\n scope.center = {};\r\n }\r\n if (!angular.isDefined(scope.gmBounds)) {\r\n scope.bounds = {};\r\n }\r\n\r\n // Make sure gmMapId is defined\r\n // Note: redundant check in MapController. Can't hurt.\r\n if (!angular.isDefined(scope.gmMapId)) {\r\n throw 'angulargm must have non-empty gmMapId attribute';\r\n }\r\n\r\n // Check what's defined in attrs\r\n // Note: this is also redundant since angular will throw an exception if\r\n // these attributes are not set. I may make these optional in the future\r\n // (pending angular support).\r\n var hasCenter = false;\r\n var hasZoom = false;\r\n var hasBounds = false;\r\n var hasMapTypeId = false;\r\n\r\n if (attrs.hasOwnProperty('gmCenter')) {\r\n hasCenter = true;\r\n }\r\n if (attrs.hasOwnProperty('gmZoom')) {\r\n hasZoom = true;\r\n }\r\n if (attrs.hasOwnProperty('gmBounds')) {\r\n hasBounds = true;\r\n }\r\n if (attrs.hasOwnProperty('gmMapTypeId')) {\r\n hasMapTypeId = true;\r\n }\r\n\r\n var _updateScope = function() {\r\n $timeout(function () {\r\n if (hasCenter || hasZoom || hasBounds || hasMapTypeId) {\r\n scope.$apply(function (s) {\r\n if (hasCenter) {\r\n scope.gmCenter = controller.center;\r\n }\r\n if (hasZoom) {\r\n scope.gmZoom = controller.zoom;\r\n }\r\n if (hasBounds) {\r\n var b = controller.bounds;\r\n if (b) {\r\n scope.gmBounds = b;\r\n }\r\n }\r\n if (hasMapTypeId) {\r\n scope.gmMapTypeId = controller.mapTypeId;\r\n }\r\n });\r\n }\r\n });\r\n };\r\n\r\n var updateScope = debounce(_updateScope, 100);\r\n\r\n // Add event listeners to the map\r\n controller.addMapListener('drag', updateScope);\r\n controller.addMapListener('zoom_changed', updateScope);\r\n controller.addMapListener('center_changed', updateScope);\r\n controller.addMapListener('bounds_changed', updateScope);\r\n controller.addMapListener('maptypeid_changed', updateScope);\r\n controller.addMapListener('resize', updateScope);\r\n\r\n // Add user supplied callbacks\r\n var map = controller.getMap(attrs.gmMapId);\r\n var handlers = getEventHandlers(attrs); // map events -> handlers\r\n angular.forEach(handlers, function(handler, event) {\r\n controller.addMapListener(event, function(ev) {\r\n // pass the map in\r\n var locals = {\r\n map: map\r\n };\r\n // And optionally a MouseEvent object if it exists\r\n if (ev !== undefined) {\r\n locals.event = ev;\r\n }\r\n\r\n $timeout(function() {\r\n handler(scope.$parent, locals);\r\n });\r\n });\r\n });\r\n\r\n\r\n\r\n if (hasCenter) {\r\n scope.$watch('gmCenter', function (newValue, oldValue) {\r\n var changed = (\r\n validateLatLng(newValue) != null &&\r\n !latLngLiteralEqual(newValue, oldValue)\r\n );\r\n if (changed && !controller.dragging) {\r\n controller.center = newValue;\r\n }\r\n }, true);\r\n }\r\n\r\n if (hasZoom) {\r\n scope.$watch('gmZoom', function (newValue, oldValue) {\r\n var ok = (newValue != null && !isNaN(newValue));\r\n if (ok && newValue !== oldValue) {\r\n controller.zoom = newValue;\r\n }\r\n });\r\n }\r\n\r\n if (hasBounds) {\r\n scope.$watch('gmBounds', function(newValue, oldValue) {\r\n var changed = (newValue !== oldValue);\r\n if (changed && !controller.dragging) {\r\n var bounds = newValue;\r\n if (bounds)\r\n controller.bounds = bounds;\r\n }\r\n });\r\n }\r\n\r\n if (hasMapTypeId) {\r\n scope.$watch('gmMapTypeId', function(newValue, oldValue) {\r\n var changed = (newValue !== oldValue);\r\n if (changed && newValue) {\r\n controller.mapTypeId = newValue;\r\n }\r\n });\r\n }\r\n\r\n scope.$on('gmMapResize', function(event, gmMapId) {\r\n if (scope.gmMapId() === gmMapId) {\r\n controller.mapTrigger('resize');\r\n }\r\n });\r\n\r\n controller.addMapListenerOnce('idle', function() {\r\n scope.$emit('gmMapIdle', scope.gmMapId());\r\n });\r\n controller.mapTrigger('resize');\r\n }\r\n\r\n\r\n return {\r\n restrict: 'E',\r\n priority: 100,\r\n template: '
' +\r\n '
' +\r\n '
' +\r\n '
',\r\n transclude: true,\r\n replace: true,\r\n scope: {\r\n gmCenter: '=?',\r\n gmZoom: '=?',\r\n gmBounds: '=?',\r\n gmMapTypeId: '=?',\r\n gmMapOptions: '&',\r\n gmMapId: '&'\r\n },\r\n controller: 'angulargmMapController',\r\n link: link\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name angulargm.directive:gmMarkers\r\n * @element ANY\r\n *\r\n * @description\r\n * A directive for adding markers to a `gmMap`. You may have multiple per `gmMap`.\r\n *\r\n * To use, you specify an array of custom objects and tell the directive how to\r\n * extract an id and position from them. A marker will be created for each of\r\n * your objects. If you assign a new array to your scope variable or change the\r\n * array's length (i.e. add or remove an object), the markers will also update.\r\n * The one case where `gmMarkers` can not automatically detect changes to your\r\n * objects is when you mutate objects in the array. To inform the directive of\r\n * such changes, see the `gmMarkersUpdate` event below.\r\n *\r\n * Only the `gm-objects`, `gm-id` and `gm-position` attributes are required.\r\n *\r\n * @param {expression} gm-objects an array of objects in the current scope.\r\n * These can be any objects you wish to attach to markers, the only requirement\r\n * is that they have a uniform method of accessing an id and a position.\r\n *\r\n * @param {expression} gm-id an angular expression that given an object from\r\n * `gm-objects`, evaluates to a unique identifier for that object. Your object\r\n * can be accessed through the variable `object`. See `gm-position` below for\r\n * an example.\r\n *\r\n * @param {expression} gm-position an angular expression that given an object\r\n * from `gm-objects`, evaluates to google.maps.LatLngLiteral object. Your\r\n * object can be accessed through the variable `object`. For example, if your\r\n * controller has\r\n * ```js\r\n * ...\r\n * $scope.myObjects = [\r\n * { id: 0, location: { lat: 5, lng: 5} },\r\n * { id: 1, location: { lat: 6, lng: 6} }\r\n * ]\r\n * ...\r\n * ```\r\n * then in the `gm-markers` directive you would put\r\n * ```js\r\n * ...\r\n * gm-objects=\"myObjects\"\r\n * gm-id=\"object.id\"\r\n * gm-position=\"object.location\"\r\n * ...\r\n * ```\r\n *\r\n *\r\n * @param {expression} gm-marker-options an angular expression that given\r\n * an object from `gm-objects`, evaluates to a\r\n * [google.maps.MarkerOptions](https://developers.google.com/maps/documentation/javascript/reference#MarkerOptions)\r\n * object. Your object can be accessed through the variable `object`. If\r\n * unspecified, google maps api defaults will be used.\r\n *\r\n *\r\n * @param {expression} gm-events a variable in the current scope that is used to\r\n * simulate events on markers. Setting this variable to an object of the form\r\n * ```js\r\n * [\r\n * {\r\n * event: 'click',\r\n * ids: [id1, ...]\r\n * },\r\n * ...\r\n * ]\r\n * ```\r\n * will generate the named events on the markers with the given ids, if a\r\n * marker with each id exists. Note: when setting the `gm-events` variable, you\r\n * must set it to a new object for the changes to be detected. Code like\r\n * ```js\r\n * myEvents[0][\"ids\"] = [0]\r\n * ```\r\n * will not work.\r\n *\r\n *\r\n * @param {expression} gm-on-*event* an angular expression which evaluates to\r\n * an event handler. This handler will be attached to each marker's \\*event\\*\r\n * event. The variables 'object' and 'marker' evaluate to your object and the\r\n * [google.maps.Marker](https://developers.google.com/maps/documentation/javascript/reference#Marker),\r\n * respectively. For example:\r\n * ```html\r\n * gm-on-click=\"myClickFn(object, marker)\"\r\n * ```\r\n * will call your `myClickFn` whenever a marker is clicked. You may have\r\n * multiple `gm-on-*event*` handlers, but only one for each type of event.\r\n * For events that have an underscore in their name, such as\r\n * 'position_changed', write it as 'gm-on-position-changed'.\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMarkers#gmMarkersUpdate\r\n * @eventOf angulargm.directive:gmMarkers\r\n * @eventType listen on current gmMarkers scope\r\n *\r\n * @description Manually tell the `gmMarkers` directive to update the markers.\r\n * This is useful to tell the directive when an object from `gm-objects` is\r\n * mutated--`gmMarkers` can not pick up on such changes automatically.\r\n *\r\n * @param {string} objects Not required. The name of the scope variable which\r\n * holds the objects to update markers for, i.e. what you set `gm-objects` to.\r\n * It is useful because there may be multiple instances of the `gmMarkers`\r\n * directive. If not specified, all instances of `gmMarkers` which are child\r\n * scopes will update their markers.\r\n *\r\n * @example\r\n * ```js\r\n * $scope.$broadcast('gmMarkersUpdate', 'myObjects');\r\n * ```\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMarkers#gmMarkersRedraw\r\n * @eventOf angulargm.directive:gmMarkers\r\n * @eventType listen on current gmMarkers scope\r\n *\r\n * @description Force the `gmMarkers` directive to clear and redraw all markers.\r\n *\r\n * @param {string} objects Not required. The name of the scope variable which\r\n * holds the objects to redraw markers for, i.e. what you set `gm-objects` to.\r\n * It is useful because there may be multiple instances of the `gmMarkers`\r\n * directive. If not specified, all instances of `gmMarkers` which are child\r\n * scopes will redraw their markers.\r\n *\r\n * @example\r\n * ```js\r\n * $scope.$broadcast('gmMarkersRedraw', 'myObjects');\r\n * ```\r\n */\r\n\r\n/**\r\n * @ngdoc event\r\n * @name angulargm.directive:gmMarkers#gmMarkersUpdated\r\n * @eventOf angulargm.directive:gmMarkers\r\n * @eventType emit on current gmMarkers scope\r\n *\r\n * @description Emitted when markers are updated.\r\n *\r\n * @param {string} objects the name of the scope variable which holds the\r\n * objects the `gmMarkers` directive was constructed with. This is what\r\n * `gm-objects` was set to.\r\n *\r\n * @example\r\n * ```js\r\n * $scope.$on('gmMarkersUpdated', function(event, objects) {\r\n * if (objects === 'myObjects') {\r\n * ...\r\n * }\r\n * });\r\n * ```\r\n */\r\n\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n directive('gmMarkers',\r\n ['$log', '$parse', '$timeout', 'angulargmUtils', 'angulargmShape',\r\n function($log, $parse, $timeout, angulargmUtils, angulargmShape) {\r\n\r\n /** aliases */\r\n var validateLatLng = angulargmUtils.validateLatLng;\r\n\r\n function link(scope, element, attrs, controller) {\r\n // check marker attrs\r\n if (!('gmPosition' in attrs)) {\r\n throw 'gmPosition attribute required';\r\n }\r\n\r\n var markerOptions = function(object) {\r\n var latLngObj = scope.gmPosition({object: object});\r\n var position = validateLatLng(latLngObj);\r\n if (position == null) {\r\n return null;\r\n }\r\n\r\n var markerOptions = scope.gmMarkerOptions({object: object});\r\n var options = {};\r\n angular.extend(options, markerOptions, {position: position});\r\n return options;\r\n };\r\n\r\n angulargmShape.createShapeDirective(\r\n 'marker', scope, attrs, controller, markerOptions\r\n );\r\n }\r\n\r\n return {\r\n restrict: 'AE',\r\n priority: 100,\r\n scope: {\r\n gmObjects: '&',\r\n gmId: '&',\r\n gmPosition: '&',\r\n gmMarkerOptions: '&',\r\n gmEvents: '&'\r\n },\r\n require: '^gmMap',\r\n link: link\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc service\r\n * @name angulargm.service:angulargmContainer\r\n *\r\n * @description\r\n * A container which maps mapIds to google.maps.Map instances, and additionally\r\n * allows getting a promise of a map for custom configuration of the map.\r\n *\r\n * If you want a handle to the map, you should use the `getMapPromise(mapId)`\r\n * method so you can guarantee the map will be initialized. For example,\r\n *\r\n * ```js\r\n * angular.module('myModule').\r\n *\r\n * run(function(angulargmContainer) {\r\n * var gmapPromise = angulargmContainer.getMapPromise('myMapid');\r\n *\r\n * gmapPromise.then(function(gmap) {\r\n * // google map configuration here\r\n * });\r\n * });\r\n * ```\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n factory('angulargmContainer', ['$q', function($q) {\r\n var maps = {};\r\n var defers = {};\r\n var markers = {};\r\n /**\r\n * Add a map to the container.\r\n * @param {string} mapId the unique identifier for the map\r\n * @param {google.maps.Map} map the google map\r\n * @throw if there is already a map with mapId, or if map is not a\r\n * google.maps.Map\r\n */\r\n function addMap(mapId, map) {\r\n if (!(map instanceof google.maps.Map)) {\r\n throw 'map not a google.maps.Map: ' + map;\r\n } else if (mapId in maps) {\r\n throw 'already contain map with id ' + mapId;\r\n }\r\n maps[mapId] = map;\r\n if (mapId in defers) {\r\n defers[mapId].resolve(map);\r\n }\r\n }\r\n\r\n /**\r\n * Get a map from the container.\r\n * @param {string} mapId the unique id of the map\r\n * @return {google.maps.Map|undefined} the map, or undefined if there is no\r\n * map for mapId\r\n */\r\n function getMaps() {\r\n return maps;\r\n }\r\n function getMap(mapId) {\r\n return maps[mapId];\r\n }\r\n\r\n /**\r\n * Adds markers hash to the container.\r\n * @param {string} mapId the unique id of the map\r\n * @param {[google.maps.Marker]} markers to be added to the container\r\n */\r\n function setMarker(mapId, newMarker) {\r\n if (!markers[mapId]) {\r\n markers[mapId] = [];\r\n }\r\n markers[mapId].push(newMarker);\r\n }\r\n /**\r\n * Get markers from the container.\r\n * @param {string} mapId the unique id of the map\r\n * @return {google.maps.Marker|undefined} the markers, or undefined if there are no\r\n * markers for mapId\r\n */\r\n function getMarkers(mapId) {\r\n return markers[mapId];\r\n }\r\n\r\n function clearMarkers(mapId) {\r\n if (!getMarkers(mapId)) return;\r\n for (var i = 0; i < markers[mapId].length; i++) {\r\n markers[mapId][i].setMap(null);\r\n }\r\n markers[mapId] = [];\r\n }\r\n\r\n /**\r\n * Returns a promise of a map for the given mapId\r\n * @param {string} mapId the unique id of the map that may or may not have\r\n * been created yet\r\n * @return {angular.q.promise} a promise of a map that will be resolved\r\n * when the map is added\r\n */\r\n function getMapPromise(mapId) {\r\n var defer = defers[mapId] || $q.defer();\r\n var map = getMap(mapId);\r\n defers[mapId] = defer;\r\n if (map !== undefined) {\r\n defer.resolve(map);\r\n }\r\n return defer.promise;\r\n }\r\n\r\n /**\r\n * Removes map with given mapId from this container, and deletes the map.\r\n * In order for this to work you must ensure there are no references to the\r\n * map object. Note: this will likely cause a memory leak, see\r\n * http://stackoverflow.com/questions/10485582/what-is-the-proper-way-to-destroy-a-map-instance\r\n *\r\n * @param {string} mapId the unique id of the map to remove\r\n */\r\n function removeMap(mapId) {\r\n if (mapId in maps) {\r\n delete maps[mapId];\r\n }\r\n if (mapId in defers) {\r\n delete defers[mapId];\r\n }\r\n }\r\n\r\n /**\r\n * Removes all maps and unresolved map promises. Only for testing, see\r\n * #removeMap(mapId).\r\n */\r\n function clear() {\r\n maps = {};\r\n defers = {};\r\n markers = {};\r\n }\r\n\r\n return {\r\n addMap: addMap,\r\n getMaps: getMaps,\r\n getMap: getMap,\r\n getMapPromise: getMapPromise,\r\n setMarker: setMarker,\r\n getMarkers: getMarkers,\r\n clearMarkers: clearMarkers,\r\n removeMap: removeMap,\r\n clear: clear\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc service\r\n * @name angulargm.service:angulargmShape\r\n *\r\n * @description\r\n * Directive functions for map shapes (marker, polyline, etc.)\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n factory('angulargmShape',\r\n ['$timeout', 'angulargmUtils',\r\n function($timeout, angulargmUtils) {\r\n\r\n /**\r\n * Check required attributes of a shape.\r\n */\r\n function checkRequiredAttributes(attrs) {\r\n if (!('gmObjects' in attrs)) {\r\n throw 'gmObjects attribute required';\r\n } else if (!('gmId' in attrs)) {\r\n throw 'gmId attribute required';\r\n }\r\n }\r\n\r\n /**\r\n * Create a mapping from object id -> object.\r\n * The object id is retrieved using scope.gmId\r\n */\r\n function _generateObjectCache(scope, objects) {\r\n var objectCache = {};\r\n angular.forEach(objects, function(object) {\r\n // cache objects for quick access\r\n var id = scope.gmId({object: object});\r\n objectCache[id] = object;\r\n });\r\n return objectCache;\r\n }\r\n\r\n /**\r\n * Create new shapes and add them to the map for objects which are not\r\n * currently on the map.\r\n */\r\n function _addNewElements(type, scope, controller, handlers, objectCache, optionsFn) {\r\n angular.forEach(objectCache, function(object, id) {\r\n var element = controller.getElement(type, scope.$id, id);\r\n\r\n var options = optionsFn(object);\r\n if (options == null) {\r\n return;\r\n }\r\n\r\n if (element) {\r\n controller.updateElement(type, scope.$id, id, options);\r\n } else {\r\n controller.addElement(type, scope.$id, id, options);\r\n element = controller.getElement(type, scope.$id, id);\r\n\r\n // set up element event handlers\r\n angular.forEach(handlers, function(handler, event) {\r\n controller.addListener(element, event, function() {\r\n $timeout(function() {\r\n var context = {object: object};\r\n context[type] = element;\r\n if ((angular.version.major <= 1) && (angular.version.minor <= 2)) {\r\n // scope is this directive's isolate scope\r\n // scope.$parent is the scope of ng-transclude\r\n // scope.$parent.$parent is the one we want\r\n handler(scope.$parent.$parent, context);\r\n } else {\r\n handler(scope.$parent.$parent.$parent , context);\r\n }\r\n });\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Remove shape elements from the map which are no longer in objects.\r\n */\r\n function _removeOrphanedElements(type, scope, controller, objectCache) {\r\n var orphaned = [];\r\n\r\n controller.forEachElementInScope(type, scope.$id, function(element, id) {\r\n if (!(id in objectCache)) {\r\n orphaned.push(id);\r\n }\r\n });\r\n\r\n angular.forEach(orphaned, function(id) {\r\n controller.removeElement(type, scope.$id, id);\r\n });\r\n }\r\n\r\n /**\r\n * _formatEventName('gmShapesUpdated', 'marker') -> 'gmMarkersUpdated'\r\n */\r\n function _formatEventName(template, type) {\r\n var uppercasePluralType = type.charAt(0).toUpperCase() + type.slice(1) + 's';\r\n return template.replace('Shapes', uppercasePluralType);\r\n }\r\n\r\n /**\r\n * Attach necessary watchers and listeners to scope to deal with:\r\n * - updating objects\r\n * - handling gmEvents\r\n * - listening for events\r\n */\r\n function _attachEventListeners(type, scope, attrs, controller, updateElements) {\r\n\r\n // watch objects\r\n scope.$watch('gmObjects().length', function(newValue, oldValue) {\r\n if (newValue != null && newValue !== oldValue) {\r\n updateElements(scope, scope.gmObjects());\r\n }\r\n });\r\n\r\n scope.$watch('gmObjects()', function(newValue, oldValue) {\r\n if (newValue != null && newValue !== oldValue) {\r\n updateElements(scope, scope.gmObjects());\r\n }\r\n });\r\n\r\n // watch gmEvents\r\n scope.$watch('gmEvents()', function(newValue, oldValue) {\r\n if (newValue != null && newValue !== oldValue) {\r\n angular.forEach(newValue, function(eventObj) {\r\n var event = eventObj.event;\r\n var ids = eventObj.ids;\r\n angular.forEach(ids, function(id) {\r\n var element = controller.getElement(type, scope.$id, id);\r\n if (element != null) {\r\n $timeout(angular.bind(this, controller.trigger, element, event));\r\n }\r\n });\r\n });\r\n }\r\n });\r\n\r\n scope.$on(_formatEventName('gmShapesRedraw', type), function(event, objectsName) {\r\n if (objectsName == null || objectsName === attrs.gmObjects) {\r\n updateElements(scope);\r\n updateElements(scope, scope.gmObjects());\r\n }\r\n });\r\n\r\n scope.$on(_formatEventName('gmShapesUpdate', type), function(event, objectsName) {\r\n if (objectsName == null || objectsName === attrs.gmObjects) {\r\n updateElements(scope, scope.gmObjects());\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Takes care of setting up the directive for the given type of shape.\r\n * Assumes the following directive scope:\r\n * scope: {\r\n * gmId: '&',\r\n * gmObjects: '&',\r\n * gmEvents: '&'\r\n * },\r\n *\r\n * And the angulargmMapController:\r\n * require: '^gmMap',\r\n *\r\n * Also supports the following attributes:\r\n * gmOn* (though some of this knowledge is in angulargmUtils as well)\r\n *\r\n * As well as the following events\r\n * gmShapesUpdated\r\n * gmShapesRedraw\r\n *\r\n * (e.g. gmMarkersUpdated and gmMarkersRedraw)\r\n *\r\n * See gmMarkers for a complete example.\r\n */\r\n function createShapeDirective(type, scope, attrs, controller, elementOptions) {\r\n checkRequiredAttributes(attrs);\r\n\r\n var updateElements = function(scope, objects) {\r\n var objectCache = _generateObjectCache(scope, objects);\r\n var handlers = angulargmUtils.getEventHandlers(attrs); // map events -> handlers\r\n\r\n _addNewElements(\r\n type, scope, controller, handlers,\r\n objectCache, elementOptions\r\n );\r\n\r\n _removeOrphanedElements(type, scope, controller, objectCache);\r\n\r\n scope.$emit(_formatEventName('gmShapesUpdated', type), attrs.gmObjects);\r\n };\r\n\r\n _attachEventListeners(type, scope, attrs, controller, updateElements);\r\n\r\n // initialize elements\r\n $timeout(angular.bind(null, updateElements, scope, scope.gmObjects()));\r\n }\r\n\r\n return {\r\n createShapeDirective: createShapeDirective\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc service\r\n * @name angulargm.service:angulargmUtils\r\n *\r\n * @description\r\n * Common utility functions.\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n factory('angulargmUtils', ['$parse', function($parse) {\r\n\r\n /**\r\n * Check if two floating point numbers are equal.\r\n *\r\n * @param {number} f1 first number\r\n * @param {number} f2 second number\r\n * @return {boolean} true if f1 and f2 are 'very close' (within 0.000001)\r\n */\r\n function floatEqual (f1, f2) {\r\n return (Math.abs(f1 - f2) < 0.000001);\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #latLngEqual\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLng} l1 first\r\n * @param {google.maps.LatLng} l2 second\r\n * @return {boolean} true if l1 and l2 are 'very close'. If either are null\r\n * or not google.maps.LatLng objects returns false.\r\n */\r\n function latLngEqual(l1, l2) {\r\n if (!(l1 instanceof google.maps.LatLng &&\r\n l2 instanceof google.maps.LatLng)) {\r\n return false;\r\n }\r\n return floatEqual(l1.lat(), l2.lat()) && floatEqual(l1.lng(), l2.lng());\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #latLngLiteralEqual\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLngLiteral} l1 first\r\n * @param {google.maps.LatLngLiteral} l2 second\r\n * @return {boolean} true if l1 and l2 are 'very close'. If either are null\r\n * or not google.maps.LatLngLiteral objects returns false.\r\n */\r\n function latLngLiteralEqual(l1, l2) {\r\n if (\r\n !(l1 != null && l1.hasOwnProperty('lat') && l1.hasOwnProperty('lng')) ||\r\n !(l2 != null && l2.hasOwnProperty('lat') && l2.hasOwnProperty('lng'))\r\n ) {\r\n return false;\r\n }\r\n return floatEqual(l1.lat, l2.lat) && floatEqual(l1.lng, l2.lng);\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #boundsEqual\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLngBounds} b1 first\r\n * @param {google.maps.LatLngBounds} b2 second\r\n * @return {boolean} true if b1 and b2 are 'very close'. If either are null\r\n * or not google.maps.LatLngBounds objects returns false.\r\n */\r\n function boundsEqual(b1, b2) {\r\n if (!(b1 instanceof google.maps.LatLngBounds &&\r\n b2 instanceof google.maps.LatLngBounds)) {\r\n return false;\r\n }\r\n var sw1 = b1.getSouthWest();\r\n var sw2 = b2.getSouthWest();\r\n var ne1 = b1.getNorthEast();\r\n var ne2 = b2.getNorthEast();\r\n\r\n return latLngEqual(sw1, sw2) && latLngEqual(ne1, ne2);\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #latLngToObj\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLng} latLng the LatLng\r\n * @return {Object} object literal with 'lat' and 'lng' properties.\r\n * @throw if latLng not instanceof google.maps.LatLng\r\n */\r\n function latLngToObj(latLng) {\r\n if (!(latLng instanceof google.maps.LatLng))\r\n throw 'latLng not a google.maps.LatLng';\r\n\r\n return {\r\n lat: latLng.lat(),\r\n lng: latLng.lng()\r\n };\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #objToLatLng\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {Object} obj of the form { lat: 40, lng: -120 }\r\n * @return {google.maps.LatLng} returns null if problems with obj (null,\r\n * NaN, etc.)\r\n */\r\n function objToLatLng(obj) {\r\n if (obj != null) {\r\n var lat = obj.lat;\r\n var lng = obj.lng;\r\n var ok = !(lat == null || lng == null) && !(isNaN(lat) ||\r\n isNaN(lng));\r\n if (ok) {\r\n return new google.maps.LatLng(lat, lng);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #validateLatLng\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {Object} obj of the form { lat: 40, lng: -120 }\r\n * @return {Object} obj or returns null if problems with obj (null,\r\n * NaN, etc.)\r\n */\r\n function validateLatLng(obj) {\r\n if (obj != null) {\r\n var lat = obj.lat;\r\n var lng = obj.lng;\r\n var ok = (\r\n !(lat == null || lng == null) &&\r\n !(isNaN(lat) || isNaN(lng))\r\n );\r\n if (ok) {\r\n return obj;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * @ngdoc function\r\n * @name #hasNaN\r\n * @methodOf angulargm.service:angulargmUtils\r\n *\r\n * @param {google.maps.LatLng} latLng the LatLng\r\n * @return {boolean} true if either lat or lng of latLng is null or isNaN\r\n */\r\n function hasNaN(latLng) {\r\n if (!(latLng instanceof google.maps.LatLng))\r\n throw 'latLng must be a google.maps.LatLng';\r\n\r\n // google.maps.LatLng converts NaN to null, so check for both\r\n var isNull = (latLng.lat() == null || latLng.lng() == null);\r\n var isNotaN = isNaN(latLng.lat()) || isNaN(latLng.lng());\r\n return isNull || isNotaN;\r\n }\r\n\r\n /**\r\n * @param {Object} attrs directive attributes\r\n * @return {Object} mapping from event names to handler fns\r\n */\r\n function getEventHandlers(attrs) {\r\n var handlers = {};\r\n\r\n // retrieve gm-on-___ handlers\r\n angular.forEach(attrs, function(value, key) {\r\n if (key.lastIndexOf('gmOn', 0) === 0) {\r\n var event = key.substring(4).replace(/(?!^)([A-Z])/g, '_$&').toLowerCase();\r\n var fn = $parse(value);\r\n handlers[event] = fn;\r\n }\r\n });\r\n\r\n return handlers;\r\n }\r\n\r\n function assertDefined(value, name) {\r\n if (value === undefined || value === null) {\r\n if (name) {\r\n throw name + ' was: ' + value;\r\n } else {\r\n throw 'value was: ' + value;\r\n }\r\n }\r\n }\r\n\r\n return {\r\n latLngEqual: latLngEqual,\r\n latLngLiteralEqual: latLngLiteralEqual,\r\n boundsEqual: boundsEqual,\r\n latLngToObj: latLngToObj,\r\n objToLatLng: objToLatLng,\r\n validateLatLng: validateLatLng,\r\n hasNaN: hasNaN,\r\n getEventHandlers: getEventHandlers,\r\n assertDefined: assertDefined\r\n };\r\n }]);\r\n})();\r\n\r\n/**\r\n * @ngdoc service\r\n * @name angulargm.service:debounce\r\n *\r\n * @description\r\n * Debounce function. Stolen from https://github.com/shahata/angular-debounce\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n factory('debounce', ['$timeout', function ($timeout) {\r\n return function (func, wait, immediate) {\r\n var timeout, args, context, result;\r\n function debounce() {\r\n /* jshint validthis:true */\r\n context = this;\r\n args = arguments;\r\n var later = function () {\r\n timeout = null;\r\n if (!immediate) {\r\n result = func.apply(context, args);\r\n }\r\n };\r\n var callNow = immediate && !timeout;\r\n if (timeout) {\r\n $timeout.cancel(timeout);\r\n }\r\n timeout = $timeout(later, wait);\r\n if (callNow) {\r\n result = func.apply(context, args);\r\n }\r\n return result;\r\n }\r\n debounce.cancel = function () {\r\n $timeout.cancel(timeout);\r\n timeout = null;\r\n };\r\n return debounce;\r\n };\r\n }]);\r\n\r\n})();\r\n\r\n/**\r\n * Directive controller which is owned by the [gmMap]{@link module:gmMap}\r\n * directive and shared among all other angulargm directives.\r\n */\r\n(function () {\r\n'use strict';\r\n\r\n angular.module('AngularGM').\r\n\r\n controller('angulargmMapController',\r\n ['$scope', '$element', 'angulargmUtils', 'angulargmDefaults',\r\n 'angulargmContainer',\r\n\r\n function ($scope, $element, angulargmUtils, angulargmDefaults,\r\n angulargmContainer) {\r\n\r\n /** aliases */\r\n var latLngToObj = angulargmUtils.latLngToObj;\r\n var validateLatLng = angulargmUtils.validateLatLng;\r\n var boundsEqual = angulargmUtils.boundsEqual;\r\n var hasNaN = angulargmUtils.hasNaN;\r\n var assertDefined = angulargmUtils.assertDefined;\r\n\r\n /*\r\n * Construct a new controller for the gmMap directive.\r\n * @param {angular.Scope} $scope\r\n * @param {angular.element} $element\r\n * @constructor\r\n */\r\n var constructor = function($scope, $element) {\r\n\r\n var mapId = $scope.gmMapId();\r\n if (!mapId) { throw 'angulargm must have non-empty gmMapId attribute'; }\r\n\r\n var mapDiv = angular.element($element[0].firstChild);\r\n mapDiv.attr('id', mapId);\r\n\r\n var config = this._getConfig($scope, angulargmDefaults);\r\n\r\n // 'private' properties\r\n this._map = this._createMap(mapId, mapDiv, config, angulargmContainer, $scope);\r\n this._elements = {};\r\n this._listeners = {};\r\n\r\n // 'public' properties\r\n this.dragging = false;\r\n\r\n Object.defineProperties(this, {\r\n 'precision': {\r\n value: angulargmDefaults.precision,\r\n writeable: false\r\n },\r\n\r\n 'center': {\r\n configurable: true, // for testing so we can mock\r\n get: function() {\r\n return latLngToObj(this._map.getCenter());\r\n },\r\n set: function(center) {\r\n if (validateLatLng(center) === null)\r\n throw 'center contains null or NaN';\r\n var changed = this.center !== center;\r\n if (changed) {\r\n this._map.panTo(center);\r\n }\r\n }\r\n },\r\n\r\n 'zoom': {\r\n configurable: true, // for testing so we can mock\r\n get: function() {\r\n return this._map.getZoom();\r\n },\r\n set: function(zoom) {\r\n if (!(zoom != null && !isNaN(zoom)))\r\n throw 'zoom was null or NaN';\r\n var changed = this.zoom !== zoom;\r\n if (changed) {\r\n this._map.setZoom(zoom);\r\n }\r\n }\r\n },\r\n\r\n 'bounds': {\r\n configurable: true, // for testing so we can mock\r\n get: function() {\r\n return this._map.getBounds();\r\n },\r\n set: function(bounds) {\r\n var numbers = !hasNaN(bounds.getSouthWest()) &&\r\n !hasNaN(bounds.getNorthEast());\r\n if (!numbers)\r\n throw 'bounds contains null or NaN';\r\n\r\n var changed = !(boundsEqual(this.bounds, bounds));\r\n if (changed) {\r\n this._map.fitBounds(bounds);\r\n }\r\n }\r\n },\r\n\r\n 'mapTypeId': {\r\n configurable: true, // for testing so we can mock\r\n get: function() {\r\n return this._map.getMapTypeId();\r\n },\r\n set: function(mapTypeId) {\r\n if (mapTypeId == null)\r\n throw 'mapTypeId was null or unknown';\r\n var changed = this.mapTypeId !== mapTypeId;\r\n if (changed) {\r\n this._map.setMapTypeId(mapTypeId);\r\n }\r\n }\r\n }\r\n });\r\n\r\n this._initDragListeners();\r\n $scope.$on('$destroy', angular.bind(this, this._destroy));\r\n };\r\n\r\n\r\n // Retrieve google.maps.MapOptions\r\n this._getConfig = function($scope, angulargmDefaults) {\r\n // Get config or defaults\r\n var defaults = angulargmDefaults.mapOptions;\r\n var config = {};\r\n angular.extend(config, defaults, $scope.gmMapOptions());\r\n return config;\r\n };\r\n\r\n\r\n // Create the map and add to angulargmContainer\r\n this._createMap = function(id, element, config, angulargmContainer) {\r\n var map = angulargmContainer.getMap(id);\r\n if (!map) {\r\n map = new google.maps.Map(element[0], config);\r\n angulargmContainer.addMap(id, map);\r\n } else {\r\n var div = map.getDiv();\r\n element.replaceWith(div);\r\n this._map = map;\r\n this.mapTrigger('resize');\r\n map.setOptions(config);\r\n }\r\n return map;\r\n };\r\n\r\n\r\n // Set up listeners to update this.dragging\r\n this._initDragListeners = function() {\r\n var self = this;\r\n this.addMapListener('dragstart', function () {\r\n self.dragging = true;\r\n });\r\n\r\n this.addMapListener('idle', function () {\r\n self.dragging = false;\r\n });\r\n };\r\n\r\n\r\n this._destroy = function() {\r\n angular.forEach(this._listeners, function(listener) {\r\n angular.forEach(listener, function(l) {\r\n google.maps.event.removeListener(l);\r\n });\r\n });\r\n this._listeners = {};\r\n\r\n var self = this;\r\n var types = Object.keys(this._elements);\r\n angular.forEach(types, function(type) {\r\n var scopeIds = Object.keys(self._getElements(type));\r\n angular.forEach(scopeIds, function(scopeId) {\r\n self.forEachElementInScope(type, scopeId, function(element, id) {\r\n self.removeElement(type, scopeId, id);\r\n });\r\n });\r\n });\r\n\r\n var streetView = this._map.getStreetView();\r\n if (streetView && streetView.getVisible()) {\r\n streetView.setVisible(false);\r\n }\r\n\r\n var maps = angulargmContainer.getMaps();\r\n _.each(maps, function (map, key) {\r\n angulargmContainer.removeMap(key);\r\n })\r\n angulargmContainer.clear()\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.addListener(map, event, handler)\r\n * @param {string} event an event defined on google.maps.Map\r\n * @param {Function} a handler for the event\r\n */\r\n this.addMapListener = function(event, handler) {\r\n var listener = google.maps.event.addListener(this._map, event, handler);\r\n\r\n if (this._listeners[event] === undefined) {\r\n this._listeners[event] = [];\r\n }\r\n\r\n this._listeners[event].push(listener);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.addListenerOnce(map, event, handler)\r\n * @param {string} event an event defined on google.maps.Map\r\n * @param {Function} a handler for the event\r\n */\r\n this.addMapListenerOnce = function(event, handler) {\r\n var listener = google.maps.event.addListenerOnce(this._map, event, handler);\r\n\r\n if (this._listeners[event] === undefined) {\r\n this._listeners[event] = [];\r\n }\r\n\r\n this._listeners[event].push(listener);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.addListener(object, event, handler)\r\n */\r\n this.addListener = function(object, event, handler) {\r\n google.maps.event.addListener(object, event, handler);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.addListenerOnce(object, event, handler)\r\n */\r\n this.addListenerOnce = function(object, event, handler) {\r\n google.maps.event.addListenerOnce(object, event, handler);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.trigger(map, event)\r\n * @param {string} event an event defined on google.maps.Map\r\n */\r\n this.mapTrigger = function(event) {\r\n google.maps.event.trigger(this._map, event);\r\n };\r\n\r\n\r\n /**\r\n * Alias for google.maps.event.trigger(object, event)\r\n */\r\n this.trigger = function(object, event) {\r\n google.maps.event.trigger(object, event);\r\n };\r\n\r\n this._newElement = function(type, opts) {\r\n if (type === 'marker') {\r\n return new angulargmDefaults.markerConstructor(opts);\r\n } else if (type === 'polyline') {\r\n if (!(opts.path instanceof Array)) {\r\n throw 'polylineOptions did not contain a path';\r\n }\r\n return new angulargmDefaults.polylineConstructor(opts);\r\n } else if (type === 'circle') {\r\n return new angulargmDefaults.circleConstructor(opts);\r\n }\r\n else {\r\n throw 'unrecognized type ' + type;\r\n }\r\n };\r\n\r\n this._getElements = function(type) {\r\n if (!(type in this._elements)) {\r\n this._elements[type] = {};\r\n }\r\n return this._elements[type];\r\n };\r\n\r\n /**\r\n * Adds a new element to the map.\r\n * @return {boolean} true if an element was added, false if there was already\r\n * an element with the given id\r\n * @throw if any arguments are null/undefined or elementOptions does not\r\n * have all the required options (i.e. position)\r\n */\r\n this.addElement = function(type, scopeId, id, elementOptions) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n assertDefined(elementOptions, 'elementOptions');\r\n\r\n if (this.hasElement(type, scopeId, id)) {\r\n return false;\r\n }\r\n\r\n var elements = this._getElements(type);\r\n if (elements[scopeId] == null) {\r\n elements[scopeId] = {};\r\n }\r\n\r\n // google maps munges passed in options, so copy it first\r\n // extend instead of copy to preserve value objects\r\n var opts = {};\r\n angular.extend(opts, elementOptions);\r\n var element = this._newElement(type, opts);\r\n elements[scopeId][id] = element;\r\n element.setMap(this._map);\r\n\r\n var mapId = $scope.gmMapId();\r\n angulargmContainer.setMarker(mapId, element);\r\n\r\n return true;\r\n };\r\n\r\n /**\r\n * Updates an element on the map with new options.\r\n * @return {boolean} true if an element was updated, false if there was no\r\n * element with the given id to update\r\n * @throw if any arguments are null/undefined or elementOptions does not\r\n * have all the required options (i.e. position)\r\n */\r\n\r\n this.updateElement = function(type, scopeId, id, elementOptions) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n assertDefined(elementOptions, 'elementOptions');\r\n\r\n var element = this.getElement(type, scopeId, id);\r\n if (element) {\r\n element.setOptions(elementOptions);\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n this.hasElement = function(type, scopeId, id) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n return (this.getElement(type, scopeId, id) != null);\r\n };\r\n\r\n /**\r\n * @return {google maps element} the element with the given id, or null if no\r\n * such element exists\r\n */\r\n this.getElement = function (type, scopeId, id) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n\r\n var elements = this._getElements(type);\r\n if (elements[scopeId] != null && id in elements[scopeId]) {\r\n return elements[scopeId][id];\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n /**\r\n * @return {boolean} true if an element was removed, false if nothing\r\n * happened\r\n */\r\n this.removeElement = function(type, scopeId, id) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(id, 'id');\r\n\r\n var elements = this._getElements(type);\r\n var removed = false;\r\n var element = elements[scopeId][id];\r\n if (element) {\r\n element.setMap(null);\r\n removed = true;\r\n }\r\n elements[scopeId][id] = null;\r\n delete elements[scopeId][id];\r\n return removed;\r\n };\r\n\r\n /**\r\n * Applies a function to each element on the map.\r\n * @param {String} type of element, e.g. 'marker'\r\n * @param {Function} fn will be called with element as first argument\r\n * @throw if an argument is null or undefined\r\n */\r\n this.forEachElement = function(type, fn) {\r\n assertDefined(type, 'type');\r\n assertDefined(fn, 'fn');\r\n\r\n var elements = this._getElements(type);\r\n var scopeIds = Object.keys(elements);\r\n var allElements = scopeIds.reduce(function(accumulator, scopeId) {\r\n angular.forEach(elements[scopeId], function(element) {\r\n accumulator.push(element);\r\n });\r\n return accumulator;\r\n }, []);\r\n\r\n angular.forEach(allElements, function(element, id) {\r\n if (element != null) {\r\n fn(element, id);\r\n }\r\n });\r\n };\r\n\r\n\r\n /**\r\n * Applies a function to each element in a scope.\r\n * @param {String} type of element, e.g. 'marker'\r\n * @param {number} scope id\r\n * @param {Function} fn will called with marker as first argument\r\n * @throw if an argument is null or undefined\r\n */\r\n this.forEachElementInScope = function(type, scopeId, fn) {\r\n assertDefined(type, 'type');\r\n assertDefined(scopeId, 'scopeId');\r\n assertDefined(fn, 'fn');\r\n\r\n var elements = this._getElements(type);\r\n angular.forEach(elements[scopeId], function(element, id) {\r\n if (element != null) {\r\n fn(element, id);\r\n }\r\n });\r\n };\r\n\r\n this.getMap = function() {\r\n return this._map;\r\n };\r\n\r\n /** Instantiate controller */\r\n angular.bind(this, constructor)($scope, $element);\r\n\r\n }]);\r\n})();\r\n\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('angular-nicescroll', [])\r\n\r\n /* @ngInject */\r\n .factory('NicescrollService', function () {\r\n var load,\r\n queue = [];\r\n\r\n var service = {\r\n add: add\r\n };\r\n return service;\r\n\r\n ////////////\r\n\r\n function add(element, scope, attrs) {\r\n if (angular.isUndefined($.fn.niceScroll)) {\r\n queue.push({ element: element, scope: scope, attrs: attrs });\r\n if (!load) {\r\n load = true;\r\n $.ajax({\r\n url: '/js/jquery.nicescroll.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n start();\r\n }\r\n });\r\n }\r\n } else {\r\n init(element, scope, attrs);\r\n }\r\n }\r\n\r\n function start() {\r\n _.each(queue, function (item) {\r\n init(item.element, item.scope, item.attrs);\r\n });\r\n }\r\n\r\n function init(element, scope, attrs) {\r\n var niceScroll,\r\n options = angular.extend({}, {\r\n hidecursordelay: 500\r\n }, scope.$eval(attrs.niceOption));\r\n\r\n if (angular.isDefined(attrs.niceHover)) {\r\n element\r\n .mouseenter(function (event) {\r\n var nice = initNiceScroll();\r\n setTimeout(function () {\r\n if (nice && nice[0] && nice[0].rail) {\r\n nice[0].rail.removeClass('hidden');\r\n }\r\n }, 100);\r\n })\r\n .mouseleave(function (event) {\r\n removeNiceScroll();\r\n });\r\n } else {\r\n var nice = initNiceScroll();\r\n setTimeout(function () {\r\n if (nice && nice[0] && nice[0].rail) {\r\n nice[0].rail.removeClass('hidden');\r\n }\r\n }, 100);\r\n }\r\n\r\n scope.$on('$destroy', function () {\r\n element.off();\r\n if (niceScroll && angular.isDefined(niceScroll.version)) {\r\n niceScroll.remove();\r\n niceScroll = null;\r\n }\r\n });\r\n\r\n function initNiceScroll() {\r\n niceScroll = element.niceScroll(options);\r\n var niceObject = element.getNiceScroll();\r\n\r\n if (attrs.niceScrollObject) $parse(attrs.niceScrollObject).assign(scope, niceObject);\r\n\r\n niceScroll.onscrollend = function (data) {\r\n if (this.newscrolly >= this.page.maxh) {\r\n if (attrs.niceScrollEnd) scope.$evalAsync(attrs.niceScrollEnd);\r\n }\r\n if (data.end.y <= 0) {\r\n if (attrs.niceScrollTopEnd) scope.$evalAsync(attrs.niceScrollTopEnd);\r\n }\r\n };\r\n\r\n return niceObject;\r\n }\r\n\r\n function removeNiceScroll() {\r\n niceScroll.remove();\r\n }\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .directive('ngNicescroll', [\"NicescrollService\", function (NicescrollService) {\r\n return {\r\n link: function (scope, element, attrs) {\r\n if (!scope.device.isTouch) {\r\n NicescrollService.add(element, scope, attrs);\r\n }\r\n }\r\n };\r\n }]);\r\n})();\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name angular-scroll-animate.directive:when-visible\r\n * https://github.com/rpocklin/angular-scroll-animate\r\n * @restrict A\r\n * @param {string} when-not-visible function to execute when element is scrolled into viewport\r\n * @param {string=} when-not-visible function to execute when element is scrolled out of viewport\r\n * @param {delayPercent=} percentage (of px) to delay animate when visible transition.\r\n * @param {bindScrollTo=} override default scroll event binding to another parent container.\r\n *\r\n * @description\r\n * Allows method hooks into the detection of when an element is scrolled into or out of view.\r\n *\r\n * @example\r\n * \r\n * \r\n *
\r\n *
Broom
\r\n *
\r\n *
\r\n * \r\n * angular.module('example', []).controller('ExampleCtrl', function($scope) {\r\n *\r\n * $scope.animateIn = function($el) {\r\n * $el.removeClass('hidden');\r\n * $el.addClass('fadeIn');\r\n * };\r\n *\r\n * $scope.animateOut = function($el) {\r\n * $el.addClass('hidden');\r\n * $el.removeClassClass('fadeIn');\r\n * };\r\n * });\r\n *\r\n * \r\n * \r\n * .hidden { visibility: hidden; }\r\n * .fadeIn { transition: all 300ms ease-in 2s; }\r\n * \r\n *
\r\n */\r\nangular.module('angular-scroll-animate', []).directive('whenVisible', ['$document', '$window',\r\n function($document, $window) {\r\n\r\n var determineWhereElementIsInViewport =\r\n function($el, viewportHeight, whenVisibleFn, whenNotVisibleFn, delayPercent, scope) {\r\n\r\n var elementBounds = $el[0].getBoundingClientRect();\r\n\r\n var panelTop = elementBounds.top - (scope.offset || 0);\r\n var panelBottom = elementBounds.bottom;\r\n\r\n // pixel buffer until deciding to show the element\r\n var delayPx = delayPercent * elementBounds.height;\r\n\r\n var bottomVisible = (panelBottom - delayPx > 0) && (panelBottom < viewportHeight);\r\n var topVisible = (panelTop + delayPx <= viewportHeight) && (panelTop > 0);\r\n\r\n if ($el.data('hidden') && bottomVisible || topVisible) {\r\n whenVisibleFn($el, scope);\r\n $el.data('hidden', false);\r\n }\r\n\r\n // scrolled out from scrolling down or up\r\n else if (!($el.data('hidden')) && (panelBottom < 0 || panelTop > viewportHeight)) {\r\n whenNotVisibleFn($el, scope);\r\n $el.data('hidden', true);\r\n }\r\n };\r\n\r\n return {\r\n restrict: 'A',\r\n scope: {\r\n whenVisible: '&',\r\n whenNotVisible: '&?',\r\n delayPercent: '=?',\r\n bindScrollTo: '@?',\r\n offset: ' 1)) {\r\n throw new Error('Directive: angular-scroll-animate \\'delay-percent\\' attribute must be a decimal fraction between 0 and 1.');\r\n }\r\n }\r\n }],\r\n\r\n link: function(scope, el, attributes) {\r\n\r\n var delayPercent = attributes.delayPercent || 0.25; // lower = more eager to hide / show, higher = less eager\r\n var document = $document[0].documentElement;\r\n var checkPending = false;\r\n\r\n var updateVisibility = function() {\r\n determineWhereElementIsInViewport(el, document.clientHeight /* viewportHeight */ ,\r\n scope.whenVisible(), scope.whenNotVisible(), delayPercent, scope);\r\n\r\n checkPending = false;\r\n };\r\n\r\n var onScroll = function() {\r\n\r\n if (!checkPending) {\r\n checkPending = true;\r\n\r\n /* globals requestAnimationFrame */\r\n requestAnimationFrame(updateVisibility);\r\n }\r\n };\r\n\r\n var documentListenerEvents = 'scroll';\r\n\r\n /* allows overflow:auto on container element to animate for Safari browsers */\r\n if (attributes.bindScrollTo) {\r\n angular.element($document[0].querySelector(attributes.bindScrollTo)).on(documentListenerEvents, onScroll);\r\n }\r\n\r\n /* always bind to document scroll as well - works for overflow: auto on Chrome, Firefox browsers */\r\n $document.on(documentListenerEvents, onScroll);\r\n\r\n scope.$on('$destroy', function() {\r\n $document.off(documentListenerEvents, onScroll);\r\n });\r\n\r\n var $elWindow = angular.element($window);\r\n var windowListenerEvents = 'resize orientationchange';\r\n $elWindow.on(windowListenerEvents, onScroll);\r\n\r\n scope.$on('$destroy', function() {\r\n $elWindow.off(windowListenerEvents, onScroll);\r\n });\r\n\r\n // initialise\r\n el.data('hidden', true);\r\n scope.$evalAsync(onScroll);\r\n }\r\n };\r\n }]);\r\n","/*!\r\n *\t Angular Smooth Scroll (ngSmoothScroll)\r\n *\t Animates scrolling to elements, by David Oliveros.\r\n *\r\n * https://github.com/d-oliveros/ngSmoothScroll\r\n *\r\n *\t Version: 2.0.0\r\n * \t License: MIT\r\n */\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\tvar module = angular.module('smoothScroll', []);\r\n\r\n\r\n\t/**\r\n\t * Smooth scrolls the window/div to the provided element.\r\n\t *\r\n\t * 20150713 EDIT - zephinzer\r\n\t * \tAdded new option - containerId to account for scrolling within a DIV\r\n\t */\r\n\tvar smoothScroll = function (element, options) {\r\n\t\toptions = options || {};\r\n\r\n\t\t// Options\r\n\t\tvar duration = angular.isDefined(options.duration) ? options.duration : 350,\r\n\t\t\toffset = options.offset || 0,\r\n\t\t\teasing = options.easing || 'easeInOutQuart',\r\n\t\t\tcallbackBefore = options.callbackBefore || function() {},\r\n\t\t\tcallbackAfter = options.callbackAfter || function() {},\r\n\t\t\tcontainer = document.getElementById(options.containerId) || null,\r\n\t\t\tcontainerPresent = (container != undefined && container != null);\r\n\r\n\t\t/**\r\n\t\t * Retrieve current location\r\n\t\t */\r\n\t\tvar getScrollLocation = function() {\r\n\t\t\tif(containerPresent) {\r\n\t\t\t\treturn container.scrollTop;\r\n\t\t\t} else {\r\n\t\t\t\tif(window.pageYOffset) {\r\n\t\t\t\t\treturn window.pageYOffset;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn document.documentElement.scrollTop;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Calculate easing pattern.\r\n\t\t *\r\n\t\t * 20150713 edit - zephinzer\r\n\t\t * - changed if-else to switch\r\n\t\t * @see http://archive.oreilly.com/pub/a/server-administration/excerpts/even-faster-websites/writing-efficient-javascript.html\r\n\t\t */\r\n\t\tvar getEasingPattern = function(type, time) {\r\n\t\t\tswitch(type) {\r\n\t\t\t\tcase 'easeInQuad': \t\treturn time * time; // accelerating from zero velocity\r\n\t\t\t\tcase 'easeOutQuad': \treturn time * (2 - time); // decelerating to zero velocity\r\n\t\t\t\tcase 'easeInOutQuad': \treturn time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration\r\n\t\t\t\tcase 'easeInCubic': \treturn time * time * time; // accelerating from zero velocity\r\n\t\t\t\tcase 'easeOutCubic': \treturn (--time) * time * time + 1; // decelerating to zero velocity\r\n\t\t\t\tcase 'easeInOutCubic': \treturn time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration\r\n\t\t\t\tcase 'easeInQuart': \treturn time * time * time * time; // accelerating from zero velocity\r\n\t\t\t\tcase 'easeOutQuart': \treturn 1 - (--time) * time * time * time; // decelerating to zero velocity\r\n\t\t\t\tcase 'easeInOutQuart': \treturn time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration\r\n\t\t\t\tcase 'easeInQuint': \treturn time * time * time * time * time; // accelerating from zero velocity\r\n\t\t\t\tcase 'easeOutQuint': \treturn 1 + (--time) * time * time * time * time; // decelerating to zero velocity\r\n\t\t\t\tcase 'easeInOutQuint': \treturn time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration\r\n\t\t\t\tdefault:\t\t\t\treturn time;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t/**\r\n\t\t * Calculate how far to scroll\r\n\t\t */\r\n\t\tvar getEndLocation = function(element) {\r\n\t\t\tvar location = 0;\r\n\t\t\tif (element && element.offsetParent) {\r\n\t\t\t\tdo {\r\n\t\t\t\t\tlocation += element.offsetTop;\r\n\t\t\t\t\telement = element.offsetParent;\r\n\t\t\t\t} while (element);\r\n\t\t\t}\r\n\t\t\tlocation = Math.max(location - offset, 0);\r\n\t\t\treturn location;\r\n\t\t};\r\n\r\n\t\t// Initialize the whole thing\r\n\t\tsetTimeout( function() {\r\n\t\t\tvar currentLocation = null,\r\n\t\t\t\tstartLocation \t= getScrollLocation(),\r\n\t\t\t\tendLocation \t= getEndLocation(element),\r\n\t\t\t\ttimeLapsed \t\t= 0,\r\n\t\t\t\tdistance \t\t= endLocation - startLocation,\r\n\t\t\t\tpercentage,\r\n\t\t\t\tposition,\r\n\t\t\t\tscrollHeight,\r\n\t\t\t\tinternalHeight;\r\n\r\n\t\t\t/**\r\n\t\t\t * Stop the scrolling animation when the anchor is reached (or at the top/bottom of the page)\r\n\t\t\t */\r\n\t\t\tvar stopAnimation = function () {\r\n\t\t\t\tcurrentLocation = getScrollLocation();\r\n\t\t\t\tif(containerPresent) {\r\n\t\t\t\t\tscrollHeight = container.scrollHeight;\r\n\t\t\t\t\tinternalHeight = container.clientHeight + currentLocation;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscrollHeight = document.body.scrollheight;\r\n\t\t\t\t\tinternalHeight = window.innerHeight + currentLocation;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (\r\n\t\t\t\t\t( // condition 1\r\n\t\t\t\t\t\tposition == endLocation\r\n\t\t\t\t\t) ||\r\n\t\t\t\t\t( // condition 2\r\n\t\t\t\t\t\tcurrentLocation == endLocation\r\n\t\t\t\t\t) ||\r\n\t\t\t\t\t( // condition 3\r\n\t\t\t\t\t\tinternalHeight >= scrollHeight\r\n\t\t\t\t\t)\r\n\t\t\t\t) { // stop\r\n\t\t\t\t\tclearInterval(runAnimation);\r\n\t\t\t\t\tcallbackAfter(element);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\t/**\r\n\t\t\t * Scroll the page by an increment, and check if it's time to stop\r\n\t\t\t */\r\n\t\t\tvar animateScroll = function () {\r\n\t\t\t\ttimeLapsed += 16;\r\n\t\t\t\tpercentage = ( timeLapsed / duration );\r\n\t\t\t\tpercentage = ( percentage > 1 ) ? 1 : percentage;\r\n\t\t\t\tposition = startLocation + ( distance * getEasingPattern(easing, percentage) );\r\n\t\t\t\tif(containerPresent) {\r\n\t\t\t\t\tcontainer.scrollTop = position;\r\n\t\t\t\t} else {\r\n\t\t\t\t\twindow.scrollTo( 0, position );\r\n\t\t\t\t}\r\n\t\t\t\tstopAnimation();\r\n\t\t\t};\r\n\r\n\t\t\tcallbackBefore(element);\r\n\t\t\tvar runAnimation = setInterval(animateScroll, 16);\r\n\t\t}, 0);\r\n\t};\r\n\r\n\r\n\t// Expose the library in a factory\r\n\t//\r\n\tmodule.factory('smoothScroll', function() {\r\n\t\treturn smoothScroll;\r\n\t});\r\n\r\n\r\n\t/**\r\n\t * Scrolls the window to this element, optionally validating an expression\r\n\t *\r\n\t * 20150713 EDIT - zephinzer\r\n\t * \tAdded containerId to attributes for smooth scrolling within a DIV\r\n\t */\r\n\tmodule.directive('smoothScroll', ['smoothScroll', function(smoothScroll) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {\r\n\t\t\t\tcallbackBefore: '&',\r\n\t\t\t\tcallbackAfter: '&',\r\n\t\t\t},\r\n\t\t\tlink: function($scope, $elem, $attrs) {\r\n\t\t\t\tif ( typeof $attrs.scrollIf === 'undefined' || $attrs.scrollIf === 'true' ) {\r\n\t\t\t\t\tsetTimeout( function() {\r\n\r\n\t\t\t\t\t\tvar callbackBefore = function(element) {\r\n\t\t\t\t\t\t\tif ( $attrs.callbackBefore ) {\r\n\t\t\t\t\t\t\t\tvar exprHandler = $scope.callbackBefore({ element: element });\r\n\t\t\t\t\t\t\t\tif (typeof exprHandler === 'function') {\r\n\t\t\t\t\t\t\t\t\texprHandler(element);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tvar callbackAfter = function(element) {\r\n\t\t\t\t\t\t\tif ( $attrs.callbackAfter ) {\r\n\t\t\t\t\t\t\t\tvar exprHandler = $scope.callbackAfter({ element: element });\r\n\t\t\t\t\t\t\t\tif (typeof exprHandler === 'function') {\r\n\t\t\t\t\t\t\t\t\texprHandler(element);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tsmoothScroll($elem[0], {\r\n\t\t\t\t\t\t\tduration: $attrs.duration,\r\n\t\t\t\t\t\t\toffset: $attrs.offset,\r\n\t\t\t\t\t\t\teasing: $attrs.easing,\r\n\t\t\t\t\t\t\tcallbackBefore: callbackBefore,\r\n\t\t\t\t\t\t\tcallbackAfter: callbackAfter,\r\n\t\t\t\t\t\t\tcontainerId: $attrs.containerId\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}, 0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t}]);\r\n\r\n\r\n\t/**\r\n\t * Scrolls to a specified element ID when this element is clicked\r\n\t *\r\n\t * 20150713 EDIT - zephinzer\r\n\t * \tAdded containerId to attributes for smooth scrolling within a DIV\r\n\t */\r\n\tmodule.directive('scrollTo', ['smoothScroll', function(smoothScroll) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {\r\n\t\t\t\tcallbackBefore: '&',\r\n\t\t\t\tcallbackAfter: '&',\r\n\t\t\t},\r\n\t\t\tlink: function($scope, $elem, $attrs) {\r\n\t\t\t\tvar targetElement;\r\n\r\n\t\t\t\t$elem.on('click', function(e) {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\ttargetElement = document.getElementById($attrs.scrollTo);\r\n\t\t\t\t\tif ( !targetElement ) return;\r\n\r\n\t\t\t\t\tvar callbackBefore = function(element) {\r\n\t\t\t\t\t\tif ( $attrs.callbackBefore ) {\r\n\t\t\t\t\t\t\tvar exprHandler = $scope.callbackBefore({element: element});\r\n\t\t\t\t\t\t\tif (typeof exprHandler === 'function') {\r\n\t\t\t\t\t\t\t\texprHandler(element);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tvar callbackAfter = function(element) {\r\n\t\t\t\t\t\tif ( $attrs.callbackAfter ) {\r\n\t\t\t\t\t\t\tvar exprHandler = $scope.callbackAfter({element: element});\r\n\t\t\t\t\t\t\tif (typeof exprHandler === 'function') {\r\n\t\t\t\t\t\t\t\texprHandler(element);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tsmoothScroll(targetElement, {\r\n\t\t\t\t\t\tduration: $attrs.duration,\r\n\t\t\t\t\t\toffset: $attrs.offset,\r\n\t\t\t\t\t\teasing: $attrs.easing,\r\n\t\t\t\t\t\tcallbackBefore: callbackBefore,\r\n\t\t\t\t\t\tcallbackAfter: callbackAfter,\r\n\t\t\t\t\t\tcontainerId: $attrs.containerId\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}]);\r\n\r\n}());","/*\r\n * angular-sticky-plugin\r\n * https://github.com/harm-less/angular-sticky\r\n\r\n * Version: 0.4.1 - 2017-06-12\r\n * License: MIT\r\n */\r\n'use strict';\r\n\r\nangular.module('hl.sticky', [])\r\n\r\n\t.factory('mediaQuery', function () {\r\n\t\treturn {\r\n\t\t\tmatches: function (query) {\r\n\t\t\t\treturn (query && (matchMedia('(' + query + ')').matches || matchMedia(query).matches));\r\n\t\t\t}\r\n\t\t};\r\n\t})\r\n\r\n\t.factory('hlStickyStack', [\"$document\", \"DefaultStickyStackName\", function ($document, DefaultStickyStackName) {\r\n\r\n\t\tvar documentEl = $document[0].documentElement;\r\n\r\n\t\tvar stacks = {};\r\n\r\n\t\tfunction stickyStack(options) {\r\n\r\n\t\t\toptions = options || {};\r\n\r\n\t\t\tvar stackName = options.name || DefaultStickyStackName;\r\n\r\n\t\t\t// use existing sticky stack\r\n\t\t\tif (stacks[stackName]) {\r\n\t\t\t\treturn stacks[stackName];\r\n\t\t\t}\r\n\r\n\t\t\t// should be above all Bootstrap's z-indexes (but just before the modals)\r\n\t\t\tvar stickyZIndex = 1039;\r\n\t\t\tvar stack = [];\r\n\r\n\t\t\tvar $stack = {};\r\n\r\n\t\t\t$stack.options = options;\r\n\t\t\t$stack.stackName = stackName;\r\n\r\n\t\t\t$stack.add = function (id, sticky) {\r\n\t\t\t\tif (!angular.isString(id) || id === '') {\r\n\t\t\t\t\tid = $stack.length();\r\n\t\t\t\t}\r\n\t\t\t\tsticky.id = id;\r\n\t\t\t\tsticky.zIndex = stickyZIndex;\r\n\t\t\t\tstack.push(sticky);\r\n\r\n\t\t\t\tstickyZIndex -= 1;\r\n\t\t\t\treturn sticky;\r\n\t\t\t};\r\n\t\t\t$stack.get = function (id) {\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tif (id == stack[i].id) { // jshint ignore:line\r\n\t\t\t\t\t\treturn stack[i];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t\t$stack.index = function (id) {\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tif (id == stack[i].id) { // jshint ignore:line\r\n\t\t\t\t\t\treturn i;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn -1;\r\n\t\t\t};\r\n\t\t\t$stack.range = function (start, end) {\r\n\t\t\t\treturn stack.slice(start, end);\r\n\t\t\t};\r\n\t\t\t$stack.all = function () {\r\n\t\t\t\treturn stack;\r\n\t\t\t};\r\n\t\t\t$stack.keys = function () {\r\n\t\t\t\tvar ids = [];\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tids.push(stack[i].id);\r\n\t\t\t\t}\r\n\t\t\t\treturn ids;\r\n\t\t\t};\r\n\t\t\t$stack.top = function () {\r\n\t\t\t\treturn stack[stack.length - 1];\r\n\t\t\t};\r\n\t\t\t$stack.remove = function (id) {\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tif (id == stack[i].id) { // jshint ignore:line\r\n\t\t\t\t\t\tstickyZIndex += 1;\r\n\t\t\t\t\t\treturn stack.splice(i, 1)[0];\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t};\r\n\t\t\t$stack.removeTop = function () {\r\n\t\t\t\tstickyZIndex += 1;\r\n\t\t\t\treturn stack.splice(stack.length - 1, 1)[0];\r\n\t\t\t};\r\n\t\t\t$stack.length = function () {\r\n\t\t\t\treturn stack.length;\r\n\t\t\t};\r\n\r\n\t\t\t$stack.height = function (anchor) {\r\n\t\t\t\tvar height = {\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tbottom: 0\r\n\t\t\t\t};\r\n\t\t\t\tangular.forEach(stack, function(item) {\r\n\t\t\t\t\theight[item.anchor()] += item.computedHeight(anchor);\r\n\t\t\t\t});\r\n\t\t\t\treturn height[anchor];\r\n\t\t\t};\r\n\t\t\t$stack.heightAt = function (anchor, at) {\r\n\t\t\t\tvar atAdjusted = at - 1;\r\n\t\t\t\tvar stick;\r\n\t\t\t\tvar computedHeight;\r\n\t\t\t\tvar height = {\r\n\t\t\t\t\ttop: 0,\r\n\t\t\t\t\tbottom: 0\r\n\t\t\t\t};\r\n\t\t\t\tfor (var i = 0; i < stack.length; i++) {\r\n\t\t\t\t\tstick = stack[i];\r\n\t\t\t\t\t// check if the sticky element sticks at the queried position minus 1 pixel if the position is at the same place\r\n\t\t\t\t\tif (stick.sticksAtPosition(anchor, atAdjusted)) {\r\n\t\t\t\t\t\tvar stickyAnchor = stick.anchor();\r\n\t\t\t\t\t\tcomputedHeight = stick.computedHeight(anchor, atAdjusted - height[stickyAnchor]);\r\n\r\n\t\t\t\t\t\t// add the height of the sticky element to the total\r\n\t\t\t\t\t\theight[stickyAnchor] += computedHeight;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn height[anchor];\r\n\t\t\t};\r\n\t\t\t$stack.heightCurrent = function (anchor) {\r\n\t\t\t\treturn $stack.heightAt(anchor, window.pageYOffset || documentEl.scrollTop);\r\n\t\t\t};\r\n\r\n\t\t\tstacks[stackName] = $stack;\r\n\r\n\t\t\treturn $stack;\r\n\t\t}\r\n\r\n\t\treturn stickyStack;\r\n\t}])\r\n\r\n\t.factory('hlStickyElement', [\"$document\", \"$log\", \"hlStickyStack\", \"throttle\", \"mediaQuery\", function($document, $log, hlStickyStack, throttle, mediaQuery) {\r\n\t\treturn function(element, options) {\r\n\t\t\toptions = options || {};\r\n\r\n\t\t\tvar stickyLineTop;\r\n\t\t\tvar stickyLineBottom;\r\n\t\t\tvar placeholder;\r\n\r\n\t\t\tvar _isSticking = false;\r\n\r\n\t\t\t// elements\r\n\t\t\tvar bodyEl = angular.element($document[0].body);\r\n\t\t\tvar nativeEl = element[0];\r\n\t\t\tvar documentEl = $document[0].documentElement;\r\n\r\n\t\t\t// attributes\r\n\t\t\tvar id = options.id || null;\r\n\t\t\tvar stickyMediaQuery = angular.isDefined(options.mediaQuery) ? options.mediaQuery : false;\r\n\t\t\tvar stickyClass = angular.isString(options.stickyClass) && options.stickyClass !== '' ? options.stickyClass : 'is-sticky';\r\n\t\t\tvar usePlaceholder = angular.isDefined(options.usePlaceholder) ? options.usePlaceholder : true;\r\n\t\t\tvar offsetTop = options.offsetTop ? parseInt(options.offsetTop) : 0;\r\n\t\t\tvar offsetBottom = options.offsetBottom ? parseInt(options.offsetBottom) : 0;\r\n\t\t\tvar anchor = typeof options.anchor === 'string' ? options.anchor.toLowerCase().trim() : 'top';\r\n\t\t\tvar container = null;\r\n\t\t\tvar stack = options.stack === false ? null : options.stack || hlStickyStack();\r\n\r\n\t\t\tvar event = angular.isFunction(options.event) ? options.event : angular.noop;\r\n\t\t\tvar globalOffset = {\r\n\t\t\t\ttop: 0,\r\n\t\t\t\tbottom: 0\r\n\t\t\t};\r\n\r\n\t\t\t// initial style\r\n\t\t\tvar initialCSS = {\r\n\t\t\t\tstyle: element.attr('style') || ''\r\n\t\t\t};\r\n\r\n\t\t\t// Methods\r\n\t\t\t//\r\n\t\t\tfunction stickyLinePositionTop() {\r\n\t\t\t\tif (_isSticking) {\r\n\t\t\t\t\treturn stickyLineTop;\r\n\t\t\t\t}\r\n\t\t\t\tstickyLineTop = _getTopOffset(nativeEl) - offsetTop - _stackOffsetTop();\r\n\t\t\t\treturn stickyLineTop;\r\n\t\t\t}\r\n\t\t\tfunction stickyLinePositionBottom() {\r\n\t\t\t\tif (_isSticking) {\r\n\t\t\t\t\treturn stickyLineBottom;\r\n\t\t\t\t}\r\n\t\t\t\tstickyLineBottom = _getBottomOffset(nativeEl) + offsetBottom + _stackOffsetBottom();\r\n\t\t\t\treturn stickyLineBottom;\r\n\t\t\t}\r\n\t\t\tfunction isEnabled() {\r\n\t\t\t\treturn (!angular.isDefined(options.enable) || options.enable);\r\n\t\t\t}\r\n\t\t\tfunction isSticky() {\r\n\t\t\t\treturn (isEnabled() && _isSticking) || options.alwaysSticky;\r\n\t\t\t}\r\n\t\t\tfunction sticksAtPosition(anchor, scrolledDistance) {\r\n\t\t\t\tif (!matchesMediaQuery()) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tswitch (anchor) {\r\n\t\t\t\t\tcase 'top':\t{\r\n\t\t\t\t\t\treturn sticksAtPositionTop(scrolledDistance);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tcase 'bottom': {\r\n\t\t\t\t\t\treturn sticksAtPositionBottom(scrolledDistance);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdefault: {\r\n\t\t\t\t\t\t$log.error('Unknown anchor \"' + anchor + '\"');\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tfunction sticksAtPositionTop(scrolledDistance) {\r\n\t\t\t\tscrolledDistance = scrolledDistance !== undefined ? scrolledDistance : window.pageYOffset || bodyEl.scrollTop;\r\n\t\t\t\tvar scrollTop = scrolledDistance - (documentEl.clientTop || 0);\r\n\t\t\t\treturn scrollTop >= stickyLinePositionTop();\r\n\t\t\t}\r\n\t\t\tfunction sticksAtPositionBottom(scrolledDistance) {\r\n\t\t\t\tscrolledDistance = scrolledDistance !== undefined ? scrolledDistance : (window.pageYOffset || bodyEl.scrollTop);\r\n\t\t\t\tvar scrollBottom = scrolledDistance + window.innerHeight;\r\n\t\t\t\treturn scrollBottom <= stickyLinePositionBottom();\r\n\t\t\t}\r\n\t\t\tfunction matchesMediaQuery() {\r\n\t\t\t\treturn stickyMediaQuery === false || mediaQuery.matches(stickyMediaQuery);\r\n\t\t\t}\r\n\r\n\t\t\tfunction render() {\r\n\t\t\t\tvar shouldStick = sticksAtPosition(anchor);\r\n\r\n\t\t\t\tif (angular.isDefined(options.enable) && !options.enable) {\r\n\t\t\t\t\tshouldStick = false;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (angular.isDefined(options.alwaysSticky) && options.alwaysSticky) {\r\n\t\t\t\t\tshouldStick = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Switch the sticky mode if the element crosses the sticky line\r\n\t\t\t\t// don't make the element sticky when it's already sticky\r\n\t\t\t\tif (shouldStick && !_isSticking) {\r\n\t\t\t\t\tstickElement();\r\n\t\t\t\t\tevent({event: 'stick'});\r\n\t\t\t\t}\r\n\t\t\t\t// don't unstick the element sticky when it isn't sticky already\r\n\t\t\t\telse if (!shouldStick && _isSticking) {\r\n\t\t\t\t\tunstickElement();\r\n\t\t\t\t\tevent({event: 'unstick'});\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// stick after care\r\n\t\t\t\tif (_isSticking) {\r\n\t\t\t\t\t// update the top offset at an already sticking element\r\n\t\t\t\t\tif (anchor === 'top') {\r\n\t\t\t\t\t\telement.css('top', (offsetTop + _stackOffset(anchor) - containerBoundsBottom()) + 'px');\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (anchor === 'bottom') {\r\n\t\t\t\t\t\telement.css('bottom', (offsetBottom + _stackOffset(anchor) - containerBoundsTop()) + 'px');\r\n\t\t\t\t\t}\r\n\t\t\t\t\telement.css('width', elementWidth() + 'px');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction stickElement() {\r\n\t\t\t\t_isSticking = true;\r\n\r\n\t\t\t\telement.addClass(stickyClass);\r\n\r\n\t\t\t\t// create placeholder to avoid jump\r\n\t\t\t\tif (usePlaceholder) {\r\n\t\t\t\t\tplaceholder = placeholder || angular.element('
');\r\n\t\t\t\t\tplaceholder.css('height', elementHeight() + 'px');\r\n\t\t\t\t\telement.after(placeholder);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar rect = nativeEl.getBoundingClientRect();\r\n\t\t\t\tvar css = {\r\n\t\t\t\t\t'width': elementWidth() + 'px',\r\n\t\t\t\t\t'position': 'fixed',\r\n\t\t\t\t\t'left': rect.left + 'px',\r\n\t\t\t\t\t'z-index': stack ? stack.get(id).zIndex - (globalOffset.zIndex || 0) : null\r\n\t\t\t\t};\r\n\r\n\t\t\t\tcss['margin-' + anchor] = 0;\r\n\t\t\t\telement.css(css);\r\n\t\t\t}\r\n\t\t\tfunction unstickElement() {\r\n\t\t\t\t_isSticking = false;\r\n\r\n\t\t\t\telement.removeClass(stickyClass);\r\n\r\n\t\t\t\t// reset the original css we might have changed when the object was sticky\r\n\t\t\t\telement.attr('style', initialCSS.style);\r\n\r\n\t\t\t\t// if a placeholder was used, remove it from the DOM\r\n\t\t\t\tif (placeholder) {\r\n\t\t\t\t\tplaceholder.remove();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tfunction elementWidth() {\r\n\t\t\t\treturn nativeEl.offsetWidth;\r\n\t\t\t}\r\n\t\t\tfunction elementHeight() {\r\n\t\t\t\treturn nativeEl.offsetHeight;\r\n\t\t\t}\r\n\r\n\t\t\tfunction _getTopOffset(element) {\r\n\t\t\t\tvar pixels = 0;\r\n\t\t\t\tif (element && element.offsetParent) {\r\n\t\t\t\t\tdo {\r\n\t\t\t\t\t\tpixels += element.offsetTop;\r\n\t\t\t\t\t\telement = element.offsetParent;\r\n\t\t\t\t\t} while (element);\r\n\t\t\t\t}\r\n\t\t\t\treturn pixels;\r\n\t\t\t}\r\n\r\n\t\t\tfunction _getBottomOffset (element) {\r\n\t\t\t\treturn _getTopOffset(element) + element.clientHeight;\r\n\t\t\t}\r\n\r\n\t\t\tfunction _stackOffset(anchor) {\r\n\t\t\t\tvar extraOffset = 0;\r\n\r\n\t\t\t\tif (anchor === 'top' && globalOffset.top > 0) {\r\n\t\t\t\t\textraOffset += globalOffset.top;\r\n\t\t\t\t}\r\n\t\t\t\tif (anchor === 'bottom' && globalOffset.bottom > 0) {\r\n\t\t\t\t\textraOffset += globalOffset.bottom;\r\n\t\t\t\t}\r\n\t\t\t\tif (stack) {\r\n\t\t\t\t\tvar stickIndex = stack.index(id);\r\n\t\t\t\t\tif (anchor === 'top') {\r\n\t\t\t\t\t\tif (stickIndex > 0) {\r\n\t\t\t\t\t\t\t// @todo the stack range calculation should be diverted to the stack\r\n\t\t\t\t\t\t\tstack.range(0, stickIndex).forEach(function (stick) {\r\n\t\t\t\t\t\t\t\tif (stick.isSticky()) {\r\n\t\t\t\t\t\t\t\t\textraOffset += stick.computedHeight(anchor);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (anchor === 'bottom') {\r\n\t\t\t\t\t\tif (stickIndex !== stack.length() - 1) {\r\n\t\t\t\t\t\t\t// @todo the stack range calculation should be diverted to the stack\r\n\t\t\t\t\t\t\tstack.range(stickIndex + 1, stack.length()).forEach(function (stick) {\r\n\t\t\t\t\t\t\t\tif (stick.isSticky()) {\r\n\t\t\t\t\t\t\t\t\textraOffset += stick.computedHeight(anchor);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\treturn extraOffset;\r\n\t\t\t}\r\n\t\t\tfunction _stackOffsetTop() { return _stackOffset('top'); }\r\n\t\t\tfunction _stackOffsetBottom() { return _stackOffset('bottom'); }\r\n\r\n\t\t\tfunction computedHeight(anchor, scrolledDistance) {\r\n\t\t\t\tif (anchor === 'top') {\r\n\t\t\t\t\treturn Math.max(0, elementHeight() - containerBoundsBottom(scrolledDistance) + offsetTop);\r\n\t\t\t\t}\r\n\t\t\t\telse if (anchor === 'bottom') {\r\n\t\t\t\t\treturn Math.max(0, elementHeight() - containerBoundsTop(scrolledDistance) + offsetBottom);\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\t// @todo dffgdg\r\n\t\t\tfunction containerBoundsTop(scrolledDistance) {\r\n\t\t\t\tif (container === null) {\r\n\t\t\t\t\tcontainer = options.container !== undefined ? angular.isString(options.container) ? angular.element(documentEl.querySelector('#' + options.container))[0] : options.container : false;\r\n\t\t\t\t}\r\n\t\t\t\tif (container) {\r\n\t\t\t\t\tvar hasScrollDistance = !(scrolledDistance === null || scrolledDistance === undefined);\r\n\t\t\t\t\tvar containerRect = container.getBoundingClientRect();\r\n\t\t\t\t\tvar containerBottom = !hasScrollDistance ? containerRect.top - window.innerHeight + elementHeight() : (_getTopOffset(container) + containerRect.height) - scrolledDistance;\r\n\t\t\t\t\treturn Math.max(0, containerBottom - (offsetTop + _stackOffset(anchor)));\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t\tfunction containerBoundsBottom(scrolledDistance) {\r\n\t\t\t\tif (container === null) {\r\n\t\t\t\t\tcontainer = options.container !== undefined ? angular.isString(options.container) ? angular.element(documentEl.querySelector('#' + options.container))[0] : options.container : false;\r\n\t\t\t\t}\r\n\t\t\t\tif (container) {\r\n\t\t\t\t\tvar hasScrollDistance = !(scrolledDistance === null || scrolledDistance === undefined);\r\n\t\t\t\t\tvar containerRect = container.getBoundingClientRect();\r\n\t\t\t\t\tvar containerBottom = !hasScrollDistance ? containerRect.bottom : (_getTopOffset(container) + containerRect.height) - scrolledDistance;\r\n\t\t\t\t\treturn Math.max(0, (offsetTop + _stackOffset(anchor) + elementHeight()) - containerBottom);\r\n\t\t\t\t}\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tvar $api = {};\r\n\r\n\t\t\tif (stack) {\r\n\t\t\t\t// add element to the sticky stack and save the id\r\n\t\t\t\tvar stackItem = stack.add(id, $api);\r\n\t\t\t\tid = stackItem.id;\r\n\t\t\t}\r\n\r\n\t\t\t$api.draw = function(drawOptions) {\r\n\t\t\t\tdrawOptions = drawOptions || {};\r\n\t\t\t\tvar offset = drawOptions.offset;\r\n\t\t\t\tif (offset) {\r\n\t\t\t\t\t// setting global offsets added to the local offsets of the sticky element\r\n\t\t\t\t\tglobalOffset.top = offset.top || 0;\r\n\t\t\t\t\tglobalOffset.bottom = offset.bottom || 0;\r\n\t\t\t\t\tglobalOffset.zIndex = offset.zIndex;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// for resizing or other purposes that require a forced re-draw, we simply un-stick the element and re-stick it using the render method\r\n\t\t\t\tif (drawOptions.force === true) {\r\n\t\t\t\t\tunstickElement();\r\n\t\t\t\t}\r\n\t\t\t\trender();\r\n\t\t\t};\r\n\r\n\t\t\t$api.anchor = function() {\r\n\t\t\t\treturn anchor;\r\n\t\t\t};\r\n\r\n\t\t\t$api.isSticky = isSticky;\r\n\t\t\t$api.isEnabled = isEnabled;\r\n\t\t\t$api.computedHeight = computedHeight;\r\n\t\t\t$api.sticksAtPosition = sticksAtPosition;\r\n\r\n\t\t\t$api.destroy = function() {\r\n\t\t\t\tunstickElement();\r\n\t\t\t\tif (stack) {\r\n\t\t\t\t\tstack.remove(id);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\treturn $api;\r\n\t\t};\r\n\t}])\r\n\r\n\t.constant('DefaultStickyStackName', 'default-stack')\r\n\r\n\t.provider('hlStickyElementCollection', function() {\r\n\r\n\t\tvar $$count = 0;\r\n\r\n\t\tvar $stickyElement = {\r\n\t\t\tcollections: {},\r\n\t\t\tdefaults: {\r\n\t\t\t\tcheckDelay: 250\r\n\t\t\t},\r\n\t\t\telementsDefaults: {\r\n\r\n\t\t\t},\r\n\t\t\t$get: [\"$rootScope\", \"$window\", \"$document\", \"$log\", \"DefaultStickyStackName\", \"hlStickyElement\", \"hlStickyStack\", \"throttle\", function($rootScope, $window, $document, $log, DefaultStickyStackName, hlStickyElement, hlStickyStack, throttle) {\r\n\r\n\t\t\t\tvar windowEl = angular.element($window);\r\n\r\n\t\t\t\t// var unbindViewContentLoaded;\r\n\t\t\t\t// var unbindIncludeContentLoaded;\r\n\t\t\t\tvar throttledResize;\r\n\r\n\t\t\t\tfunction init() {\r\n\t\t\t\t\t$$count++;\r\n\r\n\t\t\t\t\t// make sure we can initialize it only once\r\n\t\t\t\t\tif ($$count > 1) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// bind events\r\n\t\t\t\t\tthrottledResize = throttle(resize, $stickyElement.defaults.checkDelay, {leading: false});\r\n\t\t\t\t\twindowEl.on('resize', throttledResize);\r\n\t\t\t\t\twindowEl.on('scroll', drawEvent);\r\n\r\n\t\t\t\t\t// unbindViewContentLoaded = $rootScope.$on('$viewContentLoaded', throttledResize);\r\n\t\t\t\t\t// unbindIncludeContentLoaded = $rootScope.$on('$includeContentLoaded', throttledResize);\r\n\t\t\t\t\tthrottledResize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction destroy() {\r\n\t\t\t\t\t// check internal references counter\r\n\t\t\t\t\t$$count--;\r\n\t\t\t\t\tif ($$count > 0) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// unbind events\r\n\t\t\t\t\twindowEl.off('resize', throttledResize);\r\n\t\t\t\t\twindowEl.off('scroll', drawEvent);\r\n\t\t\t\t\t// unbindViewContentLoaded();\r\n\t\t\t\t\t// unbindIncludeContentLoaded();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction drawEvent() {\r\n\t\t\t\t\tdraw();\r\n\t\t\t\t}\r\n\t\t\t\tfunction resize() {\r\n\t\t\t\t\tdraw({force: true});\r\n\t\t\t\t}\r\n\t\t\t\tfunction draw(drawOptions) {\r\n\t\t\t\t\tangular.forEach($stickyElement.collections, function(collection) {\r\n\t\t\t\t\t\tcollection.draw(drawOptions);\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfunction stickyElementFactory(options) {\r\n\r\n\t\t\t\t\tif (!options || !angular.isObject(options)) {\r\n\t\t\t\t\t\t$log.warn('Must supply an options object');\r\n\t\t\t\t\t\toptions = {};\r\n\t\t\t\t\t}\r\n\t\t\t\t\toptions = angular.extend({}, $stickyElement.elementsDefaults, options);\r\n\r\n\t\t\t\t\tvar collectionName = options.name || DefaultStickyStackName;\r\n\r\n\t\t\t\t\t// use existing element collection\r\n\t\t\t\t\tif ($stickyElement.collections[collectionName]) {\r\n\t\t\t\t\t\treturn $stickyElement.collections[collectionName];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar stickyStackFactory = hlStickyStack({\r\n\t\t\t\t\t\tname: collectionName\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tvar trackedElements = [];\r\n\r\n\t\t\t\t\tvar $sticky = {};\r\n\r\n\t\t\t\t\t$sticky.addElement = function (element, stickyOptions) {\r\n\t\t\t\t\t\tstickyOptions = stickyOptions || {};\r\n\t\t\t\t\t\tstickyOptions.stack = stickyStackFactory;\r\n\t\t\t\t\t\tvar sticky = hlStickyElement(element, stickyOptions);\r\n\t\t\t\t\t\ttrackedElements.push({\r\n\t\t\t\t\t\t\tstickyElement: sticky,\r\n\t\t\t\t\t\t\telement: element\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\treturn sticky;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t$sticky.removeElement = function(element) {\r\n\r\n\t\t\t\t\t\tvar toDelete;\r\n\t\t\t\t\t\tfor (var i = trackedElements.length; i--;) {\r\n\t\t\t\t\t\t\tif ((angular.isString(element) && '#' + trackedElements[i].element.id === element) || trackedElements[i].element === element) {\r\n\t\t\t\t\t\t\t\ttoDelete = i;\r\n\t\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tvar deletedElement = trackedElements.splice(toDelete, 1)[0];\r\n\t\t\t\t\t\tif (deletedElement) {\r\n\t\t\t\t\t\t\tdeletedElement.stickyElement.destroy();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\treturn deletedElement;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t$sticky.draw = function(drawOptions) {\r\n\t\t\t\t\t\tvar _drawOptions = {};\r\n\t\t\t\t\t\tif (options.parent) {\r\n\t\t\t\t\t\t\tvar parentStack = hlStickyStack({\r\n\t\t\t\t\t\t\t\tname: options.parent\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t_drawOptions.offset = {\r\n\t\t\t\t\t\t\t\ttop: parentStack.heightCurrent('top'),\r\n\t\t\t\t\t\t\t\tzIndex: parentStack.length()\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tangular.extend(_drawOptions, drawOptions || {});\r\n\t\t\t\t\t\tangular.forEach(trackedElements, function(element) {\r\n\t\t\t\t\t\t\telement.stickyElement.draw(_drawOptions);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t$sticky.destroy = function() {\r\n\t\t\t\t\t\tangular.forEach(angular.copy(trackedElements), function(element) {\r\n\t\t\t\t\t\t\t$sticky.removeElement(element);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tdelete $stickyElement.collections[collectionName];\r\n\t\t\t\t\t\tdestroy();\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t$sticky.trackedElements = function() {\r\n\t\t\t\t\t\treturn trackedElements;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// use new element collection\r\n\t\t\t\t\t$stickyElement.collections[collectionName] = $sticky;\r\n\t\t\t\t\tinit();\r\n\r\n\t\t\t\t\treturn $sticky;\r\n\t\t\t\t}\r\n\t\t\t\treturn stickyElementFactory;\r\n\t\t\t}]\r\n\t\t};\r\n\t\treturn $stickyElement;\r\n\t})\r\n\r\n\t.directive('hlSticky', [\"$log\", \"$window\", \"$document\", \"hlStickyElementCollection\", function($log, $window, $document, hlStickyElementCollection) {\r\n\t\treturn {\r\n\t\t\trestrict: 'A',\r\n\t\t\tscope: {\r\n\t\t\t\tcontainer: '@',\r\n\t\t\t\tanchor: '@',\r\n\t\t\t\tstickyClass: '@',\r\n\t\t\t\tmediaQuery: '@',\r\n\t\t\t\tcollection: '@',\r\n\t\t\t\tcollectionParent: '@',\r\n\t\t\t\tevent: '&',\r\n\t\t\t\tenable: '=',\r\n\t\t\t\talwaysSticky: '='\r\n\t\t\t},\r\n\t\t\tlink: function($scope, $element, $attrs) {\r\n\t\t\t\t$element.addClass('hl-sticky');\r\n\r\n\t\t\t\tvar stickyElementCollection = hlStickyElementCollection({\r\n\t\t\t\t\tname: $scope.collection,\r\n\t\t\t\t\tparent: $scope.collectionParent\r\n\t\t\t\t});\r\n\t\t\t\tvar options = {\r\n\t\t\t\t\tid: $attrs.hlSticky,\r\n\t\t\t\t\tevent: function(event) {\r\n\t\t\t\t\t\t$scope.event({\r\n\t\t\t\t\t\t\tevent: event\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tangular.forEach(['anchor', 'container', 'stickyClass', 'mediaQuery', 'enable', 'alwaysSticky'], function(option) {\r\n\t\t\t\t\tif (angular.isDefined($scope[option])) {\r\n\t\t\t\t\t\toptions[option] = $scope[option];\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tangular.forEach(['usePlaceholder', 'offsetTop', 'offsetBottom'], function(option) {\r\n\t\t\t\t\tif (angular.isDefined($attrs[option])) {\r\n\t\t\t\t\t\toptions[option] = $scope.$parent.$eval($attrs[option]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tstickyElementCollection.addElement($element, options);\r\n\r\n\t\t\t\t// listeners\r\n\t\t\t\t$scope.$watch('enable', function (newValue, oldValue) {\r\n\t\t\t\t\tif (newValue !== oldValue) {\r\n\t\t\t\t\t\toptions.enable = $scope.enable;\r\n\t\t\t\t\t\tstickyElementCollection.draw({force: true});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t$scope.$watch('alwaysSticky', function (newValue, oldValue) {\r\n\t\t\t\t\tif (newValue !== oldValue) {\r\n\t\t\t\t\t\toptions.alwaysSticky = $scope.alwaysSticky;\r\n\t\t\t\t\t\tstickyElementCollection.draw({force: true});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\t$scope.$on('$destroy', function onDestroy() {\r\n\t\t\t\t\tstickyElementCollection.removeElement($element);\r\n\t\t\t\t\tif (!stickyElementCollection.trackedElements().length) {\r\n\t\t\t\t\t\tstickyElementCollection.destroy();\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t};\r\n\t}])\r\n\r\n\t.factory('throttle', [\"$timeout\", function($timeout) {\r\n\t\treturn function(func, wait, options) {\r\n\t\t\tvar timeout = null;\r\n\t\t\toptions = options || {};\r\n\t\t\treturn function() {\r\n\t\t\t\tvar that = this;\r\n\t\t\t\tvar args = arguments;\r\n\r\n\t\t\t\tif (!timeout) {\r\n\t\t\t\t\tif (options.leading !== false) {\r\n\t\t\t\t\t\tfunc.apply(that, args);\r\n\t\t\t\t\t}\r\n\t\t\t\t\ttimeout = $timeout(function later() {\r\n\t\t\t\t\t\ttimeout = null;\r\n\t\t\t\t\t\tif (options.trailing !== false) {\r\n\t\t\t\t\t\t\tfunc.apply(that, args);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, wait, false);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t};\r\n\t}]);","/*\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","/**\r\n * @license AngularJS v1.7.6\r\n * (c) 2010-2018 Google, Inc. http://angularjs.org\r\n * License: MIT\r\n */\r\n(function(window, angular) {'use strict';\r\n\r\n/**\r\n * @ngdoc module\r\n * @name ngCookies\r\n * @description\r\n *\r\n * The `ngCookies` module provides a convenient wrapper for reading and writing browser cookies.\r\n *\r\n * See {@link ngCookies.$cookies `$cookies`} for usage.\r\n */\r\n\r\n\r\nangular.module('ngCookies', ['ng']).\r\n info({ angularVersion: '1.7.6' }).\r\n /**\r\n * @ngdoc provider\r\n * @name $cookiesProvider\r\n * @description\r\n * Use `$cookiesProvider` to change the default behavior of the {@link ngCookies.$cookies $cookies} service.\r\n * */\r\n provider('$cookies', [/** @this */function $CookiesProvider() {\r\n /**\r\n * @ngdoc property\r\n * @name $cookiesProvider#defaults\r\n * @description\r\n *\r\n * Object containing default options to pass when setting cookies.\r\n *\r\n * The object may have following properties:\r\n *\r\n * - **path** - `{string}` - The cookie will be available only for this path and its\r\n * sub-paths. By default, this is the URL that appears in your `` tag.\r\n * - **domain** - `{string}` - The cookie will be available only for this domain and\r\n * its sub-domains. For security reasons the user agent will not accept the cookie\r\n * if the current domain is not a sub-domain of this domain or equal to it.\r\n * - **expires** - `{string|Date}` - String of the form \"Wdy, DD Mon YYYY HH:MM:SS GMT\"\r\n * or a Date object indicating the exact date/time this cookie will expire.\r\n * - **secure** - `{boolean}` - If `true`, then the cookie will only be available through a\r\n * secured connection.\r\n * - **samesite** - `{string}` - prevents the browser from sending the cookie along with cross-site requests.\r\n * Accepts the values `lax` and `strict`. See the [OWASP Wiki](https://www.owasp.org/index.php/SameSite)\r\n * for more info. Note that as of May 2018, not all browsers support `SameSite`,\r\n * so it cannot be used as a single measure against Cross-Site-Request-Forgery (CSRF) attacks.\r\n *\r\n * Note: By default, the address that appears in your `` tag will be used as the path.\r\n * This is important so that cookies will be visible for all routes when html5mode is enabled.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * angular.module('cookiesProviderExample', ['ngCookies'])\r\n * .config(['$cookiesProvider', function($cookiesProvider) {\r\n * // Setting default options\r\n * $cookiesProvider.defaults.domain = 'foo.com';\r\n * $cookiesProvider.defaults.secure = true;\r\n * }]);\r\n * ```\r\n **/\r\n var defaults = this.defaults = {};\r\n\r\n function calcOptions(options) {\r\n return options ? angular.extend({}, defaults, options) : defaults;\r\n }\r\n\r\n /**\r\n * @ngdoc service\r\n * @name $cookies\r\n *\r\n * @description\r\n * Provides read/write access to browser's cookies.\r\n *\r\n *
\r\n * Up until AngularJS 1.3, `$cookies` exposed properties that represented the\r\n * current browser cookie values. In version 1.4, this behavior has changed, and\r\n * `$cookies` now provides a standard api of getters, setters etc.\r\n *
\r\n *\r\n * Requires the {@link ngCookies `ngCookies`} module to be installed.\r\n *\r\n * @example\r\n *\r\n * ```js\r\n * angular.module('cookiesExample', ['ngCookies'])\r\n * .controller('ExampleController', ['$cookies', function($cookies) {\r\n * // Retrieving a cookie\r\n * var favoriteCookie = $cookies.get('myFavorite');\r\n * // Setting a cookie\r\n * $cookies.put('myFavorite', 'oatmeal');\r\n * }]);\r\n * ```\r\n */\r\n this.$get = ['$$cookieReader', '$$cookieWriter', function($$cookieReader, $$cookieWriter) {\r\n return {\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#get\r\n *\r\n * @description\r\n * Returns the value of given cookie key\r\n *\r\n * @param {string} key Id to use for lookup.\r\n * @returns {string} Raw cookie value.\r\n */\r\n get: function(key) {\r\n return $$cookieReader()[key];\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#getObject\r\n *\r\n * @description\r\n * Returns the deserialized value of given cookie key\r\n *\r\n * @param {string} key Id to use for lookup.\r\n * @returns {Object} Deserialized cookie value.\r\n */\r\n getObject: function(key) {\r\n var value = this.get(key);\r\n return value ? angular.fromJson(value) : value;\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#getAll\r\n *\r\n * @description\r\n * Returns a key value object with all the cookies\r\n *\r\n * @returns {Object} All cookies\r\n */\r\n getAll: function() {\r\n return $$cookieReader();\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#put\r\n *\r\n * @description\r\n * Sets a value for given cookie key\r\n *\r\n * @param {string} key Id for the `value`.\r\n * @param {string} value Raw value to be stored.\r\n * @param {Object=} options Options object.\r\n * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}\r\n */\r\n put: function(key, value, options) {\r\n $$cookieWriter(key, value, calcOptions(options));\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#putObject\r\n *\r\n * @description\r\n * Serializes and sets a value for given cookie key\r\n *\r\n * @param {string} key Id for the `value`.\r\n * @param {Object} value Value to be stored.\r\n * @param {Object=} options Options object.\r\n * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}\r\n */\r\n putObject: function(key, value, options) {\r\n this.put(key, angular.toJson(value), options);\r\n },\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $cookies#remove\r\n *\r\n * @description\r\n * Remove given cookie\r\n *\r\n * @param {string} key Id of the key-value pair to delete.\r\n * @param {Object=} options Options object.\r\n * See {@link ngCookies.$cookiesProvider#defaults $cookiesProvider.defaults}\r\n */\r\n remove: function(key, options) {\r\n $$cookieWriter(key, undefined, calcOptions(options));\r\n }\r\n };\r\n }];\r\n }]);\r\n\r\n/**\r\n * @name $$cookieWriter\r\n * @requires $document\r\n *\r\n * @description\r\n * This is a private service for writing cookies\r\n *\r\n * @param {string} name Cookie name\r\n * @param {string=} value Cookie value (if undefined, cookie will be deleted)\r\n * @param {Object=} options Object with options that need to be stored for the cookie.\r\n */\r\nfunction $$CookieWriter($document, $log, $browser) {\r\n var cookiePath = $browser.baseHref();\r\n var rawDocument = $document[0];\r\n\r\n function buildCookieString(name, value, options) {\r\n var path, expires;\r\n options = options || {};\r\n expires = options.expires;\r\n path = angular.isDefined(options.path) ? options.path : cookiePath;\r\n if (angular.isUndefined(value)) {\r\n expires = 'Thu, 01 Jan 1970 00:00:00 GMT';\r\n value = '';\r\n }\r\n if (angular.isString(expires)) {\r\n expires = new Date(expires);\r\n }\r\n\r\n var str = encodeURIComponent(name) + '=' + encodeURIComponent(value);\r\n str += path ? ';path=' + path : '';\r\n str += options.domain ? ';domain=' + options.domain : '';\r\n str += expires ? ';expires=' + expires.toUTCString() : '';\r\n str += options.secure ? ';secure' : '';\r\n str += options.samesite ? ';samesite=' + options.samesite : '';\r\n\r\n // per http://www.ietf.org/rfc/rfc2109.txt browser must allow at minimum:\r\n // - 300 cookies\r\n // - 20 cookies per unique domain\r\n // - 4096 bytes per cookie\r\n var cookieLength = str.length + 1;\r\n if (cookieLength > 4096) {\r\n $log.warn('Cookie \\'' + name +\r\n '\\' possibly not set or overflowed because it was too large (' +\r\n cookieLength + ' > 4096 bytes)!');\r\n }\r\n\r\n return str;\r\n }\r\n\r\n return function(name, value, options) {\r\n rawDocument.cookie = buildCookieString(name, value, options);\r\n };\r\n}\r\n\r\n$$CookieWriter.$inject = ['$document', '$log', '$browser'];\r\n\r\nangular.module('ngCookies').provider('$$cookieWriter', /** @this */ function $$CookieWriterProvider() {\r\n this.$get = $$CookieWriter;\r\n});\r\n\r\n\r\n})(window, window.angular);\r\n","'use strict';\r\nangular.module(\"ngLocale\", [], [\"$provide\", function($provide) {\r\nvar PLURAL_CATEGORY = {ZERO: \"zero\", ONE: \"one\", TWO: \"two\", FEW: \"few\", MANY: \"many\", OTHER: \"other\"};\r\n$provide.value(\"$locale\", {\r\n \"DATETIME_FORMATS\": {\r\n \"AMPMS\": [\r\n \"AM\",\r\n \"PM\"\r\n ],\r\n \"DAY\": [\r\n \"dimanche\",\r\n \"lundi\",\r\n \"mardi\",\r\n \"mercredi\",\r\n \"jeudi\",\r\n \"vendredi\",\r\n \"samedi\"\r\n ],\r\n \"ERANAMES\": [\r\n \"avant J\\u00e9sus-Christ\",\r\n \"apr\\u00e8s J\\u00e9sus-Christ\"\r\n ],\r\n \"ERAS\": [\r\n \"av. J.-C.\",\r\n \"ap. J.-C.\"\r\n ],\r\n \"FIRSTDAYOFWEEK\": 0,\r\n \"MONTH\": [\r\n \"janvier\",\r\n \"f\\u00e9vrier\",\r\n \"mars\",\r\n \"avril\",\r\n \"mai\",\r\n \"juin\",\r\n \"juillet\",\r\n \"ao\\u00fbt\",\r\n \"septembre\",\r\n \"octobre\",\r\n \"novembre\",\r\n \"d\\u00e9cembre\"\r\n ],\r\n \"SHORTDAY\": [\r\n \"dim.\",\r\n \"lun.\",\r\n \"mar.\",\r\n \"mer.\",\r\n \"jeu.\",\r\n \"ven.\",\r\n \"sam.\"\r\n ],\r\n \"SHORTMONTH\": [\r\n \"janv.\",\r\n \"f\\u00e9vr.\",\r\n \"mars\",\r\n \"avr.\",\r\n \"mai\",\r\n \"juin\",\r\n \"juil.\",\r\n \"ao\\u00fbt\",\r\n \"sept.\",\r\n \"oct.\",\r\n \"nov.\",\r\n \"d\\u00e9c.\"\r\n ],\r\n \"STANDALONEMONTH\": [\r\n \"janvier\",\r\n \"f\\u00e9vrier\",\r\n \"mars\",\r\n \"avril\",\r\n \"mai\",\r\n \"juin\",\r\n \"juillet\",\r\n \"ao\\u00fbt\",\r\n \"septembre\",\r\n \"octobre\",\r\n \"novembre\",\r\n \"d\\u00e9cembre\"\r\n ],\r\n \"WEEKENDRANGE\": [\r\n 5,\r\n 6\r\n ],\r\n \"fullDate\": \"EEEE d MMMM y\",\r\n \"longDate\": \"d MMMM y\",\r\n \"medium\": \"d MMM y HH:mm:ss\",\r\n \"mediumDate\": \"d MMM y\",\r\n \"mediumTime\": \"HH:mm:ss\",\r\n \"short\": \"dd/MM/y HH:mm\",\r\n \"shortDate\": \"dd/MM/y\",\r\n \"shortTime\": \"HH:mm\"\r\n },\r\n \"NUMBER_FORMATS\": {\r\n \"CURRENCY_SYM\": \"\\u20ac\",\r\n \"DECIMAL_SEP\": \",\",\r\n \"GROUP_SEP\": \"\\u00a0\",\r\n \"PATTERNS\": [\r\n {\r\n \"gSize\": 3,\r\n \"lgSize\": 3,\r\n \"maxFrac\": 3,\r\n \"minFrac\": 0,\r\n \"minInt\": 1,\r\n \"negPre\": \"-\",\r\n \"negSuf\": \"\",\r\n \"posPre\": \"\",\r\n \"posSuf\": \"\"\r\n },\r\n {\r\n \"gSize\": 3,\r\n \"lgSize\": 3,\r\n \"maxFrac\": 2,\r\n \"minFrac\": 2,\r\n \"minInt\": 1,\r\n \"negPre\": \"-\",\r\n \"negSuf\": \"\\u00a0\\u00a4\",\r\n \"posPre\": \"\",\r\n \"posSuf\": \"\\u00a0\\u00a4\"\r\n }\r\n ]\r\n },\r\n \"id\": \"fr\",\r\n \"localeID\": \"fr\",\r\n \"pluralCat\": function(n, opt_precision) { var i = n | 0; if (i == 0 || i == 1) { return PLURAL_CATEGORY.ONE; } return PLURAL_CATEGORY.OTHER;}\r\n});\r\n}]);\r\n","/**\r\n * @license AngularJS v1.7.6\r\n * (c) 2010-2018 Google, Inc. http://angularjs.org\r\n * License: MIT\r\n */\r\n(function(window, angular) {'use strict';\r\n\r\n/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\r\n * Any commits to this file should be reviewed with security in mind. *\r\n * Changes to this file can potentially create security vulnerabilities. *\r\n * An approval from 2 Core members with history of modifying *\r\n * this file is required. *\r\n * *\r\n * Does the change somehow allow for arbitrary javascript to be executed? *\r\n * Or allows for someone to change the prototype of built-in objects? *\r\n * Or gives undesired access to variables likes document or window? *\r\n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\r\n\r\nvar $sanitizeMinErr = angular.$$minErr('$sanitize');\r\nvar bind;\r\nvar extend;\r\nvar forEach;\r\nvar isArray;\r\nvar isDefined;\r\nvar lowercase;\r\nvar noop;\r\nvar nodeContains;\r\nvar htmlParser;\r\nvar htmlSanitizeWriter;\r\n\r\n/**\r\n * @ngdoc module\r\n * @name ngSanitize\r\n * @description\r\n *\r\n * The `ngSanitize` module provides functionality to sanitize HTML.\r\n *\r\n * See {@link ngSanitize.$sanitize `$sanitize`} for usage.\r\n */\r\n\r\n/**\r\n * @ngdoc service\r\n * @name $sanitize\r\n * @kind function\r\n *\r\n * @description\r\n * Sanitizes an html string by stripping all potentially dangerous tokens.\r\n *\r\n * The input is sanitized by parsing the HTML into tokens. All safe tokens (from a whitelist) are\r\n * then serialized back to a properly escaped HTML string. This means that no unsafe input can make\r\n * it into the returned string.\r\n *\r\n * The whitelist for URL sanitization of attribute values is configured using the functions\r\n * `aHrefSanitizationWhitelist` and `imgSrcSanitizationWhitelist` of {@link $compileProvider}.\r\n *\r\n * The input may also contain SVG markup if this is enabled via {@link $sanitizeProvider}.\r\n *\r\n * @param {string} html HTML input.\r\n * @returns {string} Sanitized HTML.\r\n *\r\n * @example\r\n \r\n \r\n \r\n
\r\n Snippet: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
DirectiveHowSourceRendered
ng-bind-htmlAutomatically uses $sanitize
<div ng-bind-html=\"snippet\">
</div>
ng-bind-htmlBypass $sanitize by explicitly trusting the dangerous value\r\n
<div ng-bind-html=\"deliberatelyTrustDangerousSnippet()\">\r\n</div>
\r\n
ng-bindAutomatically escapes
<div ng-bind=\"snippet\">
</div>
\r\n
\r\n
\r\n \r\n it('should sanitize the html snippet by default', function() {\r\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\r\n toBe('

an html\\nclick here\\nsnippet

');\r\n });\r\n\r\n it('should inline raw snippet if bound to a trusted value', function() {\r\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).\r\n toBe(\"

an html\\n\" +\r\n \"click here\\n\" +\r\n \"snippet

\");\r\n });\r\n\r\n it('should escape snippet without any filter', function() {\r\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).\r\n toBe(\"<p style=\\\"color:blue\\\">an html\\n\" +\r\n \"<em onmouseover=\\\"this.textContent='PWN3D!'\\\">click here</em>\\n\" +\r\n \"snippet</p>\");\r\n });\r\n\r\n it('should update', function() {\r\n element(by.model('snippet')).clear();\r\n element(by.model('snippet')).sendKeys('new text');\r\n expect(element(by.css('#bind-html-with-sanitize div')).getAttribute('innerHTML')).\r\n toBe('new text');\r\n expect(element(by.css('#bind-html-with-trust div')).getAttribute('innerHTML')).toBe(\r\n 'new text');\r\n expect(element(by.css('#bind-default div')).getAttribute('innerHTML')).toBe(\r\n \"new <b onclick=\\\"alert(1)\\\">text</b>\");\r\n });\r\n
\r\n
\r\n */\r\n\r\n\r\n/**\r\n * @ngdoc provider\r\n * @name $sanitizeProvider\r\n * @this\r\n *\r\n * @description\r\n * Creates and configures {@link $sanitize} instance.\r\n */\r\nfunction $SanitizeProvider() {\r\n var hasBeenInstantiated = false;\r\n var svgEnabled = false;\r\n\r\n this.$get = ['$$sanitizeUri', function($$sanitizeUri) {\r\n hasBeenInstantiated = true;\r\n if (svgEnabled) {\r\n extend(validElements, svgElements);\r\n }\r\n return function(html) {\r\n var buf = [];\r\n htmlParser(html, htmlSanitizeWriter(buf, function(uri, isImage) {\r\n return !/^unsafe:/.test($$sanitizeUri(uri, isImage));\r\n }));\r\n return buf.join('');\r\n };\r\n }];\r\n\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $sanitizeProvider#enableSvg\r\n * @kind function\r\n *\r\n * @description\r\n * Enables a subset of svg to be supported by the sanitizer.\r\n *\r\n *
\r\n *

By enabling this setting without taking other precautions, you might expose your\r\n * application to click-hijacking attacks. In these attacks, sanitized svg elements could be positioned\r\n * outside of the containing element and be rendered over other elements on the page (e.g. a login\r\n * link). Such behavior can then result in phishing incidents.

\r\n *\r\n *

To protect against these, explicitly setup `overflow: hidden` css rule for all potential svg\r\n * tags within the sanitized content:

\r\n *\r\n *
\r\n *\r\n *
\r\n   *   .rootOfTheIncludedContent svg {\r\n   *     overflow: hidden !important;\r\n   *   }\r\n   *   
\r\n *
\r\n *\r\n * @param {boolean=} flag Enable or disable SVG support in the sanitizer.\r\n * @returns {boolean|$sanitizeProvider} Returns the currently configured value if called\r\n * without an argument or self for chaining otherwise.\r\n */\r\n this.enableSvg = function(enableSvg) {\r\n if (isDefined(enableSvg)) {\r\n svgEnabled = enableSvg;\r\n return this;\r\n } else {\r\n return svgEnabled;\r\n }\r\n };\r\n\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $sanitizeProvider#addValidElements\r\n * @kind function\r\n *\r\n * @description\r\n * Extends the built-in lists of valid HTML/SVG elements, i.e. elements that are considered safe\r\n * and are not stripped off during sanitization. You can extend the following lists of elements:\r\n *\r\n * - `htmlElements`: A list of elements (tag names) to extend the current list of safe HTML\r\n * elements. HTML elements considered safe will not be removed during sanitization. All other\r\n * elements will be stripped off.\r\n *\r\n * - `htmlVoidElements`: This is similar to `htmlElements`, but marks the elements as\r\n * \"void elements\" (similar to HTML\r\n * [void elements](https://rawgit.com/w3c/html/html5.1-2/single-page.html#void-elements)). These\r\n * elements have no end tag and cannot have content.\r\n *\r\n * - `svgElements`: This is similar to `htmlElements`, but for SVG elements. This list is only\r\n * taken into account if SVG is {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for\r\n * `$sanitize`.\r\n *\r\n *
\r\n * This method must be called during the {@link angular.Module#config config} phase. Once the\r\n * `$sanitize` service has been instantiated, this method has no effect.\r\n *
\r\n *\r\n *
\r\n * Keep in mind that extending the built-in lists of elements may expose your app to XSS or\r\n * other vulnerabilities. Be very mindful of the elements you add.\r\n *
\r\n *\r\n * @param {Array|Object} elements - A list of valid HTML elements or an object with one or\r\n * more of the following properties:\r\n * - **htmlElements** - `{Array}` - A list of elements to extend the current list of\r\n * HTML elements.\r\n * - **htmlVoidElements** - `{Array}` - A list of elements to extend the current list of\r\n * void HTML elements; i.e. elements that do not have an end tag.\r\n * - **svgElements** - `{Array}` - A list of elements to extend the current list of SVG\r\n * elements. The list of SVG elements is only taken into account if SVG is\r\n * {@link ngSanitize.$sanitizeProvider#enableSvg enabled} for `$sanitize`.\r\n *\r\n * Passing an array (`[...]`) is equivalent to passing `{htmlElements: [...]}`.\r\n *\r\n * @return {$sanitizeProvider} Returns self for chaining.\r\n */\r\n this.addValidElements = function(elements) {\r\n if (!hasBeenInstantiated) {\r\n if (isArray(elements)) {\r\n elements = {htmlElements: elements};\r\n }\r\n\r\n addElementsTo(svgElements, elements.svgElements);\r\n addElementsTo(voidElements, elements.htmlVoidElements);\r\n addElementsTo(validElements, elements.htmlVoidElements);\r\n addElementsTo(validElements, elements.htmlElements);\r\n }\r\n\r\n return this;\r\n };\r\n\r\n\r\n /**\r\n * @ngdoc method\r\n * @name $sanitizeProvider#addValidAttrs\r\n * @kind function\r\n *\r\n * @description\r\n * Extends the built-in list of valid attributes, i.e. attributes that are considered safe and are\r\n * not stripped off during sanitization.\r\n *\r\n * **Note**:\r\n * The new attributes will not be treated as URI attributes, which means their values will not be\r\n * sanitized as URIs using `$compileProvider`'s\r\n * {@link ng.$compileProvider#aHrefSanitizationWhitelist aHrefSanitizationWhitelist} and\r\n * {@link ng.$compileProvider#imgSrcSanitizationWhitelist imgSrcSanitizationWhitelist}.\r\n *\r\n *
\r\n * This method must be called during the {@link angular.Module#config config} phase. Once the\r\n * `$sanitize` service has been instantiated, this method has no effect.\r\n *
\r\n *\r\n *
\r\n * Keep in mind that extending the built-in list of attributes may expose your app to XSS or\r\n * other vulnerabilities. Be very mindful of the attributes you add.\r\n *
\r\n *\r\n * @param {Array} attrs - A list of valid attributes.\r\n *\r\n * @returns {$sanitizeProvider} Returns self for chaining.\r\n */\r\n this.addValidAttrs = function(attrs) {\r\n if (!hasBeenInstantiated) {\r\n extend(validAttrs, arrayToMap(attrs, true));\r\n }\r\n return this;\r\n };\r\n\r\n //////////////////////////////////////////////////////////////////////////////////////////////////\r\n // Private stuff\r\n //////////////////////////////////////////////////////////////////////////////////////////////////\r\n\r\n bind = angular.bind;\r\n extend = angular.extend;\r\n forEach = angular.forEach;\r\n isArray = angular.isArray;\r\n isDefined = angular.isDefined;\r\n lowercase = angular.$$lowercase;\r\n noop = angular.noop;\r\n\r\n htmlParser = htmlParserImpl;\r\n htmlSanitizeWriter = htmlSanitizeWriterImpl;\r\n\r\n nodeContains = window.Node.prototype.contains || /** @this */ function(arg) {\r\n // eslint-disable-next-line no-bitwise\r\n return !!(this.compareDocumentPosition(arg) & 16);\r\n };\r\n\r\n // Regular Expressions for parsing tags and attributes\r\n var SURROGATE_PAIR_REGEXP = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g,\r\n // Match everything outside of normal chars and \" (quote character)\r\n NON_ALPHANUMERIC_REGEXP = /([^#-~ |!])/g;\r\n\r\n\r\n // Good source of info about elements and attributes\r\n // http://dev.w3.org/html5/spec/Overview.html#semantics\r\n // http://simon.html5.org/html-elements\r\n\r\n // Safe Void Elements - HTML5\r\n // http://dev.w3.org/html5/spec/Overview.html#void-elements\r\n var voidElements = stringToMap('area,br,col,hr,img,wbr');\r\n\r\n // Elements that you can, intentionally, leave open (and which close themselves)\r\n // http://dev.w3.org/html5/spec/Overview.html#optional-tags\r\n var optionalEndTagBlockElements = stringToMap('colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr'),\r\n optionalEndTagInlineElements = stringToMap('rp,rt'),\r\n optionalEndTagElements = extend({},\r\n optionalEndTagInlineElements,\r\n optionalEndTagBlockElements);\r\n\r\n // Safe Block Elements - HTML5\r\n var blockElements = extend({}, optionalEndTagBlockElements, stringToMap('address,article,' +\r\n 'aside,blockquote,caption,center,del,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,' +\r\n 'h6,header,hgroup,hr,ins,map,menu,nav,ol,pre,section,table,ul'));\r\n\r\n // Inline Elements - HTML5\r\n var inlineElements = extend({}, optionalEndTagInlineElements, stringToMap('a,abbr,acronym,b,' +\r\n 'bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,q,ruby,rp,rt,s,' +\r\n 'samp,small,span,strike,strong,sub,sup,time,tt,u,var'));\r\n\r\n // SVG Elements\r\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Elements\r\n // Note: the elements animate,animateColor,animateMotion,animateTransform,set are intentionally omitted.\r\n // They can potentially allow for arbitrary javascript to be executed. See #11290\r\n var svgElements = stringToMap('circle,defs,desc,ellipse,font-face,font-face-name,font-face-src,g,glyph,' +\r\n 'hkern,image,linearGradient,line,marker,metadata,missing-glyph,mpath,path,polygon,polyline,' +\r\n 'radialGradient,rect,stop,svg,switch,text,title,tspan');\r\n\r\n // Blocked Elements (will be stripped)\r\n var blockedElements = stringToMap('script,style');\r\n\r\n var validElements = extend({},\r\n voidElements,\r\n blockElements,\r\n inlineElements,\r\n optionalEndTagElements);\r\n\r\n //Attributes that have href and hence need to be sanitized\r\n var uriAttrs = stringToMap('background,cite,href,longdesc,src,xlink:href,xml:base');\r\n\r\n var htmlAttrs = stringToMap('abbr,align,alt,axis,bgcolor,border,cellpadding,cellspacing,class,clear,' +\r\n 'color,cols,colspan,compact,coords,dir,face,headers,height,hreflang,hspace,' +\r\n 'ismap,lang,language,nohref,nowrap,rel,rev,rows,rowspan,rules,' +\r\n 'scope,scrolling,shape,size,span,start,summary,tabindex,target,title,type,' +\r\n 'valign,value,vspace,width');\r\n\r\n // SVG attributes (without \"id\" and \"name\" attributes)\r\n // https://wiki.whatwg.org/wiki/Sanitization_rules#svg_Attributes\r\n var svgAttrs = stringToMap('accent-height,accumulate,additive,alphabetic,arabic-form,ascent,' +\r\n 'baseProfile,bbox,begin,by,calcMode,cap-height,class,color,color-rendering,content,' +\r\n 'cx,cy,d,dx,dy,descent,display,dur,end,fill,fill-rule,font-family,font-size,font-stretch,' +\r\n 'font-style,font-variant,font-weight,from,fx,fy,g1,g2,glyph-name,gradientUnits,hanging,' +\r\n 'height,horiz-adv-x,horiz-origin-x,ideographic,k,keyPoints,keySplines,keyTimes,lang,' +\r\n 'marker-end,marker-mid,marker-start,markerHeight,markerUnits,markerWidth,mathematical,' +\r\n 'max,min,offset,opacity,orient,origin,overline-position,overline-thickness,panose-1,' +\r\n 'path,pathLength,points,preserveAspectRatio,r,refX,refY,repeatCount,repeatDur,' +\r\n 'requiredExtensions,requiredFeatures,restart,rotate,rx,ry,slope,stemh,stemv,stop-color,' +\r\n 'stop-opacity,strikethrough-position,strikethrough-thickness,stroke,stroke-dasharray,' +\r\n 'stroke-dashoffset,stroke-linecap,stroke-linejoin,stroke-miterlimit,stroke-opacity,' +\r\n 'stroke-width,systemLanguage,target,text-anchor,to,transform,type,u1,u2,underline-position,' +\r\n 'underline-thickness,unicode,unicode-range,units-per-em,values,version,viewBox,visibility,' +\r\n 'width,widths,x,x-height,x1,x2,xlink:actuate,xlink:arcrole,xlink:role,xlink:show,xlink:title,' +\r\n 'xlink:type,xml:base,xml:lang,xml:space,xmlns,xmlns:xlink,y,y1,y2,zoomAndPan', true);\r\n\r\n var validAttrs = extend({},\r\n uriAttrs,\r\n svgAttrs,\r\n htmlAttrs);\r\n\r\n function stringToMap(str, lowercaseKeys) {\r\n return arrayToMap(str.split(','), lowercaseKeys);\r\n }\r\n\r\n function arrayToMap(items, lowercaseKeys) {\r\n var obj = {}, i;\r\n for (i = 0; i < items.length; i++) {\r\n obj[lowercaseKeys ? lowercase(items[i]) : items[i]] = true;\r\n }\r\n return obj;\r\n }\r\n\r\n function addElementsTo(elementsMap, newElements) {\r\n if (newElements && newElements.length) {\r\n extend(elementsMap, arrayToMap(newElements));\r\n }\r\n }\r\n\r\n /**\r\n * Create an inert document that contains the dirty HTML that needs sanitizing\r\n * Depending upon browser support we use one of three strategies for doing this.\r\n * Support: Safari 10.x -> XHR strategy\r\n * Support: Firefox -> DomParser strategy\r\n */\r\n var getInertBodyElement /* function(html: string): HTMLBodyElement */ = (function(window, document) {\r\n var inertDocument;\r\n if (document && document.implementation) {\r\n inertDocument = document.implementation.createHTMLDocument('inert');\r\n } else {\r\n throw $sanitizeMinErr('noinert', 'Can\\'t create an inert html document');\r\n }\r\n var inertBodyElement = (inertDocument.documentElement || inertDocument.getDocumentElement()).querySelector('body');\r\n\r\n // Check for the Safari 10.1 bug - which allows JS to run inside the SVG G element\r\n inertBodyElement.innerHTML = '';\r\n if (!inertBodyElement.querySelector('svg')) {\r\n return getInertBodyElement_XHR;\r\n } else {\r\n // Check for the Firefox bug - which prevents the inner img JS from being sanitized\r\n inertBodyElement.innerHTML = '

';\r\n if (inertBodyElement.querySelector('svg img')) {\r\n return getInertBodyElement_DOMParser;\r\n } else {\r\n return getInertBodyElement_InertDocument;\r\n }\r\n }\r\n\r\n function getInertBodyElement_XHR(html) {\r\n // We add this dummy element to ensure that the rest of the content is parsed as expected\r\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\r\n html = '' + html;\r\n try {\r\n html = encodeURI(html);\r\n } catch (e) {\r\n return undefined;\r\n }\r\n var xhr = new window.XMLHttpRequest();\r\n xhr.responseType = 'document';\r\n xhr.open('GET', 'data:text/html;charset=utf-8,' + html, false);\r\n xhr.send(null);\r\n var body = xhr.response.body;\r\n body.firstChild.remove();\r\n return body;\r\n }\r\n\r\n function getInertBodyElement_DOMParser(html) {\r\n // We add this dummy element to ensure that the rest of the content is parsed as expected\r\n // e.g. leading whitespace is maintained and tags like `` do not get hoisted to the `` tag.\r\n html = '' + html;\r\n try {\r\n var body = new window.DOMParser().parseFromString(html, 'text/html').body;\r\n body.firstChild.remove();\r\n return body;\r\n } catch (e) {\r\n return undefined;\r\n }\r\n }\r\n\r\n function getInertBodyElement_InertDocument(html) {\r\n inertBodyElement.innerHTML = html;\r\n\r\n // Support: IE 9-11 only\r\n // strip custom-namespaced attributes on IE<=11\r\n if (document.documentMode) {\r\n stripCustomNsAttrs(inertBodyElement);\r\n }\r\n\r\n return inertBodyElement;\r\n }\r\n })(window, window.document);\r\n\r\n /**\r\n * @example\r\n * htmlParser(htmlString, {\r\n * start: function(tag, attrs) {},\r\n * end: function(tag) {},\r\n * chars: function(text) {},\r\n * comment: function(text) {}\r\n * });\r\n *\r\n * @param {string} html string\r\n * @param {object} handler\r\n */\r\n function htmlParserImpl(html, handler) {\r\n if (html === null || html === undefined) {\r\n html = '';\r\n } else if (typeof html !== 'string') {\r\n html = '' + html;\r\n }\r\n\r\n var inertBodyElement = getInertBodyElement(html);\r\n if (!inertBodyElement) return '';\r\n\r\n //mXSS protection\r\n var mXSSAttempts = 5;\r\n do {\r\n if (mXSSAttempts === 0) {\r\n throw $sanitizeMinErr('uinput', 'Failed to sanitize html because the input is unstable');\r\n }\r\n mXSSAttempts--;\r\n\r\n // trigger mXSS if it is going to happen by reading and writing the innerHTML\r\n html = inertBodyElement.innerHTML;\r\n inertBodyElement = getInertBodyElement(html);\r\n } while (html !== inertBodyElement.innerHTML);\r\n\r\n var node = inertBodyElement.firstChild;\r\n while (node) {\r\n switch (node.nodeType) {\r\n case 1: // ELEMENT_NODE\r\n handler.start(node.nodeName.toLowerCase(), attrToMap(node.attributes));\r\n break;\r\n case 3: // TEXT NODE\r\n handler.chars(node.textContent);\r\n break;\r\n }\r\n\r\n var nextNode;\r\n if (!(nextNode = node.firstChild)) {\r\n if (node.nodeType === 1) {\r\n handler.end(node.nodeName.toLowerCase());\r\n }\r\n nextNode = getNonDescendant('nextSibling', node);\r\n if (!nextNode) {\r\n while (nextNode == null) {\r\n node = getNonDescendant('parentNode', node);\r\n if (node === inertBodyElement) break;\r\n nextNode = getNonDescendant('nextSibling', node);\r\n if (node.nodeType === 1) {\r\n handler.end(node.nodeName.toLowerCase());\r\n }\r\n }\r\n }\r\n }\r\n node = nextNode;\r\n }\r\n\r\n while ((node = inertBodyElement.firstChild)) {\r\n inertBodyElement.removeChild(node);\r\n }\r\n }\r\n\r\n function attrToMap(attrs) {\r\n var map = {};\r\n for (var i = 0, ii = attrs.length; i < ii; i++) {\r\n var attr = attrs[i];\r\n map[attr.name] = attr.value;\r\n }\r\n return map;\r\n }\r\n\r\n\r\n /**\r\n * Escapes all potentially dangerous characters, so that the\r\n * resulting string can be safely inserted into attribute or\r\n * element text.\r\n * @param value\r\n * @returns {string} escaped text\r\n */\r\n function encodeEntities(value) {\r\n return value.\r\n replace(/&/g, '&').\r\n replace(SURROGATE_PAIR_REGEXP, function(value) {\r\n var hi = value.charCodeAt(0);\r\n var low = value.charCodeAt(1);\r\n return '&#' + (((hi - 0xD800) * 0x400) + (low - 0xDC00) + 0x10000) + ';';\r\n }).\r\n replace(NON_ALPHANUMERIC_REGEXP, function(value) {\r\n return '&#' + value.charCodeAt(0) + ';';\r\n }).\r\n replace(//g, '>');\r\n }\r\n\r\n /**\r\n * create an HTML/XML writer which writes to buffer\r\n * @param {Array} buf use buf.join('') to get out sanitized html string\r\n * @returns {object} in the form of {\r\n * start: function(tag, attrs) {},\r\n * end: function(tag) {},\r\n * chars: function(text) {},\r\n * comment: function(text) {}\r\n * }\r\n */\r\n function htmlSanitizeWriterImpl(buf, uriValidator) {\r\n var ignoreCurrentElement = false;\r\n var out = bind(buf, buf.push);\r\n return {\r\n start: function(tag, attrs) {\r\n tag = lowercase(tag);\r\n if (!ignoreCurrentElement && blockedElements[tag]) {\r\n ignoreCurrentElement = tag;\r\n }\r\n if (!ignoreCurrentElement && validElements[tag] === true) {\r\n out('<');\r\n out(tag);\r\n forEach(attrs, function(value, key) {\r\n var lkey = lowercase(key);\r\n var isImage = (tag === 'img' && lkey === 'src') || (lkey === 'background');\r\n if (validAttrs[lkey] === true &&\r\n (uriAttrs[lkey] !== true || uriValidator(value, isImage))) {\r\n out(' ');\r\n out(key);\r\n out('=\"');\r\n out(encodeEntities(value));\r\n out('\"');\r\n }\r\n });\r\n out('>');\r\n }\r\n },\r\n end: function(tag) {\r\n tag = lowercase(tag);\r\n if (!ignoreCurrentElement && validElements[tag] === true && voidElements[tag] !== true) {\r\n out('');\r\n }\r\n // eslint-disable-next-line eqeqeq\r\n if (tag == ignoreCurrentElement) {\r\n ignoreCurrentElement = false;\r\n }\r\n },\r\n chars: function(chars) {\r\n if (!ignoreCurrentElement) {\r\n out(encodeEntities(chars));\r\n }\r\n }\r\n };\r\n }\r\n\r\n\r\n /**\r\n * When IE9-11 comes across an unknown namespaced attribute e.g. 'xlink:foo' it adds 'xmlns:ns1' attribute to declare\r\n * ns1 namespace and prefixes the attribute with 'ns1' (e.g. 'ns1:xlink:foo'). This is undesirable since we don't want\r\n * to allow any of these custom attributes. This method strips them all.\r\n *\r\n * @param node Root element to process\r\n */\r\n function stripCustomNsAttrs(node) {\r\n while (node) {\r\n if (node.nodeType === window.Node.ELEMENT_NODE) {\r\n var attrs = node.attributes;\r\n for (var i = 0, l = attrs.length; i < l; i++) {\r\n var attrNode = attrs[i];\r\n var attrName = attrNode.name.toLowerCase();\r\n if (attrName === 'xmlns:ns1' || attrName.lastIndexOf('ns1:', 0) === 0) {\r\n node.removeAttributeNode(attrNode);\r\n i--;\r\n l--;\r\n }\r\n }\r\n }\r\n\r\n var nextNode = node.firstChild;\r\n if (nextNode) {\r\n stripCustomNsAttrs(nextNode);\r\n }\r\n\r\n node = getNonDescendant('nextSibling', node);\r\n }\r\n }\r\n\r\n function getNonDescendant(propName, node) {\r\n // An element is clobbered if its `propName` property points to one of its descendants\r\n var nextNode = node[propName];\r\n if (nextNode && nodeContains.call(node, nextNode)) {\r\n throw $sanitizeMinErr('elclob', 'Failed to sanitize html because the element is clobbered: {0}', node.outerHTML || node.outerText);\r\n }\r\n return nextNode;\r\n }\r\n}\r\n\r\nfunction sanitizeText(chars) {\r\n var buf = [];\r\n var writer = htmlSanitizeWriter(buf, noop);\r\n writer.chars(chars);\r\n return buf.join('');\r\n}\r\n\r\n\r\n// define ngSanitize module and register $sanitize service\r\nangular.module('ngSanitize', [])\r\n .provider('$sanitize', $SanitizeProvider)\r\n .info({ angularVersion: '1.7.6' });\r\n\r\n/**\r\n * @ngdoc filter\r\n * @name linky\r\n * @kind function\r\n *\r\n * @description\r\n * Finds links in text input and turns them into html links. Supports `http/https/ftp/sftp/mailto` and\r\n * plain email address links.\r\n *\r\n * Requires the {@link ngSanitize `ngSanitize`} module to be installed.\r\n *\r\n * @param {string} text Input text.\r\n * @param {string} [target] Window (`_blank|_self|_parent|_top`) or named frame to open links in.\r\n * @param {object|function(url)} [attributes] Add custom attributes to the link element.\r\n *\r\n * Can be one of:\r\n *\r\n * - `object`: A map of attributes\r\n * - `function`: Takes the url as a parameter and returns a map of attributes\r\n *\r\n * If the map of attributes contains a value for `target`, it overrides the value of\r\n * the target parameter.\r\n *\r\n *\r\n * @returns {string} Html-linkified and {@link $sanitize sanitized} text.\r\n *\r\n * @usage\r\n \r\n *\r\n * @example\r\n \r\n \r\n

\r\n Snippet: \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
FilterSourceRendered
linky filter\r\n
<div ng-bind-html=\"snippet | linky\">
</div>
\r\n
\r\n
\r\n
linky target\r\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_blank'\">
</div>
\r\n
\r\n
\r\n
linky custom attributes\r\n
<div ng-bind-html=\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\">
</div>
\r\n
\r\n
\r\n
no filter
<div ng-bind=\"snippet\">
</div>
\r\n \r\n \r\n angular.module('linkyExample', ['ngSanitize'])\r\n .controller('ExampleController', ['$scope', function($scope) {\r\n $scope.snippet =\r\n 'Pretty text with some links:\\n' +\r\n 'http://angularjs.org/,\\n' +\r\n 'mailto:us@somewhere.org,\\n' +\r\n 'another@somewhere.org,\\n' +\r\n 'and one more: ftp://127.0.0.1/.';\r\n $scope.snippetWithSingleURL = 'http://angularjs.org/';\r\n }]);\r\n \r\n \r\n it('should linkify the snippet with urls', function() {\r\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\r\n toBe('Pretty text with some links: http://angularjs.org/, us@somewhere.org, ' +\r\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\r\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(4);\r\n });\r\n\r\n it('should not linkify snippet without the linky filter', function() {\r\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText()).\r\n toBe('Pretty text with some links: http://angularjs.org/, mailto:us@somewhere.org, ' +\r\n 'another@somewhere.org, and one more: ftp://127.0.0.1/.');\r\n expect(element.all(by.css('#escaped-html a')).count()).toEqual(0);\r\n });\r\n\r\n it('should update', function() {\r\n element(by.model('snippet')).clear();\r\n element(by.model('snippet')).sendKeys('new http://link.');\r\n expect(element(by.id('linky-filter')).element(by.binding('snippet | linky')).getText()).\r\n toBe('new http://link.');\r\n expect(element.all(by.css('#linky-filter a')).count()).toEqual(1);\r\n expect(element(by.id('escaped-html')).element(by.binding('snippet')).getText())\r\n .toBe('new http://link.');\r\n });\r\n\r\n it('should work with the target property', function() {\r\n expect(element(by.id('linky-target')).\r\n element(by.binding(\"snippetWithSingleURL | linky:'_blank'\")).getText()).\r\n toBe('http://angularjs.org/');\r\n expect(element(by.css('#linky-target a')).getAttribute('target')).toEqual('_blank');\r\n });\r\n\r\n it('should optionally add custom attributes', function() {\r\n expect(element(by.id('linky-custom-attributes')).\r\n element(by.binding(\"snippetWithSingleURL | linky:'_self':{rel: 'nofollow'}\")).getText()).\r\n toBe('http://angularjs.org/');\r\n expect(element(by.css('#linky-custom-attributes a')).getAttribute('rel')).toEqual('nofollow');\r\n });\r\n \r\n \r\n */\r\nangular.module('ngSanitize').filter('linky', ['$sanitize', function($sanitize) {\r\n var LINKY_URL_REGEXP =\r\n /((s?ftp|https?):\\/\\/|(www\\.)|(mailto:)?[A-Za-z0-9._%+-]+@)\\S*[^\\s.;,(){}<>\"\\u201d\\u2019]/i,\r\n MAILTO_REGEXP = /^mailto:/i;\r\n\r\n var linkyMinErr = angular.$$minErr('linky');\r\n var isDefined = angular.isDefined;\r\n var isFunction = angular.isFunction;\r\n var isObject = angular.isObject;\r\n var isString = angular.isString;\r\n\r\n return function(text, target, attributes) {\r\n if (text == null || text === '') return text;\r\n if (!isString(text)) throw linkyMinErr('notstring', 'Expected string but received: {0}', text);\r\n\r\n var attributesFn =\r\n isFunction(attributes) ? attributes :\r\n isObject(attributes) ? function getAttributesObject() {return attributes;} :\r\n function getEmptyAttributesObject() {return {};};\r\n\r\n var match;\r\n var raw = text;\r\n var html = [];\r\n var url;\r\n var i;\r\n while ((match = raw.match(LINKY_URL_REGEXP))) {\r\n // We can not end in these as they are sometimes found at the end of the sentence\r\n url = match[0];\r\n // if we did not match ftp/http/www/mailto then assume mailto\r\n if (!match[2] && !match[4]) {\r\n url = (match[3] ? 'http://' : 'mailto:') + url;\r\n }\r\n i = match.index;\r\n addText(raw.substr(0, i));\r\n addLink(url, match[0].replace(MAILTO_REGEXP, ''));\r\n raw = raw.substring(i + match[0].length);\r\n }\r\n addText(raw);\r\n return $sanitize(html.join(''));\r\n\r\n function addText(text) {\r\n if (!text) {\r\n return;\r\n }\r\n html.push(sanitizeText(text));\r\n }\r\n\r\n function addLink(url, text) {\r\n var key, linkAttributes = attributesFn(url);\r\n html.push('');\r\n addText(text);\r\n html.push('');\r\n }\r\n };\r\n}]);\r\n\r\n\r\n})(window, window.angular);\r\n","/*\r\n * Bootstrap Validation\r\n * Version 1.0.7\r\n * Modified from .\r\n **/\r\n\r\n'use strict';\r\n\r\nangular.module('bootstrap.angular.validation', []);\r\n","'use strict';\r\n\r\nangular.module('bootstrap.angular.validation').provider('bsValidationConfig', function () {\r\n\r\n // Can be a string or list of any combination of \"blur\", \"submit\" & \"display\"\r\n var validateFieldsOn = 'blur';\r\n // Display the validation error message below the `input` field with class \"help-block\"\r\n var displayErrorsAs = 'simple';\r\n\r\n // Can be a string or list of any combination of filters; will be applied in order\r\n // For example: 'lowercase' or ['lowercase', 'reverse'] (So long as the filter(s) exists)\r\n var messageFilters = [];\r\n\r\n function shouldValidateOn(event) {\r\n if (angular.isString(validateFieldsOn)) {\r\n return validateFieldsOn === event;\r\n }\r\n\r\n return validateFieldsOn.indexOf(event) !== -1;\r\n }\r\n\r\n var _this = this;\r\n this.global = {};\r\n this.global.addSuccessClass = true;\r\n this.global.errorClass = 'has-error';\r\n this.global.successClass = 'has-success';\r\n this.global.errorMessagePrefix = '';\r\n this.global.tooltipPlacement = 'bottom-left';\r\n this.global.tooltipAppendToBody = false;\r\n this.global.suppressWarnings = false;\r\n\r\n this.global.messages = {};\r\n\r\n this.setMessages = function(data) {\r\n _this.global.messages = data;\r\n };\r\n\r\n this.global.setValidateFieldsOn = function (event) {\r\n if (!event) {\r\n throw 'Please provide an string or list of events to validate fields on';\r\n }\r\n\r\n if (!angular.isString(event) && !angular.isArray(event)) {\r\n throw 'Event should either be a string or a list';\r\n }\r\n\r\n validateFieldsOn = event;\r\n };\r\n\r\n this.global.setDisplayErrorsAs = function (type) {\r\n if (!type) {\r\n throw 'Please provide the way validation error should be displayed. In-built options are \"simple\" & \"tooltip\".';\r\n }\r\n\r\n displayErrorsAs = type;\r\n };\r\n\r\n this.global.useMessageFilters = function (filters) {\r\n if (!filters) {\r\n throw 'Please provide a string or list of filters to apply to messages';\r\n }\r\n\r\n if (!angular.isString(filters) && !angular.isArray(filters)) {\r\n throw 'Filters should either be a string or a list';\r\n }\r\n\r\n messageFilters = filters;\r\n\r\n if (!angular.isArray(messageFilters)) {\r\n messageFilters = [messageFilters];\r\n }\r\n };\r\n\r\n this.$get = [function () {\r\n return {\r\n messages: function (key) {\r\n return _this.global.messages[key];\r\n },\r\n errorClass: _this.global.errorClass,\r\n successClass: _this.global.successClass,\r\n suppressWarnings: _this.global.suppressWarnings,\r\n tooltipAppendToBody: _this.global.tooltipAppendToBody,\r\n\r\n getDisplayErrorsAs: function () {\r\n return displayErrorsAs;\r\n },\r\n\r\n getErrorMessagePrefix: function () {\r\n return _this.global.errorMessagePrefix || '';\r\n },\r\n\r\n getMessageFilters: function () {\r\n return messageFilters;\r\n },\r\n\r\n getTooltipPlacement: function () {\r\n return _this.global.tooltipPlacement;\r\n },\r\n\r\n shouldAddSuccessClass: function () {\r\n return _this.global.addSuccessClass;\r\n },\r\n\r\n shouldValidateOn: shouldValidateOn,\r\n\r\n setMessages: function (data) {\r\n return _this.setMessages(data);\r\n }\r\n };\r\n }];\r\n});\r\n","'use strict';\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name form\r\n * @description Using \"form\" element as directive so we don't require to put the \"bs-validation\" directive to every form\r\n * element.\r\n */\r\nangular.module('bootstrap.angular.validation').directive('form', [\r\n '$parse', 'BsValidationService', function ($parse, validationService) {\r\n return {\r\n restrict: 'E',\r\n require: 'form',\r\n priority: 1000, // Setting a higher priority so that this directive compiles first.\r\n compile: function ($formElement, $formAttributes) {\r\n if (validationService.isValidationDisabled($formElement)) {\r\n return;\r\n }\r\n\r\n // Disable HTML5 validation display\r\n $formElement.attr('novalidate', 'novalidate');\r\n validationService.addDirective($formElement);\r\n\r\n var ngSubmit = $formAttributes.ngSubmit;\r\n /*\r\n * Removing ngSubmit attribute if any since ngSubmit by default doesn't respects the validation errors\r\n * on the input fields.\r\n */\r\n delete $formAttributes.ngSubmit;\r\n\r\n var preLinkFunction = function ($scope, formElement, $attr, formController) {\r\n // Expose a method to manually show the validation state\r\n formController.$showValidation = function () {\r\n formController.$setSubmitted();\r\n // Tell form elements to show validation state\r\n $scope.$broadcast('onBsValidationStateChange', {showValidationState: true});\r\n };\r\n\r\n formController.$hideValidation = function () {\r\n formController.$setPristine();\r\n // Tell form elements to hide validation state\r\n $scope.$broadcast('onBsValidationStateChange', {showValidationState: false});\r\n };\r\n formController.$resetValidation = function () {\r\n $scope.$broadcast('onBsValidationReset');\r\n };\r\n\r\n\r\n var markPristineAfterSubmit = formElement[0].attributes.hasOwnProperty('bs-pristine-on-submit');\r\n\r\n formElement.on('submit', function (event) {\r\n // If any of the form element has not passed the validation\r\n if (formController.$invalid) {\r\n // Then focus the first invalid element\r\n formElement[0].querySelector('.ng-invalid[ng-model]').focus();\r\n return false;\r\n }\r\n\r\n // Parse the handler of ng-submit & execute it\r\n var submitHandler = $parse(ngSubmit);\r\n $scope.$apply(function () {\r\n submitHandler($scope, {$event: event});\r\n\r\n formController.$commitViewValue();\r\n formController.$setSubmitted();\r\n\r\n if (markPristineAfterSubmit) {\r\n formController.$hideValidation();\r\n }\r\n });\r\n\r\n if (markPristineAfterSubmit) {\r\n /**\r\n * Prevent other submit event listener registered via Angular so that we can mark the form with\r\n * the pristine state. Otherwise, that Angular's listener is getting called at the last and is again\r\n * setting form to the submitted.\r\n *\r\n * https://api.jquery.com/event.stopimmediatepropagation/\r\n */\r\n event.stopImmediatePropagation();\r\n event.preventDefault();\r\n }\r\n\r\n return true;\r\n });\r\n };\r\n\r\n return {\r\n pre: preLinkFunction\r\n };\r\n }\r\n };\r\n }]);\r\n","/* global angular */\r\n\r\n'use strict';\r\n\r\n/**\r\n * @ngdoc directive\r\n * @name bsValidation\r\n * @requires BsValidationService\r\n */\r\nangular.module('bootstrap.angular.validation').directive('bsValidation', [\r\n 'BsValidationService', 'bsValidationConfig',\r\n function (validationService, bsValidationConfig) {\r\n return {\r\n restrict: 'A',\r\n require: ['?ngModel', '?^^form'],\r\n link: function ($scope, $element, $attr, controllers) {\r\n if (validationService.isValidationDisabled($element)) {\r\n return;\r\n }\r\n\r\n // Initialize controllers\r\n var ngModelController = controllers[0];\r\n var ngFormController = controllers[1];\r\n\r\n if (!ngModelController) {\r\n if (!bsValidationConfig.suppressWarnings) {\r\n console.warn('ng-model directive is required for the bs-validation directive to work.');\r\n }\r\n return;\r\n }\r\n\r\n var $formGroupElement = validationService.getFormGroupElement($element);\r\n if (!$formGroupElement) {\r\n if (!bsValidationConfig.suppressWarnings) {\r\n console.warn('No parent form group element found for input element');\r\n }\r\n return;\r\n }\r\n\r\n var displayValidationState = false;\r\n var shouldValidateOnBlur = validationService.shouldValidateOnBlur($element);\r\n var shouldValidateOnDisplay = validationService.shouldValidateOnDisplay($element);\r\n var shouldValidateOnSubmit = validationService.shouldValidateOnSubmit($element);\r\n\r\n var displayErrorAs = validationService.displayErrorPreference($element, $attr);\r\n var validationMessageService = validationService.getValidationMessageService(displayErrorAs);\r\n\r\n // Register generic custom validators if added to element\r\n angular.forEach(validationService.getValidators(), function (validator) {\r\n var key = validator.name;\r\n var attrValue = $element.attr(key);\r\n if ($attr[key] || (angular.isDefined(attrValue) && attrValue !== false)) {\r\n validationService.addValidator($scope, $element, $attr, ngModelController, validator);\r\n }\r\n });\r\n\r\n function addErrorClass() {\r\n validationService.addErrorClass($formGroupElement);\r\n }\r\n\r\n function removeSuccessClass() {\r\n validationService.removeSuccessClass($formGroupElement);\r\n }\r\n\r\n function displayError() {\r\n addErrorClass();\r\n validationMessageService.showErrorMessage($element, $attr, ngModelController, $formGroupElement);\r\n\r\n if ($element.hasClass('show-and-hide')) {\r\n setTimeout(function () {\r\n $element.blur();\r\n hideSuccess();\r\n hideError();\r\n ngModelController.$setUntouched();\r\n ngModelController.$setPristine();\r\n watchBlur();\r\n }, 3000);\r\n }\r\n }\r\n\r\n function hideError() {\r\n validationMessageService.hideErrorMessage($element, $formGroupElement);\r\n }\r\n\r\n function addSuccessClass() {\r\n if (ngModelController.$$attr.required) {\r\n validationService.addSuccessClass($formGroupElement);\r\n }\r\n return hideError();\r\n }\r\n\r\n function displaySuccess() {\r\n addSuccessClass();\r\n }\r\n\r\n function hideSuccess() {\r\n removeSuccessClass();\r\n }\r\n\r\n function displayOrHideValidationState() {\r\n validationService.toggleErrorKeyClasses($formGroupElement, ngModelController.$error);\r\n\r\n if (!displayValidationState) {\r\n hideSuccess();\r\n return hideError();\r\n }\r\n\r\n if (ngModelController.$valid) {\r\n return displaySuccess();\r\n }\r\n if (ngModelController.$invalid) {\r\n return displayError();\r\n }\r\n }\r\n\r\n function showValidation() {\r\n displayValidationState = true;\r\n displayOrHideValidationState();\r\n }\r\n\r\n function hideValidation() {\r\n displayValidationState = false;\r\n displayOrHideValidationState();\r\n }\r\n\r\n function watchBlur() {\r\n var dewatcher = $scope.$watch(function () {\r\n return ngModelController.$touched;\r\n }, function (lostFocus) {\r\n if (lostFocus) {\r\n displayValidationState = true;\r\n displayOrHideValidationState();\r\n dewatcher();\r\n }\r\n });\r\n }\r\n\r\n if (shouldValidateOnBlur) {\r\n watchBlur();\r\n }\r\n\r\n if (shouldValidateOnSubmit && ngFormController) {\r\n // register watchers for submission touch and valid\r\n $scope.$watch(function () {\r\n return ngFormController.$submitted;\r\n }, function (submitted) {\r\n displayValidationState = submitted;\r\n displayOrHideValidationState();\r\n });\r\n }\r\n\r\n if (shouldValidateOnDisplay) {\r\n showValidation();\r\n }\r\n\r\n $scope.$watchCollection(function () {\r\n return ngModelController.$error;\r\n }, displayOrHideValidationState);\r\n\r\n $scope.$watch(function () {\r\n return ngModelController.$valid;\r\n }, displayOrHideValidationState, true);\r\n\r\n $scope.$watch(function () {\r\n return ngModelController.$$attr.required;\r\n }, function () {\r\n hideSuccess();\r\n hideError();\r\n displayOrHideValidationState();\r\n }, true);\r\n\r\n $scope.$on('onBsValidationStateChange', function (event, data) {\r\n displayValidationState = data.showValidationState;\r\n displayOrHideValidationState();\r\n });\r\n\r\n $scope.$on('onBsValidationReset', function (event) {\r\n $element.blur();\r\n hideSuccess();\r\n hideError();\r\n ngModelController.$setUntouched();\r\n ngModelController.$setPristine();\r\n watchBlur();\r\n });\r\n\r\n $scope.$on('$destroy', function () {\r\n validationMessageService.destroyMessage($element);\r\n });\r\n\r\n ngModelController.$showValidation = showValidation;\r\n ngModelController.$hideValidation = hideValidation;\r\n }\r\n };\r\n }\r\n]);\r\n","'use strict';\r\n\r\nangular.module('bootstrap.angular.validation').factory('simpleMessageService', ['BsValidationService', function (validationService) {\r\n\r\n var errorElementClass = '.bs-invalid-msg';\r\n\r\n function getErrorContainer($element, $formGroupElement) {\r\n var $errorContainer;\r\n\r\n // If input element has \"id\" attribute\r\n if ($element.attr('id')) {\r\n // Then first try to find the error container with the same id prefixed with \"bs-error-\"\r\n $errorContainer = $formGroupElement.find('#bs-error-' + $element.attr('id'));\r\n if ($errorContainer && $errorContainer.length) {\r\n return $errorContainer;\r\n }\r\n }\r\n\r\n $errorContainer = $formGroupElement.find(errorElementClass);\r\n if ($errorContainer && $errorContainer.length) {\r\n return $errorContainer;\r\n }\r\n\r\n var insertAfter;\r\n\r\n // Check if the container have any Bootstrap input group then append the error after it\r\n var groupElement = $formGroupElement.find('.input-group');\r\n if (groupElement.length > 0) {\r\n insertAfter = groupElement;\r\n } else {\r\n insertAfter = $element;\r\n }\r\n\r\n var errorContainerHTML = '
');\r\n}]);\r\n","'use strict';\r\n\r\n/**\r\n * @ngcode service\r\n * @name BsValidationService\r\n * @description Core service of this module to provide various default validations.\r\n */\r\nangular.module('bootstrap.angular.validation').factory('BsValidationService', ['$interpolate', 'bsValidationConfig',\r\n '$injector', '$filter',\r\n function ($interpolate, validationConfig, $injector, $filter) {\r\n\r\n var displayErrorAsAttrName = 'bsDisplayErrorAs';\r\n var customFormGroup = '[bs-form-group]';\r\n var formGroupClass = '.form-group';\r\n\r\n var _genericValidators = [{\r\n name: 'digits',\r\n validateFn: function (value) {\r\n return (/^\\d+$/).test(value);\r\n }\r\n }, {\r\n name: 'equalto',\r\n validateFn: function (value, $scope, attr) {\r\n return value + '' === $scope.$eval(attr.equalto) + '';\r\n }\r\n }, {\r\n name: 'number',\r\n validateFn: function (value) {\r\n return (/^-?(?:\\d+|\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/).test(value);\r\n }\r\n }, {\r\n name: 'min',\r\n validateFn: function (value, $scope, attr) {\r\n return parseFloat(value) >= parseFloat(attr.min);\r\n }\r\n }, {\r\n name: 'max',\r\n validateFn: function (value, $scope, attr) {\r\n return parseFloat(value) <= parseFloat(attr.max);\r\n }\r\n }, {\r\n name: 'length',\r\n validateFn: function (value, $scope, attr) {\r\n return value.length === parseInt(attr.length);\r\n }\r\n }, {\r\n name: 'strictemail',\r\n validateFn: function (value) {\r\n return new RegExp(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,63}$/).test(value);\r\n }\r\n }];\r\n\r\n function getTrigger($element, triggerEvent) {\r\n var attributeName = 'bs-trigger';\r\n if ($element.attr(attributeName)) {\r\n return $element.attr(attributeName) === triggerEvent;\r\n }\r\n\r\n var parentForm = $element.parents('form');\r\n if (parentForm && parentForm.attr(attributeName)) {\r\n return parentForm.attr(attributeName) === triggerEvent;\r\n }\r\n\r\n // Use the global config\r\n return validationConfig.shouldValidateOn(triggerEvent);\r\n }\r\n\r\n function removeClassByPrefix(element, prefix) {\r\n var regx = new RegExp('\\\\b' + prefix + '.*\\\\b', 'g');\r\n element[0].className = element[0].className.replace(regx, '').replace(/\\s\\s+/g, ' ');\r\n return element;\r\n }\r\n\r\n var selectors = [];\r\n var elements = ['input', 'select', 'textarea'];\r\n\r\n angular.forEach(elements, function (element) {\r\n selectors.push(element + '[ng-model]');\r\n });\r\n\r\n var selector = selectors.join(',');\r\n var meta = ['matchName'];\r\n\r\n return {\r\n getValidators: function () {\r\n return _genericValidators;\r\n },\r\n\r\n getMetaInformation: function ($element) {\r\n var metaInformation = {};\r\n\r\n angular.forEach(meta, function (key) {\r\n metaInformation[key] = $element.attr(key) || $element.attr(key.camelCaseToDash());\r\n });\r\n\r\n return metaInformation;\r\n },\r\n\r\n addDirective: function ($element) {\r\n var validateableElements = $element.find(selector);\r\n validateableElements.attr('bs-validation', '');\r\n return validateableElements;\r\n },\r\n\r\n addErrorClass: function ($formGroupElement) {\r\n this.removeSuccessClass($formGroupElement);\r\n $formGroupElement.addClass(validationConfig.errorClass);\r\n },\r\n\r\n addSuccessClass: function ($formGroupElement) {\r\n this.removeErrorClass($formGroupElement);\r\n\r\n if (validationConfig.shouldAddSuccessClass()) {\r\n $formGroupElement.addClass(validationConfig.successClass);\r\n }\r\n },\r\n\r\n addValidator: function ($scope, $element, $attr, ngModelController, validator) {\r\n ngModelController.$validators[validator.name] = function (modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n if (ngModelController.$isEmpty(value)) {\r\n return true;\r\n }\r\n\r\n // See https://github.com/sagrawal14/angular-extras/blob/v0.1.3/src/extras/array.js#L91 for \"find\" function\r\n return validator.validateFn(value, $scope, $attr);\r\n };\r\n },\r\n\r\n /**\r\n * Add a custom validator to the list of generic validators.\r\n * @param genericValidationObject for example, to a add a generic validator to accept either \"foo\" or \"bar\":\r\n * {\r\n * name: 'foobar',\r\n * validateFn: function(value, $scope, attr) {\r\n * return value === 'foo' || value === 'bar';\r\n * }\r\n * }\r\n */\r\n addGenericValidator: function (genericValidationObject) {\r\n _genericValidators.push(genericValidationObject);\r\n },\r\n\r\n displayErrorPreference: function ($element, $attr) {\r\n var attrName = displayErrorAsAttrName;\r\n if ($attr[attrName]) {\r\n return $attr[attrName];\r\n } else {\r\n var $parentForm = $element.parents('form');\r\n\r\n // .attr() method not accepting camelCase version of the attribute name. Converting it to dashed-case\r\n attrName = attrName.camelCaseToDash();\r\n\r\n if ($parentForm && $parentForm.attr(attrName)) {\r\n return $parentForm.attr(attrName);\r\n }\r\n }\r\n\r\n // Use the global preference\r\n return validationConfig.getDisplayErrorsAs();\r\n },\r\n\r\n getErrorMessage: function ($element, $attr, ngModelController) {\r\n var firstErrorKey = Object.keys(ngModelController.$error)[0];\r\n return validationConfig.getErrorMessagePrefix() + this.resolveMessage($element, $attr, firstErrorKey);\r\n },\r\n\r\n getFormGroupElement: function ($element) {\r\n // First search for an attribute with 'bs-form-group'\r\n var formGroupElement = $element.parents(customFormGroup);\r\n\r\n if (!formGroupElement || formGroupElement.length === 0) {\r\n // Then search for parent element with class form-group\r\n formGroupElement = $element.parents(formGroupClass);\r\n\r\n if (!formGroupElement || formGroupElement.length === 0) {\r\n return null;\r\n }\r\n }\r\n\r\n return formGroupElement;\r\n },\r\n\r\n getValidationMessageService: function (displayType) {\r\n var validationMessageService;\r\n\r\n try {\r\n validationMessageService = $injector.get(displayType + 'MessageService');\r\n } catch (e) {\r\n throw 'No message service found for type [' + displayType + '].';\r\n }\r\n\r\n if (displayType === 'tooltip' && !$injector.has('$uibPosition')) {\r\n throw '$uibPosition service required from the ui-bootstrap module in order to use the tooltip message.';\r\n }\r\n\r\n return validationMessageService;\r\n },\r\n\r\n isValidationDisabled: function ($element) {\r\n var attribute = 'bs-no-validation';\r\n if ($element[0].attributes.hasOwnProperty(attribute)) {\r\n return true;\r\n }\r\n\r\n var $parentForm = $element.parents('form');\r\n return $parentForm[0] && $parentForm[0].attributes.hasOwnProperty(attribute);\r\n },\r\n\r\n removeErrorClass: function ($formGroupElement) {\r\n $formGroupElement.removeClass(validationConfig.errorClass);\r\n },\r\n\r\n removeSuccessClass: function ($formGroupElement) {\r\n $formGroupElement.removeClass(validationConfig.successClass);\r\n },\r\n\r\n resolveMessage: function ($element, $attr, key) {\r\n var metaInformation = this.getMetaInformation($element);\r\n var messageFilters = $element.attr(key + '-notification-filter') || validationConfig.getMessageFilters();\r\n var message = $element.attr(key + '-notification') || validationConfig.messages(key);\r\n\r\n if (!message) {\r\n console.warn('No message found for the key [' + key + ']. Consider adding a global message or element' +\r\n ' specific message using attribute [' + key + '-notification=\"My custom message\"]');\r\n\r\n message = 'Please fix this field';\r\n }\r\n\r\n if (angular.isDefined(messageFilters)) {\r\n if (!angular.isArray(messageFilters)) {\r\n messageFilters = [messageFilters];\r\n }\r\n\r\n for (var i = 0; i < messageFilters.length; i++) {\r\n message = $filter(messageFilters[i])(message);\r\n }\r\n }\r\n\r\n var matchers = angular.extend({}, {\r\n validValue: $attr[key]\r\n }, metaInformation);\r\n return $interpolate(message)(matchers);\r\n },\r\n\r\n shouldValidateOnBlur: function ($element) {\r\n return getTrigger($element, 'blur');\r\n },\r\n\r\n shouldValidateOnDisplay: function ($element) {\r\n return getTrigger($element, 'display');\r\n },\r\n\r\n shouldValidateOnSubmit: function ($element) {\r\n return getTrigger($element, 'submit');\r\n },\r\n\r\n /**\r\n * Add or remove various classes on form-group element. For example, if an input has two errors \"required\" & \"min\"\r\n * then whenever the validation fails, form-group element will have classes like \"bs-has-error-required\" or\r\n * \"bs-has-error-min\".\r\n * @param $formGroupElement jQLite/jQuery form-group element\r\n * @param errors Errors object as returned by ngModelController.$error\r\n */\r\n toggleErrorKeyClasses: function ($formGroupElement, errors) {\r\n removeClassByPrefix($formGroupElement, 'bs-has-error-');\r\n\r\n angular.forEach(errors, function (value, key) {\r\n $formGroupElement.addClass('bs-has-error-' + key);\r\n });\r\n }\r\n\r\n };\r\n }\r\n]);","/* global document, window */\r\n\r\n'use strict';\r\n\r\nif (!String.prototype.camelCaseToDash) {\r\n String.prototype.camelCaseToDash = function () {\r\n return this.replace(/([A-Z])/g, function ($1) {\r\n return '-' + $1.toLowerCase();\r\n });\r\n };\r\n}\r\n","/* https://github.com/sroze/ngInfiniteScroll/ */\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('infinite-scroll', [])\r\n\r\n .value('THROTTLE_MILLISECONDS', 250)\r\n\r\n /* @ngInject */\r\n .directive('infiniteScroll', [\"$rootScope\", \"$window\", \"$interval\", \"THROTTLE_MILLISECONDS\", function ($rootScope, $window, $interval, THROTTLE_MILLISECONDS) {\r\n var directive = {\r\n link: link,\r\n restrict: 'A',\r\n scope: {\r\n infiniteScroll: '&',\r\n infiniteScrollContainer: '=',\r\n infiniteScrollDistance: '=',\r\n infiniteScrollDisabled: '=',\r\n infiniteScrollUseDocumentBottom: '=',\r\n infiniteScrollListenForEvent: '@'\r\n }\r\n };\r\n return directive;\r\n\r\n function link(scope, elem, attrs) {\r\n var windowElement = angular.element($window);\r\n\r\n var scrollDistance = null;\r\n var scrollEnabled = null;\r\n var checkWhenEnabled = null;\r\n var container = null;\r\n var immediateCheck = true;\r\n var useDocumentBottom = false;\r\n var unregisterEventListener = null;\r\n var checkInterval = false;\r\n var watcher = null;\r\n\r\n function height(element) {\r\n var el = element[0] || element;\r\n\r\n if (isNaN(el.offsetHeight)) {\r\n return el.document.documentElement.clientHeight;\r\n }\r\n return el.offsetHeight;\r\n }\r\n\r\n function pageYOffset(element) {\r\n var el = element[0] || element;\r\n\r\n if (isNaN(window.pageYOffset)) {\r\n return el.document.documentElement.scrollTop;\r\n }\r\n return el.ownerDocument.defaultView.pageYOffset;\r\n }\r\n\r\n function offsetTop(element) {\r\n if (!(!element[0].getBoundingClientRect || element.css('none'))) {\r\n return element[0].getBoundingClientRect().top + pageYOffset(element);\r\n }\r\n return undefined;\r\n }\r\n\r\n // infinite-scroll specifies a function to call when the window,\r\n // or some other container specified by infinite-scroll-container,\r\n // is scrolled within a certain range from the bottom of the\r\n // document. It is recommended to use infinite-scroll-disabled\r\n // with a boolean that is set to true when the function is\r\n // called in order to throttle the function call.\r\n function defaultHandler() {\r\n var containerBottom;\r\n var elementBottom;\r\n if (container === windowElement) {\r\n containerBottom = height(container) + pageYOffset(container[0].document.documentElement);\r\n elementBottom = offsetTop(elem) + height(elem);\r\n } else {\r\n containerBottom = height(container);\r\n var containerTopOffset = 0;\r\n if (offsetTop(container) !== undefined) {\r\n containerTopOffset = offsetTop(container);\r\n }\r\n elementBottom = offsetTop(elem) - containerTopOffset + height(elem);\r\n }\r\n\r\n if (useDocumentBottom) {\r\n elementBottom = height((elem[0].ownerDocument || elem[0].document).documentElement);\r\n }\r\n\r\n var remaining = elementBottom - containerBottom;\r\n var shouldScroll = remaining <= height(container) * scrollDistance + 1;\r\n if (shouldScroll) {\r\n checkWhenEnabled = true;\r\n if (scrollEnabled) {\r\n if (scope.$$phase || $rootScope.$$phase) {\r\n scope.infiniteScroll();\r\n } else {\r\n scope.$apply(scope.infiniteScroll);\r\n }\r\n }\r\n } else {\r\n if (checkInterval) { $interval.cancel(checkInterval); }\r\n checkWhenEnabled = false;\r\n }\r\n }\r\n\r\n // The optional THROTTLE_MILLISECONDS configuration value specifies\r\n // a minimum time that should elapse between each call to the\r\n // handler. N.b. the first call the handler will be run\r\n // immediately, and the final call will always result in the\r\n // handler being called after the `wait` period elapses.\r\n // A slimmed down version of underscore's implementation.\r\n function throttle(func, wait) {\r\n var timeout = null;\r\n var previous = 0;\r\n\r\n function later() {\r\n previous = new Date().getTime();\r\n $interval.cancel(timeout);\r\n timeout = null;\r\n return func.call();\r\n }\r\n\r\n function throttled() {\r\n var now = new Date().getTime();\r\n var remaining = wait - (now - previous);\r\n if (remaining <= 0) {\r\n $interval.cancel(timeout);\r\n timeout = null;\r\n previous = now;\r\n func.call();\r\n } else if (!timeout) {\r\n timeout = $interval(later, remaining, 1);\r\n }\r\n }\r\n\r\n return throttled;\r\n }\r\n\r\n var handler = (THROTTLE_MILLISECONDS !== null) ? throttle(defaultHandler, THROTTLE_MILLISECONDS) : defaultHandler;\r\n\r\n function handleDestroy() {\r\n container.off('scroll', handler);\r\n if (container !== null && watcher !== null) {\r\n watcher();\r\n }\r\n if (unregisterEventListener !== null) {\r\n unregisterEventListener();\r\n unregisterEventListener = null;\r\n }\r\n if (checkInterval) {\r\n $interval.cancel(checkInterval);\r\n }\r\n }\r\n\r\n scope.$on('$destroy', handleDestroy);\r\n\r\n // infinite-scroll-distance specifies how close to the bottom of the page\r\n // the window is allowed to be before we trigger a new scroll. The value\r\n // provided is multiplied by the container height; for example, to load\r\n // more when the bottom of the page is less than 3 container heights away,\r\n // specify a value of 3. Defaults to 0.\r\n function handleInfiniteScrollDistance(v) {\r\n scrollDistance = parseFloat(v) || 0;\r\n }\r\n\r\n scope.$watch('infiniteScrollDistance', handleInfiniteScrollDistance);\r\n // If I don't explicitly call the handler here, tests fail. Don't know why yet.\r\n handleInfiniteScrollDistance(scope.infiniteScrollDistance);\r\n\r\n // infinite-scroll-disabled specifies a boolean that will keep the\r\n // infnite scroll function from being called; this is useful for\r\n // debouncing or throttling the function call. If an infinite\r\n // scroll is triggered but this value evaluates to true, then\r\n // once it switches back to false the infinite scroll function\r\n // will be triggered again.\r\n function handleInfiniteScrollDisabled(v) {\r\n scrollEnabled = !v;\r\n if (scrollEnabled && checkWhenEnabled) {\r\n checkWhenEnabled = false;\r\n handler();\r\n }\r\n }\r\n\r\n scope.$watch('infiniteScrollDisabled', handleInfiniteScrollDisabled);\r\n // If I don't explicitly call the handler here, tests fail. Don't know why yet.\r\n handleInfiniteScrollDisabled(scope.infiniteScrollDisabled);\r\n\r\n // use the bottom of the document instead of the element's bottom.\r\n // This useful when the element does not have a height due to its\r\n // children being absolute positioned.\r\n function handleInfiniteScrollUseDocumentBottom(v) {\r\n useDocumentBottom = v;\r\n }\r\n\r\n scope.$watch('infiniteScrollUseDocumentBottom', handleInfiniteScrollUseDocumentBottom);\r\n handleInfiniteScrollUseDocumentBottom(scope.infiniteScrollUseDocumentBottom);\r\n\r\n // infinite-scroll-container sets the container which we want to be\r\n // infinte scrolled, instead of the whole window. Must be an\r\n // Angular or jQuery element, or, if jQuery is loaded,\r\n // a jQuery selector as a string.\r\n function changeContainer(newContainer) {\r\n if (container != null) {\r\n container.off('scroll', handler);\r\n }\r\n\r\n container = newContainer;\r\n if (newContainer != null) {\r\n container.on('scroll', handler);\r\n }\r\n }\r\n\r\n changeContainer(windowElement);\r\n\r\n if (scope.infiniteScrollListenForEvent) {\r\n unregisterEventListener = $rootScope.$on(scope.infiniteScrollListenForEvent, handler);\r\n }\r\n\r\n function handleInfiniteScrollContainer(newContainer) {\r\n // TODO: For some reason newContainer is sometimes null instead\r\n // of the empty array, which Angular is supposed to pass when the\r\n // element is not defined\r\n // (https://github.com/sroze/ngInfiniteScroll/pull/7#commitcomment-5748431).\r\n // So I leave both checks.\r\n if ((!(newContainer != null)) || newContainer.length === 0) {\r\n return;\r\n }\r\n\r\n var newerContainer;\r\n\r\n if (newContainer.nodeType && newContainer.nodeType === 1) {\r\n newerContainer = angular.element(newContainer);\r\n } else if (typeof newContainer.append === 'function') {\r\n newerContainer = angular.element(newContainer[newContainer.length - 1]);\r\n } else if (typeof newContainer === 'string') {\r\n newerContainer = angular.element(document.querySelector(newContainer));\r\n } else {\r\n newerContainer = newContainer;\r\n }\r\n\r\n if (newerContainer == null) {\r\n throw new Error('invalid infinite-scroll-container attribute.');\r\n }\r\n changeContainer(newerContainer);\r\n }\r\n\r\n scope.$watch('infiniteScrollContainer', handleInfiniteScrollContainer);\r\n handleInfiniteScrollContainer(scope.infiniteScrollContainer || []);\r\n\r\n // infinite-scroll-parent establishes this element's parent as the\r\n // container infinitely scrolled instead of the whole window.\r\n if (attrs.infiniteScrollParent != null) {\r\n changeContainer(angular.element(elem.parent()));\r\n }\r\n\r\n // infinte-scoll-immediate-check sets whether or not run the\r\n // expression passed on infinite-scroll for the first time when the\r\n // directive first loads, before any actual scroll.\r\n if (attrs.infiniteScrollImmediateCheck != null) {\r\n immediateCheck = scope.$eval(attrs.infiniteScrollImmediateCheck);\r\n }\r\n\r\n function intervalCheck() {\r\n if (immediateCheck) {\r\n handler();\r\n }\r\n return $interval.cancel(checkInterval);\r\n }\r\n\r\n checkInterval = $interval(intervalCheck);\r\n return checkInterval;\r\n }\r\n }]);\r\n})();\r\n","(function() {\r\n 'use strict';\r\n\r\n angular\r\n .module('module.parallax', [])\r\n\r\n /* @ngInject */\r\n .directive('parallax', [\"$window\", \"WindowEventsService\", function($window, WindowEventsService) {\r\n return {\r\n restrict: 'A',\r\n scope:{\r\n active: '<',\r\n speed: '<',\r\n offsetY: '
');\r\n setTimeout(function () {\r\n element.children().addClass('in');\r\n });\r\n };\r\n scope.stop = function () {\r\n element.children().removeClass('in');\r\n setTimeout(function () {\r\n element.children().remove();\r\n }, 400);\r\n };\r\n\r\n var unwatch = scope.$watch(attr.spinnerOn, function (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', function () {\r\n unwatch();\r\n });\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","/*! ngclipboard - v1.1.1 - 2016-02-26\r\n* https://github.com/sachinchoolur/ngclipboard\r\n* Copyright (c) 2016 Sachin; Licensed MIT */\r\n\r\n(function () {\r\n\t'use strict';\r\n\r\n\tangular\r\n\t.module('directive.ngclipboard', [])\r\n\r\n /* @ngInject */\r\n .factory('ClipboardService', function () {\r\n var load,\r\n queue = [];\r\n\r\n var service = {\r\n add: add\r\n };\r\n return service;\r\n\r\n ////////////\r\n\r\n function add(element, scope) {\r\n if (angular.isUndefined(window.ClipboardJS)) {\r\n queue.push({ element: element, scope: scope });\r\n if (!load) {\r\n load = true;\r\n $.ajax({\r\n url: '/js/clipboard.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n start();\r\n }\r\n });\r\n }\r\n } else {\r\n init(element, scope);\r\n }\r\n }\r\n\r\n function start() {\r\n _.each(queue, function (item) {\r\n init(item.element, item.scope);\r\n });\r\n }\r\n\r\n function init(element, scope) {\r\n \tvar clipboard = new window.ClipboardJS(element[0]);\r\n\r\n\t\t\t\tclipboard.on('success', function(e) {\r\n\t\t\t\t\tscope.$apply(function () {\r\n\t\t\t\t\t\tscope.clipboardSuccess({ e: e });\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tclipboard.on('error', function(e) {\r\n\t\t\t\t\tscope.$apply(function () {\r\n\t\t\t\t\t\tscope.clipboardError({ e: e });\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n\t\t.directive('clipboard', [\"ClipboardService\", function(ClipboardService) {\r\n\t\t\treturn {\r\n\t\t\t\trestrict: 'A',\r\n\t\t\t\tscope: {\r\n\t\t\t\t\tclipboardSuccess: '&',\r\n\t\t\t\t\tclipboardError: '&'\r\n\t\t\t\t},\r\n\t\t\t\tlink: function(scope, element) {\r\n\t\t\t\t\tClipboardService.add(element, scope);\r\n \t\t\t}\r\n \t\t};\r\n \t}]);\r\n\r\n})();","/*! angularjs-slider - v6.1.1 -\r\n (c) Rafal Zajac , Valentin Hervieu , Jussi Saarivirta , Angelin Sirbu -\r\n https://github.com/angular-slider/angularjs-slider -\r\n 2017-03-29 */\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('rzModule', [])\r\n\r\n .factory('RzSliderOptions', function () {\r\n var defaultOptions = {\r\n floor: 0,\r\n ceil: null, // defaults to rz-slider-model\r\n step: 1,\r\n precision: 0,\r\n minRange: null,\r\n maxRange: null,\r\n pushRange: false,\r\n minLimit: null,\r\n maxLimit: null,\r\n id: null,\r\n translate: null,\r\n getLegend: null,\r\n stepsArray: null,\r\n bindIndexForStepsArray: false,\r\n draggableRange: false,\r\n draggableRangeOnly: false,\r\n showSelectionBar: false,\r\n showSelectionBarEnd: false,\r\n showSelectionBarFromValue: null,\r\n hidePointerLabels: false,\r\n hideLimitLabels: false,\r\n autoHideLimitLabels: true,\r\n readOnly: false,\r\n disabled: false,\r\n interval: 350,\r\n showTicks: false,\r\n showTicksValues: false,\r\n ticksArray: null,\r\n ticksTooltip: null,\r\n ticksValuesTooltip: null,\r\n vertical: false,\r\n /*getSelectionBarColor: null,*/\r\n getTickColor: null,\r\n /*getPointerColor: null,*/\r\n keyboardSupport: true,\r\n scale: 1,\r\n enforceStep: true,\r\n enforceRange: false,\r\n noSwitching: false,\r\n onlyBindHandles: false,\r\n onStart: null,\r\n onChange: null,\r\n onEnd: null,\r\n rightToLeft: false,\r\n boundPointerLabels: true,\r\n mergeRangeLabelsIfSame: false,\r\n customTemplateScope: null,\r\n logScale: false,\r\n customValueToPosition: null,\r\n customPositionToValue: null,\r\n /*selectionBarGradient: null,*/\r\n ariaLabel: null,\r\n ariaLabelledBy: null,\r\n ariaLabelHigh: null,\r\n ariaLabelledByHigh: null\r\n };\r\n var globalOptions = {};\r\n\r\n var factory = {};\r\n\r\n factory.options = function (value) {\r\n angular.extend(globalOptions, value);\r\n };\r\n\r\n factory.getOptions = function (options) {\r\n return angular.extend({}, defaultOptions, globalOptions, options);\r\n };\r\n\r\n return factory;\r\n })\r\n\r\n /* @ngInject */\r\n .factory('rzThrottle', [\"$timeout\", function ($timeout) {\r\n return function (func, wait, options) {\r\n var getTime = (Date.now || function () {\r\n return new Date().getTime();\r\n });\r\n var context, args, result;\r\n var timeout = null;\r\n var previous = 0;\r\n options = options || {};\r\n var later = function () {\r\n previous = getTime();\r\n timeout = null;\r\n result = func.apply(context, args);\r\n context = args = null;\r\n };\r\n return function () {\r\n var now = getTime();\r\n var remaining = wait - (now - previous);\r\n context = this;\r\n args = arguments;\r\n if (remaining <= 0) {\r\n $timeout.cancel(timeout);\r\n timeout = null;\r\n previous = now;\r\n result = func.apply(context, args);\r\n context = args = null;\r\n } else if (!timeout && options.trailing !== false) {\r\n timeout = $timeout(later, remaining);\r\n }\r\n return result;\r\n };\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .factory('RzSlider', [\"$timeout\", \"$document\", \"$window\", \"$compile\", \"RzSliderOptions\", \"rzThrottle\", function ($timeout, $document, $window, $compile, RzSliderOptions, rzThrottle) {\r\n var Slider = function (scope, sliderElem) {\r\n\r\n this.scope = scope;\r\n this.lowValue = 0;\r\n this.highValue = 0;\r\n this.sliderElem = sliderElem;\r\n this.range = this.scope.rzSliderModel !== undefined && this.scope.rzSliderHigh !== undefined;\r\n this.dragging = {\r\n active: false,\r\n value: 0,\r\n difference: 0,\r\n position: 0,\r\n lowLimit: 0,\r\n highLimit: 0\r\n };\r\n this.positionProperty = 'left';\r\n this.dimensionProperty = 'width';\r\n this.handleHalfDim = 0;\r\n this.maxPos = 0;\r\n this.precision = 0;\r\n this.step = 1;\r\n this.tracking = '';\r\n this.minValue = 0;\r\n this.maxValue = 0;\r\n this.valueRange = 0;\r\n this.intermediateTicks = false;\r\n this.initHasRun = false;\r\n this.firstKeyDown = false;\r\n this.internalChange = false;\r\n this.cmbLabelShown = false;\r\n this.currentFocusElement = null;\r\n\r\n // Slider DOM elements wrapped in jqLite\r\n this.fullBar = null; // The whole slider bar\r\n this.selBar = null; // Highlight between two handles\r\n this.minH = null; // Left slider handle\r\n this.maxH = null; // Right slider handle\r\n this.flrLab = null; // Floor label\r\n this.ceilLab = null; // Ceiling label\r\n this.minLab = null; // Label above the low value\r\n this.maxLab = null; // Label above the high value\r\n this.cmbLab = null; // Combined label\r\n this.ticks = null; // The ticks\r\n\r\n // Initialize slider\r\n this.init();\r\n };\r\n\r\n // Add instance methods\r\n Slider.prototype = {\r\n init: function () {\r\n var thrLow, thrHigh,\r\n self = this;\r\n\r\n var calcDimFn = function () {\r\n self.calcViewDimensions();\r\n };\r\n\r\n this.applyOptions();\r\n this.syncLowValue();\r\n if (this.range) {\r\n this.syncHighValue();\r\n }\r\n this.initElemHandles();\r\n this.manageElementsStyle();\r\n this.setDisabledState();\r\n this.calcViewDimensions();\r\n this.setMinAndMax();\r\n this.addAccessibility();\r\n this.updateCeilLab();\r\n this.updateFloorLab();\r\n this.initHandles();\r\n this.manageEventsBindings();\r\n\r\n // Recalculate slider view dimensions\r\n this.scope.$on('reCalcViewDimensions', calcDimFn);\r\n\r\n // Recalculate stuff if view port dimensions have changed\r\n angular.element($window).on('resize', calcDimFn);\r\n\r\n this.initHasRun = true;\r\n\r\n // Watch for changes to the model\r\n thrLow = rzThrottle(function () {\r\n self.onLowHandleChange();\r\n }, self.options.interval);\r\n\r\n thrHigh = rzThrottle(function () {\r\n self.onHighHandleChange();\r\n }, self.options.interval);\r\n\r\n this.scope.$on('rzSliderForceRender', function () {\r\n self.resetLabelsValue();\r\n thrLow();\r\n if (self.range) {\r\n thrHigh();\r\n }\r\n self.resetSlider();\r\n });\r\n\r\n // Watchers (order is important because in case of simultaneous change,\r\n // watchers will be called in the same order)\r\n this.scope.$watch('rzSliderOptions()', function (newValue, oldValue) {\r\n if (newValue === oldValue) return;\r\n self.applyOptions(); // need to be called before synchronizing the values\r\n self.syncLowValue();\r\n if (self.range) {self.syncHighValue();}\r\n self.resetSlider();\r\n }, true);\r\n\r\n this.scope.$watch('rzSliderModel', function (newValue, oldValue) {\r\n if (self.internalChange) return;\r\n if (newValue === oldValue) return;\r\n thrLow();\r\n });\r\n\r\n this.scope.$watch('rzSliderHigh', function (newValue, oldValue) {\r\n if (self.internalChange) return;\r\n if (newValue === oldValue) return;\r\n if (newValue != null) {thrHigh();}\r\n if (self.range && newValue == null || !self.range && newValue != null) {\r\n self.applyOptions();\r\n self.resetSlider();\r\n }\r\n });\r\n\r\n this.scope.$on('$destroy', function () {\r\n self.unbindEvents();\r\n angular.element($window).off('resize', calcDimFn);\r\n self.currentFocusElement = null;\r\n });\r\n },\r\n\r\n findStepIndex: function (modelValue) {\r\n var index = 0;\r\n for (var i = 0; i < this.options.stepsArray.length; i++) {\r\n var step = this.options.stepsArray[i];\r\n if (step === modelValue) {\r\n index = i;\r\n break;\r\n } else if (angular.isDate(step)) {\r\n if (step.getTime() === modelValue.getTime()) {\r\n index = i;\r\n break;\r\n }\r\n } else if (angular.isObject(step)) {\r\n if (angular.isDate(step.value) && step.value.getTime() === modelValue.getTime() || step.value === modelValue) {\r\n index = i;\r\n break;\r\n }\r\n }\r\n }\r\n return index;\r\n },\r\n\r\n syncLowValue: function () {\r\n if (this.options.stepsArray) {\r\n if (!this.options.bindIndexForStepsArray) {\r\n this.lowValue = this.findStepIndex(this.scope.rzSliderModel);\r\n } else {\r\n this.lowValue = this.scope.rzSliderModel;\r\n }\r\n } else {\r\n this.lowValue = this.scope.rzSliderModel;\r\n }\r\n },\r\n\r\n syncHighValue: function () {\r\n if (this.options.stepsArray) {\r\n if (!this.options.bindIndexForStepsArray) {\r\n this.highValue = this.findStepIndex(this.scope.rzSliderHigh);\r\n } else {\r\n this.highValue = this.scope.rzSliderHigh;\r\n }\r\n } else {\r\n this.highValue = this.scope.rzSliderHigh;\r\n }\r\n },\r\n\r\n getStepValue: function (sliderValue) {\r\n var step = this.options.stepsArray[sliderValue];\r\n if (angular.isDate(step)) return step;\r\n if (angular.isObject(step)) return step.value;\r\n return step;\r\n },\r\n\r\n applyLowValue: function () {\r\n if (this.options.stepsArray) {\r\n if (!this.options.bindIndexForStepsArray) {\r\n this.scope.rzSliderModel = this.getStepValue(this.lowValue);\r\n } else {\r\n this.scope.rzSliderModel = this.lowValue;\r\n }\r\n } else {\r\n this.scope.rzSliderModel = this.lowValue;\r\n }\r\n },\r\n\r\n applyHighValue: function () {\r\n if (this.options.stepsArray) {\r\n if (!this.options.bindIndexForStepsArray) {\r\n this.scope.rzSliderHigh = this.getStepValue(this.highValue);\r\n } else {\r\n this.scope.rzSliderHigh = this.highValue;\r\n }\r\n } else {\r\n this.scope.rzSliderHigh = this.highValue;\r\n }\r\n },\r\n\r\n /*\r\n * Reflow the slider when the low handle changes (called with throttle)\r\n */\r\n onLowHandleChange: function () {\r\n this.syncLowValue();\r\n if (this.range) {this.syncHighValue();}\r\n this.setMinAndMax();\r\n this.updateLowHandle(this.valueToPosition(this.lowValue));\r\n this.updateSelectionBar();\r\n this.updateTicksScale();\r\n this.updateAriaAttributes();\r\n if (this.range) {\r\n this.updateCmbLabel();\r\n }\r\n },\r\n\r\n /*\r\n * Reflow the slider when the high handle changes (called with throttle)\r\n */\r\n onHighHandleChange: function () {\r\n this.syncLowValue();\r\n this.syncHighValue();\r\n this.setMinAndMax();\r\n this.updateHighHandle(this.valueToPosition(this.highValue));\r\n this.updateSelectionBar();\r\n this.updateTicksScale();\r\n this.updateCmbLabel();\r\n this.updateAriaAttributes();\r\n },\r\n\r\n /**\r\n * Read the user options and apply them to the slider model\r\n */\r\n applyOptions: function () {\r\n var sliderOptions;\r\n if (this.scope.rzSliderOptions) {\r\n sliderOptions = this.scope.rzSliderOptions();\r\n } else {\r\n sliderOptions = {};\r\n }\r\n\r\n this.options = RzSliderOptions.getOptions(sliderOptions);\r\n\r\n if (this.options.step <= 0) {\r\n this.options.step = 1;\r\n }\r\n\r\n this.range = this.scope.rzSliderModel !== undefined && this.scope.rzSliderHigh !== undefined;\r\n this.options.draggableRange = this.range && this.options.draggableRange;\r\n this.options.draggableRangeOnly = this.range && this.options.draggableRangeOnly;\r\n if (this.options.draggableRangeOnly) {\r\n this.options.draggableRange = true;\r\n }\r\n\r\n this.options.showTicks = this.options.showTicks || this.options.showTicksValues || !!this.options.ticksArray;\r\n this.scope.showTicks = this.options.showTicks; // scope is used in the template\r\n if (angular.isNumber(this.options.showTicks) || this.options.ticksArray) {this.intermediateTicks = true;}\r\n\r\n this.options.showSelectionBar = this.options.showSelectionBar || this.options.showSelectionBarEnd\r\n || this.options.showSelectionBarFromValue !== null;\r\n\r\n if (this.options.stepsArray) {\r\n this.parseStepsArray();\r\n } else {\r\n if (this.options.translate) {\r\n this.customTrFn = this.options.translate;\r\n } else {\r\n this.customTrFn = function (value) {\r\n return String(value);\r\n };\r\n }\r\n\r\n this.getLegend = this.options.getLegend;\r\n }\r\n\r\n if (this.options.vertical) {\r\n this.positionProperty = 'bottom';\r\n this.dimensionProperty = 'height';\r\n }\r\n\r\n if (this.options.customTemplateScope) {\r\n this.scope.custom = this.options.customTemplateScope;\r\n }\r\n },\r\n\r\n parseStepsArray: function () {\r\n this.options.floor = 0;\r\n this.options.ceil = this.options.stepsArray.length - 1;\r\n this.options.step = 1;\r\n\r\n if (this.options.translate) {\r\n this.customTrFn = this.options.translate;\r\n } else {\r\n this.customTrFn = function (modelValue) {\r\n if (this.options.bindIndexForStepsArray) {\r\n return this.getStepValue(modelValue);\r\n }\r\n return modelValue;\r\n };\r\n }\r\n\r\n this.getLegend = function (index) {\r\n var step = this.options.stepsArray[index];\r\n if (angular.isObject(step)) {\r\n return step.legend;\r\n }\r\n return null;\r\n };\r\n },\r\n\r\n /**\r\n * Resets slider\r\n *\r\n * @returns {undefined}\r\n */\r\n resetSlider: function () {\r\n this.manageElementsStyle();\r\n this.addAccessibility();\r\n this.setMinAndMax();\r\n this.updateCeilLab();\r\n this.updateFloorLab();\r\n this.unbindEvents();\r\n this.manageEventsBindings();\r\n this.setDisabledState();\r\n this.calcViewDimensions();\r\n this.refocusPointerIfNeeded();\r\n },\r\n\r\n refocusPointerIfNeeded: function () {\r\n if (this.currentFocusElement) {\r\n this.onPointerFocus(this.currentFocusElement.pointer, this.currentFocusElement.ref);\r\n this.focusElement(this.currentFocusElement.pointer);\r\n }\r\n },\r\n\r\n /**\r\n * Set the slider children to variables for easy access\r\n *\r\n * Run only once during initialization\r\n *\r\n * @returns {undefined}\r\n */\r\n initElemHandles: function () {\r\n // Assign all slider elements to object properties for easy access\r\n angular.forEach(this.sliderElem.children(), function (elem, index) {\r\n var jElem = angular.element(elem);\r\n\r\n switch (index) {\r\n case 0:\r\n this.fullBar = jElem;\r\n break;\r\n case 1:\r\n this.selBar = jElem;\r\n break;\r\n case 2:\r\n this.minH = jElem;\r\n break;\r\n case 3:\r\n this.maxH = jElem;\r\n break;\r\n case 4:\r\n this.flrLab = jElem;\r\n break;\r\n case 5:\r\n this.ceilLab = jElem;\r\n break;\r\n case 6:\r\n this.minLab = jElem;\r\n break;\r\n case 7:\r\n this.maxLab = jElem;\r\n break;\r\n case 8:\r\n this.cmbLab = jElem;\r\n break;\r\n case 9:\r\n this.ticks = jElem;\r\n break;\r\n }\r\n\r\n }, this);\r\n\r\n // Initialize position cache properties\r\n this.selBar.rzsp = 0;\r\n this.minH.rzsp = 0;\r\n this.maxH.rzsp = 0;\r\n this.flrLab.rzsp = 0;\r\n this.ceilLab.rzsp = 0;\r\n this.minLab.rzsp = 0;\r\n this.maxLab.rzsp = 0;\r\n this.cmbLab.rzsp = 0;\r\n },\r\n\r\n /**\r\n * Update each elements style based on options\r\n */\r\n manageElementsStyle: function () {\r\n\r\n if (!this.range) {\r\n this.maxH.css('display', 'none');\r\n } else {\r\n this.maxH.css('display', '');\r\n }\r\n\r\n\r\n this.alwaysHide(this.flrLab, this.options.showTicksValues || this.options.hideLimitLabels);\r\n this.alwaysHide(this.ceilLab, this.options.showTicksValues || this.options.hideLimitLabels);\r\n\r\n var hideLabelsForTicks = this.options.showTicksValues && !this.intermediateTicks;\r\n this.alwaysHide(this.minLab, hideLabelsForTicks || this.options.hidePointerLabels);\r\n this.alwaysHide(this.maxLab, hideLabelsForTicks || !this.range || this.options.hidePointerLabels);\r\n this.alwaysHide(this.cmbLab, hideLabelsForTicks || !this.range || this.options.hidePointerLabels);\r\n this.alwaysHide(this.selBar, !this.range && !this.options.showSelectionBar);\r\n\r\n if (this.options.vertical) {\r\n this.sliderElem.addClass('rz-vertical');\r\n }\r\n\r\n if (this.options.draggableRange) {\r\n this.selBar.addClass('rz-draggable');\r\n } else {\r\n this.selBar.removeClass('rz-draggable');\r\n }\r\n\r\n if (this.intermediateTicks && this.options.showTicksValues) {\r\n this.ticks.addClass('rz-ticks-values-under');\r\n }\r\n },\r\n\r\n alwaysHide: function (el, hide) {\r\n el.rzAlwaysHide = hide;\r\n if (hide) {\r\n this.hideEl(el);\r\n } else {\r\n this.showEl(el);\r\n }\r\n },\r\n\r\n /**\r\n * Manage the events bindings based on readOnly and disabled options\r\n *\r\n * @returns {undefined}\r\n */\r\n manageEventsBindings: function () {\r\n if (this.options.disabled || this.options.readOnly) {\r\n this.unbindEvents();\r\n } else {\r\n this.bindEvents();\r\n }\r\n },\r\n\r\n /**\r\n * Set the disabled state based on rzSliderDisabled\r\n *\r\n * @returns {undefined}\r\n */\r\n setDisabledState: function () {\r\n if (this.options.disabled) {\r\n this.sliderElem.attr('disabled', 'disabled');\r\n } else {\r\n this.sliderElem.attr('disabled', null);\r\n }\r\n },\r\n\r\n /**\r\n * Reset label values\r\n *\r\n * @return {undefined}\r\n */\r\n resetLabelsValue: function () {\r\n this.minLab.rzsv = undefined;\r\n this.maxLab.rzsv = undefined;\r\n },\r\n\r\n /**\r\n * Initialize slider handles positions and labels\r\n *\r\n * Run only once during initialization and every time view port changes size\r\n *\r\n * @returns {undefined}\r\n */\r\n initHandles: function () {\r\n this.updateLowHandle(this.valueToPosition(this.lowValue));\r\n\r\n /*\r\n the order here is important since the selection bar should be\r\n updated after the high handle but before the combined label\r\n */\r\n if (this.range) {\r\n this.updateHighHandle(this.valueToPosition(this.highValue));\r\n }\r\n this.updateSelectionBar();\r\n if (this.range) {\r\n this.updateCmbLabel();\r\n }\r\n\r\n this.updateTicksScale();\r\n },\r\n\r\n /**\r\n * Translate value to human readable format\r\n *\r\n * @param {number|string} value\r\n * @param {jqLite} label\r\n * @param {String} which\r\n * @param {boolean} [useCustomTr]\r\n * @returns {undefined}\r\n */\r\n translateFn: function (value, label, which, useCustomTr) {\r\n useCustomTr = useCustomTr === undefined ? true : useCustomTr;\r\n\r\n var valStr = '',\r\n getDimension = false,\r\n noLabelInjection = label.hasClass('no-label-injection');\r\n\r\n if (useCustomTr) {\r\n if (this.options.stepsArray && !this.options.bindIndexForStepsArray) {\r\n value = this.getStepValue(value);\r\n }\r\n valStr = String(this.customTrFn(value, this.options.id, which));\r\n } else {\r\n valStr = String(value);\r\n }\r\n\r\n if (label.rzsv === undefined || label.rzsv.length !== valStr.length || (label.rzsv.length > 0 && label.rzsd === 0)) {\r\n getDimension = true;\r\n label.rzsv = valStr;\r\n }\r\n\r\n if (!noLabelInjection) {\r\n label.html(valStr);\r\n }\r\n\r\n\r\n this.scope[which + 'Label'] = valStr;\r\n\r\n // Update width only when length of the label have changed\r\n if (getDimension) {\r\n this.getDimension(label);\r\n }\r\n },\r\n\r\n /**\r\n * Set maximum and minimum values for the slider and ensure the model and high\r\n * value match these limits\r\n * @returns {undefined}\r\n */\r\n setMinAndMax: function () {\r\n\r\n this.step = +this.options.step;\r\n this.precision = +this.options.precision;\r\n\r\n this.minValue = this.options.floor;\r\n if (this.options.logScale && this.minValue === 0) {\r\n throw Error(\"Can't use floor=0 with logarithmic scale\");\r\n }\r\n\r\n if (this.options.enforceStep) {\r\n this.lowValue = this.roundStep(this.lowValue);\r\n if (this.range) {\r\n this.highValue = this.roundStep(this.highValue);\r\n }\r\n }\r\n\r\n if (this.options.ceil != null) {\r\n this.maxValue = this.options.ceil;\r\n } else {\r\n this.maxValue = this.options.ceil = this.range ? this.highValue : this.lowValue;\r\n }\r\n\r\n if (this.options.enforceRange) {\r\n this.lowValue = this.sanitizeValue(this.lowValue);\r\n if (this.range) {\r\n this.highValue = this.sanitizeValue(this.highValue);\r\n }\r\n }\r\n\r\n this.applyLowValue();\r\n if (this.range) {\r\n this.applyHighValue();\r\n }\r\n\r\n this.valueRange = this.maxValue - this.minValue;\r\n },\r\n\r\n /**\r\n * Adds accessibility attributes\r\n *\r\n * Run only once during initialization\r\n *\r\n * @returns {undefined}\r\n */\r\n addAccessibility: function () {\r\n this.minH.attr('role', 'slider');\r\n this.updateAriaAttributes();\r\n if (this.options.keyboardSupport && !(this.options.readOnly || this.options.disabled)) {\r\n this.minH.attr('tabindex', '0');\r\n } else {\r\n this.minH.attr('tabindex', '');\r\n }\r\n if (this.options.vertical) {\r\n this.minH.attr('aria-orientation', 'vertical');\r\n }\r\n if (this.options.ariaLabel) {\r\n this.minH.attr('aria-label', this.options.ariaLabel);\r\n } else if (this.options.ariaLabelledBy) {\r\n this.minH.attr('aria-labelledby', this.options.ariaLabelledBy);\r\n }\r\n\r\n if (this.range) {\r\n this.maxH.attr('role', 'slider');\r\n if (this.options.keyboardSupport && !(this.options.readOnly || this.options.disabled)) {\r\n this.maxH.attr('tabindex', '0');\r\n } else {\r\n this.maxH.attr('tabindex', '');\r\n }\r\n if (this.options.vertical) {\r\n this.maxH.attr('aria-orientation', 'vertical');\r\n }\r\n if (this.options.ariaLabelHigh) {\r\n this.maxH.attr('aria-label', this.options.ariaLabelHigh);\r\n } else if (this.options.ariaLabelledByHigh) {\r\n this.maxH.attr('aria-labelledby', this.options.ariaLabelledByHigh);\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Updates aria attributes according to current values\r\n */\r\n updateAriaAttributes: function () {\r\n this.minH.attr({\r\n 'aria-valuenow': this.scope.rzSliderModel,\r\n 'aria-valuetext': this.customTrFn(this.scope.rzSliderModel, this.options.id, 'model'),\r\n 'aria-valuemin': this.minValue,\r\n 'aria-valuemax': this.maxValue\r\n });\r\n if (this.range) {\r\n this.maxH.attr({\r\n 'aria-valuenow': this.scope.rzSliderHigh,\r\n 'aria-valuetext': this.customTrFn(this.scope.rzSliderHigh, this.options.id, 'high'),\r\n 'aria-valuemin': this.minValue,\r\n 'aria-valuemax': this.maxValue\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Calculate dimensions that are dependent on view port size\r\n *\r\n * Run once during initialization and every time view port changes size.\r\n *\r\n * @returns {undefined}\r\n */\r\n calcViewDimensions: function () {\r\n var handleWidth = this.getDimension(this.minH);\r\n\r\n this.handleHalfDim = handleWidth / 2;\r\n this.barDimension = this.getDimension(this.fullBar);\r\n\r\n this.maxPos = this.barDimension - handleWidth;\r\n\r\n this.getDimension(this.sliderElem);\r\n this.sliderElem.rzsp = this.sliderElem[0].getBoundingClientRect()[this.positionProperty];\r\n\r\n if (this.initHasRun) {\r\n this.updateFloorLab();\r\n this.updateCeilLab();\r\n this.initHandles();\r\n var self = this;\r\n $timeout(function () {\r\n self.updateTicksScale();\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Update the ticks position\r\n *\r\n * @returns {undefined}\r\n */\r\n updateTicksScale: function () {\r\n if (!this.options.showTicks) return;\r\n\r\n var ticksArray = this.options.ticksArray || this.getTicksArray(),\r\n translate = this.options.vertical ? 'translateY' : 'translateX',\r\n self = this;\r\n\r\n if (this.options.rightToLeft) {\r\n ticksArray.reverse();\r\n }\r\n\r\n this.scope.ticks = ticksArray.map(function (value) {\r\n var position = self.valueToPosition(value);\r\n\r\n if (self.options.vertical) {\r\n position = self.maxPos - position;\r\n }\r\n\r\n var translation = translate + '(' + Math.round(position) + 'px)';\r\n var tick = {\r\n selected: self.isTickSelected(value),\r\n style: {\r\n '-webkit-transform': translation,\r\n '-moz-transform': translation,\r\n '-o-transform': translation,\r\n '-ms-transform': translation,\r\n 'transform': translation\r\n }\r\n };\r\n if (!tick.selected && self.options.getTickColor) {\r\n tick.style['background-color'] = self.getTickColor(value);\r\n }\r\n if (self.options.ticksTooltip) {\r\n tick.tooltip = self.options.ticksTooltip(value);\r\n tick.tooltipPlacement = self.options.vertical ? 'right' : 'top';\r\n }\r\n if (self.options.showTicksValues) {\r\n tick.value = self.getDisplayValue(value, 'tick-value');\r\n if (self.options.ticksValuesTooltip) {\r\n tick.valueTooltip = self.options.ticksValuesTooltip(value);\r\n tick.valueTooltipPlacement = self.options.vertical ? 'right' : 'top';\r\n }\r\n }\r\n if (self.getLegend) {\r\n var legend = self.getLegend(value, self.options.id);\r\n if (legend) {\r\n tick.legend = legend;\r\n }\r\n }\r\n return tick;\r\n });\r\n },\r\n\r\n getTicksArray: function () {\r\n var step = this.step,\r\n ticksArray = [];\r\n if (this.intermediateTicks) {\r\n step = this.options.showTicks;\r\n }\r\n for (var value = this.minValue; value <= this.maxValue; value += step) {\r\n ticksArray.push(value);\r\n }\r\n return ticksArray;\r\n },\r\n\r\n isTickSelected: function (value) {\r\n if (!this.range) {\r\n if (this.options.showSelectionBarFromValue !== null) {\r\n var center = this.options.showSelectionBarFromValue;\r\n if (this.lowValue > center && value >= center && value <= this.lowValue) {\r\n return true;\r\n } else if (this.lowValue < center && value <= center && value >= this.lowValue) {\r\n return true;\r\n }\r\n } else if (this.options.showSelectionBarEnd) {\r\n if (value >= this.lowValue) {\r\n return true;\r\n }\r\n } else if (this.options.showSelectionBar && value <= this.lowValue) {\r\n return true;\r\n }\r\n }\r\n if (this.range && value >= this.lowValue && value <= this.highValue) {\r\n return true;\r\n }\r\n return false;\r\n },\r\n\r\n /**\r\n * Update position of the floor label\r\n *\r\n * @returns {undefined}\r\n */\r\n updateFloorLab: function () {\r\n this.translateFn(this.minValue, this.flrLab, 'floor');\r\n this.getDimension(this.flrLab);\r\n var position = this.options.rightToLeft ? this.barDimension - this.flrLab.rzsd : 0;\r\n this.setPosition(this.flrLab, position);\r\n },\r\n\r\n /**\r\n * Update position of the ceiling label\r\n *\r\n * @returns {undefined}\r\n */\r\n updateCeilLab: function () {\r\n this.translateFn(this.maxValue, this.ceilLab, 'ceil');\r\n this.getDimension(this.ceilLab);\r\n var position = this.options.rightToLeft ? 0 : this.barDimension - this.ceilLab.rzsd;\r\n this.setPosition(this.ceilLab, position);\r\n },\r\n\r\n /**\r\n * Update slider handles and label positions\r\n *\r\n * @param {string} which\r\n * @param {number} newPos\r\n */\r\n updateHandles: function (which, newPos) {\r\n if (which === 'lowValue') {\r\n this.updateLowHandle(newPos);\r\n } else {\r\n this.updateHighHandle(newPos);\r\n }\r\n\r\n this.updateSelectionBar();\r\n this.updateTicksScale();\r\n if (this.range) {\r\n this.updateCmbLabel();\r\n }\r\n },\r\n\r\n /**\r\n * Helper function to work out the position for handle labels depending on RTL or not\r\n *\r\n * @param {string} labelName maxLab or minLab\r\n * @param newPos\r\n *\r\n * @returns {number}\r\n */\r\n getHandleLabelPos: function (labelName, newPos) {\r\n var labelRzsd = this[labelName].rzsd,\r\n nearHandlePos = newPos - labelRzsd / 2 + this.handleHalfDim,\r\n endOfBarPos = this.barDimension - labelRzsd;\r\n\r\n if (!this.options.boundPointerLabels) {\r\n return nearHandlePos;\r\n }\r\n\r\n if (this.options.rightToLeft && labelName === 'minLab' || !this.options.rightToLeft && labelName === 'maxLab') {\r\n return Math.min(nearHandlePos, endOfBarPos);\r\n }\r\n return Math.min(Math.max(nearHandlePos, 0), endOfBarPos);\r\n\r\n },\r\n\r\n /**\r\n * Update low slider handle position and label\r\n *\r\n * @param {number} newPos\r\n * @returns {undefined}\r\n */\r\n updateLowHandle: function (newPos) {\r\n this.setPosition(this.minH, newPos);\r\n this.translateFn(this.lowValue, this.minLab, 'model');\r\n this.setPosition(this.minLab, this.getHandleLabelPos('minLab', newPos));\r\n\r\n if (this.options.autoHideLimitLabels) {\r\n this.shFloorCeil();\r\n }\r\n },\r\n\r\n /**\r\n * Update high slider handle position and label\r\n *\r\n * @param {number} newPos\r\n * @returns {undefined}\r\n */\r\n updateHighHandle: function (newPos) {\r\n this.setPosition(this.maxH, newPos);\r\n this.translateFn(this.highValue, this.maxLab, 'high');\r\n this.setPosition(this.maxLab, this.getHandleLabelPos('maxLab', newPos));\r\n\r\n if (this.options.autoHideLimitLabels) {\r\n this.shFloorCeil();\r\n }\r\n\r\n },\r\n\r\n /**\r\n * Show/hide floor/ceiling label\r\n *\r\n * @returns {undefined}\r\n */\r\n shFloorCeil: function () {\r\n // Show based only on hideLimitLabels if pointer labels are hidden\r\n if (this.options.hidePointerLabels) {\r\n return;\r\n }\r\n var flHidden = false,\r\n clHidden = false,\r\n isMinLabAtFloor = this.isLabelBelowFloorLab(this.minLab),\r\n isMinLabAtCeil = this.isLabelAboveCeilLab(this.minLab),\r\n isMaxLabAtCeil = this.isLabelAboveCeilLab(this.maxLab),\r\n isCmbLabAtFloor = this.isLabelBelowFloorLab(this.cmbLab),\r\n isCmbLabAtCeil = this.isLabelAboveCeilLab(this.cmbLab);\r\n\r\n if (isMinLabAtFloor) {\r\n flHidden = true;\r\n this.hideEl(this.flrLab);\r\n } else {\r\n flHidden = false;\r\n this.showEl(this.flrLab);\r\n }\r\n\r\n if (isMinLabAtCeil) {\r\n clHidden = true;\r\n this.hideEl(this.ceilLab);\r\n } else {\r\n clHidden = false;\r\n this.showEl(this.ceilLab);\r\n }\r\n\r\n if (this.range) {\r\n var hideCeil = this.cmbLabelShown ? isCmbLabAtCeil : isMaxLabAtCeil;\r\n var hideFloor = this.cmbLabelShown ? isCmbLabAtFloor : isMinLabAtFloor;\r\n\r\n if (hideCeil) {\r\n this.hideEl(this.ceilLab);\r\n } else if (!clHidden) {\r\n this.showEl(this.ceilLab);\r\n }\r\n\r\n // Hide or show floor label\r\n if (hideFloor) {\r\n this.hideEl(this.flrLab);\r\n } else if (!flHidden) {\r\n this.showEl(this.flrLab);\r\n }\r\n }\r\n },\r\n\r\n isLabelBelowFloorLab: function (label) {\r\n var isRTL = this.options.rightToLeft,\r\n pos = label.rzsp,\r\n dim = label.rzsd,\r\n floorPos = this.flrLab.rzsp,\r\n floorDim = this.flrLab.rzsd;\r\n return isRTL ?\r\n pos + dim >= floorPos - 2 :\r\n pos <= floorPos + floorDim + 2;\r\n },\r\n\r\n isLabelAboveCeilLab: function (label) {\r\n var isRTL = this.options.rightToLeft,\r\n pos = label.rzsp,\r\n dim = label.rzsd,\r\n ceilPos = this.ceilLab.rzsp,\r\n ceilDim = this.ceilLab.rzsd;\r\n return isRTL ?\r\n pos <= ceilPos + ceilDim + 2 :\r\n pos + dim >= ceilPos - 2;\r\n },\r\n\r\n /**\r\n * Update slider selection bar, combined label and range label\r\n *\r\n * @returns {undefined}\r\n */\r\n updateSelectionBar: function () {\r\n var position = 0,\r\n dimension = 0,\r\n isSelectionBarFromRight = this.options.rightToLeft ? !this.options.showSelectionBarEnd : this.options.showSelectionBarEnd,\r\n positionForRange = this.options.rightToLeft ? this.maxH.rzsp + this.handleHalfDim : this.minH.rzsp + this.handleHalfDim;\r\n\r\n if (this.range) {\r\n dimension = Math.abs(this.maxH.rzsp - this.minH.rzsp);\r\n position = positionForRange;\r\n } else if (this.options.showSelectionBarFromValue !== null) {\r\n var center = this.options.showSelectionBarFromValue,\r\n centerPosition = this.valueToPosition(center),\r\n isModelGreaterThanCenter = this.options.rightToLeft ? this.lowValue <= center : this.lowValue > center;\r\n if (isModelGreaterThanCenter) {\r\n dimension = this.minH.rzsp - centerPosition;\r\n position = centerPosition + this.handleHalfDim;\r\n } else {\r\n dimension = centerPosition - this.minH.rzsp;\r\n position = this.minH.rzsp + this.handleHalfDim;\r\n }\r\n } else if (isSelectionBarFromRight) {\r\n dimension = Math.abs(this.maxPos - this.minH.rzsp) + this.handleHalfDim;\r\n position = this.minH.rzsp + this.handleHalfDim;\r\n } else {\r\n dimension = Math.abs(this.maxH.rzsp - this.minH.rzsp) + this.handleHalfDim;\r\n position = 0;\r\n }\r\n this.setDimension(this.selBar, dimension);\r\n this.setPosition(this.selBar, position);\r\n },\r\n\r\n /**\r\n * Wrapper around the getTickColor of the user to pass to\r\n * correct parameters\r\n */\r\n getTickColor: function (value) {\r\n return this.options.getTickColor(value);\r\n },\r\n\r\n /**\r\n * Update combined label position and value\r\n *\r\n * @returns {undefined}\r\n */\r\n updateCmbLabel: function () {\r\n var isLabelOverlap = null;\r\n if (this.options.rightToLeft) {\r\n isLabelOverlap = this.minLab.rzsp - this.minLab.rzsd - 10 <= this.maxLab.rzsp;\r\n } else {\r\n isLabelOverlap = this.minLab.rzsp + this.minLab.rzsd + 10 >= this.maxLab.rzsp;\r\n }\r\n\r\n if (isLabelOverlap) {\r\n var lowTr = this.getDisplayValue(this.lowValue, 'model'),\r\n highTr = this.getDisplayValue(this.highValue, 'high'),\r\n labelVal = '';\r\n if (this.options.mergeRangeLabelsIfSame && lowTr === highTr) {\r\n labelVal = lowTr;\r\n } else {\r\n labelVal = this.options.rightToLeft ? highTr + ' - ' + lowTr : lowTr + ' - ' + highTr;\r\n }\r\n\r\n this.translateFn(labelVal, this.cmbLab, 'cmb', false);\r\n var pos = this.options.boundPointerLabels ? Math.min(\r\n Math.max(\r\n this.selBar.rzsp + this.selBar.rzsd / 2 - this.cmbLab.rzsd / 2,\r\n 0\r\n ),\r\n this.barDimension - this.cmbLab.rzsd\r\n ) : this.selBar.rzsp + this.selBar.rzsd / 2 - this.cmbLab.rzsd / 2;\r\n\r\n this.setPosition(this.cmbLab, pos);\r\n this.cmbLabelShown = true;\r\n this.hideEl(this.minLab);\r\n this.hideEl(this.maxLab);\r\n this.showEl(this.cmbLab);\r\n } else {\r\n this.cmbLabelShown = false;\r\n this.updateHighHandle(this.valueToPosition(this.highValue));\r\n this.updateLowHandle(this.valueToPosition(this.lowValue));\r\n this.showEl(this.maxLab);\r\n this.showEl(this.minLab);\r\n this.hideEl(this.cmbLab);\r\n }\r\n if (this.options.autoHideLimitLabels) {\r\n this.shFloorCeil();\r\n }\r\n },\r\n\r\n /**\r\n * Return the translated value if a translate function is provided else the original value\r\n * @param value\r\n * @param which if it's min or max handle\r\n * @returns {*}\r\n */\r\n getDisplayValue: function (value, which) {\r\n if (this.options.stepsArray && !this.options.bindIndexForStepsArray) {\r\n value = this.getStepValue(value);\r\n }\r\n return this.customTrFn(value, this.options.id, which);\r\n },\r\n\r\n /**\r\n * Round value to step and precision based on minValue\r\n *\r\n * @param {number} value\r\n * @param {number} customStep a custom step to override the defined step\r\n * @returns {number}\r\n */\r\n roundStep: function (value, customStep) {\r\n var step = customStep ? customStep : this.step,\r\n steppedDifference = parseFloat((value - this.minValue) / step).toPrecision(12);\r\n steppedDifference = Math.round(+steppedDifference) * step;\r\n var newValue = (this.minValue + steppedDifference).toFixed(this.precision);\r\n return +newValue;\r\n },\r\n\r\n /**\r\n * Hide element\r\n *\r\n * @param element\r\n * @returns {jqLite} The jqLite wrapped DOM element\r\n */\r\n hideEl: function (element) {\r\n return element.css({\r\n visibility: 'hidden'\r\n });\r\n },\r\n\r\n /**\r\n * Show element\r\n *\r\n * @param element The jqLite wrapped DOM element\r\n * @returns {jqLite} The jqLite\r\n */\r\n showEl: function (element) {\r\n if (!!element.rzAlwaysHide) {\r\n return element;\r\n }\r\n\r\n return element.css({\r\n visibility: 'visible'\r\n });\r\n },\r\n\r\n /**\r\n * Set element left/top position depending on whether slider is horizontal or vertical\r\n *\r\n * @param {jqLite} elem The jqLite wrapped DOM element\r\n * @param {number} pos\r\n * @returns {number}\r\n */\r\n setPosition: function (elem, pos) {\r\n elem.rzsp = pos;\r\n var css = {};\r\n css[this.positionProperty] = Math.round(pos) + 'px';\r\n elem.css(css);\r\n return pos;\r\n },\r\n\r\n /**\r\n * Get element width/height depending on whether slider is horizontal or vertical\r\n *\r\n * @param {jqLite} elem The jqLite wrapped DOM element\r\n * @returns {number}\r\n */\r\n getDimension: function (elem) {\r\n var val = elem[0].getBoundingClientRect();\r\n if (this.options.vertical) {\r\n elem.rzsd = (val.bottom - val.top) * this.options.scale;\r\n } else {\r\n elem.rzsd = (val.right - val.left) * this.options.scale;\r\n }\r\n return elem.rzsd;\r\n },\r\n\r\n /**\r\n * Set element width/height depending on whether slider is horizontal or vertical\r\n *\r\n * @param {jqLite} elem The jqLite wrapped DOM element\r\n * @param {number} dim\r\n * @returns {number}\r\n */\r\n setDimension: function (elem, dim) {\r\n elem.rzsd = dim;\r\n var css = {};\r\n css[this.dimensionProperty] = Math.round(dim) + 'px';\r\n elem.css(css);\r\n return dim;\r\n },\r\n\r\n /**\r\n * Returns a value that is within slider range\r\n *\r\n * @param {number} val\r\n * @returns {number}\r\n */\r\n sanitizeValue: function (val) {\r\n return Math.min(Math.max(val, this.minValue), this.maxValue);\r\n },\r\n\r\n /**\r\n * Translate value to pixel position\r\n *\r\n * @param {number} val\r\n * @returns {number}\r\n */\r\n valueToPosition: function (val) {\r\n var fn = this.linearValueToPosition;\r\n if (this.options.customValueToPosition) {\r\n fn = this.options.customValueToPosition;\r\n } else if (this.options.logScale) {\r\n fn = this.logValueToPosition;\r\n }\r\n\r\n val = this.sanitizeValue(val);\r\n var percent = fn(val, this.minValue, this.maxValue) || 0;\r\n if (this.options.rightToLeft) {\r\n percent = 1 - percent;\r\n }\r\n return percent * this.maxPos;\r\n },\r\n\r\n linearValueToPosition: function (val, minVal, maxVal) {\r\n var range = maxVal - minVal;\r\n return (val - minVal) / range;\r\n },\r\n\r\n logValueToPosition: function (val, minVal, maxVal) {\r\n val = Math.log(val);\r\n minVal = Math.log(minVal);\r\n maxVal = Math.log(maxVal);\r\n var range = maxVal - minVal;\r\n return (val - minVal) / range;\r\n },\r\n\r\n /**\r\n * Translate position to model value\r\n *\r\n * @param {number} position\r\n * @returns {number}\r\n */\r\n positionToValue: function (position) {\r\n var percent = position / this.maxPos;\r\n if (this.options.rightToLeft) {\r\n percent = 1 - percent;\r\n }\r\n var fn = this.linearPositionToValue;\r\n if (this.options.customPositionToValue) {\r\n fn = this.options.customPositionToValue;\r\n } else if (this.options.logScale) {\r\n fn = this.logPositionToValue;\r\n }\r\n return fn(percent, this.minValue, this.maxValue) || 0;\r\n },\r\n\r\n linearPositionToValue: function (percent, minVal, maxVal) {\r\n return percent * (maxVal - minVal) + minVal;\r\n },\r\n\r\n logPositionToValue: function (percent, minVal, maxVal) {\r\n minVal = Math.log(minVal);\r\n maxVal = Math.log(maxVal);\r\n var value = percent * (maxVal - minVal) + minVal;\r\n return Math.exp(value);\r\n },\r\n\r\n // Events\r\n /**\r\n * Get the X-coordinate or Y-coordinate of an event\r\n *\r\n * @param {Object} event The event\r\n * @returns {number}\r\n */\r\n getEventXY: function (event) {\r\n /* http://stackoverflow.com/a/12336075/282882 */\r\n // noinspection JSLint\r\n var clientXY = this.options.vertical ? 'clientY' : 'clientX';\r\n if (event[clientXY] !== undefined) {\r\n return event[clientXY];\r\n }\r\n\r\n return event.originalEvent === undefined ?\r\n event.touches[0][clientXY] : event.originalEvent.touches[0][clientXY];\r\n },\r\n\r\n /**\r\n * Compute the event position depending on whether the slider is horizontal or vertical\r\n * @param event\r\n * @returns {number}\r\n */\r\n getEventPosition: function (event) {\r\n var sliderPos = this.sliderElem.rzsp,\r\n eventPos = 0;\r\n if (this.options.vertical) {\r\n eventPos = -this.getEventXY(event) + sliderPos;\r\n } else {\r\n eventPos = this.getEventXY(event) - sliderPos;\r\n }\r\n return eventPos * this.options.scale - this.handleHalfDim; // #346 handleHalfDim is already scaled\r\n },\r\n\r\n /**\r\n * Get event names for move and event end\r\n *\r\n * @param {Event} event The event\r\n *\r\n * @return {{moveEvent: string, endEvent: string}}\r\n */\r\n getEventNames: function (event) {\r\n var eventNames = {\r\n moveEvent: '',\r\n endEvent: ''\r\n };\r\n\r\n if (event.touches || (event.originalEvent !== undefined && event.originalEvent.touches)) {\r\n eventNames.moveEvent = 'touchmove';\r\n eventNames.endEvent = 'touchend';\r\n } else {\r\n eventNames.moveEvent = 'mousemove';\r\n eventNames.endEvent = 'mouseup';\r\n }\r\n\r\n return eventNames;\r\n },\r\n\r\n /**\r\n * Get the handle closest to an event.\r\n *\r\n * @param event {Event} The event\r\n * @returns {jqLite} The handle closest to the event.\r\n */\r\n getNearestHandle: function (event) {\r\n if (!this.range) {\r\n return this.minH;\r\n }\r\n var position = this.getEventPosition(event),\r\n distanceMin = Math.abs(position - this.minH.rzsp),\r\n distanceMax = Math.abs(position - this.maxH.rzsp);\r\n if (distanceMin < distanceMax) {\r\n return this.minH;\r\n } else if (distanceMin > distanceMax) {\r\n return this.maxH;\r\n } else if (!this.options.rightToLeft) {\r\n return position < this.minH.rzsp ? this.minH : this.maxH;\r\n }\r\n return position > this.minH.rzsp ? this.minH : this.maxH;\r\n },\r\n\r\n /**\r\n * Wrapper function to focus an angular element\r\n *\r\n * @param el {AngularElement} the element to focus\r\n */\r\n focusElement: function (el) {\r\n var DOM_ELEMENT = 0;\r\n el[DOM_ELEMENT].focus();\r\n },\r\n\r\n /**\r\n * Bind mouse and touch events to slider handles\r\n *\r\n * @returns {undefined}\r\n */\r\n bindEvents: function () {\r\n var barTracking, barStart, barMove;\r\n\r\n if (this.options.draggableRange) {\r\n barTracking = 'rzSliderDrag';\r\n barStart = this.onDragStart;\r\n barMove = this.onDragMove;\r\n } else {\r\n barTracking = 'lowValue';\r\n barStart = this.onStart;\r\n barMove = this.onMove;\r\n }\r\n\r\n if (!this.options.onlyBindHandles) {\r\n this.selBar.on('mousedown', angular.bind(this, barStart, null, barTracking));\r\n this.selBar.on('mousedown', angular.bind(this, barMove, this.selBar));\r\n }\r\n\r\n if (this.options.draggableRangeOnly) {\r\n this.minH.on('mousedown', angular.bind(this, barStart, null, barTracking));\r\n this.maxH.on('mousedown', angular.bind(this, barStart, null, barTracking));\r\n } else {\r\n this.minH.on('mousedown', angular.bind(this, this.onStart, this.minH, 'lowValue'));\r\n if (this.range) {\r\n this.maxH.on('mousedown', angular.bind(this, this.onStart, this.maxH, 'highValue'));\r\n }\r\n if (!this.options.onlyBindHandles) {\r\n this.fullBar.on('mousedown', angular.bind(this, this.onStart, null, null));\r\n this.fullBar.on('mousedown', angular.bind(this, this.onMove, this.fullBar));\r\n this.ticks.on('mousedown', angular.bind(this, this.onStart, null, null));\r\n this.ticks.on('mousedown', angular.bind(this, this.onTickClick, this.ticks));\r\n }\r\n }\r\n\r\n if (!this.options.onlyBindHandles) {\r\n this.selBar.on('touchstart', angular.bind(this, barStart, null, barTracking));\r\n this.selBar.on('touchstart', angular.bind(this, barMove, this.selBar));\r\n }\r\n if (this.options.draggableRangeOnly) {\r\n this.minH.on('touchstart', angular.bind(this, barStart, null, barTracking));\r\n this.maxH.on('touchstart', angular.bind(this, barStart, null, barTracking));\r\n } else {\r\n this.minH.on('touchstart', angular.bind(this, this.onStart, this.minH, 'lowValue'));\r\n if (this.range) {\r\n this.maxH.on('touchstart', angular.bind(this, this.onStart, this.maxH, 'highValue'));\r\n }\r\n if (!this.options.onlyBindHandles) {\r\n this.fullBar.on('touchstart', angular.bind(this, this.onStart, null, null));\r\n this.fullBar.on('touchstart', angular.bind(this, this.onMove, this.fullBar));\r\n this.ticks.on('touchstart', angular.bind(this, this.onStart, null, null));\r\n this.ticks.on('touchstart', angular.bind(this, this.onTickClick, this.ticks));\r\n }\r\n }\r\n\r\n if (this.options.keyboardSupport) {\r\n this.minH.on('focus', angular.bind(this, this.onPointerFocus, this.minH, 'lowValue'));\r\n if (this.range) {\r\n this.maxH.on('focus', angular.bind(this, this.onPointerFocus, this.maxH, 'highValue'));\r\n }\r\n }\r\n },\r\n\r\n /**\r\n * Unbind mouse and touch events to slider handles\r\n *\r\n * @returns {undefined}\r\n */\r\n unbindEvents: function () {\r\n this.minH.off();\r\n this.maxH.off();\r\n this.fullBar.off();\r\n this.selBar.off();\r\n this.ticks.off();\r\n },\r\n\r\n /**\r\n * onStart event handler\r\n *\r\n * @param {?Object} pointer The jqLite wrapped DOM element; if null, the closest handle is used\r\n * @param {?string} ref The name of the handle being changed; if null, the closest handle's value is modified\r\n * @param {Event} event The event\r\n * @returns {undefined}\r\n */\r\n onStart: function (pointer, ref, event) {\r\n var ehMove, ehEnd,\r\n eventNames = this.getEventNames(event);\r\n\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n // We have to do this in case the HTML where the sliders are on\r\n // have been animated into view.\r\n this.calcViewDimensions();\r\n\r\n if (pointer) {\r\n this.tracking = ref;\r\n } else {\r\n pointer = this.getNearestHandle(event);\r\n this.tracking = pointer === this.minH ? 'lowValue' : 'highValue';\r\n }\r\n\r\n pointer.addClass('rz-active');\r\n\r\n if (this.options.keyboardSupport) {\r\n this.focusElement(pointer);\r\n }\r\n\r\n ehMove = angular.bind(this, this.dragging.active ? this.onDragMove : this.onMove, pointer);\r\n ehEnd = angular.bind(this, this.onEnd, ehMove);\r\n\r\n $document.on(eventNames.moveEvent, ehMove);\r\n $document.one(eventNames.endEvent, ehEnd);\r\n this.callOnStart();\r\n },\r\n\r\n /**\r\n * onMove event handler\r\n *\r\n * @param {jqLite} pointer\r\n * @param {Event} event The event\r\n * @param {boolean} fromTick if the event occured on a tick or not\r\n * @returns {undefined}\r\n */\r\n onMove: function (pointer, event, fromTick) {\r\n var newPos = this.getEventPosition(event),\r\n newValue,\r\n ceilValue = this.options.rightToLeft ? this.minValue : this.maxValue,\r\n flrValue = this.options.rightToLeft ? this.maxValue : this.minValue;\r\n\r\n if (newPos <= 0) {\r\n newValue = flrValue;\r\n } else if (newPos >= this.maxPos) {\r\n newValue = ceilValue;\r\n } else {\r\n newValue = this.positionToValue(newPos);\r\n if (fromTick && angular.isNumber(this.options.showTicks)) {\r\n newValue = this.roundStep(newValue, this.options.showTicks);\r\n } else {\r\n newValue = this.roundStep(newValue);\r\n }\r\n }\r\n this.positionTrackingHandle(newValue);\r\n },\r\n\r\n /**\r\n * onEnd event handler\r\n *\r\n * @param {Event} event The event\r\n * @param {Function} ehMove The the bound move event handler\r\n * @returns {undefined}\r\n */\r\n onEnd: function (ehMove, event) {\r\n var moveEventName = this.getEventNames(event).moveEvent;\r\n\r\n if (!this.options.keyboardSupport) {\r\n this.minH.removeClass('rz-active');\r\n this.maxH.removeClass('rz-active');\r\n this.tracking = '';\r\n }\r\n this.dragging.active = false;\r\n\r\n $document.off(moveEventName, ehMove);\r\n this.callOnEnd();\r\n },\r\n\r\n onTickClick: function (pointer, event) {\r\n this.onMove(pointer, event, true);\r\n },\r\n\r\n onPointerFocus: function (pointer, ref) {\r\n this.tracking = ref;\r\n pointer.one('blur', angular.bind(this, this.onPointerBlur, pointer));\r\n pointer.on('keydown', angular.bind(this, this.onKeyboardEvent));\r\n pointer.on('keyup', angular.bind(this, this.onKeyUp));\r\n this.firstKeyDown = true;\r\n pointer.addClass('rz-active');\r\n\r\n this.currentFocusElement = {\r\n pointer: pointer,\r\n ref: ref\r\n };\r\n },\r\n\r\n onKeyUp: function () {\r\n this.firstKeyDown = true;\r\n this.callOnEnd();\r\n },\r\n\r\n onPointerBlur: function (pointer) {\r\n pointer.off('keydown');\r\n pointer.off('keyup');\r\n this.tracking = '';\r\n pointer.removeClass('rz-active');\r\n this.currentFocusElement = null;\r\n },\r\n\r\n /**\r\n * Key actions helper function\r\n *\r\n * @param {number} currentValue value of the slider\r\n *\r\n * @returns {?Object} action value mappings\r\n */\r\n getKeyActions: function (currentValue) {\r\n var increaseStep = currentValue + this.step,\r\n decreaseStep = currentValue - this.step,\r\n increasePage = currentValue + this.valueRange / 10,\r\n decreasePage = currentValue - this.valueRange / 10;\r\n\r\n // Left to right default actions\r\n var actions = {\r\n 'UP': increaseStep,\r\n 'DOWN': decreaseStep,\r\n 'LEFT': decreaseStep,\r\n 'RIGHT': increaseStep,\r\n 'PAGEUP': increasePage,\r\n 'PAGEDOWN': decreasePage,\r\n 'HOME': this.minValue,\r\n 'END': this.maxValue\r\n };\r\n // right to left means swapping right and left arrows\r\n if (this.options.rightToLeft) {\r\n actions.LEFT = increaseStep;\r\n actions.RIGHT = decreaseStep;\r\n // right to left and vertical means we also swap up and down\r\n if (this.options.vertical) {\r\n actions.UP = decreaseStep;\r\n actions.DOWN = increaseStep;\r\n }\r\n }\r\n return actions;\r\n },\r\n\r\n onKeyboardEvent: function (event) {\r\n var currentValue = this[this.tracking],\r\n keyCode = event.keyCode || event.which,\r\n keys = {\r\n 38: 'UP',\r\n 40: 'DOWN',\r\n 37: 'LEFT',\r\n 39: 'RIGHT',\r\n 33: 'PAGEUP',\r\n 34: 'PAGEDOWN',\r\n 36: 'HOME',\r\n 35: 'END'\r\n },\r\n actions = this.getKeyActions(currentValue),\r\n key = keys[keyCode],\r\n action = actions[key];\r\n if (action == null || this.tracking === '') return;\r\n event.preventDefault();\r\n\r\n if (this.firstKeyDown) {\r\n this.firstKeyDown = false;\r\n this.callOnStart();\r\n }\r\n\r\n var self = this;\r\n $timeout(function () {\r\n var newValue = self.roundStep(self.sanitizeValue(action));\r\n if (!self.options.draggableRangeOnly) {\r\n self.positionTrackingHandle(newValue);\r\n } else {\r\n var difference = self.highValue - self.lowValue,\r\n newMinValue, newMaxValue;\r\n if (self.tracking === 'lowValue') {\r\n newMinValue = newValue;\r\n newMaxValue = newValue + difference;\r\n if (newMaxValue > self.maxValue) {\r\n newMaxValue = self.maxValue;\r\n newMinValue = newMaxValue - difference;\r\n }\r\n } else {\r\n newMaxValue = newValue;\r\n newMinValue = newValue - difference;\r\n if (newMinValue < self.minValue) {\r\n newMinValue = self.minValue;\r\n newMaxValue = newMinValue + difference;\r\n }\r\n }\r\n self.positionTrackingBar(newMinValue, newMaxValue);\r\n }\r\n });\r\n },\r\n\r\n /**\r\n * onDragStart event handler\r\n *\r\n * Handles dragging of the middle bar.\r\n *\r\n * @param {Object} pointer The jqLite wrapped DOM element\r\n * @param {string} ref One of the refLow, refHigh values\r\n * @param {Event} event The event\r\n * @returns {undefined}\r\n */\r\n onDragStart: function (pointer, ref, event) {\r\n var position = this.getEventPosition(event);\r\n this.dragging = {\r\n active: true,\r\n value: this.positionToValue(position),\r\n difference: this.highValue - this.lowValue,\r\n lowLimit: this.options.rightToLeft ? this.minH.rzsp - position : position - this.minH.rzsp,\r\n highLimit: this.options.rightToLeft ? position - this.maxH.rzsp : this.maxH.rzsp - position\r\n };\r\n\r\n this.onStart(pointer, ref, event);\r\n },\r\n\r\n /**\r\n * getValue helper function\r\n *\r\n * gets max or min value depending on whether the newPos is outOfBounds above or below the bar and rightToLeft\r\n *\r\n * @param {string} type 'max' || 'min' The value we are calculating\r\n * @param {number} newPos The new position\r\n * @param {boolean} outOfBounds Is the new position above or below the max/min?\r\n * @param {boolean} isAbove Is the new position above the bar if out of bounds?\r\n *\r\n * @returns {number}\r\n */\r\n getValue: function (type, newPos, outOfBounds, isAbove) {\r\n var isRTL = this.options.rightToLeft,\r\n value = null;\r\n\r\n if (type === 'min') {\r\n if (outOfBounds) {\r\n if (isAbove) {\r\n value = isRTL ? this.minValue : this.maxValue - this.dragging.difference;\r\n } else {\r\n value = isRTL ? this.maxValue - this.dragging.difference : this.minValue;\r\n }\r\n } else {\r\n value = isRTL ? this.positionToValue(newPos + this.dragging.lowLimit) : this.positionToValue(newPos - this.dragging.lowLimit);\r\n }\r\n } else if (outOfBounds) {\r\n if (isAbove) {\r\n value = isRTL ? this.minValue + this.dragging.difference : this.maxValue;\r\n } else {\r\n value = isRTL ? this.maxValue : this.minValue + this.dragging.difference;\r\n }\r\n } else if (isRTL) {\r\n value = this.positionToValue(newPos + this.dragging.lowLimit) + this.dragging.difference;\r\n } else {\r\n value = this.positionToValue(newPos - this.dragging.lowLimit) + this.dragging.difference;\r\n }\r\n return this.roundStep(value);\r\n },\r\n\r\n /**\r\n * onDragMove event handler\r\n *\r\n * Handles dragging of the middle bar.\r\n *\r\n * @param {jqLite} pointer\r\n * @param {Event} event The event\r\n * @returns {undefined}\r\n */\r\n onDragMove: function (pointer, event) {\r\n var newPos = this.getEventPosition(event),\r\n newMinValue, newMaxValue,\r\n ceilLimit, flrLimit,\r\n isUnderFlrLimit, isOverCeilLimit,\r\n flrH, ceilH;\r\n\r\n if (this.options.rightToLeft) {\r\n ceilLimit = this.dragging.lowLimit;\r\n flrLimit = this.dragging.highLimit;\r\n flrH = this.maxH;\r\n ceilH = this.minH;\r\n } else {\r\n ceilLimit = this.dragging.highLimit;\r\n flrLimit = this.dragging.lowLimit;\r\n flrH = this.minH;\r\n ceilH = this.maxH;\r\n }\r\n isUnderFlrLimit = newPos <= flrLimit;\r\n isOverCeilLimit = newPos >= this.maxPos - ceilLimit;\r\n\r\n if (isUnderFlrLimit) {\r\n if (flrH.rzsp === 0) {\r\n return;\r\n }\r\n newMinValue = this.getValue('min', newPos, true, false);\r\n newMaxValue = this.getValue('max', newPos, true, false);\r\n } else if (isOverCeilLimit) {\r\n if (ceilH.rzsp === this.maxPos) {\r\n return;\r\n }\r\n newMaxValue = this.getValue('max', newPos, true, true);\r\n newMinValue = this.getValue('min', newPos, true, true);\r\n } else {\r\n newMinValue = this.getValue('min', newPos, false);\r\n newMaxValue = this.getValue('max', newPos, false);\r\n }\r\n this.positionTrackingBar(newMinValue, newMaxValue);\r\n },\r\n\r\n /**\r\n * Set the new value and position for the entire bar\r\n *\r\n * @param {number} newMinValue the new minimum value\r\n * @param {number} newMaxValue the new maximum value\r\n */\r\n positionTrackingBar: function (newMinValue, newMaxValue) {\r\n\r\n if (this.options.minLimit != null && newMinValue < this.options.minLimit) {\r\n newMinValue = this.options.minLimit;\r\n newMaxValue = newMinValue + this.dragging.difference;\r\n }\r\n if (this.options.maxLimit != null && newMaxValue > this.options.maxLimit) {\r\n newMaxValue = this.options.maxLimit;\r\n newMinValue = newMaxValue - this.dragging.difference;\r\n }\r\n\r\n this.lowValue = newMinValue;\r\n this.highValue = newMaxValue;\r\n this.applyLowValue();\r\n if (this.range) {this.applyHighValue();}\r\n this.applyModel(true);\r\n this.updateHandles('lowValue', this.valueToPosition(newMinValue));\r\n this.updateHandles('highValue', this.valueToPosition(newMaxValue));\r\n },\r\n\r\n /**\r\n * Set the new value and position to the current tracking handle\r\n *\r\n * @param {number} newValue new model value\r\n */\r\n positionTrackingHandle: function (newValue) {\r\n var valueChanged = false;\r\n newValue = this.applyMinMaxLimit(newValue);\r\n if (this.range) {\r\n if (this.options.pushRange) {\r\n newValue = this.applyPushRange(newValue);\r\n valueChanged = true;\r\n } else {\r\n if (this.options.noSwitching) {\r\n if (this.tracking === 'lowValue' && newValue > this.highValue) {\r\n newValue = this.applyMinMaxRange(this.highValue);\r\n } else if (this.tracking === 'highValue' && newValue < this.lowValue) {\r\n newValue = this.applyMinMaxRange(this.lowValue);\r\n }\r\n }\r\n newValue = this.applyMinMaxRange(newValue);\r\n /* This is to check if we need to switch the min and max handles */\r\n if (this.tracking === 'lowValue' && newValue > this.highValue) {\r\n this.lowValue = this.highValue;\r\n this.applyLowValue();\r\n this.applyModel();\r\n this.updateHandles(this.tracking, this.maxH.rzsp);\r\n this.updateAriaAttributes();\r\n this.tracking = 'highValue';\r\n this.minH.removeClass('rz-active');\r\n this.maxH.addClass('rz-active');\r\n if (this.options.keyboardSupport) {\r\n this.focusElement(this.maxH);\r\n }\r\n valueChanged = true;\r\n } else if (this.tracking === 'highValue' && newValue < this.lowValue) {\r\n this.highValue = this.lowValue;\r\n this.applyHighValue();\r\n this.applyModel();\r\n this.updateHandles(this.tracking, this.minH.rzsp);\r\n this.updateAriaAttributes();\r\n this.tracking = 'lowValue';\r\n this.maxH.removeClass('rz-active');\r\n this.minH.addClass('rz-active');\r\n if (this.options.keyboardSupport) {\r\n this.focusElement(this.minH);\r\n }\r\n valueChanged = true;\r\n }\r\n }\r\n }\r\n\r\n if (this[this.tracking] !== newValue) {\r\n this[this.tracking] = newValue;\r\n if (this.tracking === 'lowValue') {\r\n this.applyLowValue();\r\n } else {\r\n this.applyHighValue();\r\n }\r\n this.applyModel();\r\n this.updateHandles(this.tracking, this.valueToPosition(newValue));\r\n this.updateAriaAttributes();\r\n valueChanged = true;\r\n }\r\n\r\n if (valueChanged) {this.applyModel(true);}\r\n },\r\n\r\n applyMinMaxLimit: function (newValue) {\r\n if (this.options.minLimit != null && newValue < this.options.minLimit) {\r\n return this.options.minLimit;\r\n }\r\n if (this.options.maxLimit != null && newValue > this.options.maxLimit) {\r\n return this.options.maxLimit;\r\n }\r\n return newValue;\r\n },\r\n\r\n applyMinMaxRange: function (newValue) {\r\n var oppositeValue = this.tracking === 'lowValue' ? this.highValue : this.lowValue,\r\n difference = Math.abs(newValue - oppositeValue);\r\n if (this.options.minRange != null) {\r\n if (difference < this.options.minRange) {\r\n if (this.tracking === 'lowValue') {\r\n return this.highValue - this.options.minRange;\r\n }\r\n return this.lowValue + this.options.minRange;\r\n }\r\n }\r\n if (this.options.maxRange != null) {\r\n if (difference > this.options.maxRange) {\r\n if (this.tracking === 'lowValue') {\r\n return this.highValue - this.options.maxRange;\r\n }\r\n return this.lowValue + this.options.maxRange;\r\n }\r\n }\r\n return newValue;\r\n },\r\n\r\n applyPushRange: function (newValue) {\r\n var difference = this.tracking === 'lowValue' ? this.highValue - newValue : newValue - this.lowValue,\r\n minRange = this.options.minRange !== null ? this.options.minRange : this.options.step,\r\n maxRange = this.options.maxRange;\r\n // if smaller than minRange\r\n if (difference < minRange) {\r\n if (this.tracking === 'lowValue') {\r\n this.highValue = Math.min(newValue + minRange, this.maxValue);\r\n newValue = this.highValue - minRange;\r\n this.applyHighValue();\r\n this.updateHandles('highValue', this.valueToPosition(this.highValue));\r\n } else {\r\n this.lowValue = Math.max(newValue - minRange, this.minValue);\r\n newValue = this.lowValue + minRange;\r\n this.applyLowValue();\r\n this.updateHandles('lowValue', this.valueToPosition(this.lowValue));\r\n }\r\n this.updateAriaAttributes();\r\n }\r\n // if greater than maxRange\r\n else if (maxRange !== null && difference > maxRange) {\r\n if (this.tracking === 'lowValue') {\r\n this.highValue = newValue + maxRange;\r\n this.applyHighValue();\r\n this.updateHandles('highValue', this.valueToPosition(this.highValue));\r\n } else {\r\n this.lowValue = newValue - maxRange;\r\n this.applyLowValue();\r\n this.updateHandles('lowValue', this.valueToPosition(this.lowValue));\r\n }\r\n this.updateAriaAttributes();\r\n }\r\n return newValue;\r\n },\r\n\r\n /**\r\n * Apply the model values using scope.$apply.\r\n * We wrap it with the internalChange flag to avoid the watchers to be called\r\n */\r\n applyModel: function (callOnChange) {\r\n this.internalChange = true;\r\n this.scope.$apply();\r\n callOnChange && this.callOnChange();\r\n this.internalChange = false;\r\n },\r\n\r\n /**\r\n * Call the onStart callback if defined\r\n * The callback call is wrapped in a $evalAsync to ensure that its result will be applied to the scope.\r\n *\r\n * @returns {undefined}\r\n */\r\n callOnStart: function () {\r\n if (this.options.onStart) {\r\n var self = this,\r\n pointerType = this.tracking === 'lowValue' ? 'min' : 'max';\r\n this.scope.$evalAsync(function () {\r\n self.options.onStart(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh, pointerType);\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Call the onChange callback if defined\r\n * The callback call is wrapped in a $evalAsync to ensure that its result will be applied to the scope.\r\n *\r\n * @returns {undefined}\r\n */\r\n callOnChange: function () {\r\n if (this.options.onChange) {\r\n var self = this,\r\n pointerType = this.tracking === 'lowValue' ? 'min' : 'max';\r\n this.scope.$evalAsync(function () {\r\n self.options.onChange(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh, pointerType);\r\n });\r\n }\r\n },\r\n\r\n /**\r\n * Call the onEnd callback if defined\r\n * The callback call is wrapped in a $evalAsync to ensure that its result will be applied to the scope.\r\n *\r\n * @returns {undefined}\r\n */\r\n callOnEnd: function () {\r\n if (this.options.onEnd) {\r\n var self = this,\r\n pointerType = this.tracking === 'lowValue' ? 'min' : 'max';\r\n this.scope.$evalAsync(function () {\r\n self.options.onEnd(self.options.id, self.scope.rzSliderModel, self.scope.rzSliderHigh, pointerType);\r\n });\r\n }\r\n this.scope.$emit('slideEnded');\r\n }\r\n };\r\n\r\n return Slider;\r\n }])\r\n\r\n .directive('rzslider', ['RzSlider', function (RzSlider) {\r\n 'use strict';\r\n\r\n return {\r\n restrict: 'AE',\r\n replace: true,\r\n scope: {\r\n rzSliderModel: '=?',\r\n rzSliderHigh: '=?',\r\n rzSliderOptions: '&?',\r\n rzSliderTplUrl: '@'\r\n },\r\n\r\n /**\r\n * Return template URL\r\n *\r\n * @param {jqLite} elem\r\n * @param {Object} attrs\r\n * @return {string}\r\n */\r\n templateUrl: function (elem, attrs) {\r\n // noinspection JSUnresolvedVariable\r\n return attrs.rzSliderTplUrl || 'rzSliderTpl.html';\r\n },\r\n\r\n link: function (scope, elem) {\r\n scope.slider = new RzSlider(scope, elem); // attach on scope so we can test it\r\n }\r\n };\r\n }]);\r\n\r\n})();\r\n","/*\r\n * angular-ui-bootstrap\r\n * http://angular-ui.github.io/bootstrap/\r\n\r\n * Version: 2.5.0 - 2017-01-28\r\n * License: MIT\r\n */\r\nangular.module(\"ui.bootstrap\", [\"ui.bootstrap.tpls\",\"ui.bootstrap.collapse\",\"ui.bootstrap.tabindex\",\"ui.bootstrap.accordion\",\"ui.bootstrap.alert\",\"ui.bootstrap.buttons\",\"ui.bootstrap.dateparser\",\"ui.bootstrap.datepicker\",\"ui.bootstrap.isClass\",\"ui.bootstrap.position\",\"ui.bootstrap.multiMap\",\"ui.bootstrap.modal\",\"ui.bootstrap.stackedMap\",\"ui.bootstrap.paging\",\"ui.bootstrap.pagination\",\"ui.bootstrap.tooltip\",\"ui.bootstrap.popover\",\"ui.bootstrap.tabs\",\"ui.bootstrap.rating\",\"ui.bootstrap.dropdown\",\"ui.bootstrap.datepickerPopup\"]);\r\nangular.module(\"ui.bootstrap.tpls\", [\"uib/template/accordion/accordion-group.html\",\"uib/template/accordion/accordion.html\",\"uib/template/alert/alert.html\",\"uib/template/datepicker/datepicker.html\",\"uib/template/datepicker/day.html\",\"uib/template/datepicker/month.html\",\"uib/template/datepicker/year.html\",\"uib/template/modal/window.html\",\"uib/template/pagination/pagination.html\",\"uib/template/tooltip/tooltip-html-popup.html\",\"uib/template/tooltip/tooltip-popup.html\",\"uib/template/tooltip/tooltip-template-popup.html\",\"uib/template/popover/popover-html.html\",\"uib/template/popover/popover-template.html\",\"uib/template/popover/popover.html\",\"uib/template/tabs/tab.html\",\"uib/template/tabs/tabset.html\",\"uib/template/rating/rating.html\",\"uib/template/datepickerPopup/popup.html\"]);\r\nangular.module('ui.bootstrap.collapse', [])\r\n\r\n .directive('uibCollapse', ['$animate', '$q', '$parse', '$injector', function($animate, $q, $parse, $injector) {\r\n var $animateCss = $injector.has('$animateCss') ? $injector.get('$animateCss') : null;\r\n return {\r\n link: function(scope, element, attrs) {\r\n var expandingExpr = $parse(attrs.expanding),\r\n expandedExpr = $parse(attrs.expanded),\r\n collapsingExpr = $parse(attrs.collapsing),\r\n collapsedExpr = $parse(attrs.collapsed),\r\n horizontal = false,\r\n css = {},\r\n cssTo = {};\r\n\r\n init();\r\n\r\n function init() {\r\n horizontal = !!('horizontal' in attrs);\r\n if (horizontal) {\r\n css = {\r\n width: ''\r\n };\r\n cssTo = {width: '0'};\r\n } else {\r\n css = {\r\n height: ''\r\n };\r\n cssTo = {height: '0'};\r\n }\r\n if (!scope.$eval(attrs.uibCollapse)) {\r\n element.addClass('in')\r\n .addClass('collapse')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false)\r\n .css(css);\r\n }\r\n }\r\n\r\n function getScrollFromElement(element) {\r\n if (horizontal) {\r\n return {width: element.scrollWidth + 'px'};\r\n }\r\n // hack\r\n $(element).css({'display': 'block', 'height': 'auto'});\r\n var h = $(element).outerHeight(true);\r\n $(element).css({'display': '', 'height': ''});\r\n return {height: h + 'px'};\r\n // return {height: element.scrollHeight + 'px'};\r\n // hack end\r\n }\r\n\r\n function expand() {\r\n if (element.hasClass('collapse') && element.hasClass('in')) {\r\n return;\r\n }\r\n\r\n $q.resolve(expandingExpr(scope))\r\n .then(function() {\r\n element.removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', true)\r\n .attr('aria-hidden', false);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n addClass: 'in',\r\n easing: 'ease',\r\n css: {\r\n overflow: 'hidden'\r\n },\r\n to: getScrollFromElement(element[0])\r\n }).start()['finally'](expandDone);\r\n } else {\r\n $animate.addClass(element, 'in', {\r\n css: {\r\n overflow: 'hidden'\r\n },\r\n to: getScrollFromElement(element[0])\r\n }).then(expandDone);\r\n }\r\n }, angular.noop);\r\n }\r\n\r\n function expandDone() {\r\n element.removeClass('collapsing')\r\n .addClass('collapse')\r\n .css(css);\r\n expandedExpr(scope);\r\n }\r\n\r\n function collapse() {\r\n if (!element.hasClass('collapse') && !element.hasClass('in')) {\r\n return collapseDone();\r\n }\r\n\r\n $q.resolve(collapsingExpr(scope))\r\n .then(function() {\r\n element\r\n // IMPORTANT: The width must be set before adding \"collapsing\" class.\r\n // Otherwise, the browser attempts to animate from width 0 (in\r\n // collapsing class) to the given width here.\r\n .css(getScrollFromElement(element[0]))\r\n // initially all panel collapse have the collapse class, this removal\r\n // prevents the animation from jumping to collapsed state\r\n .removeClass('collapse')\r\n .addClass('collapsing')\r\n .attr('aria-expanded', false)\r\n .attr('aria-hidden', true);\r\n\r\n if ($animateCss) {\r\n $animateCss(element, {\r\n removeClass: 'in',\r\n to: cssTo\r\n }).start()['finally'](collapseDone);\r\n } else {\r\n $animate.removeClass(element, 'in', {\r\n to: cssTo\r\n }).then(collapseDone);\r\n }\r\n }, angular.noop);\r\n }\r\n\r\n function collapseDone() {\r\n element.css(cssTo); // Required so that collapse works when animation is disabled\r\n element.removeClass('collapsing')\r\n .addClass('collapse');\r\n collapsedExpr(scope);\r\n }\r\n\r\n scope.$watch(attrs.uibCollapse, function(shouldCollapse) {\r\n if (shouldCollapse) {\r\n collapse();\r\n } else {\r\n expand();\r\n }\r\n });\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.tabindex', [])\r\n\r\n.directive('uibTabindexToggle', function() {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, elem, attrs) {\r\n attrs.$observe('disabled', function(disabled) {\r\n attrs.$set('tabindex', disabled ? -1 : null);\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.accordion', ['ui.bootstrap.collapse', 'ui.bootstrap.tabindex'])\r\n\r\n.constant('uibAccordionConfig', {\r\n closeOthers: true\r\n})\r\n\r\n.controller('UibAccordionController', ['$scope', '$attrs', 'uibAccordionConfig', function($scope, $attrs, accordionConfig) {\r\n // This array keeps track of the accordion groups\r\n this.groups = [];\r\n\r\n // Ensure that all the groups in this accordion are closed, unless close-others explicitly says not to\r\n this.closeOthers = function(openGroup) {\r\n var closeOthers = angular.isDefined($attrs.closeOthers) ?\r\n $scope.$eval($attrs.closeOthers) : accordionConfig.closeOthers;\r\n if (closeOthers) {\r\n angular.forEach(this.groups, function(group) {\r\n if (group !== openGroup) {\r\n group.isOpen = false;\r\n }\r\n });\r\n }\r\n };\r\n\r\n // This is called from the accordion-group directive to add itself to the accordion\r\n this.addGroup = function(groupScope) {\r\n var that = this;\r\n this.groups.push(groupScope);\r\n\r\n groupScope.$on('$destroy', function(event) {\r\n that.removeGroup(groupScope);\r\n });\r\n };\r\n\r\n // This is called from the accordion-group directive when to remove itself\r\n this.removeGroup = function(group) {\r\n var index = this.groups.indexOf(group);\r\n if (index !== -1) {\r\n this.groups.splice(index, 1);\r\n }\r\n };\r\n}])\r\n\r\n// The accordion directive simply sets up the directive controller\r\n// and adds an accordion CSS class to itself element.\r\n.directive('uibAccordion', function() {\r\n return {\r\n controller: 'UibAccordionController',\r\n controllerAs: 'accordion',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/accordion/accordion.html';\r\n }\r\n };\r\n})\r\n\r\n// The accordion-group directive indicates a block of html that will expand and collapse in an accordion\r\n.directive('uibAccordionGroup', function() {\r\n return {\r\n require: '^uibAccordion', // We need this directive to be inside an accordion\r\n transclude: true, // It transcludes the contents of the directive into the template\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/accordion/accordion-group.html';\r\n },\r\n scope: {\r\n heading: '@', // Interpolate the heading attribute onto this scope\r\n panelClass: '@?', // Ditto with panelClass\r\n isOpen: '=?',\r\n isDisabled: '=?'\r\n },\r\n controller: function() {\r\n this.setHeading = function(element) {\r\n this.heading = element;\r\n };\r\n },\r\n link: function(scope, element, attrs, accordionCtrl) {\r\n element.addClass('panel');\r\n accordionCtrl.addGroup(scope);\r\n\r\n scope.openClass = attrs.openClass || 'panel-open';\r\n scope.panelClass = attrs.panelClass || 'panel-default';\r\n scope.$watch('isOpen', function(value) {\r\n element.toggleClass(scope.openClass, !!value);\r\n if (value) {\r\n accordionCtrl.closeOthers(scope);\r\n }\r\n });\r\n\r\n scope.toggleOpen = function($event) {\r\n if (!scope.isDisabled) {\r\n if (!$event || $event.which === 32) {\r\n scope.isOpen = !scope.isOpen;\r\n }\r\n }\r\n };\r\n\r\n var id = 'accordiongroup-' + scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n scope.headingId = id + '-tab';\r\n scope.panelId = id + '-panel';\r\n }\r\n };\r\n})\r\n\r\n// Use accordion-heading below an accordion-group to provide a heading containing HTML\r\n.directive('uibAccordionHeading', function() {\r\n return {\r\n transclude: true, // Grab the contents to be used as the heading\r\n template: '', // In effect remove this element!\r\n replace: true,\r\n require: '^uibAccordionGroup',\r\n link: function(scope, element, attrs, accordionGroupCtrl, transclude) {\r\n // Pass the heading to the accordion-group controller\r\n // so that it can be transcluded into the right place in the template\r\n // [The second parameter to transclude causes the elements to be cloned so that they work in ng-repeat]\r\n accordionGroupCtrl.setHeading(transclude(scope, angular.noop));\r\n }\r\n };\r\n})\r\n\r\n// Use in the accordion-group template to indicate where you want the heading to be transcluded\r\n// You must provide the property on the accordion-group controller that will hold the transcluded element\r\n.directive('uibAccordionTransclude', function() {\r\n return {\r\n require: '^uibAccordionGroup',\r\n link: function(scope, element, attrs, controller) {\r\n scope.$watch(function() { return controller[attrs.uibAccordionTransclude]; }, function(heading) {\r\n if (heading) {\r\n var elem = angular.element(element[0].querySelector(getHeaderSelectors()));\r\n elem.html('');\r\n elem.append(heading);\r\n }\r\n });\r\n }\r\n };\r\n\r\n function getHeaderSelectors() {\r\n return 'uib-accordion-header,' +\r\n 'data-uib-accordion-header,' +\r\n 'x-uib-accordion-header,' +\r\n 'uib\\\\:accordion-header,' +\r\n '[uib-accordion-header],' +\r\n '[data-uib-accordion-header],' +\r\n '[x-uib-accordion-header]';\r\n }\r\n});\r\n\r\nangular.module('ui.bootstrap.alert', [])\r\n\r\n.controller('UibAlertController', ['$scope', '$element', '$attrs', '$interpolate', '$timeout', function($scope, $element, $attrs, $interpolate, $timeout) {\r\n $scope.closeable = !!$attrs.close;\r\n $element.addClass('alert');\r\n $attrs.$set('role', 'alert');\r\n if ($scope.closeable) {\r\n $element.addClass('alert-dismissible');\r\n }\r\n\r\n var dismissOnTimeout = angular.isDefined($attrs.dismissOnTimeout) ?\r\n $interpolate($attrs.dismissOnTimeout)($scope.$parent) : null;\r\n\r\n if (dismissOnTimeout) {\r\n $timeout(function() {\r\n $scope.close();\r\n }, parseInt(dismissOnTimeout, 10));\r\n }\r\n}])\r\n\r\n.directive('uibAlert', function() {\r\n return {\r\n controller: 'UibAlertController',\r\n controllerAs: 'alert',\r\n restrict: 'A',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/alert/alert.html';\r\n },\r\n transclude: true,\r\n scope: {\r\n close: '&'\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.buttons', [])\r\n\r\n.constant('uibButtonConfig', {\r\n activeClass: 'active',\r\n toggleEvent: 'click'\r\n})\r\n\r\n.controller('UibButtonsController', ['uibButtonConfig', function(buttonConfig) {\r\n this.activeClass = buttonConfig.activeClass || 'active';\r\n this.toggleEvent = buttonConfig.toggleEvent || 'click';\r\n}])\r\n\r\n.directive('uibBtnRadio', ['$parse', function($parse) {\r\n return {\r\n require: ['uibBtnRadio', 'ngModel'],\r\n controller: 'UibButtonsController',\r\n controllerAs: 'buttons',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n var uncheckableExpr = $parse(attrs.uibUncheckable);\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, scope.$eval(attrs.uibBtnRadio)));\r\n };\r\n\r\n //ui->model\r\n element.on(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n var isActive = element.hasClass(buttonsCtrl.activeClass);\r\n\r\n if (!isActive || angular.isDefined(attrs.uncheckable)) {\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(isActive ? null : scope.$eval(attrs.uibBtnRadio));\r\n ngModelCtrl.$render();\r\n });\r\n }\r\n });\r\n\r\n if (attrs.uibUncheckable) {\r\n scope.$watch(uncheckableExpr, function(uncheckable) {\r\n attrs.$set('uncheckable', uncheckable ? '' : undefined);\r\n });\r\n }\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibBtnCheckbox', function() {\r\n return {\r\n require: ['uibBtnCheckbox', 'ngModel'],\r\n controller: 'UibButtonsController',\r\n controllerAs: 'button',\r\n link: function(scope, element, attrs, ctrls) {\r\n var buttonsCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n element.find('input').css({display: 'none'});\r\n\r\n function getTrueValue() {\r\n return getCheckboxValue(attrs.btnCheckboxTrue, true);\r\n }\r\n\r\n function getFalseValue() {\r\n return getCheckboxValue(attrs.btnCheckboxFalse, false);\r\n }\r\n\r\n function getCheckboxValue(attribute, defaultValue) {\r\n return angular.isDefined(attribute) ? scope.$eval(attribute) : defaultValue;\r\n }\r\n\r\n //model -> UI\r\n ngModelCtrl.$render = function() {\r\n element.toggleClass(buttonsCtrl.activeClass, angular.equals(ngModelCtrl.$modelValue, getTrueValue()));\r\n };\r\n\r\n //ui->model\r\n element.on(buttonsCtrl.toggleEvent, function() {\r\n if (attrs.disabled) {\r\n return;\r\n }\r\n\r\n scope.$apply(function() {\r\n ngModelCtrl.$setViewValue(element.hasClass(buttonsCtrl.activeClass) ? getFalseValue() : getTrueValue());\r\n ngModelCtrl.$render();\r\n });\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.dateparser', [])\r\n\r\n.service('uibDateParser', ['$log', '$locale', 'dateFilter', 'orderByFilter', 'filterFilter', function($log, $locale, dateFilter, orderByFilter, filterFilter) {\r\n // Pulled from https://github.com/mbostock/d3/blob/master/src/format/requote.js\r\n var SPECIAL_CHARACTERS_REGEXP = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\r\n\r\n var localeId;\r\n var formatCodeToRegex;\r\n\r\n this.init = function() {\r\n localeId = $locale.id;\r\n\r\n this.parsers = {};\r\n this.formatters = {};\r\n\r\n formatCodeToRegex = [\r\n {\r\n key: 'yyyy',\r\n regex: '\\\\d{4}',\r\n apply: function(value) { this.year = +value; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'yyyy');\r\n }\r\n },\r\n {\r\n key: 'yy',\r\n regex: '\\\\d{2}',\r\n apply: function(value) { value = +value; this.year = value < 69 ? value + 2000 : value + 1900; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'yy');\r\n }\r\n },\r\n {\r\n key: 'y',\r\n regex: '\\\\d{1,4}',\r\n apply: function(value) { this.year = +value; },\r\n formatter: function(date) {\r\n var _date = new Date();\r\n _date.setFullYear(Math.abs(date.getFullYear()));\r\n return dateFilter(_date, 'y');\r\n }\r\n },\r\n {\r\n key: 'M!',\r\n regex: '0?[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) {\r\n var value = date.getMonth();\r\n if (/^[0-9]$/.test(value)) {\r\n return dateFilter(date, 'MM');\r\n }\r\n\r\n return dateFilter(date, 'M');\r\n }\r\n },\r\n {\r\n key: 'MMMM',\r\n regex: $locale.DATETIME_FORMATS.MONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.MONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'MMMM'); }\r\n },\r\n {\r\n key: 'MMM',\r\n regex: $locale.DATETIME_FORMATS.SHORTMONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.SHORTMONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'MMM'); }\r\n },\r\n {\r\n key: 'MM',\r\n regex: '0[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) { return dateFilter(date, 'MM'); }\r\n },\r\n {\r\n key: 'M',\r\n regex: '[1-9]|1[0-2]',\r\n apply: function(value) { this.month = value - 1; },\r\n formatter: function(date) { return dateFilter(date, 'M'); }\r\n },\r\n {\r\n key: 'd!',\r\n regex: '[0-2]?[0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) {\r\n var value = date.getDate();\r\n if (/^[1-9]$/.test(value)) {\r\n return dateFilter(date, 'dd');\r\n }\r\n\r\n return dateFilter(date, 'd');\r\n }\r\n },\r\n {\r\n key: 'dd',\r\n regex: '[0-2][0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) { return dateFilter(date, 'dd'); }\r\n },\r\n {\r\n key: 'd',\r\n regex: '[1-2]?[0-9]{1}|3[0-1]{1}',\r\n apply: function(value) { this.date = +value; },\r\n formatter: function(date) { return dateFilter(date, 'd'); }\r\n },\r\n {\r\n key: 'EEEE',\r\n regex: $locale.DATETIME_FORMATS.DAY.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'EEEE'); }\r\n },\r\n {\r\n key: 'EEE',\r\n regex: $locale.DATETIME_FORMATS.SHORTDAY.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'EEE'); }\r\n },\r\n {\r\n key: 'HH',\r\n regex: '(?:0|1)[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'HH'); }\r\n },\r\n {\r\n key: 'hh',\r\n regex: '0[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'hh'); }\r\n },\r\n {\r\n key: 'H',\r\n regex: '1?[0-9]|2[0-3]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'H'); }\r\n },\r\n {\r\n key: 'h',\r\n regex: '[0-9]|1[0-2]',\r\n apply: function(value) { this.hours = +value; },\r\n formatter: function(date) { return dateFilter(date, 'h'); }\r\n },\r\n {\r\n key: 'mm',\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.minutes = +value; },\r\n formatter: function(date) { return dateFilter(date, 'mm'); }\r\n },\r\n {\r\n key: 'm',\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.minutes = +value; },\r\n formatter: function(date) { return dateFilter(date, 'm'); }\r\n },\r\n {\r\n key: 'sss',\r\n regex: '[0-9][0-9][0-9]',\r\n apply: function(value) { this.milliseconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 'sss'); }\r\n },\r\n {\r\n key: 'ss',\r\n regex: '[0-5][0-9]',\r\n apply: function(value) { this.seconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 'ss'); }\r\n },\r\n {\r\n key: 's',\r\n regex: '[0-9]|[1-5][0-9]',\r\n apply: function(value) { this.seconds = +value; },\r\n formatter: function(date) { return dateFilter(date, 's'); }\r\n },\r\n {\r\n key: 'a',\r\n regex: $locale.DATETIME_FORMATS.AMPMS.join('|'),\r\n apply: function(value) {\r\n if (this.hours === 12) {\r\n this.hours = 0;\r\n }\r\n\r\n if (value === 'PM') {\r\n this.hours += 12;\r\n }\r\n },\r\n formatter: function(date) { return dateFilter(date, 'a'); }\r\n },\r\n {\r\n key: 'Z',\r\n regex: '[+-]\\\\d{4}',\r\n apply: function(value) {\r\n var matches = value.match(/([+-])(\\d{2})(\\d{2})/),\r\n sign = matches[1],\r\n hours = matches[2],\r\n minutes = matches[3];\r\n this.hours += toInt(sign + hours);\r\n this.minutes += toInt(sign + minutes);\r\n },\r\n formatter: function(date) {\r\n return dateFilter(date, 'Z');\r\n }\r\n },\r\n {\r\n key: 'ww',\r\n regex: '[0-4][0-9]|5[0-3]',\r\n formatter: function(date) { return dateFilter(date, 'ww'); }\r\n },\r\n {\r\n key: 'w',\r\n regex: '[0-9]|[1-4][0-9]|5[0-3]',\r\n formatter: function(date) { return dateFilter(date, 'w'); }\r\n },\r\n {\r\n key: 'GGGG',\r\n regex: $locale.DATETIME_FORMATS.ERANAMES.join('|').replace(/\\s/g, '\\\\s'),\r\n formatter: function(date) { return dateFilter(date, 'GGGG'); }\r\n },\r\n {\r\n key: 'GGG',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'GGG'); }\r\n },\r\n {\r\n key: 'GG',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'GG'); }\r\n },\r\n {\r\n key: 'G',\r\n regex: $locale.DATETIME_FORMATS.ERAS.join('|'),\r\n formatter: function(date) { return dateFilter(date, 'G'); }\r\n }\r\n ];\r\n\r\n if (angular.version.major >= 1 && angular.version.minor > 4) {\r\n formatCodeToRegex.push({\r\n key: 'LLLL',\r\n regex: $locale.DATETIME_FORMATS.STANDALONEMONTH.join('|'),\r\n apply: function(value) { this.month = $locale.DATETIME_FORMATS.STANDALONEMONTH.indexOf(value); },\r\n formatter: function(date) { return dateFilter(date, 'LLLL'); }\r\n });\r\n }\r\n };\r\n\r\n this.init();\r\n\r\n function getFormatCodeToRegex(key) {\r\n return filterFilter(formatCodeToRegex, {key: key}, true)[0];\r\n }\r\n\r\n this.getParser = function (key) {\r\n var f = getFormatCodeToRegex(key);\r\n return f && f.apply || null;\r\n };\r\n\r\n this.overrideParser = function (key, parser) {\r\n var f = getFormatCodeToRegex(key);\r\n if (f && angular.isFunction(parser)) {\r\n this.parsers = {};\r\n f.apply = parser;\r\n }\r\n }.bind(this);\r\n\r\n function createParser(format) {\r\n var map = [], regex = format.split('');\r\n\r\n // check for literal values\r\n var quoteIndex = format.indexOf('\\'');\r\n if (quoteIndex > -1) {\r\n var inLiteral = false;\r\n format = format.split('');\r\n for (var i = quoteIndex; i < format.length; i++) {\r\n if (inLiteral) {\r\n if (format[i] === '\\'') {\r\n if (i + 1 < format.length && format[i+1] === '\\'') { // escaped single quote\r\n format[i+1] = '$';\r\n regex[i+1] = '';\r\n } else { // end of literal\r\n regex[i] = '';\r\n inLiteral = false;\r\n }\r\n }\r\n format[i] = '$';\r\n } else {\r\n if (format[i] === '\\'') { // start of literal\r\n format[i] = '$';\r\n regex[i] = '';\r\n inLiteral = true;\r\n }\r\n }\r\n }\r\n\r\n format = format.join('');\r\n }\r\n\r\n angular.forEach(formatCodeToRegex, function(data) {\r\n var index = format.indexOf(data.key);\r\n\r\n if (index > -1) {\r\n format = format.split('');\r\n\r\n regex[index] = '(' + data.regex + ')';\r\n format[index] = '$'; // Custom symbol to define consumed part of format\r\n for (var i = index + 1, n = index + data.key.length; i < n; i++) {\r\n regex[i] = '';\r\n format[i] = '$';\r\n }\r\n format = format.join('');\r\n\r\n map.push({\r\n index: index,\r\n key: data.key,\r\n apply: data.apply,\r\n matcher: data.regex\r\n });\r\n }\r\n });\r\n\r\n return {\r\n regex: new RegExp('^' + regex.join('') + '$'),\r\n map: orderByFilter(map, 'index')\r\n };\r\n }\r\n\r\n function createFormatter(format) {\r\n var formatters = [];\r\n var i = 0;\r\n var formatter, literalIdx;\r\n while (i < format.length) {\r\n if (angular.isNumber(literalIdx)) {\r\n if (format.charAt(i) === '\\'') {\r\n if (i + 1 >= format.length || format.charAt(i + 1) !== '\\'') {\r\n formatters.push(constructLiteralFormatter(format, literalIdx, i));\r\n literalIdx = null;\r\n }\r\n } else if (i === format.length) {\r\n while (literalIdx < format.length) {\r\n formatter = constructFormatterFromIdx(format, literalIdx);\r\n formatters.push(formatter);\r\n literalIdx = formatter.endIdx;\r\n }\r\n }\r\n\r\n i++;\r\n continue;\r\n }\r\n\r\n if (format.charAt(i) === '\\'') {\r\n literalIdx = i;\r\n i++;\r\n continue;\r\n }\r\n\r\n formatter = constructFormatterFromIdx(format, i);\r\n\r\n formatters.push(formatter.parser);\r\n i = formatter.endIdx;\r\n }\r\n\r\n return formatters;\r\n }\r\n\r\n function constructLiteralFormatter(format, literalIdx, endIdx) {\r\n return function() {\r\n return format.substr(literalIdx + 1, endIdx - literalIdx - 1);\r\n };\r\n }\r\n\r\n function constructFormatterFromIdx(format, i) {\r\n var currentPosStr = format.substr(i);\r\n for (var j = 0; j < formatCodeToRegex.length; j++) {\r\n if (new RegExp('^' + formatCodeToRegex[j].key).test(currentPosStr)) {\r\n var data = formatCodeToRegex[j];\r\n return {\r\n endIdx: i + data.key.length,\r\n parser: data.formatter\r\n };\r\n }\r\n }\r\n\r\n return {\r\n endIdx: i + 1,\r\n parser: function() {\r\n return currentPosStr.charAt(0);\r\n }\r\n };\r\n }\r\n\r\n this.filter = function(date, format) {\r\n if (!angular.isDate(date) || isNaN(date) || !format) {\r\n return '';\r\n }\r\n\r\n format = $locale.DATETIME_FORMATS[format] || format;\r\n\r\n if ($locale.id !== localeId) {\r\n this.init();\r\n }\r\n\r\n if (!this.formatters[format]) {\r\n this.formatters[format] = createFormatter(format);\r\n }\r\n\r\n var formatters = this.formatters[format];\r\n\r\n return formatters.reduce(function(str, formatter) {\r\n return str + formatter(date);\r\n }, '');\r\n };\r\n\r\n this.parse = function(input, format, baseDate) {\r\n if (!angular.isString(input) || !format) {\r\n return input;\r\n }\r\n\r\n format = $locale.DATETIME_FORMATS[format] || format;\r\n format = format.replace(SPECIAL_CHARACTERS_REGEXP, '\\\\$&');\r\n\r\n if ($locale.id !== localeId) {\r\n this.init();\r\n }\r\n\r\n if (!this.parsers[format]) {\r\n this.parsers[format] = createParser(format, 'apply');\r\n }\r\n\r\n var parser = this.parsers[format],\r\n regex = parser.regex,\r\n map = parser.map,\r\n results = input.match(regex),\r\n tzOffset = false;\r\n if (results && results.length) {\r\n var fields, dt;\r\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime())) {\r\n fields = {\r\n year: baseDate.getFullYear(),\r\n month: baseDate.getMonth(),\r\n date: baseDate.getDate(),\r\n hours: baseDate.getHours(),\r\n minutes: baseDate.getMinutes(),\r\n seconds: baseDate.getSeconds(),\r\n milliseconds: baseDate.getMilliseconds()\r\n };\r\n } else {\r\n if (baseDate) {\r\n $log.warn('dateparser:', 'baseDate is not a valid date');\r\n }\r\n fields = { year: 1900, month: 0, date: 1, hours: 0, minutes: 0, seconds: 0, milliseconds: 0 };\r\n }\r\n\r\n for (var i = 1, n = results.length; i < n; i++) {\r\n var mapper = map[i - 1];\r\n if (mapper.matcher === 'Z') {\r\n tzOffset = true;\r\n }\r\n\r\n if (mapper.apply) {\r\n mapper.apply.call(fields, results[i]);\r\n }\r\n }\r\n\r\n var datesetter = tzOffset ? Date.prototype.setUTCFullYear :\r\n Date.prototype.setFullYear;\r\n var timesetter = tzOffset ? Date.prototype.setUTCHours :\r\n Date.prototype.setHours;\r\n\r\n if (isValid(fields.year, fields.month, fields.date)) {\r\n if (angular.isDate(baseDate) && !isNaN(baseDate.getTime()) && !tzOffset) {\r\n dt = new Date(baseDate);\r\n datesetter.call(dt, fields.year, fields.month, fields.date);\r\n timesetter.call(dt, fields.hours, fields.minutes,\r\n fields.seconds, fields.milliseconds);\r\n } else {\r\n dt = new Date(0);\r\n datesetter.call(dt, fields.year, fields.month, fields.date);\r\n timesetter.call(dt, fields.hours || 0, fields.minutes || 0,\r\n fields.seconds || 0, fields.milliseconds || 0);\r\n }\r\n }\r\n\r\n return dt;\r\n }\r\n };\r\n\r\n // Check if date is valid for specific month (and year for February).\r\n // Month: 0 = Jan, 1 = Feb, etc\r\n function isValid(year, month, date) {\r\n if (date < 1) {\r\n return false;\r\n }\r\n\r\n if (month === 1 && date > 28) {\r\n return date === 29 && (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0);\r\n }\r\n\r\n if (month === 3 || month === 5 || month === 8 || month === 10) {\r\n return date < 31;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n function toInt(str) {\r\n return parseInt(str, 10);\r\n }\r\n\r\n this.toTimezone = toTimezone;\r\n this.fromTimezone = fromTimezone;\r\n this.timezoneToOffset = timezoneToOffset;\r\n this.addDateMinutes = addDateMinutes;\r\n this.convertTimezoneToLocal = convertTimezoneToLocal;\r\n\r\n function toTimezone(date, timezone) {\r\n return date && timezone ? convertTimezoneToLocal(date, timezone) : date;\r\n }\r\n\r\n function fromTimezone(date, timezone) {\r\n return date && timezone ? convertTimezoneToLocal(date, timezone, true) : date;\r\n }\r\n\r\n //https://github.com/angular/angular.js/blob/622c42169699ec07fc6daaa19fe6d224e5d2f70e/src/Angular.js#L1207\r\n function timezoneToOffset(timezone, fallback) {\r\n timezone = timezone.replace(/:/g, '');\r\n var requestedTimezoneOffset = Date.parse('Jan 01, 1970 00:00:00 ' + timezone) / 60000;\r\n return isNaN(requestedTimezoneOffset) ? fallback : requestedTimezoneOffset;\r\n }\r\n\r\n function addDateMinutes(date, minutes) {\r\n date = new Date(date.getTime());\r\n date.setMinutes(date.getMinutes() + minutes);\r\n return date;\r\n }\r\n\r\n function convertTimezoneToLocal(date, timezone, reverse) {\r\n reverse = reverse ? -1 : 1;\r\n var dateTimezoneOffset = date.getTimezoneOffset();\r\n var timezoneOffset = timezoneToOffset(timezone, dateTimezoneOffset);\r\n return addDateMinutes(date, reverse * (timezoneOffset - dateTimezoneOffset));\r\n }\r\n}]);\r\n\r\nangular.module('ui.bootstrap.datepicker', ['ui.bootstrap.dateparser', 'ui.bootstrap.isClass'])\r\n\r\n.value('$datepickerSuppressError', false)\r\n\r\n.value('$datepickerLiteralWarning', true)\r\n\r\n.constant('uibDatepickerConfig', {\r\n datepickerMode: 'day',\r\n formatDay: 'dd',\r\n formatMonth: 'MMMM',\r\n formatYear: 'yyyy',\r\n formatDayHeader: 'EEE',\r\n formatDayTitle: 'MMMM yyyy',\r\n formatMonthTitle: 'yyyy',\r\n maxDate: null,\r\n maxMode: 'year',\r\n minDate: null,\r\n minMode: 'day',\r\n monthColumns: 3,\r\n ngModelOptions: {},\r\n shortcutPropagation: false,\r\n showWeeks: true,\r\n yearColumns: 5,\r\n yearRows: 4\r\n})\r\n\r\n.controller('UibDatepickerController', ['$scope', '$element', '$attrs', '$parse', '$interpolate', '$locale', '$log', 'dateFilter', 'uibDatepickerConfig', '$datepickerLiteralWarning', '$datepickerSuppressError', 'uibDateParser',\r\n function($scope, $element, $attrs, $parse, $interpolate, $locale, $log, dateFilter, datepickerConfig, $datepickerLiteralWarning, $datepickerSuppressError, dateParser) {\r\n var self = this,\r\n ngModelCtrl = { $setViewValue: angular.noop }, // nullModelCtrl;\r\n ngModelOptions = {},\r\n watchListeners = [];\r\n\r\n $element.addClass('uib-datepicker');\r\n $attrs.$set('role', 'application');\r\n\r\n if (!$scope.datepickerOptions) {\r\n $scope.datepickerOptions = {};\r\n }\r\n\r\n // Modes chain\r\n this.modes = ['day', 'month', 'year'];\r\n\r\n [\r\n 'customClass',\r\n 'dateDisabled',\r\n 'datepickerMode',\r\n 'formatDay',\r\n 'formatDayHeader',\r\n 'formatDayTitle',\r\n 'formatMonth',\r\n 'formatMonthTitle',\r\n 'formatYear',\r\n 'maxDate',\r\n 'maxMode',\r\n 'minDate',\r\n 'minMode',\r\n 'monthColumns',\r\n 'showWeeks',\r\n 'shortcutPropagation',\r\n 'startingDay',\r\n 'yearColumns',\r\n 'yearRows'\r\n ].forEach(function(key) {\r\n switch (key) {\r\n case 'customClass':\r\n case 'dateDisabled':\r\n $scope[key] = $scope.datepickerOptions[key] || angular.noop;\r\n break;\r\n case 'datepickerMode':\r\n $scope.datepickerMode = angular.isDefined($scope.datepickerOptions.datepickerMode) ?\r\n $scope.datepickerOptions.datepickerMode : datepickerConfig.datepickerMode;\r\n break;\r\n case 'formatDay':\r\n case 'formatDayHeader':\r\n case 'formatDayTitle':\r\n case 'formatMonth':\r\n case 'formatMonthTitle':\r\n case 'formatYear':\r\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\r\n $interpolate($scope.datepickerOptions[key])($scope.$parent) :\r\n datepickerConfig[key];\r\n break;\r\n case 'monthColumns':\r\n case 'showWeeks':\r\n case 'shortcutPropagation':\r\n case 'yearColumns':\r\n case 'yearRows':\r\n self[key] = angular.isDefined($scope.datepickerOptions[key]) ?\r\n $scope.datepickerOptions[key] : datepickerConfig[key];\r\n break;\r\n case 'startingDay':\r\n if (angular.isDefined($scope.datepickerOptions.startingDay)) {\r\n self.startingDay = $scope.datepickerOptions.startingDay;\r\n } else if (angular.isNumber(datepickerConfig.startingDay)) {\r\n self.startingDay = datepickerConfig.startingDay;\r\n } else {\r\n self.startingDay = ($locale.DATETIME_FORMATS.FIRSTDAYOFWEEK + 8) % 7;\r\n }\r\n\r\n break;\r\n case 'maxDate':\r\n case 'minDate':\r\n $scope.$watch('datepickerOptions.' + key, function(value) {\r\n if (value) {\r\n if (angular.isDate(value)) {\r\n self[key] = dateParser.fromTimezone(new Date(value), ngModelOptions.getOption('timezone'));\r\n } else {\r\n if ($datepickerLiteralWarning) {\r\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\r\n }\r\n\r\n self[key] = new Date(dateFilter(value, 'medium'));\r\n }\r\n } else {\r\n self[key] = datepickerConfig[key] ?\r\n dateParser.fromTimezone(new Date(datepickerConfig[key]), ngModelOptions.getOption('timezone')) :\r\n null;\r\n }\r\n\r\n self.refreshView();\r\n });\r\n\r\n break;\r\n case 'maxMode':\r\n case 'minMode':\r\n if ($scope.datepickerOptions[key]) {\r\n $scope.$watch(function() { return $scope.datepickerOptions[key]; }, function(value) {\r\n self[key] = $scope[key] = angular.isDefined(value) ? value : $scope.datepickerOptions[key];\r\n if (key === 'minMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) < self.modes.indexOf(self[key]) ||\r\n key === 'maxMode' && self.modes.indexOf($scope.datepickerOptions.datepickerMode) > self.modes.indexOf(self[key])) {\r\n $scope.datepickerMode = self[key];\r\n $scope.datepickerOptions.datepickerMode = self[key];\r\n }\r\n });\r\n } else {\r\n self[key] = $scope[key] = datepickerConfig[key] || null;\r\n }\r\n\r\n break;\r\n }\r\n });\r\n\r\n $scope.uniqueId = 'datepicker-' + $scope.$id + '-' + Math.floor(Math.random() * 10000);\r\n\r\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\r\n if (angular.isDefined($attrs.ngDisabled)) {\r\n watchListeners.push($scope.$parent.$watch($attrs.ngDisabled, function(disabled) {\r\n $scope.disabled = disabled;\r\n self.refreshView();\r\n }));\r\n }\r\n\r\n $scope.isActive = function(dateObject) {\r\n if (self.compare(dateObject.date, self.activeDate) === 0) {\r\n $scope.activeDateId = dateObject.uid;\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelOptions = extractOptions(ngModelCtrl);\r\n\r\n if ($scope.datepickerOptions.initDate) {\r\n self.activeDate = dateParser.fromTimezone($scope.datepickerOptions.initDate, ngModelOptions.getOption('timezone')) || new Date();\r\n $scope.$watch('datepickerOptions.initDate', function(initDate) {\r\n if (initDate && (ngModelCtrl.$isEmpty(ngModelCtrl.$modelValue) || ngModelCtrl.$invalid)) {\r\n self.activeDate = dateParser.fromTimezone(initDate, ngModelOptions.getOption('timezone'));\r\n self.refreshView();\r\n }\r\n });\r\n } else {\r\n self.activeDate = new Date();\r\n }\r\n\r\n var date = ngModelCtrl.$modelValue ? new Date(ngModelCtrl.$modelValue) : new Date();\r\n this.activeDate = !isNaN(date) ?\r\n dateParser.fromTimezone(date, ngModelOptions.getOption('timezone')) :\r\n dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\r\n\r\n ngModelCtrl.$render = function() {\r\n self.render();\r\n };\r\n };\r\n\r\n this.render = function() {\r\n if (ngModelCtrl.$viewValue) {\r\n var date = new Date(ngModelCtrl.$viewValue),\r\n isValid = !isNaN(date);\r\n\r\n if (isValid) {\r\n this.activeDate = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\r\n } else if (!$datepickerSuppressError) {\r\n $log.error('Datepicker directive: \"ng-model\" value must be a Date object');\r\n }\r\n }\r\n this.refreshView();\r\n };\r\n\r\n this.refreshView = function() {\r\n if (this.element) {\r\n $scope.selectedDt = null;\r\n this._refreshView();\r\n if ($scope.activeDt) {\r\n $scope.activeDateId = $scope.activeDt.uid;\r\n }\r\n\r\n var date = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n date = dateParser.fromTimezone(date, ngModelOptions.getOption('timezone'));\r\n ngModelCtrl.$setValidity('dateDisabled', !date ||\r\n this.element && !this.isDisabled(date));\r\n }\r\n };\r\n\r\n this.createDateObject = function(date, format) {\r\n var model = ngModelCtrl.$viewValue ? new Date(ngModelCtrl.$viewValue) : null;\r\n model = dateParser.fromTimezone(model, ngModelOptions.getOption('timezone'));\r\n var today = new Date();\r\n today = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\r\n var time = this.compare(date, today);\r\n var dt = {\r\n date: date,\r\n label: dateParser.filter(date, format),\r\n selected: model && this.compare(date, model) === 0,\r\n disabled: this.isDisabled(date),\r\n past: time < 0,\r\n current: time === 0,\r\n future: time > 0,\r\n customClass: this.customClass(date) || null\r\n };\r\n\r\n if (model && this.compare(date, model) === 0) {\r\n $scope.selectedDt = dt;\r\n }\r\n\r\n if (self.activeDate && this.compare(dt.date, self.activeDate) === 0) {\r\n $scope.activeDt = dt;\r\n }\r\n\r\n return dt;\r\n };\r\n\r\n this.isDisabled = function(date) {\r\n return $scope.disabled ||\r\n this.minDate && this.compare(date, this.minDate) < 0 ||\r\n this.maxDate && this.compare(date, this.maxDate) > 0 ||\r\n $scope.dateDisabled && $scope.dateDisabled({date: date, mode: $scope.datepickerMode});\r\n };\r\n\r\n this.customClass = function(date) {\r\n return $scope.customClass({date: date, mode: $scope.datepickerMode});\r\n };\r\n\r\n // Split array into smaller arrays\r\n this.split = function(arr, size) {\r\n var arrays = [];\r\n while (arr.length > 0) {\r\n arrays.push(arr.splice(0, size));\r\n }\r\n return arrays;\r\n };\r\n\r\n $scope.select = function(date) {\r\n if ($scope.datepickerMode === self.minMode) {\r\n var dt = ngModelCtrl.$viewValue ? dateParser.fromTimezone(new Date(ngModelCtrl.$viewValue), ngModelOptions.getOption('timezone')) : new Date(0, 0, 0, 0, 0, 0, 0);\r\n dt.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\r\n dt = dateParser.toTimezone(dt, ngModelOptions.getOption('timezone'));\r\n ngModelCtrl.$setViewValue(dt);\r\n ngModelCtrl.$render();\r\n } else {\r\n self.activeDate = date;\r\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) - 1]);\r\n\r\n $scope.$emit('uib:datepicker.mode');\r\n }\r\n\r\n $scope.$broadcast('uib:datepicker.focus');\r\n };\r\n\r\n $scope.move = function(direction) {\r\n var year = self.activeDate.getFullYear() + direction * (self.step.years || 0),\r\n month = self.activeDate.getMonth() + direction * (self.step.months || 0);\r\n self.activeDate.setFullYear(year, month, 1);\r\n self.refreshView();\r\n };\r\n\r\n $scope.toggleMode = function(direction) {\r\n direction = direction || 1;\r\n\r\n if ($scope.datepickerMode === self.maxMode && direction === 1 ||\r\n $scope.datepickerMode === self.minMode && direction === -1) {\r\n return;\r\n }\r\n\r\n setMode(self.modes[self.modes.indexOf($scope.datepickerMode) + direction]);\r\n\r\n $scope.$emit('uib:datepicker.mode');\r\n };\r\n\r\n // Key event mapper\r\n $scope.keys = { 13: 'enter', 32: 'space', 33: 'pageup', 34: 'pagedown', 35: 'end', 36: 'home', 37: 'left', 38: 'up', 39: 'right', 40: 'down' };\r\n\r\n var focusElement = function() {\r\n self.element[0].focus();\r\n };\r\n\r\n // Listen for focus requests from popup directive\r\n $scope.$on('uib:datepicker.focus', focusElement);\r\n\r\n $scope.keydown = function(evt) {\r\n var key = $scope.keys[evt.which];\r\n\r\n if (!key || evt.shiftKey || evt.altKey || $scope.disabled) {\r\n return;\r\n }\r\n\r\n evt.preventDefault();\r\n if (!self.shortcutPropagation) {\r\n evt.stopPropagation();\r\n }\r\n\r\n if (key === 'enter' || key === 'space') {\r\n if (self.isDisabled(self.activeDate)) {\r\n return; // do nothing\r\n }\r\n $scope.select(self.activeDate);\r\n } else if (evt.ctrlKey && (key === 'up' || key === 'down')) {\r\n $scope.toggleMode(key === 'up' ? 1 : -1);\r\n } else {\r\n self.handleKeyDown(key, evt);\r\n self.refreshView();\r\n }\r\n };\r\n\r\n $element.on('keydown', function(evt) {\r\n $scope.$apply(function() {\r\n $scope.keydown(evt);\r\n });\r\n });\r\n\r\n $scope.$on('$destroy', function() {\r\n //Clear all watch listeners on destroy\r\n while (watchListeners.length) {\r\n watchListeners.shift()();\r\n }\r\n });\r\n\r\n function setMode(mode) {\r\n $scope.datepickerMode = mode;\r\n $scope.datepickerOptions.datepickerMode = mode;\r\n }\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = ngModelCtrl.$options ||\r\n $scope.datepickerOptions.ngModelOptions ||\r\n datepickerConfig.ngModelOptions ||\r\n {};\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n // ng-model-options defaults timezone to null; don't let its precedence squash a non-null value\r\n var timezone = ngModelCtrl.$options.getOption('timezone') ||\r\n ($scope.datepickerOptions.ngModelOptions ? $scope.datepickerOptions.ngModelOptions.timezone : null) ||\r\n (datepickerConfig.ngModelOptions ? datepickerConfig.ngModelOptions.timezone : null);\r\n\r\n // values passed to createChild override existing values\r\n ngModelOptions = ngModelCtrl.$options // start with a ModelOptions instance\r\n .createChild(datepickerConfig.ngModelOptions) // lowest precedence\r\n .createChild($scope.datepickerOptions.ngModelOptions)\r\n .createChild(ngModelCtrl.$options) // highest precedence\r\n .createChild({timezone: timezone}); // to keep from squashing a non-null value\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n}])\r\n\r\n.controller('UibDaypickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n var DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\r\n\r\n this.step = { months: 1 };\r\n this.element = $element;\r\n function getDaysInMonth(year, month) {\r\n return month === 1 && year % 4 === 0 &&\r\n (year % 100 !== 0 || year % 400 === 0) ? 29 : DAYS_IN_MONTH[month];\r\n }\r\n\r\n this.init = function(ctrl) {\r\n angular.extend(ctrl, this);\r\n scope.showWeeks = ctrl.showWeeks;\r\n ctrl.refreshView();\r\n };\r\n\r\n this.getDates = function(startDate, n) {\r\n var dates = new Array(n), current = new Date(startDate), i = 0, date;\r\n while (i < n) {\r\n date = new Date(current);\r\n dates[i++] = date;\r\n current.setDate(current.getDate() + 1);\r\n }\r\n return dates;\r\n };\r\n\r\n this._refreshView = function() {\r\n var year = this.activeDate.getFullYear(),\r\n month = this.activeDate.getMonth(),\r\n firstDayOfMonth = new Date(this.activeDate);\r\n\r\n firstDayOfMonth.setFullYear(year, month, 1);\r\n\r\n var difference = this.startingDay - firstDayOfMonth.getDay(),\r\n numDisplayedFromPreviousMonth = difference > 0 ?\r\n 7 - difference : - difference,\r\n firstDate = new Date(firstDayOfMonth);\r\n\r\n if (numDisplayedFromPreviousMonth > 0) {\r\n firstDate.setDate(-numDisplayedFromPreviousMonth + 1);\r\n }\r\n\r\n // 42 is the number of days on a six-week calendar\r\n var days = this.getDates(firstDate, 42);\r\n for (var i = 0; i < 42; i ++) {\r\n days[i] = angular.extend(this.createDateObject(days[i], this.formatDay), {\r\n secondary: days[i].getMonth() !== month,\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.labels = new Array(7);\r\n for (var j = 0; j < 7; j++) {\r\n scope.labels[j] = {\r\n abbr: dateFilter(days[j].date, this.formatDayHeader),\r\n full: dateFilter(days[j].date, 'EEEE')\r\n };\r\n }\r\n\r\n scope.title = dateFilter(this.activeDate, this.formatDayTitle);\r\n scope.rows = this.split(days, 7);\r\n\r\n if (scope.showWeeks) {\r\n scope.weekNumbers = [];\r\n var thursdayIndex = (4 + 7 - this.startingDay) % 7,\r\n numWeeks = scope.rows.length;\r\n for (var curWeek = 0; curWeek < numWeeks; curWeek++) {\r\n scope.weekNumbers.push(\r\n getISO8601WeekNumber(scope.rows[curWeek][thursdayIndex].date));\r\n }\r\n }\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n var _date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n var _date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n _date1.setFullYear(date1.getFullYear());\r\n _date2.setFullYear(date2.getFullYear());\r\n return _date1 - _date2;\r\n };\r\n\r\n function getISO8601WeekNumber(date) {\r\n var checkDate = new Date(date);\r\n checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); // Thursday\r\n var time = checkDate.getTime();\r\n checkDate.setMonth(0); // Compare with Jan 1\r\n checkDate.setDate(1);\r\n return Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1;\r\n }\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getDate();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - 7;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + 7;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var month = this.activeDate.getMonth() + (key === 'pageup' ? - 1 : 1);\r\n this.activeDate.setMonth(month, 1);\r\n date = Math.min(getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth()), date);\r\n } else if (key === 'home') {\r\n date = 1;\r\n } else if (key === 'end') {\r\n date = getDaysInMonth(this.activeDate.getFullYear(), this.activeDate.getMonth());\r\n }\r\n this.activeDate.setDate(date);\r\n };\r\n}])\r\n\r\n.controller('UibMonthpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n this.step = { years: 1 };\r\n this.element = $element;\r\n\r\n this.init = function(ctrl) {\r\n angular.extend(ctrl, this);\r\n ctrl.refreshView();\r\n };\r\n\r\n this._refreshView = function() {\r\n var months = new Array(12),\r\n year = this.activeDate.getFullYear(),\r\n date;\r\n\r\n for (var i = 0; i < 12; i++) {\r\n date = new Date(this.activeDate);\r\n date.setFullYear(year, i, 1);\r\n months[i] = angular.extend(this.createDateObject(date, this.formatMonth), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = dateFilter(this.activeDate, this.formatMonthTitle);\r\n scope.rows = this.split(months, this.monthColumns);\r\n scope.yearHeaderColspan = this.monthColumns > 3 ? this.monthColumns - 2 : 1;\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n var _date1 = new Date(date1.getFullYear(), date1.getMonth());\r\n var _date2 = new Date(date2.getFullYear(), date2.getMonth());\r\n _date1.setFullYear(date1.getFullYear());\r\n _date2.setFullYear(date2.getFullYear());\r\n return _date1 - _date2;\r\n };\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getMonth();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - this.monthColumns;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + this.monthColumns;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n var year = this.activeDate.getFullYear() + (key === 'pageup' ? - 1 : 1);\r\n this.activeDate.setFullYear(year);\r\n } else if (key === 'home') {\r\n date = 0;\r\n } else if (key === 'end') {\r\n date = 11;\r\n }\r\n this.activeDate.setMonth(date);\r\n };\r\n}])\r\n\r\n.controller('UibYearpickerController', ['$scope', '$element', 'dateFilter', function(scope, $element, dateFilter) {\r\n var columns, range;\r\n this.element = $element;\r\n\r\n function getStartingYear(year) {\r\n return parseInt((year - 1) / range, 10) * range + 1;\r\n }\r\n\r\n this.yearpickerInit = function() {\r\n columns = this.yearColumns;\r\n range = this.yearRows * columns;\r\n this.step = { years: range };\r\n };\r\n\r\n this._refreshView = function() {\r\n var years = new Array(range), date;\r\n\r\n for (var i = 0, start = getStartingYear(this.activeDate.getFullYear()); i < range; i++) {\r\n date = new Date(this.activeDate);\r\n date.setFullYear(start + i, 0, 1);\r\n years[i] = angular.extend(this.createDateObject(date, this.formatYear), {\r\n uid: scope.uniqueId + '-' + i\r\n });\r\n }\r\n\r\n scope.title = [years[0].label, years[range - 1].label].join(' - ');\r\n scope.rows = this.split(years, columns);\r\n scope.columns = columns;\r\n };\r\n\r\n this.compare = function(date1, date2) {\r\n return date1.getFullYear() - date2.getFullYear();\r\n };\r\n\r\n this.handleKeyDown = function(key, evt) {\r\n var date = this.activeDate.getFullYear();\r\n\r\n if (key === 'left') {\r\n date = date - 1;\r\n } else if (key === 'up') {\r\n date = date - columns;\r\n } else if (key === 'right') {\r\n date = date + 1;\r\n } else if (key === 'down') {\r\n date = date + columns;\r\n } else if (key === 'pageup' || key === 'pagedown') {\r\n date += (key === 'pageup' ? - 1 : 1) * range;\r\n } else if (key === 'home') {\r\n date = getStartingYear(this.activeDate.getFullYear());\r\n } else if (key === 'end') {\r\n date = getStartingYear(this.activeDate.getFullYear()) + range - 1;\r\n }\r\n this.activeDate.setFullYear(date);\r\n };\r\n}])\r\n\r\n.directive('uibDatepicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/datepicker.html';\r\n },\r\n scope: {\r\n datepickerOptions: '=?'\r\n },\r\n require: ['uibDatepicker', '^ngModel'],\r\n restrict: 'A',\r\n controller: 'UibDatepickerController',\r\n controllerAs: 'datepicker',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n datepickerCtrl.init(ngModelCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDaypicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/day.html';\r\n },\r\n require: ['^uibDatepicker', 'uibDaypicker'],\r\n restrict: 'A',\r\n controller: 'UibDaypickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0],\r\n daypickerCtrl = ctrls[1];\r\n\r\n daypickerCtrl.init(datepickerCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibMonthpicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/month.html';\r\n },\r\n require: ['^uibDatepicker', 'uibMonthpicker'],\r\n restrict: 'A',\r\n controller: 'UibMonthpickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var datepickerCtrl = ctrls[0],\r\n monthpickerCtrl = ctrls[1];\r\n\r\n monthpickerCtrl.init(datepickerCtrl);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibYearpicker', function() {\r\n return {\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepicker/year.html';\r\n },\r\n require: ['^uibDatepicker', 'uibYearpicker'],\r\n restrict: 'A',\r\n controller: 'UibYearpickerController',\r\n link: function(scope, element, attrs, ctrls) {\r\n var ctrl = ctrls[0];\r\n angular.extend(ctrl, ctrls[1]);\r\n ctrl.yearpickerInit();\r\n\r\n ctrl.refreshView();\r\n }\r\n };\r\n});\r\n\r\n// Avoiding use of ng-class as it creates a lot of watchers when a class is to be applied to\r\n// at most one element.\r\nangular.module('ui.bootstrap.isClass', [])\r\n.directive('uibIsClass', [\r\n '$animate',\r\nfunction ($animate) {\r\n // 11111111 22222222\r\n var ON_REGEXP = /^\\s*([\\s\\S]+?)\\s+on\\s+([\\s\\S]+?)\\s*$/;\r\n // 11111111 22222222\r\n var IS_REGEXP = /^\\s*([\\s\\S]+?)\\s+for\\s+([\\s\\S]+?)\\s*$/;\r\n\r\n var dataPerTracked = {};\r\n\r\n return {\r\n restrict: 'A',\r\n compile: function(tElement, tAttrs) {\r\n var linkedScopes = [];\r\n var instances = [];\r\n var expToData = {};\r\n var lastActivated = null;\r\n var onExpMatches = tAttrs.uibIsClass.match(ON_REGEXP);\r\n var onExp = onExpMatches[2];\r\n var expsStr = onExpMatches[1];\r\n var exps = expsStr.split(',');\r\n\r\n return linkFn;\r\n\r\n function linkFn(scope, element, attrs) {\r\n linkedScopes.push(scope);\r\n instances.push({\r\n scope: scope,\r\n element: element\r\n });\r\n\r\n exps.forEach(function(exp, k) {\r\n addForExp(exp, scope);\r\n });\r\n\r\n scope.$on('$destroy', removeScope);\r\n }\r\n\r\n function addForExp(exp, scope) {\r\n var matches = exp.match(IS_REGEXP);\r\n var clazz = scope.$eval(matches[1]);\r\n var compareWithExp = matches[2];\r\n var data = expToData[exp];\r\n if (!data) {\r\n var watchFn = function(compareWithVal) {\r\n var newActivated = null;\r\n instances.some(function(instance) {\r\n var thisVal = instance.scope.$eval(onExp);\r\n if (thisVal === compareWithVal) {\r\n newActivated = instance;\r\n return true;\r\n }\r\n });\r\n if (data.lastActivated !== newActivated) {\r\n if (data.lastActivated) {\r\n $animate.removeClass(data.lastActivated.element, clazz);\r\n }\r\n if (newActivated) {\r\n $animate.addClass(newActivated.element, clazz);\r\n }\r\n data.lastActivated = newActivated;\r\n }\r\n };\r\n expToData[exp] = data = {\r\n lastActivated: null,\r\n scope: scope,\r\n watchFn: watchFn,\r\n compareWithExp: compareWithExp,\r\n watcher: scope.$watch(compareWithExp, watchFn)\r\n };\r\n }\r\n data.watchFn(scope.$eval(compareWithExp));\r\n }\r\n\r\n function removeScope(e) {\r\n var removedScope = e.targetScope;\r\n var index = linkedScopes.indexOf(removedScope);\r\n linkedScopes.splice(index, 1);\r\n instances.splice(index, 1);\r\n if (linkedScopes.length) {\r\n var newWatchScope = linkedScopes[0];\r\n angular.forEach(expToData, function(data) {\r\n if (data.scope === removedScope) {\r\n data.watcher = newWatchScope.$watch(data.compareWithExp, data.watchFn);\r\n data.scope = newWatchScope;\r\n }\r\n });\r\n } else {\r\n expToData = {};\r\n }\r\n }\r\n }\r\n };\r\n}]);\r\nangular.module('ui.bootstrap.position', [])\r\n\r\n/**\r\n * A set of utility methods for working with the DOM.\r\n * It is meant to be used where we need to absolute-position elements in\r\n * relation to another element (this is the case for tooltips, popovers,\r\n * typeahead suggestions etc.).\r\n */\r\n .factory('$uibPosition', ['$document', '$window', function($document, $window) {\r\n /**\r\n * Used by scrollbarWidth() function to cache scrollbar's width.\r\n * Do not access this variable directly, use scrollbarWidth() instead.\r\n */\r\n var SCROLLBAR_WIDTH;\r\n /**\r\n * scrollbar on body and html element in IE and Edge overlay\r\n * content and should be considered 0 width.\r\n */\r\n var BODY_SCROLLBAR_WIDTH;\r\n var OVERFLOW_REGEX = {\r\n normal: /(auto|scroll)/,\r\n hidden: /(auto|scroll|hidden)/\r\n };\r\n var PLACEMENT_REGEX = {\r\n auto: /\\s?auto?\\s?/i,\r\n primary: /^(top|bottom|left|right)$/,\r\n secondary: /^(top|bottom|left|right|center)$/,\r\n vertical: /^(top|bottom)$/\r\n };\r\n var BODY_REGEX = /(HTML|BODY)/;\r\n\r\n return {\r\n\r\n /**\r\n * Provides a raw DOM element from a jQuery/jQLite element.\r\n *\r\n * @param {element} elem - The element to convert.\r\n *\r\n * @returns {element} A HTML element.\r\n */\r\n getRawNode: function(elem) {\r\n return elem.nodeName ? elem : elem[0] || elem;\r\n },\r\n\r\n /**\r\n * Provides a parsed number for a style property. Strips\r\n * units and casts invalid numbers to 0.\r\n *\r\n * @param {string} value - The style value to parse.\r\n *\r\n * @returns {number} A valid number.\r\n */\r\n parseStyle: function(value) {\r\n value = parseFloat(value);\r\n return isFinite(value) ? value : 0;\r\n },\r\n\r\n /**\r\n * Provides the closest positioned ancestor.\r\n *\r\n * @param {element} element - The element to get the offest parent for.\r\n *\r\n * @returns {element} The closest positioned ancestor.\r\n */\r\n offsetParent: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var offsetParent = elem.offsetParent || $document[0].documentElement;\r\n\r\n function isStaticPositioned(el) {\r\n return ($window.getComputedStyle(el).position || 'static') === 'static';\r\n }\r\n\r\n while (offsetParent && offsetParent !== $document[0].documentElement && isStaticPositioned(offsetParent)) {\r\n offsetParent = offsetParent.offsetParent;\r\n }\r\n\r\n return offsetParent || $document[0].documentElement;\r\n },\r\n\r\n /**\r\n * Provides the scrollbar width, concept from TWBS measureScrollbar()\r\n * function in https://github.com/twbs/bootstrap/blob/master/js/modal.js\r\n * In IE and Edge, scollbar on body and html element overlay and should\r\n * return a width of 0.\r\n *\r\n * @returns {number} The width of the browser scollbar.\r\n */\r\n scrollbarWidth: function(isBody) {\r\n if (isBody) {\r\n if (angular.isUndefined(BODY_SCROLLBAR_WIDTH)) {\r\n var bodyElem = $document.find('body');\r\n bodyElem.addClass('uib-position-body-scrollbar-measure');\r\n BODY_SCROLLBAR_WIDTH = $window.innerWidth - bodyElem[0].clientWidth;\r\n BODY_SCROLLBAR_WIDTH = isFinite(BODY_SCROLLBAR_WIDTH) ? BODY_SCROLLBAR_WIDTH : 0;\r\n bodyElem.removeClass('uib-position-body-scrollbar-measure');\r\n }\r\n return BODY_SCROLLBAR_WIDTH;\r\n }\r\n\r\n if (angular.isUndefined(SCROLLBAR_WIDTH)) {\r\n var scrollElem = angular.element('
');\r\n $document.find('body').append(scrollElem);\r\n SCROLLBAR_WIDTH = scrollElem[0].offsetWidth - scrollElem[0].clientWidth;\r\n SCROLLBAR_WIDTH = isFinite(SCROLLBAR_WIDTH) ? SCROLLBAR_WIDTH : 0;\r\n scrollElem.remove();\r\n }\r\n\r\n return SCROLLBAR_WIDTH;\r\n },\r\n\r\n /**\r\n * Provides the padding required on an element to replace the scrollbar.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
    \r\n *
  • **scrollbarWidth**: the width of the scrollbar
  • \r\n *
  • **widthOverflow**: whether the the width is overflowing
  • \r\n *
  • **right**: the amount of right padding on the element needed to replace the scrollbar
  • \r\n *
  • **rightOriginal**: the amount of right padding currently on the element
  • \r\n *
  • **heightOverflow**: whether the the height is overflowing
  • \r\n *
  • **bottom**: the amount of bottom padding on the element needed to replace the scrollbar
  • \r\n *
  • **bottomOriginal**: the amount of bottom padding currently on the element
  • \r\n *
\r\n */\r\n scrollbarPadding: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemStyle = $window.getComputedStyle(elem);\r\n var paddingRight = this.parseStyle(elemStyle.paddingRight);\r\n var paddingBottom = this.parseStyle(elemStyle.paddingBottom);\r\n var scrollParent = this.scrollParent(elem, false, true);\r\n var scrollbarWidth = this.scrollbarWidth(BODY_REGEX.test(scrollParent.tagName));\r\n\r\n return {\r\n scrollbarWidth: scrollbarWidth,\r\n widthOverflow: scrollParent.scrollWidth > scrollParent.clientWidth,\r\n right: paddingRight + scrollbarWidth,\r\n originalRight: paddingRight,\r\n heightOverflow: scrollParent.scrollHeight > scrollParent.clientHeight,\r\n bottom: paddingBottom + scrollbarWidth,\r\n originalBottom: paddingBottom\r\n };\r\n },\r\n\r\n /**\r\n * Checks to see if the element is scrollable.\r\n *\r\n * @param {element} elem - The element to check.\r\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\r\n * default is false.\r\n *\r\n * @returns {boolean} Whether the element is scrollable.\r\n */\r\n isScrollable: function(elem, includeHidden) {\r\n elem = this.getRawNode(elem);\r\n\r\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\r\n var elemStyle = $window.getComputedStyle(elem);\r\n return overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX);\r\n },\r\n\r\n /**\r\n * Provides the closest scrollable ancestor.\r\n * A port of the jQuery UI scrollParent method:\r\n * https://github.com/jquery/jquery-ui/blob/master/ui/scroll-parent.js\r\n *\r\n * @param {element} elem - The element to find the scroll parent of.\r\n * @param {boolean=} [includeHidden=false] - Should scroll style of 'hidden' be considered,\r\n * default is false.\r\n * @param {boolean=} [includeSelf=false] - Should the element being passed be\r\n * included in the scrollable llokup.\r\n *\r\n * @returns {element} A HTML element.\r\n */\r\n scrollParent: function(elem, includeHidden, includeSelf) {\r\n elem = this.getRawNode(elem);\r\n\r\n var overflowRegex = includeHidden ? OVERFLOW_REGEX.hidden : OVERFLOW_REGEX.normal;\r\n var documentEl = $document[0].documentElement;\r\n var elemStyle = $window.getComputedStyle(elem);\r\n if (includeSelf && overflowRegex.test(elemStyle.overflow + elemStyle.overflowY + elemStyle.overflowX)) {\r\n return elem;\r\n }\r\n var excludeStatic = elemStyle.position === 'absolute';\r\n var scrollParent = elem.parentElement || documentEl;\r\n\r\n if (scrollParent === documentEl || elemStyle.position === 'fixed') {\r\n return documentEl;\r\n }\r\n\r\n while (scrollParent.parentElement && scrollParent !== documentEl) {\r\n var spStyle = $window.getComputedStyle(scrollParent);\r\n if (excludeStatic && spStyle.position !== 'static') {\r\n excludeStatic = false;\r\n }\r\n\r\n if (!excludeStatic && overflowRegex.test(spStyle.overflow + spStyle.overflowY + spStyle.overflowX)) {\r\n break;\r\n }\r\n scrollParent = scrollParent.parentElement;\r\n }\r\n\r\n return scrollParent;\r\n },\r\n\r\n /**\r\n * Provides read-only equivalent of jQuery's position function:\r\n * http://api.jquery.com/position/ - distance to closest positioned\r\n * ancestor. Does not account for margins by default like jQuery position.\r\n *\r\n * @param {element} elem - The element to caclulate the position on.\r\n * @param {boolean=} [includeMargins=false] - Should margins be accounted\r\n * for, default is false.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
    \r\n *
  • **width**: the width of the element
  • \r\n *
  • **height**: the height of the element
  • \r\n *
  • **top**: distance to top edge of offset parent
  • \r\n *
  • **left**: distance to left edge of offset parent
  • \r\n *
\r\n */\r\n position: function(elem, includeMagins) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemOffset = this.offset(elem);\r\n if (includeMagins) {\r\n var elemStyle = $window.getComputedStyle(elem);\r\n elemOffset.top -= this.parseStyle(elemStyle.marginTop);\r\n elemOffset.left -= this.parseStyle(elemStyle.marginLeft);\r\n }\r\n var parent = this.offsetParent(elem);\r\n var parentOffset = {top: 0, left: 0};\r\n\r\n if (parent !== $document[0].documentElement) {\r\n parentOffset = this.offset(parent);\r\n parentOffset.top += parent.clientTop - parent.scrollTop;\r\n parentOffset.left += parent.clientLeft - parent.scrollLeft;\r\n }\r\n\r\n return {\r\n width: Math.round(angular.isNumber(elemOffset.width) ? elemOffset.width : elem.offsetWidth),\r\n height: Math.round(angular.isNumber(elemOffset.height) ? elemOffset.height : elem.offsetHeight),\r\n top: Math.round(elemOffset.top - parentOffset.top),\r\n left: Math.round(elemOffset.left - parentOffset.left)\r\n };\r\n },\r\n\r\n /**\r\n * Provides read-only equivalent of jQuery's offset function:\r\n * http://api.jquery.com/offset/ - distance to viewport. Does\r\n * not account for borders, margins, or padding on the body\r\n * element.\r\n *\r\n * @param {element} elem - The element to calculate the offset on.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
    \r\n *
  • **width**: the width of the element
  • \r\n *
  • **height**: the height of the element
  • \r\n *
  • **top**: distance to top edge of viewport
  • \r\n *
  • **right**: distance to bottom edge of viewport
  • \r\n *
\r\n */\r\n offset: function(elem) {\r\n elem = this.getRawNode(elem);\r\n\r\n var elemBCR = elem.getBoundingClientRect();\r\n return {\r\n width: Math.round(angular.isNumber(elemBCR.width) ? elemBCR.width : elem.offsetWidth),\r\n height: Math.round(angular.isNumber(elemBCR.height) ? elemBCR.height : elem.offsetHeight),\r\n top: Math.round(elemBCR.top + ($window.pageYOffset || $document[0].documentElement.scrollTop)),\r\n left: Math.round(elemBCR.left + ($window.pageXOffset || $document[0].documentElement.scrollLeft))\r\n };\r\n },\r\n\r\n /**\r\n * Provides offset distance to the closest scrollable ancestor\r\n * or viewport. Accounts for border and scrollbar width.\r\n *\r\n * Right and bottom dimensions represent the distance to the\r\n * respective edge of the viewport element. If the element\r\n * edge extends beyond the viewport, a negative value will be\r\n * reported.\r\n *\r\n * @param {element} elem - The element to get the viewport offset for.\r\n * @param {boolean=} [useDocument=false] - Should the viewport be the document element instead\r\n * of the first scrollable element, default is false.\r\n * @param {boolean=} [includePadding=true] - Should the padding on the offset parent element\r\n * be accounted for, default is true.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
    \r\n *
  • **top**: distance to the top content edge of viewport element
  • \r\n *
  • **bottom**: distance to the bottom content edge of viewport element
  • \r\n *
  • **left**: distance to the left content edge of viewport element
  • \r\n *
  • **right**: distance to the right content edge of viewport element
  • \r\n *
\r\n */\r\n viewportOffset: function(elem, useDocument, includePadding) {\r\n elem = this.getRawNode(elem);\r\n includePadding = includePadding !== false ? true : false;\r\n\r\n var elemBCR = elem.getBoundingClientRect();\r\n var offsetBCR = {top: 0, left: 0, bottom: 0, right: 0};\r\n\r\n var offsetParent = useDocument ? $document[0].documentElement : this.scrollParent(elem);\r\n var offsetParentBCR = offsetParent.getBoundingClientRect();\r\n\r\n offsetBCR.top = offsetParentBCR.top + offsetParent.clientTop;\r\n offsetBCR.left = offsetParentBCR.left + offsetParent.clientLeft;\r\n if (offsetParent === $document[0].documentElement) {\r\n offsetBCR.top += $window.pageYOffset;\r\n offsetBCR.left += $window.pageXOffset;\r\n }\r\n offsetBCR.bottom = offsetBCR.top + offsetParent.clientHeight;\r\n offsetBCR.right = offsetBCR.left + offsetParent.clientWidth;\r\n\r\n if (includePadding) {\r\n var offsetParentStyle = $window.getComputedStyle(offsetParent);\r\n offsetBCR.top += this.parseStyle(offsetParentStyle.paddingTop);\r\n offsetBCR.bottom -= this.parseStyle(offsetParentStyle.paddingBottom);\r\n offsetBCR.left += this.parseStyle(offsetParentStyle.paddingLeft);\r\n offsetBCR.right -= this.parseStyle(offsetParentStyle.paddingRight);\r\n }\r\n\r\n return {\r\n top: Math.round(elemBCR.top - offsetBCR.top),\r\n bottom: Math.round(offsetBCR.bottom - elemBCR.bottom),\r\n left: Math.round(elemBCR.left - offsetBCR.left),\r\n right: Math.round(offsetBCR.right - elemBCR.right)\r\n };\r\n },\r\n\r\n /**\r\n * Provides an array of placement values parsed from a placement string.\r\n * Along with the 'auto' indicator, supported placement strings are:\r\n *
    \r\n *
  • top: element on top, horizontally centered on host element.
  • \r\n *
  • top-left: element on top, left edge aligned with host element left edge.
  • \r\n *
  • top-right: element on top, lerightft edge aligned with host element right edge.
  • \r\n *
  • bottom: element on bottom, horizontally centered on host element.
  • \r\n *
  • bottom-left: element on bottom, left edge aligned with host element left edge.
  • \r\n *
  • bottom-right: element on bottom, right edge aligned with host element right edge.
  • \r\n *
  • left: element on left, vertically centered on host element.
  • \r\n *
  • left-top: element on left, top edge aligned with host element top edge.
  • \r\n *
  • left-bottom: element on left, bottom edge aligned with host element bottom edge.
  • \r\n *
  • right: element on right, vertically centered on host element.
  • \r\n *
  • right-top: element on right, top edge aligned with host element top edge.
  • \r\n *
  • right-bottom: element on right, bottom edge aligned with host element bottom edge.
  • \r\n *
\r\n * A placement string with an 'auto' indicator is expected to be\r\n * space separated from the placement, i.e: 'auto bottom-left' If\r\n * the primary and secondary placement values do not match 'top,\r\n * bottom, left, right' then 'top' will be the primary placement and\r\n * 'center' will be the secondary placement. If 'auto' is passed, true\r\n * will be returned as the 3rd value of the array.\r\n *\r\n * @param {string} placement - The placement string to parse.\r\n *\r\n * @returns {array} An array with the following values\r\n *
    \r\n *
  • **[0]**: The primary placement.
  • \r\n *
  • **[1]**: The secondary placement.
  • \r\n *
  • **[2]**: If auto is passed: true, else undefined.
  • \r\n *
\r\n */\r\n parsePlacement: function(placement) {\r\n var autoPlace = PLACEMENT_REGEX.auto.test(placement);\r\n if (autoPlace) {\r\n placement = placement.replace(PLACEMENT_REGEX.auto, '');\r\n }\r\n\r\n placement = placement.split('-');\r\n\r\n placement[0] = placement[0] || 'top';\r\n if (!PLACEMENT_REGEX.primary.test(placement[0])) {\r\n placement[0] = 'top';\r\n }\r\n\r\n placement[1] = placement[1] || 'center';\r\n if (!PLACEMENT_REGEX.secondary.test(placement[1])) {\r\n placement[1] = 'center';\r\n }\r\n\r\n if (autoPlace) {\r\n placement[2] = true;\r\n } else {\r\n placement[2] = false;\r\n }\r\n\r\n return placement;\r\n },\r\n\r\n /**\r\n * Provides coordinates for an element to be positioned relative to\r\n * another element. Passing 'auto' as part of the placement parameter\r\n * will enable smart placement - where the element fits. i.e:\r\n * 'auto left-top' will check to see if there is enough space to the left\r\n * of the hostElem to fit the targetElem, if not place right (same for secondary\r\n * top placement). Available space is calculated using the viewportOffset\r\n * function.\r\n *\r\n * @param {element} hostElem - The element to position against.\r\n * @param {element} targetElem - The element to position.\r\n * @param {string=} [placement=top] - The placement for the targetElem,\r\n * default is 'top'. 'center' is assumed as secondary placement for\r\n * 'top', 'left', 'right', and 'bottom' placements. Available placements are:\r\n *
    \r\n *
  • top
  • \r\n *
  • top-right
  • \r\n *
  • top-left
  • \r\n *
  • bottom
  • \r\n *
  • bottom-left
  • \r\n *
  • bottom-right
  • \r\n *
  • left
  • \r\n *
  • left-top
  • \r\n *
  • left-bottom
  • \r\n *
  • right
  • \r\n *
  • right-top
  • \r\n *
  • right-bottom
  • \r\n *
\r\n * @param {boolean=} [appendToBody=false] - Should the top and left values returned\r\n * be calculated from the body element, default is false.\r\n *\r\n * @returns {object} An object with the following properties:\r\n *
    \r\n *
  • **top**: Value for targetElem top.
  • \r\n *
  • **left**: Value for targetElem left.
  • \r\n *
  • **placement**: The resolved placement.
  • \r\n *
\r\n */\r\n positionElements: function(hostElem, targetElem, placement, appendToBody) {\r\n hostElem = this.getRawNode(hostElem);\r\n targetElem = this.getRawNode(targetElem);\r\n\r\n // need to read from prop to support tests.\r\n var targetWidth = angular.isDefined(targetElem.offsetWidth) ? targetElem.offsetWidth : targetElem.prop('offsetWidth');\r\n var targetHeight = angular.isDefined(targetElem.offsetHeight) ? targetElem.offsetHeight : targetElem.prop('offsetHeight');\r\n\r\n placement = this.parsePlacement(placement);\r\n\r\n var hostElemPos = appendToBody ? this.offset(hostElem) : this.position(hostElem);\r\n var targetElemPos = {top: 0, left: 0, placement: ''};\r\n\r\n if (placement[2]) {\r\n var viewportOffset = this.viewportOffset(hostElem, appendToBody);\r\n\r\n var targetElemStyle = $window.getComputedStyle(targetElem);\r\n var adjustedSize = {\r\n width: targetWidth + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginLeft) + this.parseStyle(targetElemStyle.marginRight))),\r\n height: targetHeight + Math.round(Math.abs(this.parseStyle(targetElemStyle.marginTop) + this.parseStyle(targetElemStyle.marginBottom)))\r\n };\r\n\r\n placement[0] = placement[0] === 'top' && adjustedSize.height > viewportOffset.top && adjustedSize.height <= viewportOffset.bottom ? 'bottom' :\r\n placement[0] === 'bottom' && adjustedSize.height > viewportOffset.bottom && adjustedSize.height <= viewportOffset.top ? 'top' :\r\n placement[0] === 'left' && adjustedSize.width > viewportOffset.left && adjustedSize.width <= viewportOffset.right ? 'right' :\r\n placement[0] === 'right' && adjustedSize.width > viewportOffset.right && adjustedSize.width <= viewportOffset.left ? 'left' :\r\n placement[0];\r\n\r\n placement[1] = placement[1] === 'top' && adjustedSize.height - hostElemPos.height > viewportOffset.bottom && adjustedSize.height - hostElemPos.height <= viewportOffset.top ? 'bottom' :\r\n placement[1] === 'bottom' && adjustedSize.height - hostElemPos.height > viewportOffset.top && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom ? 'top' :\r\n placement[1] === 'left' && adjustedSize.width - hostElemPos.width > viewportOffset.right && adjustedSize.width - hostElemPos.width <= viewportOffset.left ? 'right' :\r\n placement[1] === 'right' && adjustedSize.width - hostElemPos.width > viewportOffset.left && adjustedSize.width - hostElemPos.width <= viewportOffset.right ? 'left' :\r\n placement[1];\r\n\r\n if (placement[1] === 'center') {\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n var xOverflow = hostElemPos.width / 2 - targetWidth / 2;\r\n if (viewportOffset.left + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.right) {\r\n placement[1] = 'left';\r\n } else if (viewportOffset.right + xOverflow < 0 && adjustedSize.width - hostElemPos.width <= viewportOffset.left) {\r\n placement[1] = 'right';\r\n }\r\n } else {\r\n var yOverflow = hostElemPos.height / 2 - adjustedSize.height / 2;\r\n if (viewportOffset.top + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.bottom) {\r\n placement[1] = 'top';\r\n } else if (viewportOffset.bottom + yOverflow < 0 && adjustedSize.height - hostElemPos.height <= viewportOffset.top) {\r\n placement[1] = 'bottom';\r\n }\r\n }\r\n }\r\n }\r\n\r\n switch (placement[0]) {\r\n case 'top':\r\n targetElemPos.top = hostElemPos.top - targetHeight;\r\n break;\r\n case 'bottom':\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height;\r\n break;\r\n case 'left':\r\n targetElemPos.left = hostElemPos.left - targetWidth;\r\n break;\r\n case 'right':\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width;\r\n break;\r\n }\r\n\r\n switch (placement[1]) {\r\n case 'top':\r\n targetElemPos.top = hostElemPos.top;\r\n break;\r\n case 'bottom':\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height - targetHeight;\r\n break;\r\n case 'left':\r\n targetElemPos.left = hostElemPos.left;\r\n break;\r\n case 'right':\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width - targetWidth;\r\n break;\r\n case 'center':\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n targetElemPos.left = hostElemPos.left + hostElemPos.width / 2 - targetWidth / 2;\r\n } else {\r\n targetElemPos.top = hostElemPos.top + hostElemPos.height / 2 - targetHeight / 2;\r\n }\r\n break;\r\n }\r\n\r\n targetElemPos.top = Math.round(targetElemPos.top);\r\n targetElemPos.left = Math.round(targetElemPos.left);\r\n targetElemPos.placement = placement[1] === 'center' ? placement[0] : placement[0] + '-' + placement[1];\r\n\r\n return targetElemPos;\r\n },\r\n\r\n /**\r\n * Provides a way to adjust the top positioning after first\r\n * render to correctly align element to top after content\r\n * rendering causes resized element height\r\n *\r\n * @param {array} placementClasses - The array of strings of classes\r\n * element should have.\r\n * @param {object} containerPosition - The object with container\r\n * position information\r\n * @param {number} initialHeight - The initial height for the elem.\r\n * @param {number} currentHeight - The current height for the elem.\r\n */\r\n adjustTop: function(placementClasses, containerPosition, initialHeight, currentHeight) {\r\n if (placementClasses.indexOf('top') !== -1 && initialHeight !== currentHeight) {\r\n return {\r\n top: containerPosition.top - currentHeight + 'px'\r\n };\r\n }\r\n },\r\n\r\n /**\r\n * Provides a way for positioning tooltip & dropdown\r\n * arrows when using placement options beyond the standard\r\n * left, right, top, or bottom.\r\n *\r\n * @param {element} elem - The tooltip/dropdown element.\r\n * @param {string} placement - The placement for the elem.\r\n */\r\n positionArrow: function(elem, placement) {\r\n elem = this.getRawNode(elem);\r\n\r\n var innerElem = elem.querySelector('.tooltip-inner, .popover-inner');\r\n if (!innerElem) {\r\n return;\r\n }\r\n\r\n var isTooltip = angular.element(innerElem).hasClass('tooltip-inner');\r\n\r\n var arrowElem = isTooltip ? elem.querySelector('.tooltip-arrow') : elem.querySelector('.arrow');\r\n if (!arrowElem) {\r\n return;\r\n }\r\n\r\n var arrowCss = {\r\n top: '',\r\n bottom: '',\r\n left: '',\r\n right: ''\r\n };\r\n\r\n placement = this.parsePlacement(placement);\r\n if (placement[1] === 'center') {\r\n // no adjustment necessary - just reset styles\r\n angular.element(arrowElem).css(arrowCss);\r\n return;\r\n }\r\n\r\n var borderProp = 'border-' + placement[0] + '-width';\r\n var borderWidth = $window.getComputedStyle(arrowElem)[borderProp];\r\n\r\n var borderRadiusProp = 'border-';\r\n if (PLACEMENT_REGEX.vertical.test(placement[0])) {\r\n borderRadiusProp += placement[0] + '-' + placement[1];\r\n } else {\r\n borderRadiusProp += placement[1] + '-' + placement[0];\r\n }\r\n borderRadiusProp += '-radius';\r\n var borderRadius = $window.getComputedStyle(isTooltip ? innerElem : elem)[borderRadiusProp];\r\n\r\n switch (placement[0]) {\r\n case 'top':\r\n arrowCss.bottom = isTooltip ? '0' : '-' + borderWidth;\r\n break;\r\n case 'bottom':\r\n arrowCss.top = isTooltip ? '0' : '-' + borderWidth;\r\n break;\r\n case 'left':\r\n arrowCss.right = isTooltip ? '0' : '-' + borderWidth;\r\n break;\r\n case 'right':\r\n arrowCss.left = isTooltip ? '0' : '-' + borderWidth;\r\n break;\r\n }\r\n\r\n arrowCss[placement[1]] = borderRadius;\r\n\r\n angular.element(arrowElem).css(arrowCss);\r\n }\r\n };\r\n }]);\r\n\r\nangular.module('ui.bootstrap.multiMap', [])\r\n/**\r\n * A helper, internal data structure that stores all references attached to key\r\n */\r\n .factory('$$multiMap', function() {\r\n return {\r\n createNew: function() {\r\n var map = {};\r\n\r\n return {\r\n entries: function() {\r\n return Object.keys(map).map(function(key) {\r\n return {\r\n key: key,\r\n value: map[key]\r\n };\r\n });\r\n },\r\n get: function(key) {\r\n return map[key];\r\n },\r\n hasKey: function(key) {\r\n return !!map[key];\r\n },\r\n keys: function() {\r\n return Object.keys(map);\r\n },\r\n put: function(key, value) {\r\n if (!map[key]) {\r\n map[key] = [];\r\n }\r\n\r\n map[key].push(value);\r\n },\r\n remove: function(key, value) {\r\n var values = map[key];\r\n\r\n if (!values) {\r\n return;\r\n }\r\n\r\n var idx = values.indexOf(value);\r\n\r\n if (idx !== -1) {\r\n values.splice(idx, 1);\r\n }\r\n\r\n if (!values.length) {\r\n delete map[key];\r\n }\r\n }\r\n };\r\n }\r\n };\r\n });\r\n\r\nangular.module('ui.bootstrap.modal', ['ui.bootstrap.multiMap', 'ui.bootstrap.stackedMap', 'ui.bootstrap.position'])\r\n/**\r\n * Pluggable resolve mechanism for the modal resolve resolution\r\n * Supports UI Router's $resolve service\r\n */\r\n .provider('$uibResolve', function() {\r\n var resolve = this;\r\n this.resolver = null;\r\n\r\n this.setResolver = function(resolver) {\r\n this.resolver = resolver;\r\n };\r\n\r\n this.$get = ['$injector', '$q', function($injector, $q) {\r\n var resolver = resolve.resolver ? $injector.get(resolve.resolver) : null;\r\n return {\r\n resolve: function(invocables, locals, parent, self) {\r\n if (resolver) {\r\n return resolver.resolve(invocables, locals, parent, self);\r\n }\r\n\r\n var promises = [];\r\n\r\n angular.forEach(invocables, function(value) {\r\n if (angular.isFunction(value) || angular.isArray(value)) {\r\n promises.push($q.resolve($injector.invoke(value)));\r\n } else if (angular.isString(value)) {\r\n promises.push($q.resolve($injector.get(value)));\r\n } else {\r\n promises.push($q.resolve(value));\r\n }\r\n });\r\n\r\n return $q.all(promises).then(function(resolves) {\r\n var resolveObj = {};\r\n var resolveIter = 0;\r\n angular.forEach(invocables, function(value, key) {\r\n resolveObj[key] = resolves[resolveIter++];\r\n });\r\n\r\n return resolveObj;\r\n });\r\n }\r\n };\r\n }];\r\n })\r\n\r\n/**\r\n * A helper directive for the $modal service. It creates a backdrop element.\r\n */\r\n .directive('uibModalBackdrop', ['$animate', '$injector', '$uibModalStack',\r\n function($animate, $injector, $modalStack) {\r\n return {\r\n restrict: 'A',\r\n compile: function(tElement, tAttrs) {\r\n tElement.addClass(tAttrs.backdropClass);\r\n return linkFn;\r\n }\r\n };\r\n\r\n function linkFn(scope, element, attrs) {\r\n if (attrs.modalInClass) {\r\n $animate.addClass(element, attrs.modalInClass);\r\n\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n if (scope.modalOptions.animation) {\r\n $animate.removeClass(element, attrs.modalInClass).then(done);\r\n } else {\r\n done();\r\n }\r\n });\r\n }\r\n }\r\n }])\r\n\r\n .directive('uibModalWindow', ['$uibModalStack', '$q', '$animateCss', '$document',\r\n function($modalStack, $q, $animateCss, $document) {\r\n return {\r\n scope: {\r\n index: '@'\r\n },\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(tElement, tAttrs) {\r\n return tAttrs.templateUrl || 'uib/template/modal/window.html';\r\n },\r\n link: function(scope, element, attrs) {\r\n element.addClass(attrs.windowTopClass || '');\r\n scope.size = attrs.size;\r\n\r\n scope.close = function(evt) {\r\n var modal = $modalStack.getTop();\r\n if (modal && modal.value.backdrop &&\r\n modal.value.backdrop !== 'static' &&\r\n evt.target === evt.currentTarget) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $modalStack.dismiss(modal.key, 'backdrop click');\r\n }\r\n };\r\n\r\n // moved from template to fix issue #2280\r\n element.on('click', scope.close);\r\n\r\n // This property is only added to the scope for the purpose of detecting when this directive is rendered.\r\n // We can detect that by using this property in the template associated with this directive and then use\r\n // {@link Attribute#$observe} on it. For more details please see {@link TableColumnResize}.\r\n scope.$isRendered = true;\r\n\r\n // Deferred object that will be resolved when this modal is rendered.\r\n var modalRenderDeferObj = $q.defer();\r\n // Resolve render promise post-digest\r\n scope.$$postDigest(function() {\r\n modalRenderDeferObj.resolve();\r\n });\r\n\r\n modalRenderDeferObj.promise.then(function() {\r\n var animationPromise = null;\r\n\r\n if (attrs.modalInClass) {\r\n animationPromise = $animateCss(element, {\r\n addClass: attrs.modalInClass\r\n }).start();\r\n\r\n scope.$on($modalStack.NOW_CLOSING_EVENT, function(e, setIsAsync) {\r\n var done = setIsAsync();\r\n $animateCss(element, {\r\n removeClass: attrs.modalInClass\r\n }).start().then(done);\r\n });\r\n }\r\n\r\n\r\n $q.when(animationPromise).then(function() {\r\n // Notify {@link $modalStack} that modal is rendered.\r\n var modal = $modalStack.getTop();\r\n if (modal) {\r\n $modalStack.modalRendered(modal.key);\r\n }\r\n\r\n /**\r\n * If something within the freshly-opened modal already has focus (perhaps via a\r\n * directive that causes focus) then there's no need to try to focus anything.\r\n */\r\n if (!($document[0].activeElement && element[0].contains($document[0].activeElement))) {\r\n var inputWithAutofocus = element[0].querySelector('[autofocus]');\r\n /**\r\n * Auto-focusing of a freshly-opened modal element causes any child elements\r\n * with the autofocus attribute to lose focus. This is an issue on touch\r\n * based devices which will show and then hide the onscreen keyboard.\r\n * Attempts to refocus the autofocus element via JavaScript will not reopen\r\n * the onscreen keyboard. Fixed by updated the focusing logic to only autofocus\r\n * the modal element if the modal does not contain an autofocus element.\r\n */\r\n if (inputWithAutofocus) {\r\n inputWithAutofocus.focus();\r\n } else {\r\n element[0].focus();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .directive('uibModalAnimationClass', function() {\r\n return {\r\n compile: function(tElement, tAttrs) {\r\n if (tAttrs.modalAnimation) {\r\n tElement.addClass(tAttrs.uibModalAnimationClass);\r\n }\r\n }\r\n };\r\n })\r\n\r\n .directive('uibModalTransclude', ['$animate', function($animate) {\r\n return {\r\n link: function(scope, element, attrs, controller, transclude) {\r\n transclude(scope.$parent, function(clone) {\r\n element.empty();\r\n $animate.enter(clone, element);\r\n });\r\n }\r\n };\r\n }])\r\n\r\n .factory('$uibModalStack', ['$animate', '$animateCss', '$document',\r\n '$compile', '$rootScope', '$q', '$$multiMap', '$$stackedMap', '$uibPosition',\r\n function($animate, $animateCss, $document, $compile, $rootScope, $q, $$multiMap, $$stackedMap, $uibPosition) {\r\n var OPENED_MODAL_CLASS = 'modal-open';\r\n\r\n var backdropDomEl, backdropScope;\r\n var openedWindows = $$stackedMap.createNew();\r\n var openedClasses = $$multiMap.createNew();\r\n var $modalStack = {\r\n NOW_CLOSING_EVENT: 'modal.stack.now-closing'\r\n };\r\n var topModalIndex = 0;\r\n var previousTopOpenedModal = null;\r\n var ARIA_HIDDEN_ATTRIBUTE_NAME = 'data-bootstrap-modal-aria-hidden-count';\r\n\r\n //Modal focus behavior\r\n var tabbableSelector = 'a[href], area[href], input:not([disabled]):not([tabindex=\\'-1\\']), ' +\r\n 'button:not([disabled]):not([tabindex=\\'-1\\']),select:not([disabled]):not([tabindex=\\'-1\\']), textarea:not([disabled]):not([tabindex=\\'-1\\']), ' +\r\n 'iframe, object, embed, *[tabindex]:not([tabindex=\\'-1\\']), *[contenteditable=true]';\r\n var scrollbarPadding;\r\n var SNAKE_CASE_REGEXP = /[A-Z]/g;\r\n\r\n // TODO: extract into common dependency with tooltip\r\n function snake_case(name) {\r\n var separator = '-';\r\n return name.replace(SNAKE_CASE_REGEXP, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n function isVisible(element) {\r\n return !!(element.offsetWidth ||\r\n element.offsetHeight ||\r\n element.getClientRects().length);\r\n }\r\n\r\n function backdropIndex() {\r\n var topBackdropIndex = -1;\r\n var opened = openedWindows.keys();\r\n for (var i = 0; i < opened.length; i++) {\r\n if (openedWindows.get(opened[i]).value.backdrop) {\r\n topBackdropIndex = i;\r\n }\r\n }\r\n\r\n // If any backdrop exist, ensure that it's index is always\r\n // right below the top modal\r\n if (topBackdropIndex > -1 && topBackdropIndex < topModalIndex) {\r\n topBackdropIndex = topModalIndex;\r\n }\r\n return topBackdropIndex;\r\n }\r\n\r\n $rootScope.$watch(backdropIndex, function(newBackdropIndex) {\r\n if (backdropScope) {\r\n backdropScope.index = newBackdropIndex;\r\n }\r\n });\r\n\r\n function removeModalWindow(modalInstance, elementToReceiveFocus) {\r\n var modalWindow = openedWindows.get(modalInstance).value;\r\n var appendToElement = modalWindow.appendTo;\r\n\r\n //clean up the stack\r\n openedWindows.remove(modalInstance);\r\n previousTopOpenedModal = openedWindows.top();\r\n if (previousTopOpenedModal) {\r\n topModalIndex = parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10);\r\n }\r\n\r\n removeAfterAnimate(modalWindow.modalDomEl, modalWindow.modalScope, function() {\r\n var modalBodyClass = modalWindow.openedClass || OPENED_MODAL_CLASS;\r\n openedClasses.remove(modalBodyClass, modalInstance);\r\n var areAnyOpen = openedClasses.hasKey(modalBodyClass);\r\n appendToElement.toggleClass(modalBodyClass, areAnyOpen);\r\n if (!areAnyOpen && scrollbarPadding && scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n if (scrollbarPadding.originalRight) {\r\n appendToElement.css({paddingRight: scrollbarPadding.originalRight + 'px'});\r\n } else {\r\n appendToElement.css({paddingRight: ''});\r\n }\r\n scrollbarPadding = null;\r\n }\r\n toggleTopWindowClass(true);\r\n }, modalWindow.closedDeferred);\r\n checkRemoveBackdrop();\r\n\r\n //move focus to specified element if available, or else to body\r\n if (elementToReceiveFocus && elementToReceiveFocus.focus) {\r\n elementToReceiveFocus.focus();\r\n } else if (appendToElement.focus) {\r\n appendToElement.focus();\r\n }\r\n }\r\n\r\n // Add or remove \"windowTopClass\" from the top window in the stack\r\n function toggleTopWindowClass(toggleSwitch) {\r\n var modalWindow;\r\n\r\n if (openedWindows.length() > 0) {\r\n modalWindow = openedWindows.top().value;\r\n modalWindow.modalDomEl.toggleClass(modalWindow.windowTopClass || '', toggleSwitch);\r\n }\r\n }\r\n\r\n function checkRemoveBackdrop() {\r\n //remove backdrop if no longer needed\r\n if (backdropDomEl && backdropIndex() === -1) {\r\n var backdropScopeRef = backdropScope;\r\n removeAfterAnimate(backdropDomEl, backdropScope, function() {\r\n backdropScopeRef = null;\r\n });\r\n backdropDomEl = undefined;\r\n backdropScope = undefined;\r\n }\r\n }\r\n\r\n function removeAfterAnimate(domEl, scope, done, closedDeferred) {\r\n var asyncDeferred;\r\n var asyncPromise = null;\r\n var setIsAsync = function() {\r\n if (!asyncDeferred) {\r\n asyncDeferred = $q.defer();\r\n asyncPromise = asyncDeferred.promise;\r\n }\r\n\r\n return function asyncDone() {\r\n asyncDeferred.resolve();\r\n };\r\n };\r\n scope.$broadcast($modalStack.NOW_CLOSING_EVENT, setIsAsync);\r\n\r\n // Note that it's intentional that asyncPromise might be null.\r\n // That's when setIsAsync has not been called during the\r\n // NOW_CLOSING_EVENT broadcast.\r\n return $q.when(asyncPromise).then(afterAnimating);\r\n\r\n function afterAnimating() {\r\n if (afterAnimating.done) {\r\n return;\r\n }\r\n afterAnimating.done = true;\r\n\r\n $animate.leave(domEl).then(function() {\r\n if (done) {\r\n done();\r\n }\r\n\r\n domEl.remove();\r\n if (closedDeferred) {\r\n closedDeferred.resolve();\r\n }\r\n });\r\n\r\n scope.$destroy();\r\n }\r\n }\r\n\r\n $document.on('keydown', keydownListener);\r\n\r\n $rootScope.$on('$destroy', function() {\r\n $document.off('keydown', keydownListener);\r\n });\r\n\r\n function keydownListener(evt) {\r\n if (evt.isDefaultPrevented()) {\r\n return evt;\r\n }\r\n\r\n var modal = openedWindows.top();\r\n if (modal) {\r\n switch (evt.which) {\r\n case 27: {\r\n if (modal.value.keyboard) {\r\n evt.preventDefault();\r\n $rootScope.$apply(function() {\r\n $modalStack.dismiss(modal.key, 'escape key press');\r\n });\r\n }\r\n break;\r\n }\r\n case 9: {\r\n var list = $modalStack.loadFocusElementList(modal);\r\n var focusChanged = false;\r\n if (evt.shiftKey) {\r\n if ($modalStack.isFocusInFirstItem(evt, list) || $modalStack.isModalFocused(evt, modal)) {\r\n focusChanged = $modalStack.focusLastFocusableElement(list);\r\n }\r\n } else {\r\n if ($modalStack.isFocusInLastItem(evt, list)) {\r\n focusChanged = $modalStack.focusFirstFocusableElement(list);\r\n }\r\n }\r\n\r\n if (focusChanged) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n $modalStack.open = function(modalInstance, modal) {\r\n var modalOpener = $document[0].activeElement,\r\n modalBodyClass = modal.openedClass || OPENED_MODAL_CLASS;\r\n\r\n toggleTopWindowClass(false);\r\n\r\n // Store the current top first, to determine what index we ought to use\r\n // for the current top modal\r\n previousTopOpenedModal = openedWindows.top();\r\n\r\n openedWindows.add(modalInstance, {\r\n deferred: modal.deferred,\r\n renderDeferred: modal.renderDeferred,\r\n closedDeferred: modal.closedDeferred,\r\n modalScope: modal.scope,\r\n backdrop: modal.backdrop,\r\n keyboard: modal.keyboard,\r\n openedClass: modal.openedClass,\r\n windowTopClass: modal.windowTopClass,\r\n animation: modal.animation,\r\n appendTo: modal.appendTo\r\n });\r\n\r\n openedClasses.put(modalBodyClass, modalInstance);\r\n\r\n var appendToElement = modal.appendTo,\r\n currBackdropIndex = backdropIndex();\r\n\r\n if (currBackdropIndex >= 0 && !backdropDomEl) {\r\n backdropScope = $rootScope.$new(true);\r\n backdropScope.modalOptions = modal;\r\n backdropScope.index = currBackdropIndex;\r\n backdropDomEl = angular.element('
');\r\n backdropDomEl.attr({\r\n 'class': 'modal-backdrop',\r\n 'ng-style': '{\\'z-index\\': 1040 + (index && 1 || 0) + index*10}',\r\n 'uib-modal-animation-class': 'fade',\r\n 'modal-in-class': 'in'\r\n });\r\n\r\n if (modal.animation) {\r\n backdropDomEl.attr('modal-animation', 'true');\r\n }\r\n $compile(backdropDomEl)(backdropScope);\r\n $animate.enter(backdropDomEl, appendToElement);\r\n // Hack !! scrollbar width\r\n //if ($uibPosition.isScrollable(appendToElement)) {\r\n scrollbarPadding = $uibPosition.scrollbarPadding(appendToElement);\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n appendToElement.css({paddingRight: scrollbarPadding.right + 'px'});\r\n }\r\n //}\r\n if (modal.backdropClass) {\r\n backdropDomEl.addClass(modal.backdropClass);\r\n }\r\n }\r\n\r\n var content;\r\n if (modal.component) {\r\n content = document.createElement(snake_case(modal.component.name));\r\n content = angular.element(content);\r\n content.attr({\r\n resolve: '$resolve',\r\n 'modal-instance': '$uibModalInstance',\r\n close: '$close($value)',\r\n dismiss: '$dismiss($value)'\r\n });\r\n } else {\r\n content = modal.content;\r\n }\r\n\r\n // Set the top modal index based on the index of the previous top modal\r\n topModalIndex = previousTopOpenedModal ? parseInt(previousTopOpenedModal.value.modalDomEl.attr('index'), 10) + 1 : 0;\r\n var angularDomEl = angular.element('
');\r\n angularDomEl.attr({\r\n 'class': 'modal',\r\n 'template-url': modal.windowTemplateUrl,\r\n 'window-top-class': modal.windowTopClass,\r\n 'role': 'dialog',\r\n 'aria-labelledby': modal.ariaLabelledBy,\r\n 'aria-describedby': modal.ariaDescribedBy,\r\n 'size': modal.size,\r\n 'index': topModalIndex,\r\n 'animate': 'animate',\r\n 'ng-style': '{\\'z-index\\': 1070 + $$topModalIndex*10, display: \\'block\\'}',\r\n 'tabindex': -1,\r\n 'uib-modal-animation-class': 'fade',\r\n 'modal-in-class': 'in'\r\n }).append(content);\r\n if (modal.windowClass) {\r\n angularDomEl.addClass(modal.windowClass);\r\n }\r\n\r\n if (modal.animation) {\r\n angularDomEl.attr('modal-animation', 'true');\r\n }\r\n\r\n appendToElement.addClass(modalBodyClass);\r\n if (modal.scope) {\r\n // we need to explicitly add the modal index to the modal scope\r\n // because it is needed by ngStyle to compute the zIndex property.\r\n modal.scope.$$topModalIndex = topModalIndex;\r\n }\r\n $animate.enter($compile(angularDomEl)(modal.scope), appendToElement);\r\n\r\n openedWindows.top().value.modalDomEl = angularDomEl;\r\n openedWindows.top().value.modalOpener = modalOpener;\r\n\r\n applyAriaHidden(angularDomEl);\r\n\r\n function applyAriaHidden(el) {\r\n if (!el || el[0].tagName === 'BODY') {\r\n return;\r\n }\r\n\r\n getSiblings(el).forEach(function(sibling) {\r\n var elemIsAlreadyHidden = sibling.getAttribute('aria-hidden') === 'true',\r\n ariaHiddenCount = parseInt(sibling.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10);\r\n\r\n if (!ariaHiddenCount) {\r\n ariaHiddenCount = elemIsAlreadyHidden ? 1 : 0;\r\n }\r\n\r\n sibling.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, ariaHiddenCount + 1);\r\n sibling.setAttribute('aria-hidden', 'true');\r\n });\r\n\r\n return applyAriaHidden(el.parent());\r\n\r\n function getSiblings(el) {\r\n var children = el.parent() ? el.parent().children() : [];\r\n\r\n return Array.prototype.filter.call(children, function(child) {\r\n return child !== el[0];\r\n });\r\n }\r\n }\r\n };\r\n\r\n function broadcastClosing(modalWindow, resultOrReason, closing) {\r\n return !modalWindow.value.modalScope.$broadcast('modal.closing', resultOrReason, closing).defaultPrevented;\r\n }\r\n\r\n function unhideBackgroundElements() {\r\n Array.prototype.forEach.call(\r\n document.querySelectorAll('[' + ARIA_HIDDEN_ATTRIBUTE_NAME + ']'),\r\n function(hiddenEl) {\r\n var ariaHiddenCount = parseInt(hiddenEl.getAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME), 10),\r\n newHiddenCount = ariaHiddenCount - 1;\r\n hiddenEl.setAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME, newHiddenCount);\r\n\r\n if (!newHiddenCount) {\r\n hiddenEl.removeAttribute(ARIA_HIDDEN_ATTRIBUTE_NAME);\r\n hiddenEl.removeAttribute('aria-hidden');\r\n }\r\n }\r\n );\r\n }\r\n\r\n $modalStack.close = function(modalInstance, result) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n unhideBackgroundElements();\r\n if (modalWindow && broadcastClosing(modalWindow, result, true)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.resolve(result);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismiss = function(modalInstance, reason) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n unhideBackgroundElements();\r\n if (modalWindow && broadcastClosing(modalWindow, reason, false)) {\r\n modalWindow.value.modalScope.$$uibDestructionScheduled = true;\r\n modalWindow.value.deferred.reject(reason);\r\n removeModalWindow(modalInstance, modalWindow.value.modalOpener);\r\n return true;\r\n }\r\n return !modalWindow;\r\n };\r\n\r\n $modalStack.dismissAll = function(reason) {\r\n var topModal = this.getTop();\r\n while (topModal && this.dismiss(topModal.key, reason)) {\r\n topModal = this.getTop();\r\n }\r\n };\r\n\r\n $modalStack.getTop = function() {\r\n return openedWindows.top();\r\n };\r\n\r\n $modalStack.modalRendered = function(modalInstance) {\r\n var modalWindow = openedWindows.get(modalInstance);\r\n if (modalWindow) {\r\n modalWindow.value.renderDeferred.resolve();\r\n }\r\n };\r\n\r\n $modalStack.focusFirstFocusableElement = function(list) {\r\n if (list.length > 0) {\r\n list[0].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.focusLastFocusableElement = function(list) {\r\n if (list.length > 0) {\r\n list[list.length - 1].focus();\r\n return true;\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isModalFocused = function(evt, modalWindow) {\r\n if (evt && modalWindow) {\r\n var modalDomEl = modalWindow.value.modalDomEl;\r\n if (modalDomEl && modalDomEl.length) {\r\n return (evt.target || evt.srcElement) === modalDomEl[0];\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInFirstItem = function(evt, list) {\r\n if (list.length > 0) {\r\n return (evt.target || evt.srcElement) === list[0];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.isFocusInLastItem = function(evt, list) {\r\n if (list.length > 0) {\r\n return (evt.target || evt.srcElement) === list[list.length - 1];\r\n }\r\n return false;\r\n };\r\n\r\n $modalStack.loadFocusElementList = function(modalWindow) {\r\n if (modalWindow) {\r\n var modalDomE1 = modalWindow.value.modalDomEl;\r\n if (modalDomE1 && modalDomE1.length) {\r\n var elements = modalDomE1[0].querySelectorAll(tabbableSelector);\r\n return elements ?\r\n Array.prototype.filter.call(elements, function(element) {\r\n return isVisible(element);\r\n }) : elements;\r\n }\r\n }\r\n };\r\n\r\n return $modalStack;\r\n }])\r\n\r\n .provider('$uibModal', function() {\r\n var $modalProvider = {\r\n options: {\r\n animation: true,\r\n backdrop: true, //can also be false or 'static'\r\n keyboard: true\r\n },\r\n $get: ['$rootScope', '$q', '$document', '$templateRequest', '$controller', '$uibResolve', '$uibModalStack',\r\n function ($rootScope, $q, $document, $templateRequest, $controller, $uibResolve, $modalStack) {\r\n var $modal = {};\r\n\r\n function getTemplatePromise(options) {\r\n return options.template ? $q.when(options.template) :\r\n $templateRequest(angular.isFunction(options.templateUrl) ?\r\n options.templateUrl() : options.templateUrl);\r\n }\r\n\r\n var promiseChain = null;\r\n $modal.getPromiseChain = function() {\r\n return promiseChain;\r\n };\r\n\r\n $modal.open = function(modalOptions) {\r\n var modalResultDeferred = $q.defer();\r\n var modalOpenedDeferred = $q.defer();\r\n var modalClosedDeferred = $q.defer();\r\n var modalRenderDeferred = $q.defer();\r\n\r\n //prepare an instance of a modal to be injected into controllers and returned to a caller\r\n var modalInstance = {\r\n result: modalResultDeferred.promise,\r\n opened: modalOpenedDeferred.promise,\r\n closed: modalClosedDeferred.promise,\r\n rendered: modalRenderDeferred.promise,\r\n close: function (result) {\r\n return $modalStack.close(modalInstance, result);\r\n },\r\n dismiss: function (reason) {\r\n return $modalStack.dismiss(modalInstance, reason);\r\n }\r\n };\r\n\r\n //merge and clean up options\r\n modalOptions = angular.extend({}, $modalProvider.options, modalOptions);\r\n modalOptions.resolve = modalOptions.resolve || {};\r\n modalOptions.appendTo = modalOptions.appendTo || $document.find('body').eq(0);\r\n\r\n if (!modalOptions.appendTo.length) {\r\n throw new Error('appendTo element not found. Make sure that the element passed is in DOM.');\r\n }\r\n\r\n //verify options\r\n if (!modalOptions.component && !modalOptions.template && !modalOptions.templateUrl) {\r\n throw new Error('One of component or template or templateUrl options is required.');\r\n }\r\n\r\n var templateAndResolvePromise;\r\n if (modalOptions.component) {\r\n templateAndResolvePromise = $q.when($uibResolve.resolve(modalOptions.resolve, {}, null, null));\r\n } else {\r\n templateAndResolvePromise =\r\n $q.all([getTemplatePromise(modalOptions), $uibResolve.resolve(modalOptions.resolve, {}, null, null)]);\r\n }\r\n\r\n function resolveWithTemplate() {\r\n return templateAndResolvePromise;\r\n }\r\n\r\n // Wait for the resolution of the existing promise chain.\r\n // Then switch to our own combined promise dependency (regardless of how the previous modal fared).\r\n // Then add to $modalStack and resolve opened.\r\n // Finally clean up the chain variable if no subsequent modal has overwritten it.\r\n var samePromise;\r\n samePromise = promiseChain = $q.all([promiseChain])\r\n .then(resolveWithTemplate, resolveWithTemplate)\r\n .then(function resolveSuccess(tplAndVars) {\r\n var providedScope = modalOptions.scope || $rootScope;\r\n\r\n var modalScope = providedScope.$new();\r\n modalScope.$close = modalInstance.close;\r\n modalScope.$dismiss = modalInstance.dismiss;\r\n\r\n modalScope.$on('$destroy', function() {\r\n if (!modalScope.$$uibDestructionScheduled) {\r\n modalScope.$dismiss('$uibUnscheduledDestruction');\r\n }\r\n });\r\n\r\n var modal = {\r\n scope: modalScope,\r\n deferred: modalResultDeferred,\r\n renderDeferred: modalRenderDeferred,\r\n closedDeferred: modalClosedDeferred,\r\n animation: modalOptions.animation,\r\n backdrop: modalOptions.backdrop,\r\n keyboard: modalOptions.keyboard,\r\n backdropClass: modalOptions.backdropClass,\r\n windowTopClass: modalOptions.windowTopClass,\r\n windowClass: modalOptions.windowClass,\r\n windowTemplateUrl: modalOptions.windowTemplateUrl,\r\n ariaLabelledBy: modalOptions.ariaLabelledBy,\r\n ariaDescribedBy: modalOptions.ariaDescribedBy,\r\n size: modalOptions.size,\r\n openedClass: modalOptions.openedClass,\r\n appendTo: modalOptions.appendTo\r\n };\r\n\r\n var component = {};\r\n var ctrlInstance, ctrlInstantiate, ctrlLocals = {};\r\n\r\n if (modalOptions.component) {\r\n constructLocals(component, false, true, false);\r\n component.name = modalOptions.component;\r\n modal.component = component;\r\n } else if (modalOptions.controller) {\r\n constructLocals(ctrlLocals, true, false, true);\r\n\r\n // the third param will make the controller instantiate later,private api\r\n // @see https://github.com/angular/angular.js/blob/master/src/ng/controller.js#L126\r\n ctrlInstantiate = $controller(modalOptions.controller, ctrlLocals, true, modalOptions.controllerAs);\r\n if (modalOptions.controllerAs && modalOptions.bindToController) {\r\n ctrlInstance = ctrlInstantiate.instance;\r\n ctrlInstance.$close = modalScope.$close;\r\n ctrlInstance.$dismiss = modalScope.$dismiss;\r\n angular.extend(ctrlInstance, {\r\n $resolve: ctrlLocals.$scope.$resolve\r\n }, providedScope);\r\n }\r\n\r\n ctrlInstance = ctrlInstantiate();\r\n\r\n if (angular.isFunction(ctrlInstance.$onInit)) {\r\n ctrlInstance.$onInit();\r\n }\r\n }\r\n\r\n if (!modalOptions.component) {\r\n modal.content = tplAndVars[0];\r\n }\r\n\r\n $modalStack.open(modalInstance, modal);\r\n modalOpenedDeferred.resolve(true);\r\n\r\n function constructLocals(obj, template, instanceOnScope, injectable) {\r\n obj.$scope = modalScope;\r\n obj.$scope.$resolve = {};\r\n if (instanceOnScope) {\r\n obj.$scope.$uibModalInstance = modalInstance;\r\n } else {\r\n obj.$uibModalInstance = modalInstance;\r\n }\r\n\r\n var resolves = template ? tplAndVars[1] : tplAndVars;\r\n angular.forEach(resolves, function(value, key) {\r\n if (injectable) {\r\n obj[key] = value;\r\n }\r\n\r\n obj.$scope.$resolve[key] = value;\r\n });\r\n }\r\n }, function resolveError(reason) {\r\n modalOpenedDeferred.reject(reason);\r\n modalResultDeferred.reject(reason);\r\n })['finally'](function() {\r\n if (promiseChain === samePromise) {\r\n promiseChain = null;\r\n }\r\n });\r\n\r\n return modalInstance;\r\n };\r\n\r\n return $modal;\r\n }\r\n ]\r\n };\r\n\r\n return $modalProvider;\r\n });\r\n\r\nangular.module('ui.bootstrap.stackedMap', [])\r\n/**\r\n * A helper, internal data structure that acts as a map but also allows getting / removing\r\n * elements in the LIFO order\r\n */\r\n .factory('$$stackedMap', function() {\r\n return {\r\n createNew: function() {\r\n var stack = [];\r\n\r\n return {\r\n add: function(key, value) {\r\n stack.push({\r\n key: key,\r\n value: value\r\n });\r\n },\r\n get: function(key) {\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key === stack[i].key) {\r\n return stack[i];\r\n }\r\n }\r\n },\r\n keys: function() {\r\n var keys = [];\r\n for (var i = 0; i < stack.length; i++) {\r\n keys.push(stack[i].key);\r\n }\r\n return keys;\r\n },\r\n top: function() {\r\n return stack[stack.length - 1];\r\n },\r\n remove: function(key) {\r\n var idx = -1;\r\n for (var i = 0; i < stack.length; i++) {\r\n if (key === stack[i].key) {\r\n idx = i;\r\n break;\r\n }\r\n }\r\n return stack.splice(idx, 1)[0];\r\n },\r\n removeTop: function() {\r\n return stack.pop();\r\n },\r\n length: function() {\r\n return stack.length;\r\n }\r\n };\r\n }\r\n };\r\n });\r\nangular.module('ui.bootstrap.paging', [])\r\n/**\r\n * Helper internal service for generating common controller code between the\r\n * pager and pagination components\r\n */\r\n.factory('uibPaging', ['$parse', function($parse) {\r\n return {\r\n create: function(ctrl, $scope, $attrs) {\r\n ctrl.setNumPages = $attrs.numPages ? $parse($attrs.numPages).assign : angular.noop;\r\n ctrl.ngModelCtrl = { $setViewValue: angular.noop }; // nullModelCtrl\r\n ctrl._watchers = [];\r\n\r\n ctrl.init = function(ngModelCtrl, config) {\r\n ctrl.ngModelCtrl = ngModelCtrl;\r\n ctrl.config = config;\r\n\r\n ngModelCtrl.$render = function() {\r\n ctrl.render();\r\n };\r\n\r\n if ($attrs.itemsPerPage) {\r\n ctrl._watchers.push($scope.$parent.$watch($attrs.itemsPerPage, function(value) {\r\n ctrl.itemsPerPage = parseInt(value, 10);\r\n $scope.totalPages = ctrl.calculateTotalPages();\r\n ctrl.updatePage();\r\n }));\r\n } else {\r\n ctrl.itemsPerPage = config.itemsPerPage;\r\n }\r\n\r\n $scope.$watch('totalItems', function(newTotal, oldTotal) {\r\n if (angular.isDefined(newTotal) || newTotal !== oldTotal) {\r\n $scope.totalPages = ctrl.calculateTotalPages();\r\n ctrl.updatePage();\r\n }\r\n });\r\n };\r\n\r\n ctrl.calculateTotalPages = function() {\r\n var totalPages = ctrl.itemsPerPage < 1 ? 1 : Math.ceil($scope.totalItems / ctrl.itemsPerPage);\r\n return Math.max(totalPages || 0, 1);\r\n };\r\n\r\n ctrl.render = function() {\r\n $scope.page = parseInt(ctrl.ngModelCtrl.$viewValue, 10) || 1;\r\n };\r\n\r\n $scope.selectPage = function(page, evt) {\r\n if (evt) {\r\n evt.preventDefault();\r\n }\r\n\r\n var clickAllowed = !$scope.ngDisabled || !evt;\r\n if (clickAllowed && $scope.page !== page && page > 0 && page <= $scope.totalPages) {\r\n if (evt && evt.target) {\r\n evt.target.blur();\r\n }\r\n ctrl.ngModelCtrl.$setViewValue(page);\r\n ctrl.ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.getText = function(key) {\r\n return $scope[key + 'Text'] || ctrl.config[key + 'Text'];\r\n };\r\n\r\n $scope.noPrevious = function() {\r\n return $scope.page === 1;\r\n };\r\n\r\n $scope.noNext = function() {\r\n return $scope.page === $scope.totalPages;\r\n };\r\n\r\n ctrl.updatePage = function() {\r\n ctrl.setNumPages($scope.$parent, $scope.totalPages); // Readonly variable\r\n\r\n if ($scope.page > $scope.totalPages) {\r\n $scope.selectPage($scope.totalPages);\r\n } else {\r\n ctrl.ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.$on('$destroy', function() {\r\n while (ctrl._watchers.length) {\r\n ctrl._watchers.shift()();\r\n }\r\n });\r\n }\r\n };\r\n}]);\r\n\r\nangular.module('ui.bootstrap.pagination', ['ui.bootstrap.paging', 'ui.bootstrap.tabindex'])\r\n.controller('UibPaginationController', ['$scope', '$attrs', '$parse', 'uibPaging', 'uibPaginationConfig', function($scope, $attrs, $parse, uibPaging, uibPaginationConfig) {\r\n var ctrl = this;\r\n // Setup configuration parameters\r\n var maxSize = angular.isDefined($attrs.maxSize) ? $scope.$parent.$eval($attrs.maxSize) : uibPaginationConfig.maxSize,\r\n rotate = angular.isDefined($attrs.rotate) ? $scope.$parent.$eval($attrs.rotate) : uibPaginationConfig.rotate,\r\n forceEllipses = angular.isDefined($attrs.forceEllipses) ? $scope.$parent.$eval($attrs.forceEllipses) : uibPaginationConfig.forceEllipses,\r\n boundaryLinkNumbers = angular.isDefined($attrs.boundaryLinkNumbers) ? $scope.$parent.$eval($attrs.boundaryLinkNumbers) : uibPaginationConfig.boundaryLinkNumbers,\r\n pageLabel = angular.isDefined($attrs.pageLabel) ? function(idx) { return $scope.$parent.$eval($attrs.pageLabel, {$page: idx}); } : angular.identity;\r\n $scope.boundaryLinks = angular.isDefined($attrs.boundaryLinks) ? $scope.$parent.$eval($attrs.boundaryLinks) : uibPaginationConfig.boundaryLinks;\r\n $scope.directionLinks = angular.isDefined($attrs.directionLinks) ? $scope.$parent.$eval($attrs.directionLinks) : uibPaginationConfig.directionLinks;\r\n $attrs.$set('role', 'menu');\r\n\r\n uibPaging.create(this, $scope, $attrs);\r\n\r\n if ($attrs.maxSize) {\r\n ctrl._watchers.push($scope.$parent.$watch($parse($attrs.maxSize), function(value) {\r\n maxSize = parseInt(value, 10);\r\n ctrl.render();\r\n }));\r\n }\r\n\r\n // Create page object used in template\r\n function makePage(number, text, isActive) {\r\n return {\r\n number: number,\r\n text: text,\r\n active: isActive\r\n };\r\n }\r\n\r\n function getPages(currentPage, totalPages) {\r\n var pages = [];\r\n\r\n // Default page limits\r\n var startPage = 1, endPage = totalPages;\r\n var isMaxSized = angular.isDefined(maxSize) && maxSize < totalPages;\r\n\r\n // recompute if maxSize\r\n if (isMaxSized) {\r\n if (rotate) {\r\n // Current page is displayed in the middle of the visible ones\r\n startPage = Math.max(currentPage - Math.floor(maxSize / 2), 1);\r\n endPage = startPage + maxSize - 1;\r\n\r\n // Adjust if limit is exceeded\r\n if (endPage > totalPages) {\r\n endPage = totalPages;\r\n startPage = endPage - maxSize + 1;\r\n }\r\n } else {\r\n // Visible pages are paginated with maxSize\r\n startPage = (Math.ceil(currentPage / maxSize) - 1) * maxSize + 1;\r\n\r\n // Adjust last page if limit is exceeded\r\n endPage = Math.min(startPage + maxSize - 1, totalPages);\r\n }\r\n }\r\n\r\n // Add page number links\r\n for (var number = startPage; number <= endPage; number++) {\r\n var page = makePage(number, pageLabel(number), number === currentPage);\r\n pages.push(page);\r\n }\r\n\r\n // Add links to move between page sets\r\n if (isMaxSized && maxSize > 0 && (!rotate || forceEllipses || boundaryLinkNumbers)) {\r\n if (startPage > 1) {\r\n if (!boundaryLinkNumbers || startPage > 3) { //need ellipsis for all options unless range is too close to beginning\r\n var previousPageSet = makePage(startPage - 1, '...', false);\r\n pages.unshift(previousPageSet);\r\n }\r\n if (boundaryLinkNumbers) {\r\n if (startPage === 3) { //need to replace ellipsis when the buttons would be sequential\r\n var secondPageLink = makePage(2, '2', false);\r\n pages.unshift(secondPageLink);\r\n }\r\n //add the first page\r\n var firstPageLink = makePage(1, '1', false);\r\n pages.unshift(firstPageLink);\r\n }\r\n }\r\n\r\n if (endPage < totalPages) {\r\n if (!boundaryLinkNumbers || endPage < totalPages - 2) { //need ellipsis for all options unless range is too close to end\r\n var nextPageSet = makePage(endPage + 1, '...', false);\r\n pages.push(nextPageSet);\r\n }\r\n if (boundaryLinkNumbers) {\r\n if (endPage === totalPages - 2) { //need to replace ellipsis when the buttons would be sequential\r\n var secondToLastPageLink = makePage(totalPages - 1, totalPages - 1, false);\r\n pages.push(secondToLastPageLink);\r\n }\r\n //add the last page\r\n var lastPageLink = makePage(totalPages, totalPages, false);\r\n pages.push(lastPageLink);\r\n }\r\n }\r\n }\r\n return pages;\r\n }\r\n\r\n var originalRender = this.render;\r\n this.render = function() {\r\n originalRender();\r\n if ($scope.page > 0 && $scope.page <= $scope.totalPages) {\r\n $scope.pages = getPages($scope.page, $scope.totalPages);\r\n }\r\n };\r\n}])\r\n\r\n.constant('uibPaginationConfig', {\r\n itemsPerPage: 10,\r\n boundaryLinks: false,\r\n boundaryLinkNumbers: false,\r\n directionLinks: true,\r\n firstText: 'First',\r\n previousText: 'Previous',\r\n nextText: 'Next',\r\n lastText: 'Last',\r\n rotate: true,\r\n forceEllipses: false\r\n})\r\n\r\n.directive('uibPagination', ['$parse', 'uibPaginationConfig', function($parse, uibPaginationConfig) {\r\n return {\r\n scope: {\r\n totalItems: '=',\r\n firstText: '@',\r\n previousText: '@',\r\n nextText: '@',\r\n lastText: '@',\r\n ngDisabled:'='\r\n },\r\n require: ['uibPagination', '?ngModel'],\r\n restrict: 'A',\r\n controller: 'UibPaginationController',\r\n controllerAs: 'pagination',\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/pagination/pagination.html';\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n element.addClass('pagination');\r\n var paginationCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n\r\n if (!ngModelCtrl) {\r\n return; // do nothing if no ng-model\r\n }\r\n\r\n paginationCtrl.init(ngModelCtrl, uibPaginationConfig);\r\n }\r\n };\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, html tooltips, and selector delegation.\r\n */\r\nangular.module('ui.bootstrap.tooltip', ['ui.bootstrap.position', 'ui.bootstrap.stackedMap'])\r\n\r\n/**\r\n * The $tooltip service creates tooltip- and popover-like directives as well as\r\n * houses global options for them.\r\n */\r\n.provider('$uibTooltip', function() {\r\n // The default options tooltip and popover.\r\n var defaultOptions = {\r\n placement: 'top',\r\n placementClassPrefix: '',\r\n animation: true,\r\n popupDelay: 0,\r\n popupCloseDelay: 0,\r\n useContentExp: false\r\n };\r\n\r\n // Default hide triggers for each show trigger\r\n var triggerMap = {\r\n 'mouseenter': 'mouseleave',\r\n 'click': 'click',\r\n 'outsideClick': 'outsideClick',\r\n 'focus': 'blur',\r\n 'none': ''\r\n };\r\n\r\n // The options specified to the provider globally.\r\n var globalOptions = {};\r\n\r\n /**\r\n * `options({})` allows global configuration of all tooltips in the\r\n * application.\r\n *\r\n * var app = angular.module( 'App', ['ui.bootstrap.tooltip'], function( $tooltipProvider ) {\r\n * // place tooltips left instead of top by default\r\n * $tooltipProvider.options( { placement: 'left' } );\r\n * });\r\n */\r\n\tthis.options = function(value) {\r\n\t\tangular.extend(globalOptions, value);\r\n\t};\r\n\r\n /**\r\n * This allows you to extend the set of trigger mappings available. E.g.:\r\n *\r\n * $tooltipProvider.setTriggers( { 'openTrigger': 'closeTrigger' } );\r\n */\r\n this.setTriggers = function setTriggers(triggers) {\r\n angular.extend(triggerMap, triggers);\r\n };\r\n\r\n /**\r\n * This is a helper function for translating camel-case to snake_case.\r\n */\r\n function snake_case(name) {\r\n var regexp = /[A-Z]/g;\r\n var separator = '-';\r\n return name.replace(regexp, function(letter, pos) {\r\n return (pos ? separator : '') + letter.toLowerCase();\r\n });\r\n }\r\n\r\n /**\r\n * Returns the actual instance of the $tooltip service.\r\n * TODO support multiple triggers\r\n */\r\n this.$get = ['$window', '$compile', '$timeout', '$document', '$uibPosition', '$interpolate', '$rootScope', '$parse', '$$stackedMap', function($window, $compile, $timeout, $document, $position, $interpolate, $rootScope, $parse, $$stackedMap) {\r\n var openedTooltips = $$stackedMap.createNew();\r\n $document.on('keyup', keypressListener);\r\n\r\n $rootScope.$on('$destroy', function() {\r\n $document.off('keyup', keypressListener);\r\n });\r\n\r\n function keypressListener(e) {\r\n if (e.which === 27) {\r\n var last = openedTooltips.top();\r\n if (last) {\r\n last.value.close();\r\n last = null;\r\n }\r\n }\r\n }\r\n\r\n return function $tooltip(ttType, prefix, defaultTriggerShow, options) {\r\n options = angular.extend({}, defaultOptions, globalOptions, options);\r\n\r\n /**\r\n * Returns an object of show and hide triggers.\r\n *\r\n * If a trigger is supplied,\r\n * it is used to show the tooltip; otherwise, it will use the `trigger`\r\n * option passed to the `$tooltipProvider.options` method; else it will\r\n * default to the trigger supplied to this directive factory.\r\n *\r\n * The hide trigger is based on the show trigger. If the `trigger` option\r\n * was passed to the `$tooltipProvider.options` method, it will use the\r\n * mapped trigger from `triggerMap` or the passed trigger if the map is\r\n * undefined; otherwise, it uses the `triggerMap` value of the show\r\n * trigger; else it will just use the show trigger.\r\n */\r\n function getTriggers(trigger) {\r\n var show = (trigger || options.trigger || defaultTriggerShow).split(' ');\r\n var hide = show.map(function(trigger) {\r\n return triggerMap[trigger] || trigger;\r\n });\r\n return {\r\n show: show,\r\n hide: hide\r\n };\r\n }\r\n\r\n var directiveName = snake_case(ttType);\r\n\r\n var startSym = $interpolate.startSymbol();\r\n var endSym = $interpolate.endSymbol();\r\n var template =\r\n '
' +\r\n '
';\r\n\r\n return {\r\n compile: function(tElem, tAttrs) {\r\n var tooltipLinker = $compile(template);\r\n\r\n return function link(scope, element, attrs, tooltipCtrl) {\r\n var tooltip;\r\n var tooltipLinkedScope;\r\n var transitionTimeout;\r\n var showTimeout;\r\n var hideTimeout;\r\n var positionTimeout;\r\n var adjustmentTimeout;\r\n var appendToBody = angular.isDefined(options.appendToBody) ? options.appendToBody : false;\r\n var triggers = getTriggers(undefined);\r\n var hasEnableExp = angular.isDefined(attrs[prefix + 'Enable']);\r\n var ttScope = scope.$new(true);\r\n var repositionScheduled = false;\r\n var isOpenParse = angular.isDefined(attrs[prefix + 'IsOpen']) ? $parse(attrs[prefix + 'IsOpen']) : false;\r\n var contentParse = options.useContentExp ? $parse(attrs[ttType]) : false;\r\n var observers = [];\r\n var lastPlacement;\r\n\r\n var positionTooltip = function() {\r\n // check if tooltip exists and is not empty\r\n if (!tooltip || !tooltip.html()) { return; }\r\n\r\n if (!positionTimeout) {\r\n positionTimeout = $timeout(function() {\r\n var ttPosition = $position.positionElements(element, tooltip, ttScope.placement, appendToBody);\r\n var initialHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\r\n var elementPos = appendToBody ? $position.offset(element) : $position.position(element);\r\n tooltip.css({ top: ttPosition.top + 'px', left: ttPosition.left + 'px' });\r\n var placementClasses = ttPosition.placement.split('-');\r\n\r\n if (!tooltip.hasClass(placementClasses[0])) {\r\n tooltip.removeClass(lastPlacement.split('-')[0]);\r\n tooltip.addClass(placementClasses[0]);\r\n }\r\n\r\n if (!tooltip.hasClass(options.placementClassPrefix + ttPosition.placement)) {\r\n tooltip.removeClass(options.placementClassPrefix + lastPlacement);\r\n tooltip.addClass(options.placementClassPrefix + ttPosition.placement);\r\n }\r\n\r\n adjustmentTimeout = $timeout(function() {\r\n var currentHeight = angular.isDefined(tooltip.offsetHeight) ? tooltip.offsetHeight : tooltip.prop('offsetHeight');\r\n var adjustment = $position.adjustTop(placementClasses, elementPos, initialHeight, currentHeight);\r\n if (adjustment) {\r\n tooltip.css(adjustment);\r\n }\r\n adjustmentTimeout = null;\r\n }, 0, false);\r\n\r\n // first time through tt element will have the\r\n // uib-position-measure class or if the placement\r\n // has changed we need to position the arrow.\r\n if (tooltip.hasClass('uib-position-measure')) {\r\n $position.positionArrow(tooltip, ttPosition.placement);\r\n tooltip.removeClass('uib-position-measure');\r\n } else if (lastPlacement !== ttPosition.placement) {\r\n $position.positionArrow(tooltip, ttPosition.placement);\r\n }\r\n lastPlacement = ttPosition.placement;\r\n\r\n positionTimeout = null;\r\n }, 0, false);\r\n }\r\n };\r\n\r\n // Set up the correct scope to allow transclusion later\r\n ttScope.origScope = scope;\r\n\r\n // By default, the tooltip is not open.\r\n // TODO add ability to start tooltip opened\r\n ttScope.isOpen = false;\r\n\r\n function toggleTooltipBind() {\r\n if (!ttScope.isOpen) {\r\n showTooltipBind();\r\n } else {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n // Show the tooltip with delay if specified, otherwise show it immediately\r\n function showTooltipBind() {\r\n if (hasEnableExp && !scope.$eval(attrs[prefix + 'Enable'])) {\r\n return;\r\n }\r\n\r\n cancelHide();\r\n prepareTooltip();\r\n\r\n if (ttScope.popupDelay) {\r\n // Do nothing if the tooltip was already scheduled to pop-up.\r\n // This happens if show is triggered multiple times before any hide is triggered.\r\n if (!showTimeout) {\r\n showTimeout = $timeout(show, ttScope.popupDelay, false);\r\n }\r\n } else {\r\n show();\r\n }\r\n }\r\n\r\n function hideTooltipBind() {\r\n cancelShow();\r\n\r\n if (ttScope.popupCloseDelay) {\r\n if (!hideTimeout) {\r\n hideTimeout = $timeout(hide, ttScope.popupCloseDelay, false);\r\n }\r\n } else {\r\n hide();\r\n }\r\n }\r\n\r\n // Show the tooltip popup element.\r\n function show() {\r\n cancelShow();\r\n cancelHide();\r\n\r\n // Don't show empty tooltips.\r\n if (!ttScope.content) {\r\n return angular.noop;\r\n }\r\n\r\n createTooltip();\r\n\r\n // And show the tooltip.\r\n ttScope.$evalAsync(function() {\r\n ttScope.isOpen = true;\r\n assignIsOpen(true);\r\n positionTooltip();\r\n });\r\n }\r\n\r\n function cancelShow() {\r\n if (showTimeout) {\r\n $timeout.cancel(showTimeout);\r\n showTimeout = null;\r\n }\r\n\r\n if (positionTimeout) {\r\n $timeout.cancel(positionTimeout);\r\n positionTimeout = null;\r\n }\r\n }\r\n\r\n // Hide the tooltip popup element.\r\n function hide() {\r\n if (!ttScope) {\r\n return;\r\n }\r\n\r\n // First things first: we don't show it anymore.\r\n ttScope.$evalAsync(function() {\r\n if (ttScope) {\r\n ttScope.isOpen = false;\r\n assignIsOpen(false);\r\n // And now we remove it from the DOM. However, if we have animation, we\r\n // need to wait for it to expire beforehand.\r\n // FIXME: this is a placeholder for a port of the transitions library.\r\n // The fade transition in TWBS is 150ms.\r\n if (ttScope.animation) {\r\n if (!transitionTimeout) {\r\n transitionTimeout = $timeout(removeTooltip, 150, false);\r\n }\r\n } else {\r\n removeTooltip();\r\n }\r\n }\r\n });\r\n }\r\n\r\n function cancelHide() {\r\n if (hideTimeout) {\r\n $timeout.cancel(hideTimeout);\r\n hideTimeout = null;\r\n }\r\n\r\n if (transitionTimeout) {\r\n $timeout.cancel(transitionTimeout);\r\n transitionTimeout = null;\r\n }\r\n }\r\n\r\n function createTooltip() {\r\n // There can only be one tooltip element per directive shown at once.\r\n if (tooltip) {\r\n return;\r\n }\r\n\r\n tooltipLinkedScope = ttScope.$new();\r\n tooltip = tooltipLinker(tooltipLinkedScope, function(tooltip) {\r\n if (appendToBody) {\r\n $document.find('body').append(tooltip);\r\n } else {\r\n element.after(tooltip);\r\n }\r\n });\r\n\r\n openedTooltips.add(ttScope, {\r\n close: hide\r\n });\r\n\r\n prepObservers();\r\n }\r\n\r\n function removeTooltip() {\r\n cancelShow();\r\n cancelHide();\r\n unregisterObservers();\r\n\r\n if (tooltip) {\r\n tooltip.remove();\r\n\r\n tooltip = null;\r\n if (adjustmentTimeout) {\r\n $timeout.cancel(adjustmentTimeout);\r\n }\r\n }\r\n\r\n openedTooltips.remove(ttScope);\r\n\r\n if (tooltipLinkedScope) {\r\n tooltipLinkedScope.$destroy();\r\n tooltipLinkedScope = null;\r\n }\r\n }\r\n\r\n /**\r\n * Set the initial scope values. Once\r\n * the tooltip is created, the observers\r\n * will be added to keep things in sync.\r\n */\r\n function prepareTooltip() {\r\n ttScope.title = attrs[prefix + 'Title'];\r\n if (contentParse) {\r\n ttScope.content = contentParse(scope);\r\n } else {\r\n ttScope.content = attrs[ttType];\r\n }\r\n\r\n ttScope.popupClass = attrs[prefix + 'Class'];\r\n ttScope.placement = angular.isDefined(attrs[prefix + 'Placement']) ? attrs[prefix + 'Placement'] : options.placement;\r\n var placement = $position.parsePlacement(ttScope.placement);\r\n lastPlacement = placement[1] ? placement[0] + '-' + placement[1] : placement[0];\r\n\r\n var delay = parseInt(attrs[prefix + 'PopupDelay'], 10);\r\n var closeDelay = parseInt(attrs[prefix + 'PopupCloseDelay'], 10);\r\n ttScope.popupDelay = !isNaN(delay) ? delay : options.popupDelay;\r\n ttScope.popupCloseDelay = !isNaN(closeDelay) ? closeDelay : options.popupCloseDelay;\r\n }\r\n\r\n function assignIsOpen(isOpen) {\r\n if (isOpenParse && angular.isFunction(isOpenParse.assign)) {\r\n isOpenParse.assign(scope, isOpen);\r\n }\r\n }\r\n\r\n ttScope.contentExp = function() {\r\n return ttScope.content;\r\n };\r\n\r\n /**\r\n * Observe the relevant attributes.\r\n */\r\n attrs.$observe('disabled', function(val) {\r\n if (val) {\r\n cancelShow();\r\n }\r\n\r\n if (val && ttScope.isOpen) {\r\n hide();\r\n }\r\n });\r\n\r\n if (isOpenParse) {\r\n scope.$watch(isOpenParse, function(val) {\r\n if (ttScope && !val === ttScope.isOpen) {\r\n toggleTooltipBind();\r\n }\r\n });\r\n }\r\n\r\n function prepObservers() {\r\n observers.length = 0;\r\n\r\n if (contentParse) {\r\n observers.push(\r\n scope.$watch(contentParse, function(val) {\r\n ttScope.content = val;\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n }\r\n })\r\n );\r\n\r\n observers.push(\r\n tooltipLinkedScope.$watch(function() {\r\n if (!repositionScheduled) {\r\n repositionScheduled = true;\r\n tooltipLinkedScope.$$postDigest(function() {\r\n repositionScheduled = false;\r\n if (ttScope && ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n });\r\n }\r\n })\r\n );\r\n } else {\r\n observers.push(\r\n attrs.$observe(ttType, function(val) {\r\n ttScope.content = val;\r\n if (!val && ttScope.isOpen) {\r\n hide();\r\n } else {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n }\r\n\r\n observers.push(\r\n attrs.$observe(prefix + 'Title', function(val) {\r\n ttScope.title = val;\r\n if (ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n\r\n observers.push(\r\n attrs.$observe(prefix + 'Placement', function(val) {\r\n ttScope.placement = val ? val : options.placement;\r\n if (ttScope.isOpen) {\r\n positionTooltip();\r\n }\r\n })\r\n );\r\n }\r\n\r\n function unregisterObservers() {\r\n if (observers.length) {\r\n angular.forEach(observers, function(observer) {\r\n observer();\r\n });\r\n observers.length = 0;\r\n }\r\n }\r\n\r\n // hide tooltips/popovers for outsideClick trigger\r\n function bodyHideTooltipBind(e) {\r\n if (!ttScope || !ttScope.isOpen || !tooltip) {\r\n return;\r\n }\r\n // make sure the tooltip/popover link or tool tooltip/popover itself were not clicked\r\n if (!element[0].contains(e.target) && !tooltip[0].contains(e.target)) {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n // KeyboardEvent handler to hide the tooltip on Escape key press\r\n function hideOnEscapeKey(e) {\r\n if (e.which === 27) {\r\n hideTooltipBind();\r\n }\r\n }\r\n\r\n var unregisterTriggers = function() {\r\n triggers.show.forEach(function(trigger) {\r\n if (trigger === 'outsideClick') {\r\n element.off('click', toggleTooltipBind);\r\n } else {\r\n element.off(trigger, showTooltipBind);\r\n element.off(trigger, toggleTooltipBind);\r\n }\r\n element.off('keypress', hideOnEscapeKey);\r\n });\r\n triggers.hide.forEach(function(trigger) {\r\n if (trigger === 'outsideClick') {\r\n $document.off('click', bodyHideTooltipBind);\r\n } else {\r\n element.off(trigger, hideTooltipBind);\r\n }\r\n });\r\n };\r\n\r\n function prepTriggers() {\r\n var showTriggers = [], hideTriggers = [];\r\n var val = scope.$eval(attrs[prefix + 'Trigger']);\r\n unregisterTriggers();\r\n\r\n if (angular.isObject(val)) {\r\n Object.keys(val).forEach(function(key) {\r\n showTriggers.push(key);\r\n hideTriggers.push(val[key]);\r\n });\r\n triggers = {\r\n show: showTriggers,\r\n hide: hideTriggers\r\n };\r\n } else {\r\n triggers = getTriggers(val);\r\n }\r\n\r\n if (triggers.show !== 'none') {\r\n triggers.show.forEach(function(trigger, idx) {\r\n if (trigger === 'outsideClick') {\r\n element.on('click', toggleTooltipBind);\r\n $document.on('click', bodyHideTooltipBind);\r\n } else if (trigger === triggers.hide[idx]) {\r\n element.on(trigger, toggleTooltipBind);\r\n } else if (trigger) {\r\n element.on(trigger, showTooltipBind);\r\n element.on(triggers.hide[idx], hideTooltipBind);\r\n }\r\n element.on('keypress', hideOnEscapeKey);\r\n });\r\n }\r\n }\r\n\r\n prepTriggers();\r\n\r\n var animation = scope.$eval(attrs[prefix + 'Animation']);\r\n ttScope.animation = angular.isDefined(animation) ? !!animation : options.animation;\r\n\r\n var appendToBodyVal;\r\n var appendKey = prefix + 'AppendToBody';\r\n if (appendKey in attrs && attrs[appendKey] === undefined) {\r\n appendToBodyVal = true;\r\n } else {\r\n appendToBodyVal = scope.$eval(attrs[appendKey]);\r\n }\r\n\r\n appendToBody = angular.isDefined(appendToBodyVal) ? appendToBodyVal : appendToBody;\r\n\r\n // Make sure tooltip is destroyed and removed.\r\n scope.$on('$destroy', function onDestroyTooltip() {\r\n unregisterTriggers();\r\n removeTooltip();\r\n ttScope = null;\r\n });\r\n };\r\n }\r\n };\r\n };\r\n }];\r\n})\r\n\r\n// This is mostly ngInclude code but with a custom scope\r\n.directive('uibTooltipTemplateTransclude', [\r\n '$animate', '$sce', '$compile', '$templateRequest',\r\nfunction ($animate, $sce, $compile, $templateRequest) {\r\n return {\r\n link: function(scope, elem, attrs) {\r\n var origScope = scope.$eval(attrs.tooltipTemplateTranscludeScope);\r\n\r\n var changeCounter = 0,\r\n currentScope,\r\n previousElement,\r\n currentElement;\r\n\r\n var cleanupLastIncludeContent = function() {\r\n if (previousElement) {\r\n previousElement.remove();\r\n previousElement = null;\r\n }\r\n\r\n if (currentScope) {\r\n currentScope.$destroy();\r\n currentScope = null;\r\n }\r\n\r\n if (currentElement) {\r\n $animate.leave(currentElement).then(function() {\r\n previousElement = null;\r\n });\r\n previousElement = currentElement;\r\n currentElement = null;\r\n }\r\n };\r\n\r\n scope.$watch($sce.parseAsResourceUrl(attrs.uibTooltipTemplateTransclude), function(src) {\r\n var thisChangeId = ++changeCounter;\r\n\r\n if (src) {\r\n //set the 2nd param to true to ignore the template request error so that the inner\r\n //contents and scope can be cleaned up.\r\n $templateRequest(src, true).then(function(response) {\r\n if (thisChangeId !== changeCounter) { return; }\r\n var newScope = origScope.$new();\r\n var template = response;\r\n\r\n var clone = $compile(template)(newScope, function(clone) {\r\n cleanupLastIncludeContent();\r\n $animate.enter(clone, elem);\r\n });\r\n\r\n currentScope = newScope;\r\n currentElement = clone;\r\n\r\n currentScope.$emit('$includeContentLoaded', src);\r\n }, function() {\r\n if (thisChangeId === changeCounter) {\r\n cleanupLastIncludeContent();\r\n scope.$emit('$includeContentError', src);\r\n }\r\n });\r\n scope.$emit('$includeContentRequested', src);\r\n } else {\r\n cleanupLastIncludeContent();\r\n }\r\n });\r\n\r\n scope.$on('$destroy', cleanupLastIncludeContent);\r\n }\r\n };\r\n}])\r\n\r\n/**\r\n * Note that it's intentional that these classes are *not* applied through $animate.\r\n * They must not be animated as they're expected to be present on the tooltip on\r\n * initialization.\r\n */\r\n.directive('uibTooltipClasses', ['$uibPosition', function($uibPosition) {\r\n return {\r\n restrict: 'A',\r\n link: function(scope, element, attrs) {\r\n // need to set the primary position so the\r\n // arrow has space during position measure.\r\n // tooltip.positionTooltip()\r\n if (scope.placement) {\r\n // // There are no top-left etc... classes\r\n // // in TWBS, so we need the primary position.\r\n var position = $uibPosition.parsePlacement(scope.placement);\r\n element.addClass(position[0]);\r\n }\r\n\r\n if (scope.popupClass) {\r\n element.addClass(scope.popupClass);\r\n }\r\n\r\n if (scope.animation) {\r\n element.addClass(attrs.tooltipAnimationClass);\r\n }\r\n }\r\n };\r\n}])\r\n\r\n.directive('uibTooltipPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { content: '@' },\r\n templateUrl: 'uib/template/tooltip/tooltip-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltip', [ '$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltip', 'tooltip', 'mouseenter');\r\n}])\r\n\r\n.directive('uibTooltipTemplatePopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&', originScope: '&' },\r\n templateUrl: 'uib/template/tooltip/tooltip-template-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltipTemplate', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltipTemplate', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibTooltipHtmlPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&' },\r\n templateUrl: 'uib/template/tooltip/tooltip-html-popup.html'\r\n };\r\n})\r\n\r\n.directive('uibTooltipHtml', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibTooltipHtml', 'tooltip', 'mouseenter', {\r\n useContentExp: true\r\n });\r\n}]);\r\n\r\n/**\r\n * The following features are still outstanding: popup delay, animation as a\r\n * function, placement as a function, inside, support for more triggers than\r\n * just mouse enter/leave, and selector delegatation.\r\n */\r\nangular.module('ui.bootstrap.popover', ['ui.bootstrap.tooltip'])\r\n\r\n.directive('uibPopoverTemplatePopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { uibTitle: '@', contentExp: '&', originScope: '&' },\r\n templateUrl: 'uib/template/popover/popover-template.html'\r\n };\r\n})\r\n\r\n.directive('uibPopoverTemplate', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopoverTemplate', 'popover', 'click', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibPopoverHtmlPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { contentExp: '&', uibTitle: '@' },\r\n templateUrl: 'uib/template/popover/popover-html.html'\r\n };\r\n})\r\n\r\n.directive('uibPopoverHtml', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopoverHtml', 'popover', 'click', {\r\n useContentExp: true\r\n });\r\n}])\r\n\r\n.directive('uibPopoverPopup', function() {\r\n return {\r\n restrict: 'A',\r\n scope: { uibTitle: '@', content: '@' },\r\n templateUrl: 'uib/template/popover/popover.html'\r\n };\r\n})\r\n\r\n.directive('uibPopover', ['$uibTooltip', function($uibTooltip) {\r\n return $uibTooltip('uibPopover', 'popover', 'click');\r\n}]);\r\n\r\nangular.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\r\nangular.module('ui.bootstrap.rating', [])\r\n\r\n.constant('uibRatingConfig', {\r\n max: 5,\r\n stateOn: null,\r\n stateOff: null,\r\n enableReset: true,\r\n titles: ['one', 'two', 'three', 'four', 'five']\r\n})\r\n\r\n.controller('UibRatingController', ['$scope', '$attrs', 'uibRatingConfig', function($scope, $attrs, ratingConfig) {\r\n var ngModelCtrl = { $setViewValue: angular.noop },\r\n self = this;\r\n\r\n this.init = function(ngModelCtrl_) {\r\n ngModelCtrl = ngModelCtrl_;\r\n ngModelCtrl.$render = this.render;\r\n\r\n ngModelCtrl.$formatters.push(function(value) {\r\n if (angular.isNumber(value) && value << 0 !== value) {\r\n value = Math.round(value);\r\n }\r\n\r\n return value;\r\n });\r\n\r\n this.stateOn = angular.isDefined($attrs.stateOn) ? $scope.$parent.$eval($attrs.stateOn) : ratingConfig.stateOn;\r\n this.stateOff = angular.isDefined($attrs.stateOff) ? $scope.$parent.$eval($attrs.stateOff) : ratingConfig.stateOff;\r\n this.enableReset = angular.isDefined($attrs.enableReset) ?\r\n $scope.$parent.$eval($attrs.enableReset) : ratingConfig.enableReset;\r\n var tmpTitles = angular.isDefined($attrs.titles) ? $scope.$parent.$eval($attrs.titles) : ratingConfig.titles;\r\n this.titles = angular.isArray(tmpTitles) && tmpTitles.length > 0 ?\r\n tmpTitles : ratingConfig.titles;\r\n\r\n var ratingStates = angular.isDefined($attrs.ratingStates) ?\r\n $scope.$parent.$eval($attrs.ratingStates) :\r\n new Array(angular.isDefined($attrs.max) ? $scope.$parent.$eval($attrs.max) : ratingConfig.max);\r\n $scope.range = this.buildTemplateObjects(ratingStates);\r\n };\r\n\r\n this.buildTemplateObjects = function(states) {\r\n for (var i = 0, n = states.length; i < n; i++) {\r\n states[i] = angular.extend({ index: i }, { stateOn: this.stateOn, stateOff: this.stateOff, title: this.getTitle(i) }, states[i]);\r\n }\r\n return states;\r\n };\r\n\r\n this.getTitle = function(index) {\r\n if (index >= this.titles.length) {\r\n return index + 1;\r\n }\r\n\r\n return this.titles[index];\r\n };\r\n\r\n $scope.rate = function(value) {\r\n if (!$scope.readonly && value >= 0 && value <= $scope.range.length) {\r\n var newViewValue = self.enableReset && ngModelCtrl.$viewValue === value ? 0 : value;\r\n ngModelCtrl.$setViewValue(newViewValue);\r\n ngModelCtrl.$render();\r\n }\r\n };\r\n\r\n $scope.enter = function(value) {\r\n if (!$scope.readonly) {\r\n $scope.value = value;\r\n }\r\n $scope.onHover({value: value});\r\n };\r\n\r\n $scope.reset = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n $scope.onLeave();\r\n };\r\n\r\n $scope.onKeydown = function(evt) {\r\n if (/(37|38|39|40)/.test(evt.which)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.rate($scope.value + (evt.which === 38 || evt.which === 39 ? 1 : -1));\r\n }\r\n };\r\n\r\n this.render = function() {\r\n $scope.value = ngModelCtrl.$viewValue;\r\n $scope.title = self.getTitle($scope.value - 1);\r\n };\r\n}])\r\n\r\n.directive('uibRating', function() {\r\n return {\r\n require: ['uibRating', 'ngModel'],\r\n restrict: 'A',\r\n scope: {\r\n readonly: '=?readOnly',\r\n onHover: '&',\r\n onLeave: '&'\r\n },\r\n controller: 'UibRatingController',\r\n templateUrl: 'uib/template/rating/rating.html',\r\n link: function(scope, element, attrs, ctrls) {\r\n var ratingCtrl = ctrls[0], ngModelCtrl = ctrls[1];\r\n ratingCtrl.init(ngModelCtrl);\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.dropdown', ['ui.bootstrap.multiMap', 'ui.bootstrap.position'])\r\n\r\n.constant('uibDropdownConfig', {\r\n appendToOpenClass: 'uib-dropdown-open',\r\n openClass: 'open'\r\n})\r\n\r\n.service('uibDropdownService', ['$document', '$rootScope', '$$multiMap', function($document, $rootScope, $$multiMap) {\r\n var openScope = null;\r\n var openedContainers = $$multiMap.createNew();\r\n\r\n this.isOnlyOpen = function(dropdownScope, appendTo) {\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var openDropdown = openedDropdowns.reduce(function(toClose, dropdown) {\r\n if (dropdown.scope === dropdownScope) {\r\n return dropdown;\r\n }\r\n\r\n return toClose;\r\n }, {});\r\n if (openDropdown) {\r\n return openedDropdowns.length === 1;\r\n }\r\n }\r\n\r\n return false;\r\n };\r\n\r\n this.open = function(dropdownScope, element, appendTo) {\r\n if (!openScope) {\r\n $document.on('click', closeDropdown);\r\n }\r\n\r\n if (openScope && openScope !== dropdownScope) {\r\n openScope.isOpen = false;\r\n }\r\n\r\n openScope = dropdownScope;\r\n\r\n if (!appendTo) {\r\n return;\r\n }\r\n\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var openedScopes = openedDropdowns.map(function(dropdown) {\r\n return dropdown.scope;\r\n });\r\n if (openedScopes.indexOf(dropdownScope) === -1) {\r\n openedContainers.put(appendTo, {\r\n scope: dropdownScope\r\n });\r\n }\r\n } else {\r\n openedContainers.put(appendTo, {\r\n scope: dropdownScope\r\n });\r\n }\r\n };\r\n\r\n this.close = function(dropdownScope, element, appendTo) {\r\n if (openScope === dropdownScope) {\r\n $document.off('click', closeDropdown);\r\n $document.off('keydown', this.keybindFilter);\r\n openScope = null;\r\n }\r\n\r\n if (!appendTo) {\r\n return;\r\n }\r\n\r\n var openedDropdowns = openedContainers.get(appendTo);\r\n if (openedDropdowns) {\r\n var dropdownToClose = openedDropdowns.reduce(function(toClose, dropdown) {\r\n if (dropdown.scope === dropdownScope) {\r\n return dropdown;\r\n }\r\n\r\n return toClose;\r\n }, {});\r\n if (dropdownToClose) {\r\n openedContainers.remove(appendTo, dropdownToClose);\r\n }\r\n }\r\n };\r\n\r\n var closeDropdown = function(evt) {\r\n // This method may still be called during the same mouse event that\r\n // unbound this event handler. So check openScope before proceeding.\r\n if (!openScope || !openScope.isOpen) { return; }\r\n\r\n if (evt && openScope.getAutoClose() === 'disabled') { return; }\r\n\r\n if (evt && evt.which === 3) { return; }\r\n\r\n var toggleElement = openScope.getToggleElement();\r\n if (evt && toggleElement && toggleElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n var dropdownElement = openScope.getDropdownElement();\r\n if (evt && openScope.getAutoClose() === 'outsideClick' &&\r\n dropdownElement && dropdownElement[0].contains(evt.target)) {\r\n return;\r\n }\r\n\r\n openScope.focusToggleElement();\r\n openScope.isOpen = false;\r\n\r\n if (!$rootScope.$$phase) {\r\n openScope.$apply();\r\n }\r\n };\r\n\r\n this.keybindFilter = function(evt) {\r\n if (!openScope) {\r\n // see this.close as ESC could have been pressed which kills the scope so we can not proceed\r\n return;\r\n }\r\n\r\n var dropdownElement = openScope.getDropdownElement();\r\n var toggleElement = openScope.getToggleElement();\r\n var dropdownElementTargeted = dropdownElement && dropdownElement[0].contains(evt.target);\r\n var toggleElementTargeted = toggleElement && toggleElement[0].contains(evt.target);\r\n if (evt.which === 27) {\r\n evt.stopPropagation();\r\n openScope.focusToggleElement();\r\n closeDropdown();\r\n } else if (openScope.isKeynavEnabled() && [38, 40].indexOf(evt.which) !== -1 && openScope.isOpen && (dropdownElementTargeted || toggleElementTargeted)) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n openScope.focusDropdownEntry(evt.which);\r\n }\r\n };\r\n}])\r\n\r\n.controller('UibDropdownController', ['$scope', '$element', '$attrs', '$parse', 'uibDropdownConfig', 'uibDropdownService', '$animate', '$uibPosition', '$document', '$compile', '$templateRequest', function($scope, $element, $attrs, $parse, dropdownConfig, uibDropdownService, $animate, $position, $document, $compile, $templateRequest) {\r\n var self = this,\r\n scope = $scope.$new(), // create a child scope so we are not polluting original one\r\n templateScope,\r\n appendToOpenClass = dropdownConfig.appendToOpenClass,\r\n openClass = dropdownConfig.openClass,\r\n getIsOpen,\r\n setIsOpen = angular.noop,\r\n toggleInvoker = $attrs.onToggle ? $parse($attrs.onToggle) : angular.noop,\r\n keynavEnabled = false,\r\n selectedOption = null,\r\n body = $document.find('body');\r\n\r\n $element.addClass('dropdown');\r\n\r\n this.init = function() {\r\n if ($attrs.isOpen) {\r\n getIsOpen = $parse($attrs.isOpen);\r\n setIsOpen = getIsOpen.assign;\r\n\r\n $scope.$watch(getIsOpen, function(value) {\r\n scope.isOpen = !!value;\r\n });\r\n }\r\n\r\n keynavEnabled = angular.isDefined($attrs.keyboardNav);\r\n };\r\n\r\n this.toggle = function(open) {\r\n scope.isOpen = arguments.length ? !!open : !scope.isOpen;\r\n if (angular.isFunction(setIsOpen)) {\r\n setIsOpen(scope, scope.isOpen);\r\n }\r\n\r\n return scope.isOpen;\r\n };\r\n\r\n // Allow other directives to watch status\r\n this.isOpen = function() {\r\n return scope.isOpen;\r\n };\r\n\r\n scope.getToggleElement = function() {\r\n return self.toggleElement;\r\n };\r\n\r\n scope.getAutoClose = function() {\r\n return $attrs.autoClose || 'always'; //or 'outsideClick' or 'disabled'\r\n };\r\n\r\n scope.getElement = function() {\r\n return $element;\r\n };\r\n\r\n scope.isKeynavEnabled = function() {\r\n return keynavEnabled;\r\n };\r\n\r\n scope.focusDropdownEntry = function(keyCode) {\r\n var elems = self.dropdownMenu ? //If append to body is used.\r\n angular.element(self.dropdownMenu).find('a') :\r\n $element.find('ul').eq(0).find('a');\r\n\r\n switch (keyCode) {\r\n case 40: {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = 0;\r\n } else {\r\n self.selectedOption = self.selectedOption === elems.length - 1 ?\r\n self.selectedOption :\r\n self.selectedOption + 1;\r\n }\r\n break;\r\n }\r\n case 38: {\r\n if (!angular.isNumber(self.selectedOption)) {\r\n self.selectedOption = elems.length - 1;\r\n } else {\r\n self.selectedOption = self.selectedOption === 0 ?\r\n 0 : self.selectedOption - 1;\r\n }\r\n break;\r\n }\r\n }\r\n elems[self.selectedOption].focus();\r\n };\r\n\r\n scope.getDropdownElement = function() {\r\n return self.dropdownMenu;\r\n };\r\n\r\n scope.focusToggleElement = function() {\r\n if (self.toggleElement) {\r\n self.toggleElement[0].focus();\r\n }\r\n };\r\n\r\n function removeDropdownMenu() {\r\n $element.append(self.dropdownMenu);\r\n }\r\n\r\n scope.$watch('isOpen', function(isOpen, wasOpen) {\r\n var appendTo = null,\r\n appendToBody = false;\r\n\r\n if (angular.isDefined($attrs.dropdownAppendTo)) {\r\n var appendToEl = $parse($attrs.dropdownAppendTo)(scope);\r\n if (appendToEl) {\r\n appendTo = angular.element(appendToEl);\r\n }\r\n }\r\n\r\n if (angular.isDefined($attrs.dropdownAppendToBody)) {\r\n var appendToBodyValue = $parse($attrs.dropdownAppendToBody)(scope);\r\n if (appendToBodyValue !== false) {\r\n appendToBody = true;\r\n }\r\n }\r\n\r\n if (appendToBody && !appendTo) {\r\n appendTo = body;\r\n }\r\n\r\n if (appendTo && self.dropdownMenu) {\r\n if (isOpen) {\r\n appendTo.append(self.dropdownMenu);\r\n $element.on('$destroy', removeDropdownMenu);\r\n } else {\r\n $element.off('$destroy', removeDropdownMenu);\r\n removeDropdownMenu();\r\n }\r\n }\r\n\r\n if (appendTo && self.dropdownMenu) {\r\n var pos = $position.positionElements($element, self.dropdownMenu, 'bottom-left', true),\r\n css,\r\n rightalign,\r\n scrollbarPadding,\r\n scrollbarWidth = 0;\r\n\r\n css = {\r\n top: pos.top + 'px',\r\n display: isOpen ? 'block' : 'none'\r\n };\r\n\r\n rightalign = self.dropdownMenu.hasClass('dropdown-menu-right');\r\n if (!rightalign) {\r\n css.left = pos.left + 'px';\r\n css.right = 'auto';\r\n } else {\r\n css.left = 'auto';\r\n scrollbarPadding = $position.scrollbarPadding(appendTo);\r\n\r\n if (scrollbarPadding.heightOverflow && scrollbarPadding.scrollbarWidth) {\r\n scrollbarWidth = scrollbarPadding.scrollbarWidth;\r\n }\r\n\r\n css.right = window.innerWidth - scrollbarWidth -\r\n (pos.left + $element.prop('offsetWidth')) + 'px';\r\n }\r\n\r\n // Need to adjust our positioning to be relative to the appendTo container\r\n // if it's not the body element\r\n if (!appendToBody) {\r\n var appendOffset = $position.offset(appendTo);\r\n\r\n css.top = pos.top - appendOffset.top + 'px';\r\n\r\n if (!rightalign) {\r\n css.left = pos.left - appendOffset.left + 'px';\r\n } else {\r\n css.right = window.innerWidth -\r\n (pos.left - appendOffset.left + $element.prop('offsetWidth')) + 'px';\r\n }\r\n }\r\n\r\n self.dropdownMenu.css(css);\r\n }\r\n\r\n var openContainer = appendTo ? appendTo : $element;\r\n var dropdownOpenClass = appendTo ? appendToOpenClass : openClass;\r\n var hasOpenClass = openContainer.hasClass(dropdownOpenClass);\r\n var isOnlyOpen = uibDropdownService.isOnlyOpen($scope, appendTo);\r\n\r\n if (hasOpenClass === !isOpen) {\r\n var toggleClass;\r\n if (appendTo) {\r\n toggleClass = !isOnlyOpen ? 'addClass' : 'removeClass';\r\n } else {\r\n toggleClass = isOpen ? 'addClass' : 'removeClass';\r\n }\r\n $animate[toggleClass](openContainer, dropdownOpenClass).then(function() {\r\n if (angular.isDefined(isOpen) && isOpen !== wasOpen) {\r\n toggleInvoker($scope, { open: !!isOpen });\r\n }\r\n });\r\n }\r\n\r\n if (isOpen) {\r\n if (self.dropdownMenuTemplateUrl) {\r\n $templateRequest(self.dropdownMenuTemplateUrl).then(function(tplContent) {\r\n templateScope = scope.$new();\r\n $compile(tplContent.trim())(templateScope, function(dropdownElement) {\r\n var newEl = dropdownElement;\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n $document.on('keydown', uibDropdownService.keybindFilter);\r\n });\r\n });\r\n } else {\r\n $document.on('keydown', uibDropdownService.keybindFilter);\r\n }\r\n\r\n scope.focusToggleElement();\r\n uibDropdownService.open(scope, $element, appendTo);\r\n } else {\r\n uibDropdownService.close(scope, $element, appendTo);\r\n if (self.dropdownMenuTemplateUrl) {\r\n if (templateScope) {\r\n templateScope.$destroy();\r\n }\r\n var newEl = angular.element('
    ');\r\n self.dropdownMenu.replaceWith(newEl);\r\n self.dropdownMenu = newEl;\r\n }\r\n\r\n self.selectedOption = null;\r\n }\r\n\r\n if (angular.isFunction(setIsOpen)) {\r\n setIsOpen($scope, isOpen);\r\n }\r\n });\r\n}])\r\n\r\n.directive('uibDropdown', function() {\r\n return {\r\n controller: 'UibDropdownController',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n dropdownCtrl.init();\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDropdownMenu', function() {\r\n return {\r\n restrict: 'A',\r\n require: '?^uibDropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl || angular.isDefined(attrs.dropdownNested)) {\r\n return;\r\n }\r\n\r\n element.addClass('dropdown-menu');\r\n\r\n var tplUrl = attrs.templateUrl;\r\n if (tplUrl) {\r\n dropdownCtrl.dropdownMenuTemplateUrl = tplUrl;\r\n }\r\n\r\n if (!dropdownCtrl.dropdownMenu) {\r\n dropdownCtrl.dropdownMenu = element;\r\n }\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDropdownToggle', function() {\r\n return {\r\n require: '?^uibDropdown',\r\n link: function(scope, element, attrs, dropdownCtrl) {\r\n if (!dropdownCtrl) {\r\n return;\r\n }\r\n\r\n element.addClass('dropdown-toggle');\r\n\r\n dropdownCtrl.toggleElement = element;\r\n\r\n var toggleDropdown = function(event) {\r\n event.preventDefault();\r\n\r\n if (!element.hasClass('disabled') && !attrs.disabled) {\r\n scope.$apply(function() {\r\n dropdownCtrl.toggle();\r\n });\r\n }\r\n };\r\n\r\n element.on('click', toggleDropdown);\r\n\r\n // WAI-ARIA\r\n element.attr({ 'aria-haspopup': true, 'aria-expanded': false });\r\n scope.$watch(dropdownCtrl.isOpen, function(isOpen) {\r\n element.attr('aria-expanded', !!isOpen);\r\n });\r\n\r\n scope.$on('$destroy', function() {\r\n element.off('click', toggleDropdown);\r\n });\r\n }\r\n };\r\n});\r\n\r\nangular.module('ui.bootstrap.datepickerPopup', ['ui.bootstrap.datepicker', 'ui.bootstrap.position'])\r\n\r\n.value('$datepickerPopupLiteralWarning', true)\r\n\r\n.constant('uibDatepickerPopupConfig', {\r\n altInputFormats: [],\r\n appendToBody: false,\r\n clearText: 'Clear',\r\n closeOnDateSelection: true,\r\n closeText: 'Done',\r\n currentText: 'Today',\r\n datepickerPopup: 'yyyy-MM-dd',\r\n datepickerPopupTemplateUrl: 'uib/template/datepickerPopup/popup.html',\r\n datepickerTemplateUrl: 'uib/template/datepicker/datepicker.html',\r\n html5Types: {\r\n date: 'yyyy-MM-dd',\r\n 'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss',\r\n 'month': 'yyyy-MM'\r\n },\r\n onOpenFocus: true,\r\n showButtonBar: true,\r\n placement: 'auto bottom-left'\r\n})\r\n\r\n.controller('UibDatepickerPopupController', ['$scope', '$element', '$attrs', '$compile', '$log', '$parse', '$window', '$document', '$rootScope', '$uibPosition', 'dateFilter', 'uibDateParser', 'uibDatepickerPopupConfig', '$timeout', 'uibDatepickerConfig', '$datepickerPopupLiteralWarning',\r\nfunction($scope, $element, $attrs, $compile, $log, $parse, $window, $document, $rootScope, $position, dateFilter, dateParser, datepickerPopupConfig, $timeout, datepickerConfig, $datepickerPopupLiteralWarning) {\r\n var cache = {},\r\n isHtml5DateInput = false;\r\n var dateFormat, closeOnDateSelection, appendToBody, onOpenFocus,\r\n datepickerPopupTemplateUrl, datepickerTemplateUrl, popupEl, datepickerEl, scrollParentEl,\r\n ngModel, ngModelOptions, $popup, altInputFormats, watchListeners = [];\r\n\r\n this.init = function(_ngModel_) {\r\n ngModel = _ngModel_;\r\n ngModelOptions = extractOptions(ngModel);\r\n closeOnDateSelection = angular.isDefined($attrs.closeOnDateSelection) ?\r\n $scope.$parent.$eval($attrs.closeOnDateSelection) :\r\n datepickerPopupConfig.closeOnDateSelection;\r\n appendToBody = angular.isDefined($attrs.datepickerAppendToBody) ?\r\n $scope.$parent.$eval($attrs.datepickerAppendToBody) :\r\n datepickerPopupConfig.appendToBody;\r\n onOpenFocus = angular.isDefined($attrs.onOpenFocus) ?\r\n $scope.$parent.$eval($attrs.onOpenFocus) : datepickerPopupConfig.onOpenFocus;\r\n datepickerPopupTemplateUrl = angular.isDefined($attrs.datepickerPopupTemplateUrl) ?\r\n $attrs.datepickerPopupTemplateUrl :\r\n datepickerPopupConfig.datepickerPopupTemplateUrl;\r\n datepickerTemplateUrl = angular.isDefined($attrs.datepickerTemplateUrl) ?\r\n $attrs.datepickerTemplateUrl : datepickerPopupConfig.datepickerTemplateUrl;\r\n altInputFormats = angular.isDefined($attrs.altInputFormats) ?\r\n $scope.$parent.$eval($attrs.altInputFormats) :\r\n datepickerPopupConfig.altInputFormats;\r\n\r\n $scope.showButtonBar = angular.isDefined($attrs.showButtonBar) ?\r\n $scope.$parent.$eval($attrs.showButtonBar) :\r\n datepickerPopupConfig.showButtonBar;\r\n\r\n if (datepickerPopupConfig.html5Types[$attrs.type]) {\r\n dateFormat = datepickerPopupConfig.html5Types[$attrs.type];\r\n isHtml5DateInput = true;\r\n } else {\r\n dateFormat = $attrs.uibDatepickerPopup || datepickerPopupConfig.datepickerPopup;\r\n $attrs.$observe('uibDatepickerPopup', function(value, oldValue) {\r\n var newDateFormat = value || datepickerPopupConfig.datepickerPopup;\r\n // Invalidate the $modelValue to ensure that formatters re-run\r\n // FIXME: Refactor when PR is merged: https://github.com/angular/angular.js/pull/10764\r\n if (newDateFormat !== dateFormat) {\r\n dateFormat = newDateFormat;\r\n ngModel.$modelValue = null;\r\n\r\n if (!dateFormat) {\r\n throw new Error('uibDatepickerPopup must have a date format specified.');\r\n }\r\n }\r\n });\r\n }\r\n\r\n if (!dateFormat) {\r\n throw new Error('uibDatepickerPopup must have a date format specified.');\r\n }\r\n\r\n if (isHtml5DateInput && $attrs.uibDatepickerPopup) {\r\n throw new Error('HTML5 date input types do not support custom formats.');\r\n }\r\n\r\n // popup element used to display calendar\r\n popupEl = angular.element('
    ');\r\n\r\n popupEl.attr({\r\n 'ng-model': 'date',\r\n 'ng-change': 'dateSelection(date)',\r\n 'template-url': datepickerPopupTemplateUrl\r\n });\r\n\r\n // datepicker element\r\n datepickerEl = angular.element(popupEl.children()[0]);\r\n datepickerEl.attr('template-url', datepickerTemplateUrl);\r\n\r\n if (!$scope.datepickerOptions) {\r\n $scope.datepickerOptions = {};\r\n }\r\n\r\n if (isHtml5DateInput) {\r\n if ($attrs.type === 'month') {\r\n $scope.datepickerOptions.datepickerMode = 'month';\r\n $scope.datepickerOptions.minMode = 'month';\r\n }\r\n }\r\n\r\n datepickerEl.attr('datepicker-options', 'datepickerOptions');\r\n\r\n if (!isHtml5DateInput) {\r\n // Internal API to maintain the correct ng-invalid-[key] class\r\n ngModel.$$parserName = 'date';\r\n ngModel.$validators.date = validator;\r\n ngModel.$parsers.unshift(parseDate);\r\n ngModel.$formatters.push(function(value) {\r\n if (ngModel.$isEmpty(value)) {\r\n $scope.date = value;\r\n return value;\r\n }\r\n\r\n if (angular.isNumber(value)) {\r\n value = new Date(value);\r\n }\r\n\r\n $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\r\n\r\n return dateParser.filter($scope.date, dateFormat);\r\n });\r\n } else {\r\n ngModel.$formatters.push(function(value) {\r\n $scope.date = dateParser.fromTimezone(value, ngModelOptions.getOption('timezone'));\r\n return value;\r\n });\r\n }\r\n\r\n // Detect changes in the view from the text box\r\n ngModel.$viewChangeListeners.push(function() {\r\n $scope.date = parseDateString(ngModel.$viewValue);\r\n });\r\n\r\n $element.on('keydown', inputKeydownBind);\r\n\r\n $popup = $compile(popupEl)($scope);\r\n // Prevent jQuery cache memory leak (template is now redundant after linking)\r\n popupEl.remove();\r\n\r\n if (appendToBody) {\r\n $document.find('body').append($popup);\r\n } else {\r\n $element.after($popup);\r\n }\r\n\r\n $scope.$on('$destroy', function() {\r\n if ($scope.isOpen === true) {\r\n if (!$rootScope.$$phase) {\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n $popup.remove();\r\n $element.off('keydown', inputKeydownBind);\r\n $document.off('click', documentClickBind);\r\n if (scrollParentEl) {\r\n scrollParentEl.off('scroll', positionPopup);\r\n }\r\n angular.element($window).off('resize', positionPopup);\r\n\r\n //Clear all watch listeners on destroy\r\n while (watchListeners.length) {\r\n watchListeners.shift()();\r\n }\r\n });\r\n };\r\n\r\n $scope.getText = function(key) {\r\n return $scope[key + 'Text'] || datepickerPopupConfig[key + 'Text'];\r\n };\r\n\r\n $scope.isDisabled = function(date) {\r\n if (date === 'today') {\r\n date = dateParser.fromTimezone(new Date(), ngModelOptions.getOption('timezone'));\r\n }\r\n\r\n var dates = {};\r\n angular.forEach(['minDate', 'maxDate'], function(key) {\r\n if (!$scope.datepickerOptions[key]) {\r\n dates[key] = null;\r\n } else if (angular.isDate($scope.datepickerOptions[key])) {\r\n dates[key] = new Date($scope.datepickerOptions[key]);\r\n } else {\r\n if ($datepickerPopupLiteralWarning) {\r\n $log.warn('Literal date support has been deprecated, please switch to date object usage');\r\n }\r\n\r\n dates[key] = new Date(dateFilter($scope.datepickerOptions[key], 'medium'));\r\n }\r\n });\r\n\r\n return $scope.datepickerOptions &&\r\n dates.minDate && $scope.compare(date, dates.minDate) < 0 ||\r\n dates.maxDate && $scope.compare(date, dates.maxDate) > 0;\r\n };\r\n\r\n $scope.compare = function(date1, date2) {\r\n return new Date(date1.getFullYear(), date1.getMonth(), date1.getDate()) - new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n };\r\n\r\n // Inner change\r\n $scope.dateSelection = function(dt) {\r\n $scope.date = dt;\r\n var date = $scope.date ? dateParser.filter($scope.date, dateFormat) : null; // Setting to NULL is necessary for form validators to function\r\n $element.val(date);\r\n ngModel.$setViewValue(date);\r\n\r\n if (closeOnDateSelection) {\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n }\r\n };\r\n\r\n $scope.keydown = function(evt) {\r\n if (evt.which === 27) {\r\n evt.stopPropagation();\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n }\r\n };\r\n\r\n $scope.select = function(date, evt) {\r\n evt.stopPropagation();\r\n\r\n if (date === 'today') {\r\n var today = new Date();\r\n if (angular.isDate($scope.date)) {\r\n date = new Date($scope.date);\r\n date.setFullYear(today.getFullYear(), today.getMonth(), today.getDate());\r\n } else {\r\n date = dateParser.fromTimezone(today, ngModelOptions.getOption('timezone'));\r\n date.setHours(0, 0, 0, 0);\r\n }\r\n }\r\n $scope.dateSelection(date);\r\n };\r\n\r\n $scope.close = function(evt) {\r\n evt.stopPropagation();\r\n\r\n $scope.isOpen = false;\r\n $element[0].focus();\r\n };\r\n\r\n $scope.disabled = angular.isDefined($attrs.disabled) || false;\r\n if ($attrs.ngDisabled) {\r\n watchListeners.push($scope.$parent.$watch($parse($attrs.ngDisabled), function(disabled) {\r\n $scope.disabled = disabled;\r\n }));\r\n }\r\n\r\n $scope.$watch('isOpen', function(value) {\r\n if (value) {\r\n if (!$scope.disabled) {\r\n $timeout(function() {\r\n positionPopup();\r\n\r\n if (onOpenFocus) {\r\n $scope.$broadcast('uib:datepicker.focus');\r\n }\r\n\r\n $document.on('click', documentClickBind);\r\n\r\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\r\n if (appendToBody || $position.parsePlacement(placement)[2]) {\r\n scrollParentEl = scrollParentEl || angular.element($position.scrollParent($element));\r\n if (scrollParentEl) {\r\n scrollParentEl.on('scroll', positionPopup);\r\n }\r\n } else {\r\n scrollParentEl = null;\r\n }\r\n\r\n angular.element($window).on('resize', positionPopup);\r\n }, 0, false);\r\n } else {\r\n $scope.isOpen = false;\r\n }\r\n } else {\r\n $document.off('click', documentClickBind);\r\n if (scrollParentEl) {\r\n scrollParentEl.off('scroll', positionPopup);\r\n }\r\n angular.element($window).off('resize', positionPopup);\r\n }\r\n });\r\n\r\n function cameltoDash(string) {\r\n return string.replace(/([A-Z])/g, function($1) { return '-' + $1.toLowerCase(); });\r\n }\r\n\r\n function parseDateString(viewValue) {\r\n var date = dateParser.parse(viewValue, dateFormat, $scope.date);\r\n if (isNaN(date)) {\r\n for (var i = 0; i < altInputFormats.length; i++) {\r\n date = dateParser.parse(viewValue, altInputFormats[i], $scope.date);\r\n if (!isNaN(date)) {\r\n return date;\r\n }\r\n }\r\n }\r\n return date;\r\n }\r\n\r\n function parseDate(viewValue) {\r\n if (angular.isNumber(viewValue)) {\r\n // presumably timestamp to date object\r\n viewValue = new Date(viewValue);\r\n }\r\n\r\n if (!viewValue) {\r\n return null;\r\n }\r\n\r\n if (angular.isDate(viewValue) && !isNaN(viewValue)) {\r\n return viewValue;\r\n }\r\n\r\n if (angular.isString(viewValue)) {\r\n var date = parseDateString(viewValue);\r\n if (!isNaN(date)) {\r\n return dateParser.toTimezone(date, ngModelOptions.getOption('timezone'));\r\n }\r\n }\r\n\r\n return ngModelOptions.getOption('allowInvalid') ? viewValue : undefined;\r\n }\r\n\r\n function validator(modelValue, viewValue) {\r\n var value = modelValue || viewValue;\r\n\r\n if (!$attrs.ngRequired && !value) {\r\n return true;\r\n }\r\n\r\n if (angular.isNumber(value)) {\r\n value = new Date(value);\r\n }\r\n\r\n if (!value) {\r\n return true;\r\n }\r\n\r\n if (angular.isDate(value) && !isNaN(value)) {\r\n return true;\r\n }\r\n\r\n if (angular.isString(value)) {\r\n return !isNaN(parseDateString(value));\r\n }\r\n\r\n return false;\r\n }\r\n\r\n function documentClickBind(event) {\r\n if (!$scope.isOpen && $scope.disabled) {\r\n return;\r\n }\r\n\r\n var popup = $popup[0];\r\n var dpContainsTarget = $element[0].contains(event.target);\r\n // The popup node may not be an element node\r\n // In some browsers (IE) only element nodes have the 'contains' function\r\n var popupContainsTarget = popup.contains !== undefined && popup.contains(event.target);\r\n if ($scope.isOpen && !(dpContainsTarget || popupContainsTarget)) {\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n }\r\n }\r\n\r\n function inputKeydownBind(evt) {\r\n if (evt.which === 27 && $scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.$apply(function() {\r\n $scope.isOpen = false;\r\n });\r\n $element[0].focus();\r\n } else if (evt.which === 40 && !$scope.isOpen) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $scope.$apply(function() {\r\n $scope.isOpen = true;\r\n });\r\n }\r\n }\r\n\r\n function positionPopup() {\r\n if ($scope.isOpen) {\r\n var dpElement = angular.element($popup[0].querySelector('.uib-datepicker-popup'));\r\n var placement = $attrs.popupPlacement ? $attrs.popupPlacement : datepickerPopupConfig.placement;\r\n // hack\r\n /*var position = $position.positionElements($element, dpElement, placement, appendToBody);*/\r\n var position = $position.positionElements($element.parent(), dpElement, placement, appendToBody);\r\n // hack end\r\n dpElement.css({top: position.top + 'px', left: position.left + 'px'});\r\n if (dpElement.hasClass('uib-position-measure')) {\r\n dpElement.removeClass('uib-position-measure');\r\n }\r\n }\r\n }\r\n\r\n function extractOptions(ngModelCtrl) {\r\n var ngModelOptions;\r\n\r\n if (angular.version.minor < 6) { // in angular < 1.6 $options could be missing\r\n // guarantee a value\r\n ngModelOptions = angular.isObject(ngModelCtrl.$options) ?\r\n ngModelCtrl.$options :\r\n {\r\n timezone: null\r\n };\r\n\r\n // mimic 1.6+ api\r\n ngModelOptions.getOption = function (key) {\r\n return ngModelOptions[key];\r\n };\r\n } else { // in angular >=1.6 $options is always present\r\n ngModelOptions = ngModelCtrl.$options;\r\n }\r\n\r\n return ngModelOptions;\r\n }\r\n\r\n $scope.$on('uib:datepicker.mode', function() {\r\n $timeout(positionPopup, 0, false);\r\n });\r\n}])\r\n\r\n.directive('uibDatepickerPopup', function() {\r\n return {\r\n require: ['ngModel', 'uibDatepickerPopup'],\r\n controller: 'UibDatepickerPopupController',\r\n scope: {\r\n datepickerOptions: '=?',\r\n isOpen: '=?',\r\n currentText: '@',\r\n clearText: '@',\r\n closeText: '@'\r\n },\r\n link: function(scope, element, attrs, ctrls) {\r\n var ngModel = ctrls[0],\r\n ctrl = ctrls[1];\r\n\r\n ctrl.init(ngModel);\r\n }\r\n };\r\n})\r\n\r\n.directive('uibDatepickerPopupWrap', function() {\r\n return {\r\n restrict: 'A',\r\n transclude: true,\r\n templateUrl: function(element, attrs) {\r\n return attrs.templateUrl || 'uib/template/datepickerPopup/popup.html';\r\n }\r\n };\r\n});\r\n\r\nangular.module(\"uib/template/accordion/accordion-group.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/accordion/accordion-group.html\",\r\n \"
    \\n\" +\r\n \"

    \\n\" +\r\n \" {{heading}}\\n\" +\r\n \"

    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/accordion/accordion.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/accordion/accordion.html\",\r\n \"
    \");\r\n}]);\r\n\r\nangular.module(\"uib/template/alert/alert.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/alert/alert.html\",\r\n \"\\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/datepicker.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/datepicker.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/day.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/day.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \"
    {{::label.abbr}}
    {{ weekNumbers[$index] }}\\n\" +\r\n \" \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepicker/month.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/month.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\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\r\nangular.module(\"uib/template/datepicker/year.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepicker/year.html\",\r\n \"\\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\r\n \" \\n\" +\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\r\nangular.module(\"uib/template/modal/window.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/modal/window.html\",\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/pagination/pagination.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/pagination/pagination.html\",\r\n \"
  • {{::getText('first')}}
  • \\n\" +\r\n \"
  • {{::getText('previous')}}
  • \\n\" +\r\n \"
  • {{page.text}}
  • \\n\" +\r\n \"
  • {{::getText('next')}}
  • \\n\" +\r\n \"
  • {{::getText('last')}}
  • \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-html-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-html-popup.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-popup.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/tooltip/tooltip-template-popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/tooltip/tooltip-template-popup.html\",\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover-html.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover-html.html\",\r\n \"
    \\n\" +\r\n \"\\n\" +\r\n \"
    \\n\" +\r\n \"

    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover-template.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover-template.html\",\r\n \"
    \\n\" +\r\n \"\\n\" +\r\n \"
    \\n\" +\r\n \"

    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/popover/popover.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/popover/popover.html\",\r\n \"
    \\n\" +\r\n \"\\n\" +\r\n \"
    \\n\" +\r\n \"

    \\n\" +\r\n \"
    \\n\" +\r\n \"
    \\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.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\r\nangular.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\r\nangular.module(\"uib/template/rating/rating.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/rating/rating.html\",\r\n \"\\n\" +\r\n \" ({{ $index < value ? '*' : ' ' }})\\n\" +\r\n \" \\n\" +\r\n \"\\n\" +\r\n \"\");\r\n}]);\r\n\r\nangular.module(\"uib/template/datepickerPopup/popup.html\", []).run([\"$templateCache\", function($templateCache) {\r\n $templateCache.put(\"uib/template/datepickerPopup/popup.html\",\r\n \"
        \\n\" +\r\n \"
      • \\n\" +\r\n \"
      • \\n\" +\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}]);","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('module.modal-controllers', [])\r\n\r\n /* @ngInject */\r\n .controller('modalCtrl', [\"data\", \"device\", \"options\", \"$scope\", function (data, device, options, $scope) {\r\n var 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 = function () {\r\n ctrl.showLoader = false;\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalSendByEMailCtrl', [\"data\", \"device\", \"options\", \"HttpService\", \"AppService\", \"ModalService\", \"toastr\", function (data, device, options, HttpService, AppService, ModalService, toastr) {\r\n var 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 = function () {\r\n ctrl.data.Recipients.push({});\r\n };\r\n ctrl.removeRecipient = function (index) {\r\n ctrl.data.Recipients.splice(index, 1);\r\n };\r\n\r\n AppService.getParams()\r\n .then(function (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(function (error) {\r\n console.error(error);\r\n });\r\n\r\n ctrl.submit = function () {\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(function (response) {\r\n AppService.getTranslate()\r\n .then(function (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: '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: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\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 /* @ngInject */\r\n .controller('modalAvailabilityAlertCtrl', [\"data\", \"device\", \"options\", \"ModalService\", \"AppService\", \"HttpService\", \"toastr\", function (data, device, options, ModalService, AppService, HttpService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.data.Email = '';\r\n\r\n var messageTitle,\r\n messageText;\r\n\r\n ctrl.successMessage = function (title, text) {\r\n messageTitle = title;\r\n messageText = text;\r\n };\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n HttpService.post({\r\n url: '/Product/AvailabilityAlert',\r\n data: ctrl.data\r\n })\r\n .then(function (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: 'toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'toast_message.tpl'\r\n }\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalQuickViewCtrl', [\"data\", \"device\", \"options\", \"$scope\", function (data, device, options, $scope) {\r\n var 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 = function () {\r\n ctrl.showLoader = false;\r\n setTimeout(function () {\r\n $('.modal-quick-view .modal-body').removeAttr('style');\r\n });\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalAddToCartCtrl', [\"data\", \"device\", \"options\", \"$scope\", function (data, device, options, $scope) {\r\n var 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 // Netwave\r\n //setTimeout(function () {\r\n // window.wsb.reset();\r\n // window.wsbq.push(['setPageInformations', 'GLOBAL']);\r\n // window.wsbq.push(['setPageKey', 'CART_CONFIRMATION']);\r\n // window.wsb.process();\r\n //});\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalNegociezPrixCtrl', [\"data\", \"device\", \"options\", \"$scope\", \"HttpService\", \"AppService\", \"RoutesService\", \"ModalService\", \"toastr\", function (data, device, options, $scope, HttpService, AppService, RoutesService, ModalService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.data.Attachments = [];\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.data.Object = 'Contact Négociez le prix';\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.Email = params.Visitor.Email;\r\n ctrl.data.FirstName = params.Visitor.FirstName;\r\n ctrl.data.LastName = params.Visitor.LastName;\r\n ctrl.data.Phone = params.Visitor.Phone;\r\n ctrl.data.MobilePhone = params.Visitor.MobilePhone;\r\n }\r\n getProduct(ctrl.data.idProduct)\r\n .then(function (response) {\r\n if (!response.products || !response.products.length) return;\r\n ctrl.Products = [response.products[0]];\r\n ctrl.data.Message = 'NEGOCIEZ LE PRIX : ' + ctrl.Products[0].AbsoluteURL;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n ctrl.dzOptions = {\r\n paramName: 'files',\r\n acceptedFiles: 'image/jpeg, image/jpg, image/png, image/gif, .pdf, .doc, .docx, .xls, .xlsx, .zip',\r\n uploadMultiple: true,\r\n renameFilename: function (name) {\r\n return new Date().getTime() + '_!_' + name;\r\n }\r\n };\r\n\r\n ctrl.dzCallbacks = {\r\n successmultiple: function (files) {\r\n _.each(files, function (file) {\r\n ctrl.data.Attachments.push({\r\n Name: file.name,\r\n ServerName: file.serverName\r\n });\r\n });\r\n },\r\n removedfile: function (file) {\r\n _.remove(ctrl.data.Attachments, { Name: file.Name });\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('ContactExclu'),\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', translate.messages.MessageSent, {\r\n allowHtml: true,\r\n extraData: {\r\n template: '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: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n function getProduct(idProduct) {\r\n var products = [String(idProduct)];\r\n return HttpService.post({\r\n url: '/GetProducts',\r\n data: {\r\n ProductsIds: products\r\n }\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n }\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalCallBackCtrl', [\"data\", \"device\", \"options\", \"$scope\", \"HttpService\", \"AppService\", \"RoutesService\", \"ModalService\", \"toastr\", function (data, device, options, $scope, HttpService, AppService, RoutesService, ModalService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.data.submit = false;\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 if (ctrl.data.idProduct) {\r\n getProduct(ctrl.data.idProduct)\r\n .then(function (response) {\r\n if (!response.products || !response.products.length) return;\r\n ctrl.Products = [response.products[0]];\r\n ctrl.data.Message = ctrl.Products[0].AbsoluteURL;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n\r\n function getProduct(idProduct) {\r\n var products = [String(idProduct)];\r\n return HttpService.post({\r\n url: '/GetProducts',\r\n data: {\r\n ProductsIds: products\r\n }\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\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 ctrl.data.submit = true;\r\n ctrl.data.valid = true;\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n ctrl.data.submit = true;\r\n ctrl.data.valid = false;\r\n ctrl.loading = false;\r\n });\r\n };\r\n\r\n }])\r\n\r\n /* @ngInject */\r\n .controller('modalExcluCtrl', [\"data\", \"device\", \"options\", \"$scope\", \"HttpService\", \"AppService\", \"RoutesService\", \"ModalService\", \"toastr\", function (data, device, options, $scope, HttpService, AppService, RoutesService, ModalService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.data.Attachments = [];\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.data.Object = 'Contact Exclusivité Magasin';\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.Email = params.Visitor.Email;\r\n ctrl.data.FirstName = params.Visitor.FirstName;\r\n ctrl.data.LastName = params.Visitor.LastName;\r\n ctrl.data.Phone = params.Visitor.Phone;\r\n ctrl.data.MobilePhone = params.Visitor.MobilePhone;\r\n }\r\n getProduct(ctrl.data.idProduct)\r\n .then(function (response) {\r\n if (!response.products || !response.products.length) return;\r\n ctrl.Products = [response.products[0]];\r\n ctrl.data.Message = 'VENTE EXCLUSIVE : ' + ctrl.Products[0].AbsoluteURL;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n ctrl.dzOptions = {\r\n paramName: 'files',\r\n acceptedFiles: 'image/jpeg, image/jpg, image/png, image/gif, .pdf, .doc, .docx, .xls, .xlsx, .zip',\r\n uploadMultiple: true,\r\n renameFilename: function (name) {\r\n return new Date().getTime() + '_!_' + name;\r\n }\r\n };\r\n\r\n ctrl.dzCallbacks = {\r\n successmultiple: function (files) {\r\n _.each(files, function (file) {\r\n ctrl.data.Attachments.push({\r\n Name: file.name,\r\n ServerName: file.serverName\r\n });\r\n });\r\n },\r\n removedfile: function (file) {\r\n _.remove(ctrl.data.Attachments, { Name: file.Name });\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('ContactExclu'),\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', translate.messages.MessageSent, {\r\n allowHtml: true,\r\n extraData: {\r\n template: '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: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n };\r\n\r\n function getProduct(idProduct) {\r\n var products = [String(idProduct)];\r\n return HttpService.post({\r\n url: '/GetProducts',\r\n data: {\r\n ProductsIds: products\r\n }\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n }\r\n\r\n }])\r\n\r\n /* @nginject */\r\n .controller('modalCliquezNegocierFormulaireCtrl', [\"data\", \"device\", \"options\", \"$scope\", \"HttpService\", \"AppService\", \"RoutesService\", \"ModalService\", \"toastr\", function (data, device, options, $scope, HttpService, AppService, RoutesService, ModalService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.data.Attachments = [];\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.data.Object = 'Cliquez pour Négocier - Formulaire';\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.FirstName = params.Visitor.FirstName;\r\n ctrl.data.LastName = params.Visitor.LastName;\r\n ctrl.data.MobilePhone = params.Visitor.MobilePhone;\r\n ctrl.data.CountryCode = params.Visitor.Country.CountryCode;\r\n }\r\n getProduct(ctrl.data.idProduct)\r\n .then(function (response) {\r\n if (!response.products || !response.products.length) return;\r\n ctrl.Products = [response.products[0]];\r\n ctrl.data.Message = ctrl.Products[0].AbsoluteURL;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n function getProduct(idProduct) {\r\n var products = [String(idProduct)];\r\n return HttpService.post({\r\n url: '/GetProducts',\r\n data: {\r\n ProductsIds: products\r\n }\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n }\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n ctrl.data.Template = \"contactprixnegocierformulaire\";\r\n ctrl.data.MessageTypeKey = \"NEGO_MAIL_FORMULAIRE\";\r\n\r\n HttpService.post({\r\n url: '/' + RoutesService.getUrlByName('ContactNegociezPrixFormulaire'),\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', translate.messages.MessageSentContactPrixNegocier, {\r\n allowHtml: true,\r\n extraData: {\r\n template: '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: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }])\r\n /* @nginject */\r\n .controller('modalCliquezNegocierCtrl', [\"data\", \"device\", \"options\", \"$scope\", \"HttpService\", \"AppService\", \"RoutesService\", \"ModalService\", \"toastr\", function (data, device, options, $scope, HttpService, AppService, RoutesService, ModalService, toastr) {\r\n var ctrl = this;\r\n ctrl.data = data;\r\n ctrl.data.Attachments = [];\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.data.Object = 'Cliquez pour Négocier - Réponse 5 minutes';\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.Email = params.Visitor.Email;\r\n }\r\n getProduct(ctrl.data.idProduct)\r\n .then(function (response) {\r\n if (!response.products || !response.products.length) return;\r\n ctrl.Products = [response.products[0]];\r\n ctrl.data.Message = ctrl.Products[0].AbsoluteURL;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n\r\n function getProduct(idProduct) {\r\n var products = [String(idProduct)];\r\n return HttpService.post({\r\n url: '/GetProducts',\r\n data: {\r\n ProductsIds: products\r\n }\r\n })\r\n .then(function (response) {\r\n return response;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n }\r\n\r\n ctrl.submit = function () {\r\n ctrl.loading = true;\r\n ctrl.data.Template = \"contactprixnegocier\";\r\n ctrl.data.MessageTypeKey = \"NEGO_MAIL\";\r\n\r\n HttpService.post({\r\n url: '/' + RoutesService.getUrlByName('ContactNegociezPrix'),\r\n data: ctrl.data\r\n })\r\n .then(function (response) {\r\n AppService.getTranslate()\r\n .then(function (translate) {\r\n if (response.status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', translate.messages.MessageSent, {\r\n allowHtml: true,\r\n extraData: {\r\n template: '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: 'toast_message.tpl'\r\n }\r\n });\r\n }\r\n ctrl.loading = false;\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n });\r\n }\r\n }]);\r\n})();\r\n","(function () {\r\n 'use strict';\r\n angular\r\n .module('module.cdn', [])\r\n\r\n /* @ngInject */\r\n .factory('CdnService', [\"AppService\", function (AppService) {\r\n this.get = function (id, size, designation, extension, quality, absolute) {\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 return AppService.getParams()\r\n .then(function (params) {\r\n var split1 = params.Localization.UrlImages.substr(0, params.Localization.UrlImages.indexOf('.'));\r\n var split2 = params.Localization.UrlImages.substr(params.Localization.UrlImages.indexOf('.') + 1);\r\n var url = split1 === '' ? split2 : (split1 + id % 5 + '.' + split2);\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 url = url + '/' + id + '/' + size + '/' + _.kebabCase(_.deburr(designation)) + '.' + extension;\r\n if (quality !== 80) {\r\n url += '?quality=' + quality;\r\n }\r\n\r\n return url;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n };\r\n\r\n return {\r\n get: this.get\r\n };\r\n }])\r\n\r\n /* @ngInject */\r\n .directive('cdn', [\"CdnService\", 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 cdnResponsiveSize: '@?',\r\n cdnResponsiveSizes: ' 0) {\r\n var element = entry.target;\r\n observer.unobserve(element);\r\n\r\n loadElement(element);\r\n }\r\n });\r\n }, {\r\n rootMargin: '200px 0%'\r\n });\r\n\r\n function loadElement(element) {\r\n if (element.tagName.toLowerCase() === 'img') {\r\n var 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(function (source) {\r\n return yallFlipDataAttrs(source);\r\n });\r\n yallFlipDataAttrs(element);\r\n return;\r\n }\r\n\r\n var newImageElement = new Image();\r\n if (env.asyncDecodeSupport === true && env.replaceWithSupport === true) {\r\n newImageElement.src = element.getAttribute('lazy');\r\n\r\n newImageElement.decode().then(function () {\r\n for (var i = 0; i < element.attributes.length; i++) {\r\n var attrName = element.attributes[i].name;\r\n var attrValue = element.attributes[i].value;\r\n\r\n if (env.ignoredImgAttributes.indexOf(attrName) === -1) {\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 }).catch(function () {\r\n yallFlipDataAttrs(element);\r\n });\r\n } else {\r\n yallFlipDataAttrs(element);\r\n }\r\n } else if (element.tagName.toLowerCase() === 'iframe') { // Lazy load