{"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.equal-heights.js","App/js/plugins/lodash.custom.min.js","App/js/plugins/md5.min.js","App/js/plugins/owl.carousel.js","App/js/plugins/spin.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.addtoquotation-advanced.js","App/js/components/component.addtowishlist.js","App/js/components/component.delete-cart-item.js","App/js/components/component.input-quantity.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.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.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/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-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.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.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.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.filters.js","App/Modules/Category/js/module.category.js","App/Modules/Form/js/form.js","App/Modules/Index/js/directive.index.js","App/Modules/PasswordRecovery/js/password-recovery.js","App/Modules/Payment/js/payment-error.js","App/Modules/Product/js/component.customization.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/newsletter.js","App/Modules/Shared/Menu/js/nav.directive.js","App/Modules/Stores/js/store-detail.js","App/Modules/Stores/js/stores-service.js","App/Modules/Stores/js/stores.js","App/Modules/WishList/js/whishlist.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","fn","equalHeights","h","$elems","css","max","outerHeight","jQuery","set","add","g","Array","b","ce","_","j","A","has","S","lo","test","size","forEach","L","U","C","co","lastIndex","D","Io","R","P","B","clear","V","X","on","__data__","an","gn","Di","Ri","Fi","Ni","x","String","Ro","Mt","push","yn","Or","xn","bn","dn","_n","wi","Ko","configurable","enumerable","writable","mn","ve","ge","ye","Lr","constructor","index","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","source","hu","exec","Pe","Me","di","Pt","get","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","apply","Xn","nt","tt","Rr","_i","we","Si","Br","ot","slice","Wo","copy","At","ne","Jr","replace","io","iteratee","ee","Ut","map","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","toLowerCase","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","parseInt","_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","floor","Xo","getOwnPropertySymbols","ni","isBuffer","min","ui","Date","now","oi","random","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","filter","keyBy","keysIn","memoize","merge","negate","property","pull","pullAll","pullAllBy","reject","Jn","sortBy","take","throttle","toPlainObject","uniqBy","rt","values","words","camelCase","capitalize","cloneDeep","deburr","eq","find","findIndex","hasIn","identity","includes","inRange","isArguments","isArrayLike","isArrayLikeObject","isEmpty","isEqual","isFunction","isInteger","isLength","isObject","isObjectLike","isPlainObject","isString","isSymbol","kebabCase","last","stubArray","stubFalse","noop","reduce","some","toFinite","toInteger","toNumber","trim","z","E","unescape","upperFirst","VERSION","charCodeAt","Int32Array","I","md5","fromCharCode","undefined","Owl","element","settings","extend","Defaults","$element","_handlers","_plugins","_supress","_current","_speed","_coordinates","_breakpoint","_width","_items","_clones","_mergers","_widths","_invalidated","_pipe","_drag","time","target","pointer","stage","current","direction","_states","tags","initializing","animating","dragging","proxy","handler","Plugins","key","plugin","Workers","priority","worker","run","setup","initialize","items","loop","center","rewind","checkVisibility","mouseDrag","touchDrag","pullDrag","freeDrag","margin","stagePadding","mergeFit","autoWidth","startPosition","rtl","smartSpeed","fluidSpeed","dragEndSpeed","responsive","responsiveRefreshRate","responsiveBaseElement","fallbackEasing","slideTransition","info","nestedItemSelector","itemElement","stageElement","refreshClass","loadedClass","loadingClass","rtlClass","responsiveClass","dragClass","itemClass","stageClass","stageOuterClass","grabClass","Width","Default","Inner","Outer","Type","Event","State","width","relative","$stage","children","grid","margin-left","margin-right","iterator","widths","clones","view","ceil","repeat","append","prepend","normalize","outerHTML","addClass","appendTo","prependTo","previous","coordinates","padding","padding-left","padding-right","removeAttr","minimum","maximum","reset","animate","inner","outer","begin","matches","op","removeClass","initializeStage","class","wrap","parent","initializeItems","$items","item","refresh","not","isVisible","invalidate","imgs","nestedSelector","enter","trigger","toggleClass","is","preloadAutoWidthImages","registerEventHandlers","leave","viewport","overwrites","breakpoint","Number","attr","optionsLogic","prepare","event","content","data","update","all","grep","dimension","onThrottledResize","resizeTimer","onResize","isDefaultPrevented","support","transition","onTransitionEnd","onDragStart","onDragEnd","which","transform","position","left","top","stop","type","speed","getTime","one","delta","onDragMove","preventDefault","off","closest","coordinate","transform3d","state","suppress","release","isNumeric","reciprocalItemsWidth","elementWidth","mergers","odd","even","multiplier","newPosition","duration","from","to","factor","revert","distance","next","prev","stopPropagation","srcElement","originalTarget","innerWidth","documentElement","clientWidth","empty","addBack","after","before","images","Image","src","destroy","unwrap","contents","removeData","listener","capture","attachEvent","detachEvent","namespace","status","count","relatedTarget","onTrigger","register","concat","object","special","owl","_default","tag","inArray","events","originalEvent","touches","changedTouches","pageX","pageY","number","first","second","owlCarousel","option","args","$this","Constructor","Zepto","AutoRefresh","carousel","_core","_interval","_visible","initialized.owl.carousel","autoRefresh","watch","autoRefreshInterval","setInterval","clearInterval","getOwnPropertyNames","Lazy","_loaded","initialized.owl.carousel change.owl.carousel resized.owl.carousel","lazyLoad","load","lazyLoadEager","$item","$elements","image","url","devicePixelRatio","onload","background-image","opacity","handlers","AutoHeight","_previousHeight","initialized.owl.carousel refreshed.owl.carousel","autoHeight","changed.owl.carousel","loaded.owl.lazy","_intervalId","refThis","resize","autoHeightClass","lazyLoadEnabled","visible","toArray","heights","maxheight","height","Video","_videos","_playing","resize.owl.carousel","video","isInFullScreen","refreshed.owl.carousel","prepared.owl.carousel","fetch","play","videoHeight","videoWidth","id","thumbnail","tnLink","path","dimensions","customTn","srcType","lazyClass","style","ajax","jsonp","dataType","success","thumbnail_large","framegrab_url","html","insertAfter","fullscreenElement","mozFullScreenElement","webkitFullscreenElement","hasClass","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","_call","_time","_timeout","_paused","autoplay","play.owl.autoplay","stop.owl.autoplay","mouseover.owl.autoplay","autoplayHoverPause","pause","mouseleave.owl.autoplay","touchstart.owl.core","touchend.owl.core","autoplayTimeout","autoplaySpeed","_next","round","read","hidden","elapsed","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","Spinner","useCssAnimations","sheet","animations","createEl","el","ins","addAnimation","alpha","trail","lines","pre","insertRule","cssRules","vendor","pp","def","defaults","radius","scale","corners","color","rotate","fps","zIndex","className","shadow","hwaccel","opts","spin","insertBefore","firstChild","setAttribute","ostep","astep","anim","parentNode","removeChild","seg","idx","fill","background","boxShadow","transformOrigin","borderRadius","val","childNodes","head","styleSheet","probe","behavior","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","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","delay","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","callback","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","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","entry","setProperty","removeProperty","onDone","onAnimationProgress","animationTimerData","timer","complete","ev","timeStamp","$manualTimeStamp","elapsedTime","playPause","playAnimation","arr","maxStagger","triggerAnimationStart","getAttribute","easing","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","body","rootNode","rootBodyElement","contains","animationDetails","anchors","fromAnimation","prepareRegularAnimation","toAnimation","anchorAnimations","anchor","animator","outAnchor","inAnchor","clone","cloneNode","startingClasses","filterCssClasses","getClassVal","animatorIn","animatorOut","calculateAnchorStyles","prepareInAnimation","startingAnimator","currentAnimation","done","coords","getBoundingClientRect","scrollTop","scrollLeft","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","entries","eventType","pin","parentElement","originalElement","runInNextPostDigestOrNow","postDigestCalled","documentHidden","skipAnimations","existingAnimation","hasExistingAnimation","animateChildren","bodyNodeDetected","nodeName","rootNodeDetected","parentAnimationDetected","elementDisabled","parentHost","details","parentNodeDisabled","areAnimationsAllowed","notifyProgress","querySelectorAll","child","skipAnimationFlag","cancelAnimationFlag","joinAnimationFlag","isValidAnimation","clearElementAnimationState","counter","markElementAnimationState","animationCancelled","realRunner","targetParentNode","targetNode","callbacks","progress","queueAnimation","bool","argCount","removeAttribute","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","queue","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","shift","provider","KEY","parentCounter","parts","isValid","total","routeToRegExp","pattern","slash","optional","star","ignoreTrailingSlashes","regexp","caseInsensitiveMatch","isEagerInstantiationEnabled","ngRouteModule","inherit","extra","routes","when","route","routeCopy","dst","shallowCopy","reloadOnUrl","reloadOnSearch","originalPath","redirectPath","redirectTo","otherwise","params","eagerInstantiationEnabled","$location","$routeParams","$q","$sce","$browser","preparedRoute","preparedRouteIsUpdateOnly","forceReload","$route","reload","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","response","$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","config","$compileProvider","Environment","commentDirectivesEnabled","cssClassDirectivesEnabled","debugInfoEnabled","lazyConfigProvider","setOptions","errorClass","successClass","usSpinnerConfigProvider","setDefaults","setTheme","setDelay","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","component","productCtrl","quotationCtrl","bindings","isProductButton","isCartButton","isQuotationButton","idQuotation","isModalButton","modalItem","action","btnClass","idLine","commentLine","isPrimary","addToCartActive","allowAddToCart","productQuantity","step","price","designation","img","titleAdd","titleAlert","titleDetail","titleDeleteOk","titleResultOk","titleModifyOk","tooltip","modalCtrl","LoadService","$onInit","js","getService","comparatorCtrl","isProductDetail","titleBtn","btnTooltip","isDilicom","isLogged","titleTxt","tooltipAdd","tooltipChoice","ModalService","IsLogged","quotationConnect","addToQuotation","redirect","loading","show","idProduct","toastMessage","decodeURI","redirectUrl","windowClass","modalTitle","isFromQuotation","AccountService","QuotationService","toastr","loadQuotations","getQuotations","quotations","results","selectedQuotation","selectpicker","product","links","getLinks","quotation","newQuotationName","errors","TryLater","ErrorHasOccurred","allowHtml","extraData","titleRemove","tooltipYet","quantity","fieldTabindex","keyEnter","WindowEventsService","lastPos","active","listen","sc","pageYOffset","$apply","innerHeight","_mobile","init","SelectpickerService","ngModel","unwatch","$parent","removeParentIfEmpty","onBodyClick","isOpen","clickMenu","scroll","showMenu","hideMenu","ctrlKey","altKey","isMenuCollapse","toggleMenuCollapse","keyCode","flip","flipped","toggle","direct","inter","ntime","RoutesService","tplTranslate","getCart","hasCart","HasCart","Cart","Products","cartLink","getUrlByName","showTTCPrice","Visitor","CardType","ShowTTCPrice","line","Quantity","emptyCart","deleteLine","IDLine","Product","Designation","IDPicture","submit","post","messages","ClearCartOK","title","click","fromJson","IDProduct","Query","query","Id","Index","IsDilicom","BarCode","pPlayer","youtubeUrl","getYouTubeIdFromUrl","youtubeVideoId","adapter","showinfo","features","resizeVideo","afterInit","showLoader","$mainVideo","VideoPlayerService","menu","addActive","noZoomDirective","changeViewport","theme","label","icon","ngRequired","$wrapper","optRequired","inputClass","$label","onInputChange","required","placeholder","$parse","ngModelInit","text","assign","discountFilter","loc","Localization","DiscountHTMLFormat","DiscountFormat","DiscountDecimalSeparator","DiscountThousandSeparator","getDiscountFilter","$stateful","reg","num","priceFilter","prices","ttc","PriceHTMLFormatVATincluded","PriceHTMLFormatVATexcluded","TTCPrice","HTPrice","TTCAmount","HTAmount","TTCDiscountedPrice","HTDiscountedPrice","TTCTotalPrice","HTTotalPrice","strMontant","PriceFormat","separatorIndex","PriceDecimalSeparator","PriceThousandSeparator","Currency","ISOCode","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","zoom","lat","lng","mapTypeId","MapTypeId","ROADMAP","angulargmUtils","getEventHandlers","gmInfoWindowOptions","model","gmInfoWindow","infoWindow","InfoWindow","addListener","validateLatLng","latLngLiteralEqual","gmCenter","gmZoom","gmBounds","gmMapTypeId","gmMapOptions","gmMapId","bounds","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","promise","setMarker","newMarker","clearMarkers","setMap","removeMap","_formatEventName","uppercasePluralType","elementOptions","checkRequiredAttributes","updateElements","objects","objectCache","optionsFn","orphaned","getElement","$id","updateElement","addElement","context","major","minor","forEachElementInScope","removeElement","eventObj","ids","bind","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","div","getDiv","replaceWith","_map","_initDragListeners","_destroy","_listeners","removeListener","types","_elements","scopeIds","_getElements","scopeId","streetView","getStreetView","getVisible","setVisible","addListenerOnce","_newElement","hasElement","elements","removed","forEachElement","allElements","accumulator","mapDiv","defineProperties","writeable","getCenter","panTo","getZoom","setZoom","getBounds","fitBounds","getMapTypeId","setMapTypeId","smoothScroll","callbackBefore","callbackAfter","getElementById","containerId","containerPresent","getScrollLocation","percentage","scrollHeight","internalHeight","currentLocation","startLocation","endLocation","location","offsetParent","offsetTop","getEndLocation","timeLapsed","runAnimation","getEasingPattern","scrollTo","clientHeight","scrollheight","$elem","$attrs","scrollIf","exprHandler","targetElement","matchMedia","DefaultStickyStackName","documentEl","stacks","stackName","stickyZIndex","stack","$stack","sticky","range","removeTop","bottom","computedHeight","heightAt","at","stick","atAdjusted","sticksAtPosition","stickyAnchor","heightCurrent","hlStickyStack","mediaQuery","stickyLineTop","stickyLineBottom","_isSticking","bodyEl","nativeEl","stickyMediaQuery","stickyClass","usePlaceholder","offsetBottom","globalOffset","initialCSS","stickyLinePositionTop","_getTopOffset","_stackOffset","stickyLinePositionBottom","isEnabled","enable","scrolledDistance","clientTop","render","shouldStick","alwaysSticky","elementHeight","rect","z-index","stickElement","unstickElement","containerBoundsBottom","containerBoundsTop","offsetWidth","offsetHeight","pixels","extraOffset","stickIndex","isSticky","querySelector","hasScrollDistance","containerRect","containerBottom","$api","stackItem","drawOptions","force","$$count","$stickyElement","collections","checkDelay","elementsDefaults","hlStickyElement","throttledResize","windowEl","drawEvent","collection","warn","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","open","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","lastChild","_notify","toastCtrl","intervalId","currentTimeOut","hideTime","updateProgress","startProgressBar","stopProgressBar","$interval","button","createTimeout","tapToast","$event","$$CookieWriter","cookiePath","baseHref","rawDocument","cookie","expires","encodeURIComponent","domain","toUTCString","secure","cookieLength","samesite","buildCookieString","calcOptions","$$cookieReader","$$cookieWriter","getObject","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","attributes","chars","textContent","nextNode","getNonDescendant","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","XMLHttpRequest","responseType","send","propName","outerText","$sanitize","LINKY_URL_REGEXP","MAILTO_REGEXP","linkyMinErr","attributesFn","raw","addText","addLink","linkAttributes","validateFieldsOn","displayErrorsAs","messageFilters","shouldValidateOn","_this","addSuccessClass","tooltipPlacement","suppressWarnings","useMessageFilters","filters","getDisplayErrorsAs","getErrorMessagePrefix","getMessageFilters","getTooltipPlacement","shouldAddSuccessClass","validationService","compile","$formElement","$formAttributes","isValidationDisabled","addDirective","ngSubmit","formElement","$attr","formController","$showValidation","$setSubmitted","showValidationState","$hideValidation","$setPristine","$resetValidation","markPristineAfterSubmit","$invalid","focus","submitHandler","$commitViewValue","stopImmediatePropagation","controllers","ngModelController","ngFormController","$formGroupElement","getFormGroupElement","displayValidationState","shouldValidateOnBlur","shouldValidateOnDisplay","shouldValidateOnSubmit","displayErrorAs","displayErrorPreference","validationMessageService","getValidationMessageService","getValidators","validator","attrValue","addValidator","watchBlur","$submitted","submitted","displayOrHideValidationState","showValidation","$valid","$$attr","hideSuccess","hideError","blur","$setUntouched","destroyMessage","displayError","addErrorClass","showErrorMessage","hideErrorMessage","displaySuccess","removeSuccessClass","toggleErrorKeyClasses","$error","dewatcher","$touched","lostFocus","errorElementClass","getErrorContainer","$errorContainer","groupElement","errorContainerHTML","removeErrorClass","getErrorMessage","validationConfig","getErrorTooltip","tooltipID","tooltipElement","$errorTooltip","placement","attributeName","parentForm","parents","appendToBody","$position","ttPosition","positionElements","positionArrow","$filter","_genericValidators","validateFn","equalto","getTrigger","triggerEvent","selectors","meta","getMetaInformation","metaInformation","camelCaseToDash","validateableElements","$validators","modelValue","viewValue","$isEmpty","addGenericValidator","genericValidationObject","$parentForm","firstErrorKey","resolveMessage","formGroupElement","displayType","attribute","matchers","attrKey","validValue","validValue1","validValue2","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","_config","_themes","_delay","themes","SpinJSSpinner","usSpinnerConfig","spinner","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","onEnd","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","isNumber","parseStepsArray","customTrFn","custom","legend","refocusPointerIfNeeded","onPointerFocus","ref","focusElement","jElem","rzsp","alwaysHide","hideLabelsForTicks","hide","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","right","linearValueToPosition","logValueToPosition","percent","minVal","maxVal","log","positionToValue","linearPositionToValue","logPositionToValue","exp","getEventXY","clientXY","getEventPosition","sliderPos","getEventNames","eventNames","moveEvent","endEvent","getNearestHandle","distanceMin","distanceMax","barTracking","barStart","barMove","onMove","onTickClick","ehMove","ehEnd","callOnStart","fromTick","ceilValue","flrValue","positionTrackingHandle","moveEventName","callOnEnd","onPointerBlur","onKeyboardEvent","onKeyUp","getKeyActions","currentValue","increaseStep","decreaseStep","actions","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","slider","expandingExpr","expanding","expandedExpr","expanded","collapsingExpr","collapsing","collapsedExpr","collapsed","horizontal","cssTo","getScrollFromElement","scrollWidth","display","expandDone","collapseDone","uibCollapse","shouldCollapse","collapse","overflow","$set","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","isActive","uncheckable","$setViewValue","getTrueValue","getCheckboxValue","btnCheckboxTrue","defaultValue","btnCheckboxFalse","service","$locale","dateFilter","orderByFilter","filterFilter","localeId","formatCodeToRegex","SPECIAL_CHARACTERS_REGEXP","getFormatCodeToRegex","constructLiteralFormatter","literalIdx","endIdx","constructFormatterFromIdx","currentPosStr","parser","formatter","toInt","timezoneToOffset","timezone","fallback","requestedTimezoneOffset","parse","addDateMinutes","date","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","dt","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","mode","arrays","select","setMode","move","years","months","toggleMode","13","32","keydown","shiftKey","handleKeyDown","DAYS_IN_MONTH","getDaysInMonth","getISO8601WeekNumber","checkDate","setDate","getDay","setMonth","getDates","startDate","dates","firstDayOfMonth","numDisplayedFromPreviousMonth","firstDate","days","secondary","labels","abbr","full","rows","weekNumbers","thursdayIndex","numWeeks","curWeek","date1","date2","_date1","_date2","yearHeaderColspan","columns","getStartingYear","yearpickerInit","datepickerCtrl","ON_REGEXP","IS_REGEXP","tElement","tAttrs","linkedScopes","instances","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","auto","primary","BODY_REGEX","getRawNode","parseStyle","isFinite","scrollbarWidth","isBody","bodyElem","scrollElem","scrollbarPadding","elemStyle","paddingRight","paddingBottom","scrollParent","tagName","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","targetWidth","targetHeight","hostElemPos","targetElemPos","targetElemStyle","adjustedSize","marginRight","marginBottom","xOverflow","yOverflow","adjustTop","placementClasses","containerPosition","initialHeight","currentHeight","innerElem","isTooltip","arrowElem","arrowCss","borderProp","borderWidth","borderRadiusProp","createNew","hasKey","resolver","setResolver","invocables","promises","resolves","resolveObj","resolveIter","$modalStack","backdropClass","linkFn","modalInClass","NOW_CLOSING_EVENT","setIsAsync","modalOptions","windowTopClass","modal","getTop","backdrop","currentTarget","dismiss","$isRendered","modalRenderDeferObj","animationPromise","modalRendered","activeElement","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","$$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","forceEllipses","boundaryLinkNumbers","pageLabel","$page","makePage","boundaryLinks","directionLinks","originalRender","pages","currentPage","startPage","endPage","isMaxSized","previousPageSet","unshift","secondPageLink","firstPageLink","nextPageSet","secondToLastPageLink","lastPageLink","getPages","firstText","previousText","nextText","lastText","paginationCtrl","placementClassPrefix","popupDelay","popupCloseDelay","useContentExp","triggerMap","mouseenter","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","observers","positionTooltip","elementPos","adjustment","toggleTooltipBind","hideTooltipBind","showTooltipBind","cancelHide","popupClass","closeDelay","prepareTooltip","cancelShow","prepObservers","createTooltip","assignIsOpen","removeTooltip","observer","bodyHideTooltipBind","hideOnEscapeKey","origScope","contentExp","showTriggers","hideTriggers","unregisterTriggers","appendToBodyVal","appendKey","tooltipTemplateTranscludeScope","changeCounter","cleanupLastIncludeContent","parseAsResourceUrl","uibTooltipTemplateTransclude","thisChangeId","tooltipAnimationClass","$uibTooltip","originScope","uibTitle","oldIndex","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","suggestionsUrl","Message","Recipients","addRecipient","removeRecipient","Email","FirstName","LastName","resultMessage","messageTitle","messageText","successMessage","cropper","initCropper","Cropper","tmpId","aspectRatio","movable","cropBoxResizable","rotatable","ready","plus","minus","save","ctrlFrom","dzMethods","croppedFile","dataURI","byteString","atob","ab","ia","Blob","dataURItoBlob","getCroppedCanvas","fillColor","imageSmoothingEnabled","imageSmoothingQuality","tmpFileName","deleteTmpFile","serverName","extension","quality","absolute","crop","split1","UrlImages","split2","URLSite","TradeName","CdnService","cdnId","cdnSize","cdnDesignation","cdnExtension","cdnQuality","cdnAbsolute","cdnCrop","cdnChangeable","observerCdnId","processImage","res","_element","_attrs","lazy","err","$cookies","DateService","inject","script","nextYear","GtmService","lazyHelpers","env","intersectionObserverSupport","intersectionListener","IntersectionObserver","isIntersecting","intersectionRatio","unobserve","yallFlipDataAttrs","newImageElement","asyncDecodeSupport","replaceWithSupport","decode","ignoredImgAttributes","classList","loadElement","rootMargin","refElement","sourceDataset","dataset","dataAttribute","acceptedDataAttributes","photo","observe","lazyConfig","lazyObserver","winDimensions","$win","isListening","checkImagesT","saveWinOffsetT","containers","checkImages","isElementInView","stopListening","param","startListening","loaded","onerror","onError","srcset","onSuccess","onLoading","Photo","getWinDimensions","setSource","removeImage","addContainer","removeContainer","testImage","bottomline","threshhold","deferTimer","IntersectionObserverEntry","LazyMagic","lazyImage","deregister","newSource","eventsDeregister","$uibModal","ctrlAs","onClosed","onOpened","$$state","openModal","openCmsModal","autoScroll","modalAutoScroll","$modalDialog","$scrollContainer","maxHeight","overflow-x","overflow-y","max-height","CarouselService","thisScope","onInitialize","onInitialized","owlLoaded","$tab","onRefreshed","eval","onResized","resizeProductsCarousels","$targ","cClass","resizeProductGallery","productsGridService","getId","resizeGrid","elemId","$divs","col","nb","targ","RoutingService","isBot","isCache","yOffset","noreplace","routeToKeep","unsubscribe","router","cart","_routes","stepTo","stepFrom","ex","rejection","UseLogs","Key","href","routing","scrollCache","getPath","ngRouter","ngRoute","categoryId","q","backToStore","newLocation","popstate","dataLayer","initRouter","getScrollPos","productId","windowScroll","routingService","$routeProvider","$locationProvider","$httpProvider","Routes","DefaultLocalization","useApplyAsync","headers","common","interceptors","authorize","authService","getReturnFolders","getShippingAddresses","resolveObject","resolveQuotation","getLocation","html5Mode","requireBase","rewriteLinks","routesService","getRoute","pathname","origin","isCart","responseError","ValidCart","initAccount","logout","setManagement","Account","hasServices","IsManagementGiftCards","IsManagementCredits","IsManagementLoyaltyPoints","IsManagementWishlistTracking","IsManagementSponsorShip","hasOrders","IsManagementOrderTracking","IsManagementInvoicesAndCreditsTracking","IsManagementWebCartTracking","IsManagementReturns","IsManagementComplaint","IsManagementNumericProducts","getOrders","getOrder","getEligibleReturnFolders","$http","appPromise","cartRequests","Content-type","X-Requested-With","VisitorContext","isPro","WebsiteVisitorContext","VisitorIsPro","noevent","addToCart","products","productsToCart","Reference","Comment","Elements","Customization","fromCart","itemQuantityInCart","qty","checkAvailability","getProductPrice","priceObj","HasDiscount","Discount","DegressivePrice","updateStore","visitorContext","Store","updateKey","stringToDate","tomorrow","dateDay","$cacheFactory","addressCache","gpsCache","getDefer","getClustererDefer","GMAPKey","gMapsInit","getClusterer","MarkerClusterer","getGeoCode","address","Geocoder","geocode","country","address_components","long_name","Latitude","geometry","Longitude","Country","getGeoCodeByGps","gps","strGps","CountryCode","short_name","formatted_address","services","rel","loadNewModules","insertBeforeElem","nextSibling","useCssLoadPatch","ua","platform","appVersion","iOSVersion","androidVersion","versionMatch","tries","callbackService","strKebabCase","strPointCase","_service","DocumentTouch","rule","ret","docOverflow","docElement","fake","getBody","cssText","testStyles","touchevents","MSStream","_el","isOpera","isIE9","isIE10","isIE11","isIEEdge","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","newClient","templateCreate","createOpen","showCreate","loadedAccountCreate","backToAccountChoice","mobileShowLogin","activeIn","LogService","email","Errors","ErrorMessage","titleLogin","titleLogout","$body","visitor","FullName","login","AccountUpdate","AccountHome","searchFinderService","goSearch","searchStr","inputBlur","submitForm","inputChangeHandler","Search","fromBtn","setCtrl","canceler","getCtrl","nbPerPage","categories","facets","brands","reviews","category","FieldName","FieldValue","IDCategory","QueryFullText","NbFrom","NbSize","FiltersSelected","FacetsSelected","BrandsSelected","ReviewsSelected","ProductTypesSelected","PriceRangeSelected","Sort","FiltersExcluded","busy","PriceRange","CategoriesSelected","getSearch","nextPage","maxPage","updateSearchApi","Values","setDataFilters","setSelectedFilters","searchCtrl","searching","Selected","facet","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","idCategory","searchQuery","titleBrand","titleReview","titleType","totalProducts","sortTitle","iScrollMaxPages","nbProducts","$onDestroy","token","isTokenValid","backLink","idKit","idGroup","jsonPrice","txtFirstRange","txtRange","txtLastRange","$main","$img","$sub","$video","openLightGallery","dynamicEl","thumb","lightGallery","nextHtml","prevHtml","fullscreenHtml","dynamic","initZoom","touch","galleryImgLoader","zoomId","zoomSize","srcDistrimage","socialshare","socialshareUrl","socialshareText","socialshareMedia","socialshareHashtags","socialshareEmail","appId","urlString","facebookShare","ViewEmail","Url","urlGroup","isKit","showComponents","costTTC","costHT","customizationCostTTC","customizationCostHT","IdProduct","IdQuotation","removeQuotationLine","IdLine","openReview","messageOK","hideTimer","inputField","minlength","searchTimer","httpCanceller","httpCallInProgress","callOrAssign","selectedObject","handleOverrideSuggestions","overrideSuggestions","matchField","cancelHttpRequest","originalObject","clearSelected","updateInputField","currentIndex","httpSuccessCallbackGen","responseData","remoteUrlResponseFormatter","showDropdown","httpErrorCallback","errorRes","console","getRemoteResults","remoteApiHandler","initResults","searchTimerComplete","elementId","newval","onFocusHandler","focusIn","hideResults","focusOut","hoverRow","selectResult","inputChanged","inputType","maxlength","$digest","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","props","Properties","IsInTable","PropertyType","ReviewsInfo","Count","roundAverage","Average","checkScroll","initProducts","scrolltop","noScroll","getNbProducts","titleFull","getChecked","unwatchEvent","checked","updateCookie","cancelPromises","canceller","NewsletterOK","form","newsletterConnect","mailRecognized","$nav","origSize","menuStyle","resizeMenus","font-size","psOpen","psClose","closeDone","openDone","mainNavCtrl","expandMenu","reduceMenu","initMenu","$menu","openMenu","siblings","backMenu","closeMenu","dataColor","latitude","longitude","daysModel","strOneTime","strTwoTimes","strClosed","GMaps","StoresService","stylers","saturation","lightness","featureType","showMap","OpeningHours","getOpeningHours","getMarkerOpts","labelOrigin","Point","fontWeight","activeTab","dispatchEvent","CustomEvent","setAddress","getAddress","point","day","amStart","amEnd","pmStart","pmEnd","IsOpen","Date1Start","Date1End","Date2Start","Date2End","Exception","mapListerner","markerClusterer","getSearchGps","postCode","city","searchLocation","addSearchLocation","showMapResults","Coordinate","nearPoint","minDist","stores","Distance","spherical","computeDistanceBetween","km","DistanceKm","IDCard","gestureHandling","gridSize","maxZoom","textColor","addressSearch","newSearch","showStore","ShowPointsList","Address","AddressLocality","PostCode","City","setShowPointsList","closePointInfo","pointInfos","marker","storeSelected","$list","$point","dif","panBy","addAllEnabled","addProduct","addAllProducts"],"mappings":"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AC,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,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,IAAA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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}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);","/**\r\n * Owl Carousel v2.3.4\r\n * Copyright 2013-2018 David Deutsch\r\n * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE\r\n */\r\n/**\r\n * Owl carousel\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 * @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\tfunction 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\t\tthis.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\t\tthis.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\t\tthis.$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\t\tthis._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\t\tthis._plugins = {};\r\n\r\n\t\t/**\r\n\t\t * Currently suppressed events to prevent them from being retriggered.\r\n\t\t * @protected\r\n\t\t */\r\n\t\tthis._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\t\tthis._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\t\tthis._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\t\tthis._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\t\tthis._breakpoint = null;\r\n\r\n\t\t/**\r\n\t\t * Current width of the plugin element.\r\n\t\t */\r\n\t\tthis._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\t\tthis._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\t\tthis._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\t\tthis._mergers = [];\r\n\r\n\t\t/**\r\n\t\t * Widths of all items.\r\n\t\t */\r\n\t\tthis._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\t\tthis._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\t\tthis._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\t\tthis._drag = {\r\n\t\t\ttime: null,\r\n\t\t\ttarget: null,\r\n\t\t\tpointer: null,\r\n\t\t\tstage: {\r\n\t\t\t\tstart: null,\r\n\t\t\t\tcurrent: null\r\n\t\t\t},\r\n\t\t\tdirection: null\r\n\t\t};\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\t\tthis._states = {\r\n\t\t\tcurrent: {},\r\n\t\t\ttags: {\r\n\t\t\t\t'initializing': [ 'busy' ],\r\n\t\t\t\t'animating': [ 'busy' ],\r\n\t\t\t\t'dragging': [ 'interacting' ]\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t$.each([ 'onResize', 'onThrottledResize' ], $.proxy(function(i, handler) {\r\n\t\t\tthis._handlers[handler] = $.proxy(this[handler], this);\r\n\t\t}, this));\r\n\r\n\t\t$.each(Owl.Plugins, $.proxy(function(key, plugin) {\r\n\t\t\tthis._plugins[key.charAt(0).toLowerCase() + key.slice(1)]\r\n\t\t\t\t= new plugin(this);\r\n\t\t}, this));\r\n\r\n\t\t$.each(Owl.Workers, $.proxy(function(priority, worker) {\r\n\t\t\tthis._pipe.push({\r\n\t\t\t\t'filter': worker.filter,\r\n\t\t\t\t'run': $.proxy(worker.run, this)\r\n\t\t\t});\r\n\t\t}, this));\r\n\r\n\t\tthis.setup();\r\n\t\tthis.initialize();\r\n\t}\r\n\r\n\t/**\r\n\t * Default options for the carousel.\r\n\t * @public\r\n\t */\r\n\tOwl.Defaults = {\r\n\t\titems: 3,\r\n\t\tloop: false,\r\n\t\tcenter: false,\r\n\t\trewind: false,\r\n\t\tcheckVisibility: true,\r\n\r\n\t\tmouseDrag: true,\r\n\t\ttouchDrag: true,\r\n\t\tpullDrag: true,\r\n\t\tfreeDrag: false,\r\n\r\n\t\tmargin: 0,\r\n\t\tstagePadding: 0,\r\n\r\n\t\tmerge: false,\r\n\t\tmergeFit: true,\r\n\t\tautoWidth: false,\r\n\r\n\t\tstartPosition: 0,\r\n\t\trtl: false,\r\n\r\n\t\tsmartSpeed: 250,\r\n\t\tfluidSpeed: false,\r\n\t\tdragEndSpeed: false,\r\n\r\n\t\tresponsive: {},\r\n\t\tresponsiveRefreshRate: 200,\r\n\t\tresponsiveBaseElement: window,\r\n\r\n\t\tfallbackEasing: 'swing',\r\n\t\tslideTransition: '',\r\n\r\n\t\tinfo: false,\r\n\r\n\t\tnestedItemSelector: false,\r\n\t\titemElement: 'div',\r\n\t\tstageElement: 'div',\r\n\r\n\t\trefreshClass: 'owl-refresh',\r\n\t\tloadedClass: 'owl-loaded',\r\n\t\tloadingClass: 'owl-loading',\r\n\t\trtlClass: 'owl-rtl',\r\n\t\tresponsiveClass: 'owl-responsive',\r\n\t\tdragClass: 'owl-drag',\r\n\t\titemClass: 'owl-item',\r\n\t\tstageClass: 'owl-stage',\r\n\t\tstageOuterClass: 'owl-stage-outer',\r\n\t\tgrabClass: 'owl-grab'\r\n\t};\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\tOwl.Width = {\r\n\t\tDefault: 'default',\r\n\t\tInner: 'inner',\r\n\t\tOuter: 'outer'\r\n\t};\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\tOwl.Type = {\r\n\t\tEvent: 'event',\r\n\t\tState: 'state'\r\n\t};\r\n\r\n\t/**\r\n\t * Contains all registered plugins.\r\n\t * @public\r\n\t */\r\n\tOwl.Plugins = {};\r\n\r\n\t/**\r\n\t * List of workers involved in the update process.\r\n\t */\r\n\tOwl.Workers = [ {\r\n\t\tfilter: [ 'width', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tthis._width = this.$element.width();\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tcache.current = this._items && this._items[this.relative(this._current)];\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tthis.$stage.children('.cloned').remove();\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tvar margin = this.settings.margin || '',\r\n\t\t\t\tgrid = !this.settings.autoWidth,\r\n\t\t\t\trtl = this.settings.rtl,\r\n\t\t\t\tcss = {\r\n\t\t\t\t\t'width': 'auto',\r\n\t\t\t\t\t'margin-left': rtl ? margin : '',\r\n\t\t\t\t\t'margin-right': rtl ? '' : margin\r\n\t\t\t\t};\r\n\r\n\t\t\t!grid && this.$stage.children().css(css);\r\n\r\n\t\t\tcache.css = css;\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tvar width = (this.width() / this.settings.items).toFixed(3) - this.settings.margin,\r\n\t\t\t\tmerge = null,\r\n\t\t\t\titerator = this._items.length,\r\n\t\t\t\tgrid = !this.settings.autoWidth,\r\n\t\t\t\twidths = [];\r\n\r\n\t\t\tcache.items = {\r\n\t\t\t\tmerge: false,\r\n\t\t\t\twidth: width\r\n\t\t\t};\r\n\r\n\t\t\twhile (iterator--) {\r\n\t\t\t\tmerge = this._mergers[iterator];\r\n\t\t\t\tmerge = this.settings.mergeFit && Math.min(merge, this.settings.items) || merge;\r\n\r\n\t\t\t\tcache.items.merge = merge > 1 || cache.items.merge;\r\n\r\n\t\t\t\twidths[iterator] = !grid ? this._items[iterator].width() : width * merge;\r\n\t\t\t}\r\n\r\n\t\t\tthis._widths = widths;\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tvar clones = [],\r\n\t\t\t\titems = this._items,\r\n\t\t\t\tsettings = this.settings,\r\n\t\t\t\t// TODO: Should be computed from number of min width items in stage\r\n\t\t\t\tview = Math.max(settings.items * 2, 4),\r\n\t\t\t\tsize = Math.ceil(items.length / 2) * 2,\r\n\t\t\t\trepeat = settings.loop && items.length ? settings.rewind ? view : Math.max(view, size) : 0,\r\n\t\t\t\tappend = '',\r\n\t\t\t\tprepend = '';\r\n\r\n\t\t\trepeat /= 2;\r\n\r\n\t\t\twhile (repeat > 0) {\r\n\t\t\t\t// Switch to only using appended clones\r\n\t\t\t\tclones.push(this.normalize(clones.length / 2, true));\r\n\t\t\t\tappend = append + items[clones[clones.length - 1]][0].outerHTML;\r\n\t\t\t\tclones.push(this.normalize(items.length - 1 - (clones.length - 1) / 2, true));\r\n\t\t\t\tprepend = items[clones[clones.length - 1]][0].outerHTML + prepend;\r\n\t\t\t\trepeat -= 1;\r\n\t\t\t}\r\n\r\n\t\t\tthis._clones = clones;\r\n\r\n\t\t\t$(append).addClass('cloned').appendTo(this.$stage);\r\n\t\t\t$(prepend).addClass('cloned').prependTo(this.$stage);\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tvar rtl = this.settings.rtl ? 1 : -1,\r\n\t\t\t\tsize = this._clones.length + this._items.length,\r\n\t\t\t\titerator = -1,\r\n\t\t\t\tprevious = 0,\r\n\t\t\t\tcurrent = 0,\r\n\t\t\t\tcoordinates = [];\r\n\r\n\t\t\twhile (++iterator < size) {\r\n\t\t\t\tprevious = coordinates[iterator - 1] || 0;\r\n\t\t\t\tcurrent = this._widths[this.relative(iterator)] + this.settings.margin;\r\n\t\t\t\tcoordinates.push(previous + current * rtl);\r\n\t\t\t}\r\n\r\n\t\t\tthis._coordinates = coordinates;\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tvar padding = this.settings.stagePadding,\r\n\t\t\t\tcoordinates = this._coordinates,\r\n\t\t\t\tcss = {\r\n\t\t\t\t\t'width': Math.ceil(Math.abs(coordinates[coordinates.length - 1])) + padding * 2,\r\n\t\t\t\t\t'padding-left': padding || '',\r\n\t\t\t\t\t'padding-right': padding || ''\r\n\t\t\t\t};\r\n\r\n\t\t\tthis.$stage.css(css);\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tvar iterator = this._coordinates.length,\r\n\t\t\t\tgrid = !this.settings.autoWidth,\r\n\t\t\t\titems = this.$stage.children();\r\n\r\n\t\t\tif (grid && cache.items.merge) {\r\n\t\t\t\twhile (iterator--) {\r\n\t\t\t\t\tcache.css.width = this._widths[this.relative(iterator)];\r\n\t\t\t\t\titems.eq(iterator).css(cache.css);\r\n\t\t\t\t}\r\n\t\t\t} else if (grid) {\r\n\t\t\t\tcache.css.width = cache.items.width;\r\n\t\t\t\titems.css(cache.css);\r\n\t\t\t}\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'items' ],\r\n\t\trun: function() {\r\n\t\t\tthis._coordinates.length < 1 && this.$stage.removeAttr('style');\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'items', 'settings' ],\r\n\t\trun: function(cache) {\r\n\t\t\tcache.current = cache.current ? this.$stage.children().index(cache.current) : 0;\r\n\t\t\tcache.current = Math.max(this.minimum(), Math.min(this.maximum(), cache.current));\r\n\t\t\tthis.reset(cache.current);\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'position' ],\r\n\t\trun: function() {\r\n\t\t\tthis.animate(this.coordinates(this._current));\r\n\t\t}\r\n\t}, {\r\n\t\tfilter: [ 'width', 'position', 'items', 'settings' ],\r\n\t\trun: function() {\r\n\t\t\tvar rtl = this.settings.rtl ? 1 : -1,\r\n\t\t\t\tpadding = this.settings.stagePadding * 2,\r\n\t\t\t\tbegin = this.coordinates(this.current()) + padding,\r\n\t\t\t\tend = begin + this.width() * rtl,\r\n\t\t\t\tinner, outer, matches = [], i, n;\r\n\r\n\t\t\tfor (i = 0, n = this._coordinates.length; i < n; i++) {\r\n\t\t\t\tinner = this._coordinates[i - 1] || 0;\r\n\t\t\t\touter = Math.abs(this._coordinates[i]) + padding * rtl;\r\n\r\n\t\t\t\tif ((this.op(inner, '<=', begin) && (this.op(inner, '>', end)))\r\n\t\t\t\t\t|| (this.op(outer, '<', begin) && this.op(outer, '>', end))) {\r\n\t\t\t\t\tmatches.push(i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tthis.$stage.children('.active').removeClass('active');\r\n\t\t\tthis.$stage.children(':eq(' + matches.join('), :eq(') + ')').addClass('active');\r\n\r\n\t\t\tthis.$stage.children('.center').removeClass('center');\r\n\t\t\tif (this.settings.center) {\r\n\t\t\t\tthis.$stage.children().eq(this.current()).addClass('center');\r\n\t\t\t}\r\n\t\t}\r\n\t} ];\r\n\r\n\t/**\r\n\t * Create the stage DOM element\r\n\t */\r\n\tOwl.prototype.initializeStage = function() {\r\n\t\tthis.$stage = this.$element.find('.' + this.settings.stageClass);\r\n\r\n\t\t// if the stage is already in the DOM, grab it and skip stage initialization\r\n\t\tif (this.$stage.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.$element.addClass(this.options.loadingClass);\r\n\r\n\t\t// create stage\r\n\t\tthis.$stage = $('<' + this.settings.stageElement + '>', {\r\n\t\t\t\"class\": this.settings.stageClass\r\n\t\t}).wrap( $( '
', {\r\n\t\t\t\"class\": this.settings.stageOuterClass\r\n\t\t}));\r\n\r\n\t\t// append stage\r\n\t\tthis.$element.append(this.$stage.parent());\r\n\t};\r\n\r\n\t/**\r\n\t * Create item DOM elements\r\n\t */\r\n\tOwl.prototype.initializeItems = function() {\r\n\t\tvar $items = this.$element.find('.owl-item');\r\n\r\n\t\t// if the items are already in the DOM, grab them and skip item initialization\r\n\t\tif ($items.length) {\r\n\t\t\tthis._items = $items.get().map(function(item) {\r\n\t\t\t\treturn $(item);\r\n\t\t\t});\r\n\r\n\t\t\tthis._mergers = this._items.map(function() {\r\n\t\t\t\treturn 1;\r\n\t\t\t});\r\n\r\n\t\t\tthis.refresh();\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// append content\r\n\t\tthis.replace(this.$element.children().not(this.$stage.parent()));\r\n\r\n\t\t// check visibility\r\n\t\tif (this.isVisible()) {\r\n\t\t\t// update view\r\n\t\t\tthis.refresh();\r\n\t\t} else {\r\n\t\t\t// invalidate width\r\n\t\t\tthis.invalidate('width');\r\n\t\t}\r\n\r\n\t\tthis.$element\r\n\t\t\t.removeClass(this.options.loadingClass)\r\n\t\t\t.addClass(this.options.loadedClass);\r\n\t};\r\n\r\n\t/**\r\n\t * Initializes the carousel.\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.initialize = function() {\r\n\t\tthis.enter('initializing');\r\n\t\tthis.trigger('initialize');\r\n\r\n\t\tthis.$element.toggleClass(this.settings.rtlClass, this.settings.rtl);\r\n\r\n\t\tif (this.settings.autoWidth && !this.is('pre-loading')) {\r\n\t\t\tvar imgs, nestedSelector, width;\r\n\t\t\timgs = this.$element.find('img');\r\n\t\t\tnestedSelector = this.settings.nestedItemSelector ? '.' + this.settings.nestedItemSelector : undefined;\r\n\t\t\twidth = this.$element.children(nestedSelector).width();\r\n\r\n\t\t\tif (imgs.length && width <= 0) {\r\n\t\t\t\tthis.preloadAutoWidthImages(imgs);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.initializeStage();\r\n\t\tthis.initializeItems();\r\n\r\n\t\t// register event handlers\r\n\t\tthis.registerEventHandlers();\r\n\r\n\t\tthis.leave('initializing');\r\n\t\tthis.trigger('initialized');\r\n\t};\r\n\r\n\t/**\r\n\t * @returns {Boolean} visibility of $element\r\n\t * if you know the carousel will always be visible you can set `checkVisibility` to `false` to\r\n\t * prevent the expensive browser layout forced reflow the $element.is(':visible') does\r\n\t */\r\n\tOwl.prototype.isVisible = function() {\r\n\t\treturn this.settings.checkVisibility\r\n\t\t\t? this.$element.is(':visible')\r\n\t\t\t: true;\r\n\t};\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\tOwl.prototype.setup = function() {\r\n\t\tvar viewport = this.viewport(),\r\n\t\t\toverwrites = this.options.responsive,\r\n\t\t\tmatch = -1,\r\n\t\t\tsettings = null;\r\n\r\n\t\tif (!overwrites) {\r\n\t\t\tsettings = $.extend({}, this.options);\r\n\t\t} else {\r\n\t\t\t$.each(overwrites, function(breakpoint) {\r\n\t\t\t\tif (breakpoint <= viewport && breakpoint > match) {\r\n\t\t\t\t\tmatch = Number(breakpoint);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tsettings = $.extend({}, this.options, overwrites[match]);\r\n\t\t\tif (typeof settings.stagePadding === 'function') {\r\n\t\t\t\tsettings.stagePadding = settings.stagePadding();\r\n\t\t\t}\r\n\t\t\tdelete settings.responsive;\r\n\r\n\t\t\t// responsive class\r\n\t\t\tif (settings.responsiveClass) {\r\n\t\t\t\tthis.$element.attr('class',\r\n\t\t\t\t\tthis.$element.attr('class').replace(new RegExp('(' + this.options.responsiveClass + '-)\\\\S+\\\\s', 'g'), '$1' + match)\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.trigger('change', { property: { name: 'settings', value: settings } });\r\n\t\tthis._breakpoint = match;\r\n\t\tthis.settings = settings;\r\n\t\tthis.invalidate('settings');\r\n\t\tthis.trigger('changed', { property: { name: 'settings', value: this.settings } });\r\n\t};\r\n\r\n\t/**\r\n\t * Updates option logic if necessery.\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.optionsLogic = function() {\r\n\t\tif (this.settings.autoWidth) {\r\n\t\t\tthis.settings.stagePadding = false;\r\n\t\t\tthis.settings.merge = false;\r\n\t\t}\r\n\t};\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\tOwl.prototype.prepare = function(item) {\r\n\t\tvar event = this.trigger('prepare', { content: item });\r\n\r\n\t\tif (!event.data) {\r\n\t\t\tevent.data = $('<' + this.settings.itemElement + '/>')\r\n\t\t\t\t.addClass(this.options.itemClass).append(item)\r\n\t\t}\r\n\r\n\t\tthis.trigger('prepared', { content: event.data });\r\n\r\n\t\treturn event.data;\r\n\t};\r\n\r\n\t/**\r\n\t * Updates the view.\r\n\t * @public\r\n\t */\r\n\tOwl.prototype.update = function() {\r\n\t\tvar i = 0,\r\n\t\t\tn = this._pipe.length,\r\n\t\t\tfilter = $.proxy(function(p) { return this[p] }, this._invalidated),\r\n\t\t\tcache = {};\r\n\r\n\t\twhile (i < n) {\r\n\t\t\tif (this._invalidated.all || $.grep(this._pipe[i].filter, filter).length > 0) {\r\n\t\t\t\tthis._pipe[i].run(cache);\r\n\t\t\t}\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\tthis._invalidated = {};\r\n\r\n\t\t!this.is('valid') && this.enter('valid');\r\n\t};\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\tOwl.prototype.width = function(dimension) {\r\n\t\tdimension = dimension || Owl.Width.Default;\r\n\t\tswitch (dimension) {\r\n\t\t\tcase Owl.Width.Inner:\r\n\t\t\tcase Owl.Width.Outer:\r\n\t\t\t\treturn this._width;\r\n\t\t\tdefault:\r\n\t\t\t\treturn this._width - this.settings.stagePadding * 2 + this.settings.margin;\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Refreshes the carousel primarily for adaptive purposes.\r\n\t * @public\r\n\t */\r\n\tOwl.prototype.refresh = function() {\r\n\t\tthis.enter('refreshing');\r\n\t\tthis.trigger('refresh');\r\n\r\n\t\tthis.setup();\r\n\r\n\t\tthis.optionsLogic();\r\n\r\n\t\tthis.$element.addClass(this.options.refreshClass);\r\n\r\n\t\tthis.update();\r\n\r\n\t\tthis.$element.removeClass(this.options.refreshClass);\r\n\r\n\t\tthis.leave('refreshing');\r\n\t\tthis.trigger('refreshed');\r\n\t};\r\n\r\n\t/**\r\n\t * Checks window `resize` event.\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.onThrottledResize = function() {\r\n\t\twindow.clearTimeout(this.resizeTimer);\r\n\t\tthis.resizeTimer = window.setTimeout(this._handlers.onResize, this.settings.responsiveRefreshRate);\r\n\t};\r\n\r\n\t/**\r\n\t * Checks window `resize` event.\r\n\t * @protected\r\n\t */\r\n\tOwl.prototype.onResize = function() {\r\n\t\tif (!this._items.length) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (this._width === this.$element.width()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (!this.isVisible()) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.enter('resizing');\r\n\r\n\t\tif (this.trigger('resize').isDefaultPrevented()) {\r\n\t\t\tthis.leave('resizing');\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tthis.invalidate('width');\r\n\r\n\t\tthis.refresh();\r\n\r\n\t\tthis.leave('resizing');\r\n\t\tthis.trigger('resized');\r\n\t};\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\tOwl.prototype.registerEventHandlers = function() {\r\n\t\tif ($.support.transition) {\r\n\t\t\tthis.$stage.on($.support.transition.end + '.owl.core', $.proxy(this.onTransitionEnd, this));\r\n\t\t}\r\n\r\n\t\tif (this.settings.responsive !== false) {\r\n\t\t\tthis.on(window, 'resize', this._handlers.onThrottledResize);\r\n\t\t}\r\n\r\n\t\tif (this.settings.mouseDrag) {\r\n\t\t\tthis.$element.addClass(this.options.dragClass);\r\n\t\t\tthis.$stage.on('mousedown.owl.core', $.proxy(this.onDragStart, this));\r\n\t\t\tthis.$stage.on('dragstart.owl.core selectstart.owl.core', function() { return false });\r\n\t\t}\r\n\r\n\t\tif (this.settings.touchDrag){\r\n\t\t\tthis.$stage.on('touchstart.owl.core', $.proxy(this.onDragStart, this));\r\n\t\t\tthis.$stage.on('touchcancel.owl.core', $.proxy(this.onDragEnd, this));\r\n\t\t}\r\n\t};\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\tOwl.prototype.onDragStart = function(event) {\r\n\t\tvar stage = null;\r\n\r\n\t\tif (event.which === 3) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif ($.support.transform) {\r\n\t\t\tstage = this.$stage.css('transform').replace(/.*\\(|\\)| /g, '').split(',');\r\n\t\t\tstage = {\r\n\t\t\t\tx: stage[stage.length === 16 ? 12 : 4],\r\n\t\t\t\ty: stage[stage.length === 16 ? 13 : 5]\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\tstage = this.$stage.position();\r\n\t\t\tstage = {\r\n\t\t\t\tx: this.settings.rtl ?\r\n\t\t\t\t\tstage.left + this.$stage.width() - this.width() + this.settings.margin :\r\n\t\t\t\t\tstage.left,\r\n\t\t\t\ty: stage.top\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\tif (this.is('animating')) {\r\n\t\t\t$.support.transform ? this.animate(stage.x) : this.$stage.stop()\r\n\t\t\tthis.invalidate('position');\r\n\t\t}\r\n\r\n\t\tthis.$element.toggleClass(this.options.grabClass, event.type === 'mousedown');\r\n\r\n\t\tthis.speed(0);\r\n\r\n\t\tthis._drag.time = new Date().getTime();\r\n\t\tthis._drag.target = $(event.target);\r\n\t\tthis._drag.stage.start = stage;\r\n\t\tthis._drag.stage.current = stage;\r\n\t\tthis._drag.pointer = this.pointer(event);\r\n\r\n\t\t$(document).on('mouseup.owl.core touchend.owl.core', $.proxy(this.onDragEnd, this));\r\n\r\n\t\t$(document).one('mousemove.owl.core touchmove.owl.core', $.proxy(function(event) {\r\n\t\t\tvar delta = this.difference(this._drag.pointer, this.pointer(event));\r\n\r\n\t\t\t$(document).on('mousemove.owl.core touchmove.owl.core', $.proxy(this.onDragMove, this));\r\n\r\n\t\t\tif (Math.abs(delta.x) < Math.abs(delta.y) && this.is('valid')) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\tthis.enter('dragging');\r\n\t\t\tthis.trigger('drag');\r\n\t\t}, this));\r\n\t};\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\tOwl.prototype.onDragMove = function(event) {\r\n\t\tvar minimum = null,\r\n\t\t\tmaximum = null,\r\n\t\t\tpull = null,\r\n\t\t\tdelta = this.difference(this._drag.pointer, this.pointer(event)),\r\n\t\t\tstage = this.difference(this._drag.stage.start, delta);\r\n\r\n\t\tif (!this.is('dragging')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tif (this.settings.loop) {\r\n\t\t\tminimum = this.coordinates(this.minimum());\r\n\t\t\tmaximum = this.coordinates(this.maximum() + 1) - minimum;\r\n\t\t\tstage.x = (((stage.x - minimum) % maximum + maximum) % maximum) + minimum;\r\n\t\t} else {\r\n\t\t\tminimum = this.settings.rtl ? this.coordinates(this.maximum()) : this.coordinates(this.minimum());\r\n\t\t\tmaximum = this.settings.rtl ? this.coordinates(this.minimum()) : this.coordinates(this.maximum());\r\n\t\t\tpull = this.settings.pullDrag ? -1 * delta.x / 5 : 0;\r\n\t\t\tstage.x = Math.max(Math.min(stage.x, minimum + pull), maximum + pull);\r\n\t\t}\r\n\r\n\t\tthis._drag.stage.current = stage;\r\n\r\n\t\tthis.animate(stage.x);\r\n\t};\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\tOwl.prototype.onDragEnd = function(event) {\r\n\t\tvar delta = this.difference(this._drag.pointer, this.pointer(event)),\r\n\t\t\tstage = this._drag.stage.current,\r\n\t\t\tdirection = delta.x > 0 ^ this.settings.rtl ? 'left' : 'right';\r\n\r\n\t\t$(document).off('.owl.core');\r\n\r\n\t\tthis.$element.removeClass(this.options.grabClass);\r\n\r\n\t\tif (delta.x !== 0 && this.is('dragging') || !this.is('valid')) {\r\n\t\t\tthis.speed(this.settings.dragEndSpeed || this.settings.smartSpeed);\r\n\t\t\tthis.current(this.closest(stage.x, delta.x !== 0 ? direction : this._drag.direction));\r\n\t\t\tthis.invalidate('position');\r\n\t\t\tthis.update();\r\n\r\n\t\t\tthis._drag.direction = direction;\r\n\r\n\t\t\tif (Math.abs(delta.x) > 3 || new Date().getTime() - this._drag.time > 300) {\r\n\t\t\t\tthis._drag.target.one('click.owl.core', function() { return false; });\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.is('dragging')) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.leave('dragging');\r\n\t\tthis.trigger('dragged');\r\n\t};\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\tOwl.prototype.closest = function(coordinate, direction) {\r\n\t\tvar position = -1,\r\n\t\t\tpull = 30,\r\n\t\t\twidth = this.width(),\r\n\t\t\tcoordinates = this.coordinates();\r\n\r\n\t\tif (!this.settings.freeDrag) {\r\n\t\t\t// check closest item\r\n\t\t\t$.each(coordinates, $.proxy(function(index, value) {\r\n\t\t\t\t// on a left pull, check on current index\r\n\t\t\t\tif (direction === 'left' && coordinate > value - pull && coordinate < value + pull) {\r\n\t\t\t\t\tposition = index;\r\n\t\t\t\t// on a right pull, check on previous index\r\n\t\t\t\t// to do so, subtract width from value and set position = index + 1\r\n\t\t\t\t} else if (direction === 'right' && coordinate > value - width - pull && coordinate < value - width + pull) {\r\n\t\t\t\t\tposition = index + 1;\r\n\t\t\t\t} else if (this.op(coordinate, '<', value)\r\n\t\t\t\t\t&& this.op(coordinate, '>', coordinates[index + 1] !== undefined ? coordinates[index + 1] : value - width)) {\r\n\t\t\t\t\tposition = direction === 'left' ? index + 1 : index;\r\n\t\t\t\t}\r\n\t\t\t\treturn position === -1;\r\n\t\t\t}, this));\r\n\t\t}\r\n\r\n\t\tif (!this.settings.loop) {\r\n\t\t\t// non loop boundries\r\n\t\t\tif (this.op(coordinate, '>', coordinates[this.minimum()])) {\r\n\t\t\t\tposition = coordinate = this.minimum();\r\n\t\t\t} else if (this.op(coordinate, '<', coordinates[this.maximum()])) {\r\n\t\t\t\tposition = coordinate = this.maximum();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t};\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\tOwl.prototype.animate = function(coordinate) {\r\n\t\tvar animate = this.speed() > 0;\r\n\r\n\t\tthis.is('animating') && this.onTransitionEnd();\r\n\r\n\t\tif (animate) {\r\n\t\t\tthis.enter('animating');\r\n\t\t\tthis.trigger('translate');\r\n\t\t}\r\n\r\n\t\tif ($.support.transform3d && $.support.transition) {\r\n\t\t\tthis.$stage.css({\r\n\t\t\t\ttransform: 'translate3d(' + coordinate + 'px,0px,0px)',\r\n\t\t\t\ttransition: (this.speed() / 1000) + 's' + (\r\n\t\t\t\t\tthis.settings.slideTransition ? ' ' + this.settings.slideTransition : ''\r\n\t\t\t\t)\r\n\t\t\t});\r\n\t\t} else if (animate) {\r\n\t\t\tthis.$stage.animate({\r\n\t\t\t\tleft: coordinate + 'px'\r\n\t\t\t}, this.speed(), this.settings.fallbackEasing, $.proxy(this.onTransitionEnd, this));\r\n\t\t} else {\r\n\t\t\tthis.$stage.css({\r\n\t\t\t\tleft: coordinate + 'px'\r\n\t\t\t});\r\n\t\t}\r\n\t};\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\tOwl.prototype.is = function(state) {\r\n\t\treturn this._states.current[state] && this._states.current[state] > 0;\r\n\t};\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\tOwl.prototype.current = function(position) {\r\n\t\tif (position === undefined) {\r\n\t\t\treturn this._current;\r\n\t\t}\r\n\r\n\t\tif (this._items.length === 0) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\r\n\t\tposition = this.normalize(position);\r\n\r\n\t\tif (this._current !== position) {\r\n\t\t\tvar event = this.trigger('change', { property: { name: 'position', value: position } });\r\n\r\n\t\t\tif (event.data !== undefined) {\r\n\t\t\t\tposition = this.normalize(event.data);\r\n\t\t\t}\r\n\r\n\t\t\tthis._current = position;\r\n\r\n\t\t\tthis.invalidate('position');\r\n\r\n\t\t\tthis.trigger('changed', { property: { name: 'position', value: this._current } });\r\n\t\t}\r\n\r\n\t\treturn this._current;\r\n\t};\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\tOwl.prototype.invalidate = function(part) {\r\n\t\tif ($.type(part) === 'string') {\r\n\t\t\tthis._invalidated[part] = true;\r\n\t\t\tthis.is('valid') && this.leave('valid');\r\n\t\t}\r\n\t\treturn $.map(this._invalidated, function(v, i) { return i });\r\n\t};\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\tOwl.prototype.reset = function(position) {\r\n\t\tposition = this.normalize(position);\r\n\r\n\t\tif (position === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._speed = 0;\r\n\t\tthis._current = position;\r\n\r\n\t\tthis.suppress([ 'translate', 'translated' ]);\r\n\r\n\t\tthis.animate(this.coordinates(position));\r\n\r\n\t\tthis.release([ 'translate', 'translated' ]);\r\n\t};\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\tOwl.prototype.normalize = function(position, relative) {\r\n\t\tvar n = this._items.length,\r\n\t\t\tm = relative ? 0 : this._clones.length;\r\n\r\n\t\tif (!this.isNumeric(position) || n < 1) {\r\n\t\t\tposition = undefined;\r\n\t\t} else if (position < 0 || position >= n + m) {\r\n\t\t\tposition = ((position - m / 2) % n + n) % n + m / 2;\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t};\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\tOwl.prototype.relative = function(position) {\r\n\t\tposition -= this._clones.length / 2;\r\n\t\treturn this.normalize(position, true);\r\n\t};\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\tOwl.prototype.maximum = function(relative) {\r\n\t\tvar settings = this.settings,\r\n\t\t\tmaximum = this._coordinates.length,\r\n\t\t\titerator,\r\n\t\t\treciprocalItemsWidth,\r\n\t\t\telementWidth;\r\n\r\n\t\tif (settings.loop) {\r\n\t\t\tmaximum = this._clones.length / 2 + this._items.length - 1;\r\n\t\t} else if (settings.autoWidth || settings.merge) {\r\n\t\t\titerator = this._items.length;\r\n\t\t\tif (iterator) {\r\n\t\t\t\treciprocalItemsWidth = this._items[--iterator].width();\r\n\t\t\t\telementWidth = this.$element.width();\r\n\t\t\t\twhile (iterator--) {\r\n\t\t\t\t\treciprocalItemsWidth += this._items[iterator].width() + this.settings.margin;\r\n\t\t\t\t\tif (reciprocalItemsWidth > elementWidth) {\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}\r\n\t\t\tmaximum = iterator + 1;\r\n\t\t} else if (settings.center) {\r\n\t\t\tmaximum = this._items.length - 1;\r\n\t\t} else {\r\n\t\t\tmaximum = this._items.length - settings.items;\r\n\t\t}\r\n\r\n\t\tif (relative) {\r\n\t\t\tmaximum -= this._clones.length / 2;\r\n\t\t}\r\n\r\n\t\treturn Math.max(maximum, 0);\r\n\t};\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\tOwl.prototype.minimum = function(relative) {\r\n\t\treturn relative ? 0 : this._clones.length / 2;\r\n\t};\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\tOwl.prototype.items = function(position) {\r\n\t\tif (position === undefined) {\r\n\t\t\treturn this._items.slice();\r\n\t\t}\r\n\r\n\t\tposition = this.normalize(position, true);\r\n\t\treturn this._items[position];\r\n\t};\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\tOwl.prototype.mergers = function(position) {\r\n\t\tif (position === undefined) {\r\n\t\t\treturn this._mergers.slice();\r\n\t\t}\r\n\r\n\t\tposition = this.normalize(position, true);\r\n\t\treturn this._mergers[position];\r\n\t};\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\tOwl.prototype.clones = function(position) {\r\n\t\tvar odd = this._clones.length / 2,\r\n\t\t\teven = odd + this._items.length,\r\n\t\t\tmap = function(index) { return index % 2 === 0 ? even + index / 2 : odd - (index + 1) / 2 };\r\n\r\n\t\tif (position === undefined) {\r\n\t\t\treturn $.map(this._clones, function(v, i) { return map(i) });\r\n\t\t}\r\n\r\n\t\treturn $.map(this._clones, function(v, i) { return v === position ? map(i) : null });\r\n\t};\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\tOwl.prototype.speed = function(speed) {\r\n\t\tif (speed !== undefined) {\r\n\t\t\tthis._speed = speed;\r\n\t\t}\r\n\r\n\t\treturn this._speed;\r\n\t};\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\tOwl.prototype.coordinates = function(position) {\r\n\t\tvar multiplier = 1,\r\n\t\t\tnewPosition = position - 1,\r\n\t\t\tcoordinate;\r\n\r\n\t\tif (position === undefined) {\r\n\t\t\treturn $.map(this._coordinates, $.proxy(function(coordinate, index) {\r\n\t\t\t\treturn this.coordinates(index);\r\n\t\t\t}, this));\r\n\t\t}\r\n\r\n\t\tif (this.settings.center) {\r\n\t\t\tif (this.settings.rtl) {\r\n\t\t\t\tmultiplier = -1;\r\n\t\t\t\tnewPosition = position + 1;\r\n\t\t\t}\r\n\r\n\t\t\tcoordinate = this._coordinates[position];\r\n\t\t\tcoordinate += (this.width() - coordinate + (this._coordinates[newPosition] || 0)) / 2 * multiplier;\r\n\t\t} else {\r\n\t\t\tcoordinate = this._coordinates[newPosition] || 0;\r\n\t\t}\r\n\r\n\t\tcoordinate = Math.ceil(coordinate);\r\n\r\n\t\treturn coordinate;\r\n\t};\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\tOwl.prototype.duration = function(from, to, factor) {\r\n\t\tif (factor === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\treturn Math.min(Math.max(Math.abs(to - from), 1), 6) * Math.abs((factor || this.settings.smartSpeed));\r\n\t};\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\tOwl.prototype.to = function(position, speed) {\r\n\t\tvar current = this.current(),\r\n\t\t\trevert = null,\r\n\t\t\tdistance = position - this.relative(current),\r\n\t\t\tdirection = (distance > 0) - (distance < 0),\r\n\t\t\titems = this._items.length,\r\n\t\t\tminimum = this.minimum(),\r\n\t\t\tmaximum = this.maximum();\r\n\r\n\t\tif (this.settings.loop) {\r\n\t\t\tif (!this.settings.rewind && Math.abs(distance) > items / 2) {\r\n\t\t\t\tdistance += direction * -1 * items;\r\n\t\t\t}\r\n\r\n\t\t\tposition = current + distance;\r\n\t\t\trevert = ((position - minimum) % items + items) % items + minimum;\r\n\r\n\t\t\tif (revert !== position && revert - distance <= maximum && revert - distance > 0) {\r\n\t\t\t\tcurrent = revert - distance;\r\n\t\t\t\tposition = revert;\r\n\t\t\t\tthis.reset(current);\r\n\t\t\t}\r\n\t\t} else if (this.settings.rewind) {\r\n\t\t\tmaximum += 1;\r\n\t\t\tposition = (position % maximum + maximum) % maximum;\r\n\t\t} else {\r\n\t\t\tposition = Math.max(minimum, Math.min(maximum, position));\r\n\t\t}\r\n\r\n\t\tthis.speed(this.duration(current, position, speed));\r\n\t\tthis.current(position);\r\n\r\n\t\tif (this.isVisible()) {\r\n\t\t\tthis.update();\r\n\t\t}\r\n\t};\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\tOwl.prototype.next = function(speed) {\r\n\t\tspeed = speed || false;\r\n\t\tthis.to(this.relative(this.current()) + 1, speed);\r\n\t};\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\tOwl.prototype.prev = function(speed) {\r\n\t\tspeed = speed || false;\r\n\t\tthis.to(this.relative(this.current()) - 1, speed);\r\n\t};\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\tOwl.prototype.onTransitionEnd = function(event) {\r\n\r\n\t\t// if css2 animation then event object is undefined\r\n\t\tif (event !== undefined) {\r\n\t\t\tevent.stopPropagation();\r\n\r\n\t\t\t// Catch only owl-stage transitionEnd event\r\n\t\t\tif ((event.target || event.srcElement || event.originalTarget) !== this.$stage.get(0)) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.leave('animating');\r\n\t\tthis.trigger('translated');\r\n\t};\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\tOwl.prototype.viewport = function() {\r\n\t\tvar width;\r\n\t\tif (this.options.responsiveBaseElement !== window) {\r\n\t\t\twidth = $(this.options.responsiveBaseElement).width();\r\n\t\t} else if (window.innerWidth) {\r\n\t\t\twidth = window.innerWidth;\r\n\t\t} else if (document.documentElement && document.documentElement.clientWidth) {\r\n\t\t\twidth = document.documentElement.clientWidth;\r\n\t\t} else {\r\n\t\t\tconsole.warn('Can not detect viewport width.');\r\n\t\t}\r\n\t\treturn width;\r\n\t};\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\tOwl.prototype.replace = function(content) {\r\n\t\tthis.$stage.empty();\r\n\t\tthis._items = [];\r\n\r\n\t\tif (content) {\r\n\t\t\tcontent = (content instanceof jQuery) ? content : $(content);\r\n\t\t}\r\n\r\n\t\tif (this.settings.nestedItemSelector) {\r\n\t\t\tcontent = content.find('.' + this.settings.nestedItemSelector);\r\n\t\t}\r\n\r\n\t\tcontent.filter(function() {\r\n\t\t\treturn this.nodeType === 1;\r\n\t\t}).each($.proxy(function(index, item) {\r\n\t\t\titem = this.prepare(item);\r\n\t\t\tthis.$stage.append(item);\r\n\t\t\tthis._items.push(item);\r\n\t\t\tthis._mergers.push(item.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n\t\t}, this));\r\n\r\n\t\tthis.reset(this.isNumeric(this.settings.startPosition) ? this.settings.startPosition : 0);\r\n\r\n\t\tthis.invalidate('items');\r\n\t};\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\tOwl.prototype.add = function(content, position) {\r\n\t\tvar current = this.relative(this._current);\r\n\r\n\t\tposition = position === undefined ? this._items.length : this.normalize(position, true);\r\n\t\tcontent = content instanceof jQuery ? content : $(content);\r\n\r\n\t\tthis.trigger('add', { content: content, position: position });\r\n\r\n\t\tcontent = this.prepare(content);\r\n\r\n\t\tif (this._items.length === 0 || position === this._items.length) {\r\n\t\t\tthis._items.length === 0 && this.$stage.append(content);\r\n\t\t\tthis._items.length !== 0 && this._items[position - 1].after(content);\r\n\t\t\tthis._items.push(content);\r\n\t\t\tthis._mergers.push(content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n\t\t} else {\r\n\t\t\tthis._items[position].before(content);\r\n\t\t\tthis._items.splice(position, 0, content);\r\n\t\t\tthis._mergers.splice(position, 0, content.find('[data-merge]').addBack('[data-merge]').attr('data-merge') * 1 || 1);\r\n\t\t}\r\n\r\n\t\tthis._items[current] && this.reset(this._items[current].index());\r\n\r\n\t\tthis.invalidate('items');\r\n\r\n\t\tthis.trigger('added', { content: content, position: position });\r\n\t};\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\tOwl.prototype.remove = function(position) {\r\n\t\tposition = this.normalize(position, true);\r\n\r\n\t\tif (position === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.trigger('remove', { content: this._items[position], position: position });\r\n\r\n\t\tthis._items[position].remove();\r\n\t\tthis._items.splice(position, 1);\r\n\t\tthis._mergers.splice(position, 1);\r\n\r\n\t\tthis.invalidate('items');\r\n\r\n\t\tthis.trigger('removed', { content: null, position: position });\r\n\t};\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\tOwl.prototype.preloadAutoWidthImages = function(images) {\r\n\t\timages.each($.proxy(function(i, element) {\r\n\t\t\tthis.enter('pre-loading');\r\n\t\t\telement = $(element);\r\n\t\t\t$(new Image()).one('load', $.proxy(function(e) {\r\n\t\t\t\telement.attr('src', e.target.src);\r\n\t\t\t\telement.css('opacity', 1);\r\n\t\t\t\tthis.leave('pre-loading');\r\n\t\t\t\t!this.is('pre-loading') && !this.is('initializing') && this.refresh();\r\n\t\t\t}, this)).attr('src', element.attr('src') || element.attr('data-src') || element.attr('data-src-retina'));\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the carousel.\r\n\t * @public\r\n\t */\r\n\tOwl.prototype.destroy = function() {\r\n\r\n\t\tthis.$element.off('.owl.core');\r\n\t\tthis.$stage.off('.owl.core');\r\n\t\t$(document).off('.owl.core');\r\n\r\n\t\tif (this.settings.responsive !== false) {\r\n\t\t\twindow.clearTimeout(this.resizeTimer);\r\n\t\t\tthis.off(window, 'resize', this._handlers.onThrottledResize);\r\n\t\t}\r\n\r\n\t\tfor (var i in this._plugins) {\r\n\t\t\tthis._plugins[i].destroy();\r\n\t\t}\r\n\r\n\t\tthis.$stage.children('.cloned').remove();\r\n\r\n\t\tthis.$stage.unwrap();\r\n\t\tthis.$stage.children().contents().unwrap();\r\n\t\tthis.$stage.children().unwrap();\r\n\t\tthis.$stage.remove();\r\n\t\tthis.$element\r\n\t\t\t.removeClass(this.options.refreshClass)\r\n\t\t\t.removeClass(this.options.loadingClass)\r\n\t\t\t.removeClass(this.options.loadedClass)\r\n\t\t\t.removeClass(this.options.rtlClass)\r\n\t\t\t.removeClass(this.options.dragClass)\r\n\t\t\t.removeClass(this.options.grabClass)\r\n\t\t\t.attr('class', this.$element.attr('class').replace(new RegExp(this.options.responsiveClass + '-\\\\S+\\\\s', 'g'), ''))\r\n\t\t\t.removeData('owl.carousel');\r\n\t};\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\tOwl.prototype.op = function(a, o, b) {\r\n\t\tvar rtl = this.settings.rtl;\r\n\t\tswitch (o) {\r\n\t\t\tcase '<':\r\n\t\t\t\treturn rtl ? a > b : a < b;\r\n\t\t\tcase '>':\r\n\t\t\t\treturn rtl ? a < b : a > b;\r\n\t\t\tcase '>=':\r\n\t\t\t\treturn rtl ? a <= b : a >= b;\r\n\t\t\tcase '<=':\r\n\t\t\t\treturn rtl ? a >= b : a <= b;\r\n\t\t\tdefault:\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t};\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\tOwl.prototype.on = function(element, event, listener, capture) {\r\n\t\tif (element.addEventListener) {\r\n\t\t\telement.addEventListener(event, listener, capture);\r\n\t\t} else if (element.attachEvent) {\r\n\t\t\telement.attachEvent('on' + event, listener);\r\n\t\t}\r\n\t};\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\tOwl.prototype.off = function(element, event, listener, capture) {\r\n\t\tif (element.removeEventListener) {\r\n\t\t\telement.removeEventListener(event, listener, capture);\r\n\t\t} else if (element.detachEvent) {\r\n\t\t\telement.detachEvent('on' + event, listener);\r\n\t\t}\r\n\t};\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\tOwl.prototype.trigger = function(name, data, namespace, state, enter) {\r\n\t\tvar status = {\r\n\t\t\titem: { count: this._items.length, index: this.current() }\r\n\t\t}, handler = $.camelCase(\r\n\t\t\t$.grep([ 'on', name, namespace ], function(v) { return v })\r\n\t\t\t\t.join('-').toLowerCase()\r\n\t\t), event = $.Event(\r\n\t\t\t[ name, 'owl', namespace || 'carousel' ].join('.').toLowerCase(),\r\n\t\t\t$.extend({ relatedTarget: this }, status, data)\r\n\t\t);\r\n\r\n\t\tif (!this._supress[name]) {\r\n\t\t\t$.each(this._plugins, function(name, plugin) {\r\n\t\t\t\tif (plugin.onTrigger) {\r\n\t\t\t\t\tplugin.onTrigger(event);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.register({ type: Owl.Type.Event, name: name });\r\n\t\t\tthis.$element.trigger(event);\r\n\r\n\t\t\tif (this.settings && typeof this.settings[handler] === 'function') {\r\n\t\t\t\tthis.settings[handler].call(this, event);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn event;\r\n\t};\r\n\r\n\t/**\r\n\t * Enters a state.\r\n\t * @param name - The state name.\r\n\t */\r\n\tOwl.prototype.enter = function(name) {\r\n\t\t$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\r\n\t\t\tif (this._states.current[name] === undefined) {\r\n\t\t\t\tthis._states.current[name] = 0;\r\n\t\t\t}\r\n\r\n\t\t\tthis._states.current[name]++;\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Leaves a state.\r\n\t * @param name - The state name.\r\n\t */\r\n\tOwl.prototype.leave = function(name) {\r\n\t\t$.each([ name ].concat(this._states.tags[name] || []), $.proxy(function(i, name) {\r\n\t\t\tthis._states.current[name]--;\r\n\t\t}, this));\r\n\t};\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\tOwl.prototype.register = function(object) {\r\n\t\tif (object.type === Owl.Type.Event) {\r\n\t\t\tif (!$.event.special[object.name]) {\r\n\t\t\t\t$.event.special[object.name] = {};\r\n\t\t\t}\r\n\r\n\t\t\tif (!$.event.special[object.name].owl) {\r\n\t\t\t\tvar _default = $.event.special[object.name]._default;\r\n\t\t\t\t$.event.special[object.name]._default = function(e) {\r\n\t\t\t\t\tif (_default && _default.apply && (!e.namespace || e.namespace.indexOf('owl') === -1)) {\r\n\t\t\t\t\t\treturn _default.apply(this, arguments);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn e.namespace && e.namespace.indexOf('owl') > -1;\r\n\t\t\t\t};\r\n\t\t\t\t$.event.special[object.name].owl = true;\r\n\t\t\t}\r\n\t\t} else if (object.type === Owl.Type.State) {\r\n\t\t\tif (!this._states.tags[object.name]) {\r\n\t\t\t\tthis._states.tags[object.name] = object.tags;\r\n\t\t\t} else {\r\n\t\t\t\tthis._states.tags[object.name] = this._states.tags[object.name].concat(object.tags);\r\n\t\t\t}\r\n\r\n\t\t\tthis._states.tags[object.name] = $.grep(this._states.tags[object.name], $.proxy(function(tag, i) {\r\n\t\t\t\treturn $.inArray(tag, this._states.tags[object.name]) === i;\r\n\t\t\t}, this));\r\n\t\t}\r\n\t};\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\tOwl.prototype.suppress = function(events) {\r\n\t\t$.each(events, $.proxy(function(index, event) {\r\n\t\t\tthis._supress[event] = true;\r\n\t\t}, this));\r\n\t};\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\tOwl.prototype.release = function(events) {\r\n\t\t$.each(events, $.proxy(function(index, event) {\r\n\t\t\tdelete this._supress[event];\r\n\t\t}, this));\r\n\t};\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\tOwl.prototype.pointer = function(event) {\r\n\t\tvar result = { x: null, y: null };\r\n\r\n\t\tevent = event.originalEvent || event || window.event;\r\n\r\n\t\tevent = event.touches && event.touches.length ?\r\n\t\t\tevent.touches[0] : event.changedTouches && event.changedTouches.length ?\r\n\t\t\t\tevent.changedTouches[0] : event;\r\n\r\n\t\tif (event.pageX) {\r\n\t\t\tresult.x = event.pageX;\r\n\t\t\tresult.y = event.pageY;\r\n\t\t} else {\r\n\t\t\tresult.x = event.clientX;\r\n\t\t\tresult.y = event.clientY;\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\t};\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\tOwl.prototype.isNumeric = function(number) {\r\n\t\treturn !isNaN(parseFloat(number));\r\n\t};\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\tOwl.prototype.difference = function(first, second) {\r\n\t\treturn {\r\n\t\t\tx: first.x - second.x,\r\n\t\t\ty: first.y - second.y\r\n\t\t};\r\n\t};\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\t$.fn.owlCarousel = function(option) {\r\n\t\tvar args = Array.prototype.slice.call(arguments, 1);\r\n\r\n\t\treturn this.each(function() {\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\tdata = $this.data('owl.carousel');\r\n\r\n\t\t\tif (!data) {\r\n\t\t\t\tdata = new Owl(this, typeof option == 'object' && option);\r\n\t\t\t\t$this.data('owl.carousel', data);\r\n\r\n\t\t\t\t$.each([\r\n\t\t\t\t\t'next', 'prev', 'to', 'destroy', 'refresh', 'replace', 'add', 'remove'\r\n\t\t\t\t], function(i, event) {\r\n\t\t\t\t\tdata.register({ type: Owl.Type.Event, name: event });\r\n\t\t\t\t\tdata.$element.on(event + '.owl.carousel.core', $.proxy(function(e) {\r\n\t\t\t\t\t\tif (e.namespace && e.relatedTarget !== this) {\r\n\t\t\t\t\t\t\tthis.suppress([ event ]);\r\n\t\t\t\t\t\t\tdata[event].apply(this, [].slice.call(arguments, 1));\r\n\t\t\t\t\t\t\tthis.release([ event ]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}, data));\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (typeof option == 'string' && option.charAt(0) !== '_') {\r\n\t\t\t\tdata[option].apply(data, args);\r\n\t\t\t}\r\n\t\t});\r\n\t};\r\n\r\n\t/**\r\n\t * The constructor for the jQuery Plugin\r\n\t * @public\r\n\t */\r\n\t$.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.3.4\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\tvar 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\t\tthis._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\t\tthis._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\t\tthis._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\t\tthis._handlers = {\r\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoRefresh) {\r\n\t\t\t\t\tthis.watch();\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, AutoRefresh.Defaults, this._core.options);\r\n\r\n\t\t// register event handlers\r\n\t\tthis._core.$element.on(this._handlers);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tAutoRefresh.Defaults = {\r\n\t\tautoRefresh: true,\r\n\t\tautoRefreshInterval: 500\r\n\t};\r\n\r\n\t/**\r\n\t * Watches the element.\r\n\t */\r\n\tAutoRefresh.prototype.watch = function() {\r\n\t\tif (this._interval) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._visible = this._core.isVisible();\r\n\t\tthis._interval = window.setInterval($.proxy(this.refresh, this), this._core.settings.autoRefreshInterval);\r\n\t};\r\n\r\n\t/**\r\n\t * Refreshes the element.\r\n\t */\r\n\tAutoRefresh.prototype.refresh = function() {\r\n\t\tif (this._core.isVisible() === this._visible) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._visible = !this._visible;\r\n\r\n\t\tthis._core.$element.toggleClass('owl-hidden', !this._visible);\r\n\r\n\t\tthis._visible && (this._core.invalidate('width') && this._core.refresh());\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t */\r\n\tAutoRefresh.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\twindow.clearInterval(this._interval);\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.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\tvar 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\t\tthis._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\t\tthis._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\t\tthis._handlers = {\r\n\t\t\t'initialized.owl.carousel change.owl.carousel resized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (!e.namespace) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!this._core.settings || !this._core.settings.lazyLoad) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ((e.property && e.property.name == 'position') || e.type == 'initialized') {\r\n\t\t\t\t\tvar settings = this._core.settings,\r\n\t\t\t\t\t\tn = (settings.center && Math.ceil(settings.items / 2) || settings.items),\r\n\t\t\t\t\t\ti = ((settings.center && n * -1) || 0),\r\n\t\t\t\t\t\tposition = (e.property && e.property.value !== undefined ? e.property.value : this._core.current()) + i,\r\n\t\t\t\t\t\tclones = this._core.clones().length,\r\n\t\t\t\t\t\tload = $.proxy(function(i, v) { this.load(v) }, this);\r\n\t\t\t\t\t//TODO: Need documentation for this new option\r\n\t\t\t\t\tif (settings.lazyLoadEager > 0) {\r\n\t\t\t\t\t\tn += settings.lazyLoadEager;\r\n\t\t\t\t\t\t// If the carousel is looping also preload images that are to the \"left\"\r\n\t\t\t\t\t\tif (settings.loop) {\r\n position -= settings.lazyLoadEager;\r\n n++;\r\n }\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twhile (i++ < n) {\r\n\t\t\t\t\t\tthis.load(clones / 2 + this._core.relative(position));\r\n\t\t\t\t\t\tclones && $.each(this._core.clones(this._core.relative(position)), load);\r\n\t\t\t\t\t\tposition++;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set the default options\r\n\t\tthis._core.options = $.extend({}, Lazy.Defaults, this._core.options);\r\n\r\n\t\t// register event handler\r\n\t\tthis._core.$element.on(this._handlers);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tLazy.Defaults = {\r\n\t\tlazyLoad: false,\r\n\t\tlazyLoadEager: 0\r\n\t};\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\tLazy.prototype.load = function(position) {\r\n\t\tvar $item = this._core.$stage.children().eq(position),\r\n\t\t\t$elements = $item && $item.find('.owl-lazy');\r\n\r\n\t\tif (!$elements || $.inArray($item.get(0), this._loaded) > -1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t$elements.each($.proxy(function(index, element) {\r\n\t\t\tvar $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\t\t\tif ($element.is('img') && !$element.attr('data-src')) {\r\n\t\t\t\t$element.css('opacity', 1);\r\n\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n\t\t\t} else {\r\n\t\t\t\tthis._core.trigger('load', { element: $element, url: url }, 'lazy');\r\n\r\n\t\t\t\tif ($element.is('img')) {\r\n\t\t\t\t\t$element.one('load.owl.lazy', $.proxy(function() {\r\n\t\t\t\t\t\t$element.css('opacity', 1);\r\n\t\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n\t\t\t\t\t}, this)).attr('src', url);\r\n\t\t\t\t} else if ($element.is('source')) {\r\n\t\t\t\t\t$element.one('load.owl.lazy', $.proxy(function() {\r\n this._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n }, this)).attr('srcset', url);\r\n\t\t\t\t} else {\r\n\t\t\t\t\timage = new Image();\r\n\t\t\t\t\timage.onload = $.proxy(function() {\r\n\t\t\t\t\t\t$element.css({\r\n\t\t\t\t\t\t\t'background-image': 'url(\"' + url + '\")',\r\n\t\t\t\t\t\t\t'opacity': '1'\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tthis._core.trigger('loaded', { element: $element, url: url }, 'lazy');\r\n\t\t\t\t\t}, this);\r\n\t\t\t\t\timage.src = url;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}, this));\r\n\r\n\t\tthis._loaded.push($item.get(0));\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @public\r\n\t */\r\n\tLazy.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tfor (handler in this.handlers) {\r\n\t\t\tthis._core.$element.off(handler, this.handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.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.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 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\tvar 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\t\tthis._core = carousel;\r\n\r\n\t\tthis._previousHeight = 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\t\tthis._handlers = {\r\n\t\t\t'initialized.owl.carousel refreshed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoHeight) {\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoHeight && e.property.name === 'position'){\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'loaded.owl.lazy': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoHeight\r\n\t\t\t\t\t&& e.element.closest('.' + this._core.settings.itemClass).index() === this._core.current()) {\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, AutoHeight.Defaults, this._core.options);\r\n\r\n\t\t// register event handlers\r\n\t\tthis._core.$element.on(this._handlers);\r\n\t\tthis._intervalId = null;\r\n\t\tvar refThis = this;\r\n\r\n\t\t// These changes have been taken from a PR by gavrochelegnou proposed in #1575\r\n\t\t// and have been made compatible with the latest jQuery version\r\n\t\t$(window).on('load', function() {\r\n\t\t\tif (refThis._core.settings.autoHeight) {\r\n\t\t\t\trefThis.update();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t// Autoresize the height of the carousel when window is resized\r\n\t\t// When carousel has images, the height is dependent on the width\r\n\t\t// and should also change on resize\r\n\t\t$(window).resize(function() {\r\n\t\t\tif (refThis._core.settings.autoHeight) {\r\n\t\t\t\tif (refThis._intervalId != null) {\r\n\t\t\t\t\tclearTimeout(refThis._intervalId);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trefThis._intervalId = setTimeout(function() {\r\n\t\t\t\t\trefThis.update();\r\n\t\t\t\t}, 250);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tAutoHeight.Defaults = {\r\n\t\tautoHeight: false,\r\n\t\tautoHeightClass: 'owl-height'\r\n\t};\r\n\r\n\t/**\r\n\t * Updates the view.\r\n\t */\r\n\tAutoHeight.prototype.update = function() {\r\n\t\tvar start = this._core._current,\r\n\t\t\tend = start + this._core.settings.items,\r\n\t\t\tlazyLoadEnabled = this._core.settings.lazyLoad,\r\n\t\t\tvisible = this._core.$stage.children().toArray().slice(start, end),\r\n\t\t\theights = [],\r\n\t\t\tmaxheight = 0;\r\n\r\n\t\t$.each(visible, function(index, item) {\r\n\t\t\theights.push($(item).height());\r\n\t\t});\r\n\r\n\t\tmaxheight = Math.max.apply(null, heights);\r\n\r\n\t\tif (maxheight <= 1 && lazyLoadEnabled && this._previousHeight) {\r\n\t\t\tmaxheight = this._previousHeight;\r\n\t\t}\r\n\r\n\t\tthis._previousHeight = maxheight;\r\n\r\n\t\tthis._core.$stage.parent()\r\n\t\t\t.height(maxheight)\r\n\t\t\t.addClass(this._core.settings.autoHeightClass);\r\n\t};\r\n\r\n\tAutoHeight.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] !== 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.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.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 video plugin.\r\n\t * @class The Video Plugin\r\n\t * @param {Owl} carousel - The Owl Carousel\r\n\t */\r\n\tvar 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\t\tthis._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\t\tthis._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\t\tthis._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\t\tthis._handlers = {\r\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace) {\r\n\t\t\t\t\tthis._core.register({ type: 'state', name: 'playing', tags: [ 'interacting' ] });\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'resize.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.video && this.isInFullScreen()) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'refreshed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.is('resizing')) {\r\n\t\t\t\t\tthis._core.$stage.find('.cloned .owl-video-frame').remove();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && e.property.name === 'position' && this._playing) {\r\n\t\t\t\t\tthis.stop();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (!e.namespace) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar $element = $(e.content).find('.owl-video');\r\n\r\n\t\t\t\tif ($element.length) {\r\n\t\t\t\t\t$element.css('display', 'none');\r\n\t\t\t\t\tthis.fetch($element, $(e.content));\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, Video.Defaults, this._core.options);\r\n\r\n\t\t// register event handlers\r\n\t\tthis._core.$element.on(this._handlers);\r\n\r\n\t\tthis._core.$element.on('click.owl.video', '.owl-video-play-icon', $.proxy(function(e) {\r\n\t\t\tthis.play(e);\r\n\t\t}, this));\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tVideo.Defaults = {\r\n\t\tvideo: false,\r\n\t\tvideoHeight: false,\r\n\t\tvideoWidth: false\r\n\t};\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\tVideo.prototype.fetch = function(target, item) {\r\n\t\t\tvar type = (function() {\r\n\t\t\t\t\tif (target.attr('data-vimeo-id')) {\r\n\t\t\t\t\t\treturn 'vimeo';\r\n\t\t\t\t\t} else if (target.attr('data-vzaar-id')) {\r\n\t\t\t\t\t\treturn 'vzaar'\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn 'youtube';\r\n\t\t\t\t\t}\r\n\t\t\t\t})(),\r\n\t\t\t\tid = target.attr('data-vimeo-id') || target.attr('data-youtube-id') || target.attr('data-vzaar-id'),\r\n\t\t\t\twidth = target.attr('data-width') || this._core.settings.videoWidth,\r\n\t\t\t\theight = target.attr('data-height') || this._core.settings.videoHeight,\r\n\t\t\t\turl = target.attr('href');\r\n\r\n\t\tif (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\t\t\tid = url.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com|be\\-nocookie\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/);\r\n\r\n\t\t\tif (id[3].indexOf('youtu') > -1) {\r\n\t\t\t\ttype = 'youtube';\r\n\t\t\t} else if (id[3].indexOf('vimeo') > -1) {\r\n\t\t\t\ttype = 'vimeo';\r\n\t\t\t} else if (id[3].indexOf('vzaar') > -1) {\r\n\t\t\t\ttype = 'vzaar';\r\n\t\t\t} else {\r\n\t\t\t\tthrow new Error('Video URL not supported.');\r\n\t\t\t}\r\n\t\t\tid = id[6];\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing video URL.');\r\n\t\t}\r\n\r\n\t\tthis._videos[url] = {\r\n\t\t\ttype: type,\r\n\t\t\tid: id,\r\n\t\t\twidth: width,\r\n\t\t\theight: height\r\n\t\t};\r\n\r\n\t\titem.attr('data-video', url);\r\n\r\n\t\tthis.thumbnail(target, this._videos[url]);\r\n\t};\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\tVideo.prototype.thumbnail = function(target, video) {\r\n\t\tvar tnLink,\r\n\t\t\ticon,\r\n\t\t\tpath,\r\n\t\t\tdimensions = video.width && video.height ? 'width:' + video.width + 'px;height:' + video.height + 'px;' : '',\r\n\t\t\tcustomTn = target.find('img'),\r\n\t\t\tsrcType = 'src',\r\n\t\t\tlazyClass = '',\r\n\t\t\tsettings = this._core.settings,\r\n\t\t\tcreate = function(path) {\r\n\t\t\t\ticon = '
';\r\n\r\n\t\t\t\tif (settings.lazyLoad) {\r\n\t\t\t\t\ttnLink = $('
',{\r\n\t\t\t\t\t\t\"class\": 'owl-video-tn ' + lazyClass,\r\n\t\t\t\t\t\t\"srcType\": path\r\n\t\t\t\t\t});\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttnLink = $( '
', {\r\n\t\t\t\t\t\t\"class\": \"owl-video-tn\",\r\n\t\t\t\t\t\t\"style\": 'opacity:1;background-image:url(' + path + ')'\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\ttarget.after(tnLink);\r\n\t\t\t\ttarget.after(icon);\r\n\t\t\t};\r\n\r\n\t\t// wrap video content into owl-video-wrapper div\r\n\t\ttarget.wrap( $( '
', {\r\n\t\t\t\"class\": \"owl-video-wrapper\",\r\n\t\t\t\"style\": dimensions\r\n\t\t}));\r\n\r\n\t\tif (this._core.settings.lazyLoad) {\r\n\t\t\tsrcType = 'data-src';\r\n\t\t\tlazyClass = 'owl-lazy';\r\n\t\t}\r\n\r\n\t\t// custom thumbnail\r\n\t\tif (customTn.length) {\r\n\t\t\tcreate(customTn.attr(srcType));\r\n\t\t\tcustomTn.remove();\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif (video.type === 'youtube') {\r\n\t\t\tpath = \"//img.youtube.com/vi/\" + video.id + \"/hqdefault.jpg\";\r\n\t\t\tcreate(path);\r\n\t\t} else if (video.type === 'vimeo') {\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\turl: '//vimeo.com/api/v2/video/' + video.id + '.json',\r\n\t\t\t\tjsonp: 'callback',\r\n\t\t\t\tdataType: 'jsonp',\r\n\t\t\t\tsuccess: function(data) {\r\n\t\t\t\t\tpath = data[0].thumbnail_large;\r\n\t\t\t\t\tcreate(path);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (video.type === 'vzaar') {\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\turl: '//vzaar.com/api/videos/' + video.id + '.json',\r\n\t\t\t\tjsonp: 'callback',\r\n\t\t\t\tdataType: 'jsonp',\r\n\t\t\t\tsuccess: function(data) {\r\n\t\t\t\t\tpath = data.framegrab_url;\r\n\t\t\t\t\tcreate(path);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Stops the current video.\r\n\t * @public\r\n\t */\r\n\tVideo.prototype.stop = function() {\r\n\t\tthis._core.trigger('stop', null, 'video');\r\n\t\tthis._playing.find('.owl-video-frame').remove();\r\n\t\tthis._playing.removeClass('owl-video-playing');\r\n\t\tthis._playing = null;\r\n\t\tthis._core.leave('playing');\r\n\t\tthis._core.trigger('stopped', null, 'video');\r\n\t};\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\tVideo.prototype.play = function(event) {\r\n\t\tvar target = $(event.target),\r\n\t\t\titem = target.closest('.' + this._core.settings.itemClass),\r\n\t\t\tvideo = this._videos[item.attr('data-video')],\r\n\t\t\twidth = video.width || '100%',\r\n\t\t\theight = video.height || this._core.$stage.height(),\r\n\t\t\thtml,\r\n\t\t\tiframe;\r\n\r\n\t\tif (this._playing) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._core.enter('playing');\r\n\t\tthis._core.trigger('play', null, 'video');\r\n\r\n\t\titem = this._core.items(this._core.relative(item.index()));\r\n\r\n\t\tthis._core.reset(item.index());\r\n\r\n\t\thtml = $( '' );\r\n\t\thtml.attr( 'height', height );\r\n\t\thtml.attr( 'width', width );\r\n\t\tif (video.type === 'youtube') {\r\n\t\t\thtml.attr( 'src', '//www.youtube.com/embed/' + video.id + '?autoplay=1&rel=0&v=' + video.id );\r\n\t\t} else if (video.type === 'vimeo') {\r\n\t\t\thtml.attr( 'src', '//player.vimeo.com/video/' + video.id + '?autoplay=1' );\r\n\t\t} else if (video.type === 'vzaar') {\r\n\t\t\thtml.attr( 'src', '//view.vzaar.com/' + video.id + '/player?autoplay=true' );\r\n\t\t}\r\n\r\n\t\tiframe = $(html).wrap( '
' ).insertAfter(item.find('.owl-video'));\r\n\r\n\t\tthis._playing = item.addClass('owl-video-playing');\r\n\t};\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\tVideo.prototype.isInFullScreen = function() {\r\n\t\tvar element = document.fullscreenElement || document.mozFullScreenElement ||\r\n\t\t\t\tdocument.webkitFullscreenElement;\r\n\r\n\t\treturn element && $(element).parent().hasClass('owl-video-frame');\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t */\r\n\tVideo.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tthis._core.$element.off('click.owl.video');\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.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.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 animate plugin.\r\n\t * @class The Navigation Plugin\r\n\t * @param {Owl} scope - The Owl Carousel\r\n\t */\r\n\tvar Animate = function(scope) {\r\n\t\tthis.core = scope;\r\n\t\tthis.core.options = $.extend({}, Animate.Defaults, this.core.options);\r\n\t\tthis.swapping = true;\r\n\t\tthis.previous = undefined;\r\n\t\tthis.next = undefined;\r\n\r\n\t\tthis.handlers = {\r\n\t\t\t'change.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && e.property.name == 'position') {\r\n\t\t\t\t\tthis.previous = this.core.current();\r\n\t\t\t\t\tthis.next = e.property.value;\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'drag.owl.carousel dragged.owl.carousel translated.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace) {\r\n\t\t\t\t\tthis.swapping = e.type == 'translated';\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'translate.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this.swapping && (this.core.options.animateOut || this.core.options.animateIn)) {\r\n\t\t\t\t\tthis.swap();\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\tthis.core.$element.on(this.handlers);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tAnimate.Defaults = {\r\n\t\tanimateOut: false,\r\n\t\tanimateIn: false\r\n\t};\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\tAnimate.prototype.swap = function() {\r\n\r\n\t\tif (this.core.settings.items !== 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!$.support.animation || !$.support.transition) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.core.speed(0);\r\n\r\n\t\tvar left,\r\n\t\t\tclear = $.proxy(this.clear, this),\r\n\t\t\tprevious = this.core.$stage.children().eq(this.previous),\r\n\t\t\tnext = this.core.$stage.children().eq(this.next),\r\n\t\t\tincoming = this.core.settings.animateIn,\r\n\t\t\toutgoing = this.core.settings.animateOut;\r\n\r\n\t\tif (this.core.current() === this.previous) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (outgoing) {\r\n\t\t\tleft = this.core.coordinates(this.previous) - this.core.coordinates(this.next);\r\n\t\t\tprevious.one($.support.animation.end, clear)\r\n\t\t\t\t.css( { 'left': left + 'px' } )\r\n\t\t\t\t.addClass('animated owl-animated-out')\r\n\t\t\t\t.addClass(outgoing);\r\n\t\t}\r\n\r\n\t\tif (incoming) {\r\n\t\t\tnext.one($.support.animation.end, clear)\r\n\t\t\t\t.addClass('animated owl-animated-in')\r\n\t\t\t\t.addClass(incoming);\r\n\t\t}\r\n\t};\r\n\r\n\tAnimate.prototype.clear = function(e) {\r\n\t\t$(e.target).css( { 'left': '' } )\r\n\t\t\t.removeClass('animated owl-animated-out owl-animated-in')\r\n\t\t\t.removeClass(this.core.settings.animateIn)\r\n\t\t\t.removeClass(this.core.settings.animateOut);\r\n\t\tthis.core.onTransitionEnd();\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @public\r\n\t */\r\n\tAnimate.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tfor (handler in this.handlers) {\r\n\t\t\tthis.core.$element.off(handler, this.handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.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.3.4\r\n * @author Bartosz Wojciechowski\r\n * @author Artus Kolanowski\r\n * @author David Deutsch\r\n * @author Tom De Caluw�\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\tvar 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\t\tthis._core = carousel;\r\n\r\n\t\t/**\r\n\t\t * The autoplay timeout id.\r\n\t\t * @type {Number}\r\n\t\t */\r\n\t\tthis._call = null;\r\n\r\n\t\t/**\r\n\t\t * Depending on the state of the plugin, this variable contains either\r\n\t\t * the start time of the timer or the current timer value if it's\r\n\t\t * paused. Since we start in a paused state we initialize the timer\r\n\t\t * value.\r\n\t\t * @type {Number}\r\n\t\t */\r\n\t\tthis._time = 0;\r\n\r\n\t\t/**\r\n\t\t * Stores the timeout currently used.\r\n\t\t * @type {Number}\r\n\t\t */\r\n\t\tthis._timeout = 0;\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\t\tthis._paused = true;\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\t\tthis._handlers = {\r\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && e.property.name === 'settings') {\r\n\t\t\t\t\tif (this._core.settings.autoplay) {\r\n\t\t\t\t\t\tthis.play();\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.stop();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else if (e.namespace && e.property.name === 'position' && this._paused) {\r\n\t\t\t\t\t// Reset the timer. This code is triggered when the position\r\n\t\t\t\t\t// of the carousel was changed through user interaction.\r\n\t\t\t\t\tthis._time = 0;\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.autoplay) {\r\n\t\t\t\t\tthis.play();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'play.owl.autoplay': $.proxy(function(e, t, s) {\r\n\t\t\t\tif (e.namespace) {\r\n\t\t\t\t\tthis.play(t, s);\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'stop.owl.autoplay': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace) {\r\n\t\t\t\t\tthis.stop();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'mouseover.owl.autoplay': $.proxy(function() {\r\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n\t\t\t\t\tthis.pause();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'mouseleave.owl.autoplay': $.proxy(function() {\r\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n\t\t\t\t\tthis.play();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'touchstart.owl.core': $.proxy(function() {\r\n\t\t\t\tif (this._core.settings.autoplayHoverPause && this._core.is('rotating')) {\r\n\t\t\t\t\tthis.pause();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'touchend.owl.core': $.proxy(function() {\r\n\t\t\t\tif (this._core.settings.autoplayHoverPause) {\r\n\t\t\t\t\tthis.play();\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// register event handlers\r\n\t\tthis._core.$element.on(this._handlers);\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, Autoplay.Defaults, this._core.options);\r\n\t};\r\n\r\n\t/**\r\n\t * Default options.\r\n\t * @public\r\n\t */\r\n\tAutoplay.Defaults = {\r\n\t\tautoplay: false,\r\n\t\tautoplayTimeout: 5000,\r\n\t\tautoplayHoverPause: false,\r\n\t\tautoplaySpeed: false\r\n\t};\r\n\r\n\t/**\r\n\t * Transition to the next slide and set a timeout for the next transition.\r\n\t * @private\r\n\t * @param {Number} [speed] - The animation speed for the animations.\r\n\t */\r\n\tAutoplay.prototype._next = function(speed) {\r\n\t\tthis._call = window.setTimeout(\r\n\t\t\t$.proxy(this._next, this, speed),\r\n\t\t\tthis._timeout * (Math.round(this.read() / this._timeout) + 1) - this.read()\r\n\t\t);\r\n\r\n\t\tif (this._core.is('interacting') || document.hidden) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis._core.next(speed || this._core.settings.autoplaySpeed);\r\n\t}\r\n\r\n\t/**\r\n\t * Reads the current timer value when the timer is playing.\r\n\t * @public\r\n\t */\r\n\tAutoplay.prototype.read = function() {\r\n\t\treturn new Date().getTime() - this._time;\r\n\t};\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\tAutoplay.prototype.play = function(timeout, speed) {\r\n\t\tvar elapsed;\r\n\r\n\t\tif (!this._core.is('rotating')) {\r\n\t\t\tthis._core.enter('rotating');\r\n\t\t}\r\n\r\n\t\ttimeout = timeout || this._core.settings.autoplayTimeout;\r\n\r\n\t\t// Calculate the elapsed time since the last transition. If the carousel\r\n\t\t// wasn't playing this calculation will yield zero.\r\n\t\telapsed = Math.min(this._time % (this._timeout || timeout), timeout);\r\n\r\n\t\tif (this._paused) {\r\n\t\t\t// Start the clock.\r\n\t\t\tthis._time = this.read();\r\n\t\t\tthis._paused = false;\r\n\t\t} else {\r\n\t\t\t// Clear the active timeout to allow replacement.\r\n\t\t\twindow.clearTimeout(this._call);\r\n\t\t}\r\n\r\n\t\t// Adjust the origin of the timer to match the new timeout value.\r\n\t\tthis._time += this.read() % timeout - elapsed;\r\n\r\n\t\tthis._timeout = timeout;\r\n\t\tthis._call = window.setTimeout($.proxy(this._next, this, speed), timeout - elapsed);\r\n\t};\r\n\r\n\t/**\r\n\t * Stops the autoplay.\r\n\t * @public\r\n\t */\r\n\tAutoplay.prototype.stop = function() {\r\n\t\tif (this._core.is('rotating')) {\r\n\t\t\t// Reset the clock.\r\n\t\t\tthis._time = 0;\r\n\t\t\tthis._paused = true;\r\n\r\n\t\t\twindow.clearTimeout(this._call);\r\n\t\t\tthis._core.leave('rotating');\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Pauses the autoplay.\r\n\t * @public\r\n\t */\r\n\tAutoplay.prototype.pause = function() {\r\n\t\tif (this._core.is('rotating') && !this._paused) {\r\n\t\t\t// Pause the clock.\r\n\t\t\tthis._time = this.read();\r\n\t\t\tthis._paused = true;\r\n\r\n\t\t\twindow.clearTimeout(this._call);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t */\r\n\tAutoplay.prototype.destroy = function() {\r\n\t\tvar handler, property;\r\n\r\n\t\tthis.stop();\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis._core.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t$.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.3.4\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\t'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\tvar 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\t\tthis._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\t\tthis._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\t\tthis._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\t\tthis._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\t\tthis._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\t\tthis.$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\t\tthis._overrides = {\r\n\t\t\tnext: this._core.next,\r\n\t\t\tprev: this._core.prev,\r\n\t\t\tto: this._core.to\r\n\t\t};\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\t\tthis._handlers = {\r\n\t\t\t'prepared.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\r\n\t\t\t\t\tthis._templates.push('
' +\r\n\t\t\t\t\t\t$(e.content).find('[data-dot]').addBack('[data-dot]').attr('data-dot') + '
');\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'added.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\r\n\t\t\t\t\tthis._templates.splice(e.position, 0, this._templates.pop());\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'remove.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._core.settings.dotsData) {\r\n\t\t\t\t\tthis._templates.splice(e.position, 1);\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'changed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && e.property.name == 'position') {\r\n\t\t\t\t\tthis.draw();\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'initialized.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && !this._initialized) {\r\n\t\t\t\t\tthis._core.trigger('initialize', null, 'navigation');\r\n\t\t\t\t\tthis.initialize();\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t\tthis.draw();\r\n\t\t\t\t\tthis._initialized = true;\r\n\t\t\t\t\tthis._core.trigger('initialized', null, 'navigation');\r\n\t\t\t\t}\r\n\t\t\t}, this),\r\n\t\t\t'refreshed.owl.carousel': $.proxy(function(e) {\r\n\t\t\t\tif (e.namespace && this._initialized) {\r\n\t\t\t\t\tthis._core.trigger('refresh', null, 'navigation');\r\n\t\t\t\t\tthis.update();\r\n\t\t\t\t\tthis.draw();\r\n\t\t\t\t\tthis._core.trigger('refreshed', null, 'navigation');\r\n\t\t\t\t}\r\n\t\t\t}, this)\r\n\t\t};\r\n\r\n\t\t// set default options\r\n\t\tthis._core.options = $.extend({}, Navigation.Defaults, this._core.options);\r\n\r\n\t\t// register event handlers\r\n\t\tthis.$element.on(this._handlers);\r\n\t};\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\tNavigation.Defaults = {\r\n\t\tnav: false,\r\n\t\tnavText: [\r\n\t\t\t'',\r\n\t\t\t''\r\n\t\t],\r\n\t\tnavSpeed: false,\r\n\t\tnavElement: 'div',\r\n\t\tnavContainer: false,\r\n\t\tnavContainerClass: 'owl-nav',\r\n\t\tnavClass: [\r\n\t\t\t'owl-prev',\r\n\t\t\t'owl-next'\r\n\t\t],\r\n\t\tslideBy: 1,\r\n\t\tdotClass: 'owl-dot',\r\n\t\tdotsClass: 'owl-dots',\r\n\t\tdots: true,\r\n\t\tdotsEach: false,\r\n\t\tdotsData: false,\r\n\t\tdotsSpeed: false,\r\n\t\tdotsContainer: false\r\n\t};\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\tNavigation.prototype.initialize = function() {\r\n\t\tvar override,\r\n\t\t\tsettings = this._core.settings;\r\n\r\n\t\t// create DOM structure for relative navigation\r\n\t\tthis._controls.$relative = (settings.navContainer ? $(settings.navContainer)\r\n\t\t\t: $('
').addClass(settings.navContainerClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n\t\tthis._controls.$previous = $('<' + settings.navElement + '>')\r\n\t\t\t.addClass(settings.navClass[0])\r\n\t\t\t.html(settings.navText[0])\r\n\t\t\t.prependTo(this._controls.$relative)\r\n\t\t\t.on('click', $.proxy(function(e) {\r\n\t\t\t\tthis.prev(settings.navSpeed);\r\n\t\t\t}, this));\r\n\t\tthis._controls.$next = $('<' + settings.navElement + '>')\r\n\t\t\t.addClass(settings.navClass[1])\r\n\t\t\t.html(settings.navText[1])\r\n\t\t\t.appendTo(this._controls.$relative)\r\n\t\t\t.on('click', $.proxy(function(e) {\r\n\t\t\t\tthis.next(settings.navSpeed);\r\n\t\t\t}, this));\r\n\r\n\t\t// create DOM structure for absolute navigation\r\n\t\tif (!settings.dotsData) {\r\n\t\t\tthis._templates = [ $('
')\r\n\t\t\t\t.addClass(settings.dotClass)\r\n\t\t\t\t.append($(''))\r\n\t\t\t\t.prop('outerHTML') ];\r\n\t\t}\r\n\r\n\t\tthis._controls.$absolute = (settings.dotsContainer ? $(settings.dotsContainer)\r\n\t\t\t: $('
').addClass(settings.dotsClass).appendTo(this.$element)).addClass('disabled');\r\n\r\n\t\tthis._controls.$absolute.on('click', 'div', $.proxy(function(e) {\r\n\t\t\tvar index = $(e.target).parent().is(this._controls.$absolute)\r\n\t\t\t\t? $(e.target).index() : $(e.target).parent().index();\r\n\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tthis.to(index, settings.dotsSpeed);\r\n\t\t}, this));\r\n\r\n\t\t// override public methods of the carousel\r\n\t\tfor (override in this._overrides) {\r\n\t\t\tthis._core[override] = $.proxy(this[override], this);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Destroys the plugin.\r\n\t * @protected\r\n\t */\r\n\tNavigation.prototype.destroy = function() {\r\n\t\tvar handler, control, property, override, settings;\r\n\t\tsettings = this._core.settings;\r\n\r\n\t\tfor (handler in this._handlers) {\r\n\t\t\tthis.$element.off(handler, this._handlers[handler]);\r\n\t\t}\r\n\t\tfor (control in this._controls) {\r\n\t\t\tif (control === '$relative' && settings.navContainer) {\r\n\t\t\t\tthis._controls[control].html('');\r\n\t\t\t} else {\r\n\t\t\t\tthis._controls[control].remove();\r\n\t\t\t}\r\n\t\t}\r\n\t\tfor (override in this.overides) {\r\n\t\t\tthis._core[override] = this._overrides[override];\r\n\t\t}\r\n\t\tfor (property in Object.getOwnPropertyNames(this)) {\r\n\t\t\ttypeof this[property] != 'function' && (this[property] = null);\r\n\t\t}\r\n\t};\r\n\r\n\t/**\r\n\t * Updates the internal state.\r\n\t * @protected\r\n\t */\r\n\tNavigation.prototype.update = function() {\r\n\t\tvar i, j, k,\r\n\t\t\tlower = this._core.clones().length / 2,\r\n\t\t\tupper = lower + this._core.items().length,\r\n\t\t\tmaximum = this._core.maximum(true),\r\n\t\t\tsettings = this._core.settings,\r\n\t\t\tsize = settings.center || settings.autoWidth || settings.dotsData\r\n\t\t\t\t? 1 : settings.dotsEach || settings.items;\r\n\r\n\t\tif (settings.slideBy !== 'page') {\r\n\t\t\tsettings.slideBy = Math.min(settings.slideBy, settings.items);\r\n\t\t}\r\n\r\n\t\tif (settings.dots || settings.slideBy == 'page') {\r\n\t\t\tthis._pages = [];\r\n\r\n\t\t\tfor (i = lower, j = 0, k = 0; i < upper; i++) {\r\n\t\t\t\tif (j >= size || j === 0) {\r\n\t\t\t\t\tthis._pages.push({\r\n\t\t\t\t\t\tstart: Math.min(maximum, i - lower),\r\n\t\t\t\t\t\tend: i - lower + size - 1\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (Math.min(maximum, i - lower) === maximum) {\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tj = 0, ++k;\r\n\t\t\t\t}\r\n\t\t\t\tj += this._core.mergers(this._core.relative(i));\r\n\t\t\t}\r\n\t\t}\r\n\t};\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\tNavigation.prototype.draw = function() {\r\n\t\tvar difference,\r\n\t\t\tsettings = this._core.settings,\r\n\t\t\tdisabled = this._core.items().length <= settings.items,\r\n\t\t\tindex = this._core.relative(this._core.current()),\r\n\t\t\tloop = settings.loop || settings.rewind;\r\n\r\n\t\tthis._controls.$relative.toggleClass('disabled', !settings.nav || disabled);\r\n\r\n\t\tif (settings.nav) {\r\n\t\t\tthis._controls.$previous.toggleClass('disabled', !loop && index <= this._core.minimum(true));\r\n\t\t\tthis._controls.$next.toggleClass('disabled', !loop && index >= this._core.maximum(true));\r\n\t\t}\r\n\r\n\t\tthis._controls.$absolute.toggleClass('disabled', !settings.dots || disabled);\r\n\r\n\t\tif (settings.dots) {\r\n\t\t\tdifference = this._pages.length - this._controls.$absolute.children().length;\r\n\r\n\t\t\tif (settings.dotsData && difference !== 0) {\r\n\t\t\t\tthis._controls.$absolute.html(this._templates.join(''));\r\n\t\t\t} else if (difference > 0) {\r\n\t\t\t\tthis._controls.$absolute.append(new Array(difference + 1).join(this._templates[0]));\r\n\t\t\t} else if (difference < 0) {\r\n\t\t\t\tthis._controls.$absolute.children().slice(difference).remove();\r\n\t\t\t}\r\n\r\n\t\t\tthis._controls.$absolute.find('.active').removeClass('active');\r\n\t\t\tthis._controls.$absolute.children().eq($.inArray(this.current(), this._pages)).addClass('active');\r\n\t\t}\r\n\t};\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\tNavigation.prototype.onTrigger = function(event) {\r\n\t\tvar settings = this._core.settings;\r\n\r\n\t\tevent.page = {\r\n\t\t\tindex: $.inArray(this.current(), this._pages),\r\n\t\t\tcount: this._pages.length,\r\n\t\t\tsize: settings && (settings.center || settings.autoWidth || settings.dotsData\r\n\t\t\t\t? 1 : settings.dotsEach || settings.items)\r\n\t\t};\r\n\t};\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\tNavigation.prototype.current = function() {\r\n\t\tvar current = this._core.relative(this._core.current());\r\n\t\treturn $.grep(this._pages, $.proxy(function(page, index) {\r\n\t\t\treturn page.start <= current && page.end >= current;\r\n\t\t}, this)).pop();\r\n\t};\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\tNavigation.prototype.getPosition = function(successor) {\r\n\t\tvar position, length,\r\n\t\t\tsettings = this._core.settings;\r\n\r\n\t\tif (settings.slideBy == 'page') {\r\n\t\t\tposition = $.inArray(this.current(), this._pages);\r\n\t\t\tlength = this._pages.length;\r\n\t\t\tsuccessor ? ++position : --position;\r\n\t\t\tposition = this._pages[((position % length) + length) % length].start;\r\n\t\t} else {\r\n\t\t\tposition = this._core.relative(this._core.current());\r\n\t\t\tlength = this._core.items().length;\r\n\t\t\tsuccessor ? position += settings.slideBy : position -= settings.slideBy;\r\n\t\t}\r\n\r\n\t\treturn position;\r\n\t};\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\tNavigation.prototype.next = function(speed) {\r\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(true), speed);\r\n\t};\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\tNavigation.prototype.prev = function(speed) {\r\n\t\t$.proxy(this._overrides.to, this._core)(this.getPosition(false), speed);\r\n\t};\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\tNavigation.prototype.to = function(position, speed, standard) {\r\n\t\tvar length;\r\n\r\n\t\tif (!standard && this._pages.length) {\r\n\t\t\tlength = this._pages.length;\r\n\t\t\t$.proxy(this._overrides.to, this._core)(this._pages[((position % length) + length) % length].start, speed);\r\n\t\t} else {\r\n\t\t\t$.proxy(this._overrides.to, this._core)(position, speed);\r\n\t\t}\r\n\t};\r\n\r\n\t$.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.3.4\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\tvar style = $('').get(0).style,\r\n\t\tprefixes = 'Webkit Moz O ms'.split(' '),\r\n\t\tevents = {\r\n\t\t\ttransition: {\r\n\t\t\t\tend: {\r\n\t\t\t\t\tWebkitTransition: 'webkitTransitionEnd',\r\n\t\t\t\t\tMozTransition: 'transitionend',\r\n\t\t\t\t\tOTransition: 'oTransitionEnd',\r\n\t\t\t\t\ttransition: 'transitionend'\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tanimation: {\r\n\t\t\t\tend: {\r\n\t\t\t\t\tWebkitAnimation: 'webkitAnimationEnd',\r\n\t\t\t\t\tMozAnimation: 'animationend',\r\n\t\t\t\t\tOAnimation: 'oAnimationEnd',\r\n\t\t\t\t\tanimation: 'animationend'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t},\r\n\t\ttests = {\r\n\t\t\tcsstransforms: function() {\r\n\t\t\t\treturn !!test('transform');\r\n\t\t\t},\r\n\t\t\tcsstransforms3d: function() {\r\n\t\t\t\treturn !!test('perspective');\r\n\t\t\t},\r\n\t\t\tcsstransitions: function() {\r\n\t\t\t\treturn !!test('transition');\r\n\t\t\t},\r\n\t\t\tcssanimations: function() {\r\n\t\t\t\treturn !!test('animation');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\tfunction test(property, prefixed) {\r\n\t\tvar result = false,\r\n\t\t\tupper = property.charAt(0).toUpperCase() + property.slice(1);\r\n\r\n\t\t$.each((property + ' ' + prefixes.join(upper + ' ') + upper).split(' '), function(i, property) {\r\n\t\t\tif (style[property] !== undefined) {\r\n\t\t\t\tresult = prefixed ? property : true;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfunction prefixed(property) {\r\n\t\treturn test(property, true);\r\n\t}\r\n\r\n\tif (tests.csstransitions()) {\r\n\t\t/* jshint -W053 */\r\n\t\t$.support.transition = new String(prefixed('transition'))\r\n\t\t$.support.transition.end = events.transition.end[ $.support.transition ];\r\n\t}\r\n\r\n\tif (tests.cssanimations()) {\r\n\t\t/* jshint -W053 */\r\n\t\t$.support.animation = new String(prefixed('animation'))\r\n\t\t$.support.animation.end = events.animation.end[ $.support.animation ];\r\n\t}\r\n\r\n\tif (tests.csstransforms()) {\r\n\t\t/* jshint -W053 */\r\n\t\t$.support.transform = new String(prefixed('transform'));\r\n\t\t$.support.transform3d = tests.csstransforms3d();\r\n\t}\r\n\r\n})(window.Zepto || window.jQuery, window, document);\r\n","/**\r\n * Copyright (c) 2011-2014 Felix Gnass\r\n * Licensed under the MIT license\r\n * http://spin.js.org/\r\n *\r\n * Example:\r\n var opts = {\r\n lines: 12 // The number of lines to draw\r\n , length: 7 // The length of each line\r\n , width: 5 // The line thickness\r\n , radius: 10 // The radius of the inner circle\r\n , scale: 1.0 // Scales overall size of the spinner\r\n , corners: 1 // Roundness (0..1)\r\n , color: '#000' // #rgb or #rrggbb\r\n , opacity: 1/4 // Opacity of the lines\r\n , rotate: 0 // Rotation offset\r\n , direction: 1 // 1: clockwise, -1: counterclockwise\r\n , speed: 1 // Rounds per second\r\n , trail: 100 // Afterglow percentage\r\n , fps: 20 // Frames per second when using setTimeout()\r\n , zIndex: 2e9 // Use a high z-index by default\r\n , className: 'spinner' // CSS class to assign to the element\r\n , top: '50%' // center vertically\r\n , left: '50%' // center horizontally\r\n , shadow: false // Whether to render a shadow\r\n , hwaccel: false // Whether to use hardware acceleration (might be buggy)\r\n , position: 'absolute' // Element positioning\r\n }\r\n var target = document.getElementById('foo')\r\n var spinner = new Spinner(opts).spin(target)\r\n */\r\n;(function (root, factory) {\r\n root.Spinner = factory()\r\n}(this, function () {\r\n \"use strict\"\r\n\r\n var prefixes = ['webkit', 'moz', 'ms', 'o'] /* Vendor prefixes */\r\n , animations = {} /* Animation rules keyed by their name */\r\n , useCssAnimations /* Whether to use CSS animations or setTimeout */\r\n , sheet /* A stylesheet to hold the @keyframe or VML rules. */\r\n\r\n /**\r\n * Utility function to create elements. If no tag name is given,\r\n * a DIV is created. Optionally properties can be passed.\r\n */\r\n function createEl (tag, prop) {\r\n var el = document.createElement(tag || 'div')\r\n , n\r\n\r\n for (n in prop) el[n] = prop[n]\r\n return el\r\n }\r\n\r\n /**\r\n * Appends children and returns the parent.\r\n */\r\n function ins (parent /* child1, child2, ...*/) {\r\n for (var i = 1, n = arguments.length; i < n; i++) {\r\n parent.appendChild(arguments[i])\r\n }\r\n\r\n return parent\r\n }\r\n\r\n /**\r\n * Creates an opacity keyframe animation rule and returns its name.\r\n * Since most mobile Webkits have timing issues with animation-delay,\r\n * we create separate rules for each line/segment.\r\n */\r\n function addAnimation (alpha, trail, i, lines) {\r\n var name = ['opacity', trail, ~~(alpha * 100), i, lines].join('-')\r\n , start = 0.01 + i/lines * 100\r\n , z = Math.max(1 - (1-alpha) / trail * (100-start), alpha)\r\n , prefix = useCssAnimations.substring(0, useCssAnimations.indexOf('Animation')).toLowerCase()\r\n , pre = prefix && '-' + prefix + '-' || ''\r\n\r\n if (!animations[name]) {\r\n sheet.insertRule(\r\n '@' + pre + 'keyframes ' + name + '{' +\r\n '0%{opacity:' + z + '}' +\r\n start + '%{opacity:' + alpha + '}' +\r\n (start+0.01) + '%{opacity:1}' +\r\n (start+trail) % 100 + '%{opacity:' + alpha + '}' +\r\n '100%{opacity:' + z + '}' +\r\n '}', sheet.cssRules.length)\r\n\r\n animations[name] = 1\r\n }\r\n\r\n return name\r\n }\r\n\r\n /**\r\n * Tries various vendor prefixes and returns the first supported property.\r\n */\r\n function vendor (el, prop) {\r\n var s = el.style\r\n , pp\r\n , i\r\n\r\n prop = prop.charAt(0).toUpperCase() + prop.slice(1)\r\n if (s[prop] !== undefined) return prop\r\n for (i = 0; i < prefixes.length; i++) {\r\n pp = prefixes[i]+prop\r\n if (s[pp] !== undefined) return pp\r\n }\r\n }\r\n\r\n /**\r\n * Sets multiple style properties at once.\r\n */\r\n function css (el, prop) {\r\n for (var n in prop) {\r\n el.style[vendor(el, n) || n] = prop[n]\r\n }\r\n\r\n return el\r\n }\r\n\r\n /**\r\n * Fills in default values.\r\n */\r\n function merge (obj) {\r\n for (var i = 1; i < arguments.length; i++) {\r\n var def = arguments[i]\r\n for (var n in def) {\r\n if (obj[n] === undefined) obj[n] = def[n]\r\n }\r\n }\r\n return obj\r\n }\r\n\r\n /**\r\n * Returns the line color from the given string or array.\r\n */\r\n function getColor (color, idx) {\r\n return typeof color == 'string' ? color : color[idx % color.length]\r\n }\r\n\r\n // Built-in defaults\r\n\r\n var defaults = {\r\n lines: 12 // The number of lines to draw\r\n , length: 7 // The length of each line\r\n , width: 5 // The line thickness\r\n , radius: 10 // The radius of the inner circle\r\n , scale: 1.0 // Scales overall size of the spinner\r\n , corners: 1 // Roundness (0..1)\r\n , color: '#000' // #rgb or #rrggbb\r\n , opacity: 1/4 // Opacity of the lines\r\n , rotate: 0 // Rotation offset\r\n , direction: 1 // 1: clockwise, -1: counterclockwise\r\n , speed: 1 // Rounds per second\r\n , trail: 100 // Afterglow percentage\r\n , fps: 20 // Frames per second when using setTimeout()\r\n , zIndex: 2e9 // Use a high z-index by default\r\n , className: 'spinner' // CSS class to assign to the element\r\n , top: '50%' // center vertically\r\n , left: '50%' // center horizontally\r\n , shadow: false // Whether to render a shadow\r\n , hwaccel: false // Whether to use hardware acceleration (might be buggy)\r\n , position: 'absolute' // Element positioning\r\n }\r\n\r\n /** The constructor */\r\n function Spinner (o) {\r\n this.opts = merge(o || {}, Spinner.defaults, defaults)\r\n }\r\n\r\n // Global defaults that override the built-ins:\r\n Spinner.defaults = {}\r\n\r\n merge(Spinner.prototype, {\r\n /**\r\n * Adds the spinner to the given target element. If this instance is already\r\n * spinning, it is automatically removed from its previous target b calling\r\n * stop() internally.\r\n */\r\n spin: function (target) {\r\n this.stop()\r\n\r\n var self = this\r\n , o = self.opts\r\n , el = self.el = createEl(null, {className: o.className})\r\n\r\n css(el, {\r\n position: o.position\r\n , width: 0\r\n , zIndex: o.zIndex\r\n , left: o.left\r\n , top: o.top\r\n })\r\n\r\n if (target) {\r\n target.insertBefore(el, target.firstChild || null)\r\n }\r\n\r\n el.setAttribute('role', 'progressbar')\r\n self.lines(el, self.opts)\r\n\r\n if (!useCssAnimations) {\r\n // No CSS animation support, use setTimeout() instead\r\n var i = 0\r\n , start = (o.lines - 1) * (1 - o.direction) / 2\r\n , alpha\r\n , fps = o.fps\r\n , f = fps / o.speed\r\n , ostep = (1 - o.opacity) / (f * o.trail / 100)\r\n , astep = f / o.lines\r\n\r\n ;(function anim () {\r\n i++\r\n for (var j = 0; j < o.lines; j++) {\r\n alpha = Math.max(1 - (i + (o.lines - j) * astep) % f * ostep, o.opacity)\r\n\r\n self.opacity(el, j * o.direction + start, alpha, o)\r\n }\r\n self.timeout = self.el && setTimeout(anim, ~~(1000 / fps))\r\n })()\r\n }\r\n return self\r\n }\r\n\r\n /**\r\n * Stops and removes the Spinner.\r\n */\r\n , stop: function () {\r\n var el = this.el\r\n if (el) {\r\n clearTimeout(this.timeout)\r\n if (el.parentNode) el.parentNode.removeChild(el)\r\n this.el = undefined\r\n }\r\n return this\r\n }\r\n\r\n /**\r\n * Internal method that draws the individual lines. Will be overwritten\r\n * in VML fallback mode below.\r\n */\r\n , lines: function (el, o) {\r\n var i = 0\r\n , start = (o.lines - 1) * (1 - o.direction) / 2\r\n , seg\r\n\r\n function fill (color, shadow) {\r\n return css(createEl(), {\r\n position: 'absolute'\r\n , width: o.scale * (o.length + o.width) + 'px'\r\n , height: o.scale * o.width + 'px'\r\n , background: color\r\n , boxShadow: shadow\r\n , transformOrigin: 'left'\r\n , transform: 'rotate(' + ~~(360/o.lines*i + o.rotate) + 'deg) translate(' + o.scale*o.radius + 'px' + ',0)'\r\n , borderRadius: (o.corners * o.scale * o.width >> 1) + 'px'\r\n })\r\n }\r\n\r\n for (; i < o.lines; i++) {\r\n seg = css(createEl(), {\r\n position: 'absolute'\r\n , top: 1 + ~(o.scale * o.width / 2) + 'px'\r\n , transform: o.hwaccel ? 'translate3d(0,0,0)' : ''\r\n , opacity: o.opacity\r\n , animation: useCssAnimations && addAnimation(o.opacity, o.trail, start + i * o.direction, o.lines) + ' ' + 1 / o.speed + 's linear infinite'\r\n })\r\n\r\n if (o.shadow) ins(seg, css(fill('#000', '0 0 4px #000'), {top: '2px'}))\r\n ins(el, ins(seg, fill(getColor(o.color, i), '0 0 1px rgba(0,0,0,.1)')))\r\n }\r\n return el\r\n }\r\n\r\n /**\r\n * Internal method that adjusts the opacity of a single line.\r\n * Will be overwritten in VML fallback mode below.\r\n */\r\n , opacity: function (el, i, val) {\r\n if (i < el.childNodes.length) el.childNodes[i].style.opacity = val\r\n }\r\n\r\n })\r\n\r\n if (typeof document !== 'undefined') {\r\n sheet = (function () {\r\n var el = createEl('style', {type : 'text/css'})\r\n document.head.insertBefore(el, document.head.firstChild);\r\n return el.sheet || el.styleSheet\r\n }())\r\n\r\n var probe = css(createEl('group'), {behavior: 'url(#default#VML)'})\r\n\r\n useCssAnimations = vendor(probe, 'animation')\r\n }\r\n\r\n return Spinner\r\n\r\n}));","/**\r\n * @license AngularJS v1.7.7\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.7' })\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.7\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.7' }).\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\": \"SortedCategoryPage\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowSortedPage\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}/{sortType:alpha}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"SortedCategory\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowSorted\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/{sortType:alpha}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"CategoryPage\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowPage\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}-{page:int}\"\n }\n },\n {\n \"Name\": \"Category\",\n \"Controller\": \"Category\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}\"\n }\n },\n {\n \"Name\": \"CategoryWithElasticSearch\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}\"\n }\n },\n {\n \"Name\": \"SortedCategoryPageWithElasticSearch\",\n \"Controller\": \"Category\",\n \"Action\": \"ShowSortedPageWithElasticSearch\",\n \"fr\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}-{page:int}/{sortType:alpha}\"\n },\n \"en\": {\n \"URL\": \"{categoryName}-c-{categoryId:int}/es/{query}-{page:int}/{sortType:alpha}\"\n }\n },\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\": \"CartPaymentAction\",\n \"Controller\": \"Payment\",\n \"Action\": \"Payment\",\n \"fr\": {\n \"URL\": \"paiement\"\n },\n \"en\": {\n \"URL\": \"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\": \"QuickOrder\",\n \"Controller\": \"Cart\",\n \"Action\": \"QuickOrder\",\n \"fr\": {\n \"URL\": \"commande-par-reference\"\n },\n \"en\": {\n \"URL\": \"order-by-reference\"\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\": \"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\": \"CatalogRequest\",\n \"Controller\": \"Form\",\n \"Action\": \"CatalogRequest\",\n \"fr\": {\n \"URL\": \"catalogue\"\n },\n \"en\": {\n \"URL\": \"catalogue\"\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\": \"MessageContactAdd\",\n \"Controller\": \"Message\",\n \"Action\": \"AddContact\",\n \"fr\": {\n \"URL\": \"Message/Add/Contact\"\n },\n \"en\": {\n \"URL\": \"Message/Add/Contact\"\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\": \"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\": \"IndexAuthorByPage\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"QueryIndexAuthor\",\n \"fr\": {\n \"URL\": \"index/auteurs/{filterSelected}/{page}\"\n }\n },\n {\n \"Name\": \"IndexAuthor\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"QueryIndexAuthor\",\n \"fr\": {\n \"URL\": \"index/auteurs/{filterSelected}\"\n }\n },\n {\n \"Name\": \"IndexAuthors\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"QueryIndexAuthor\",\n \"fr\": {\n \"URL\": \"index/auteurs\"\n }\n },\n {\n \"Name\": \"IndexPublishers\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"QueryIndexPublishers\",\n \"fr\": {\n \"URL\": \"index/editeurs\"\n }\n },\n {\n \"Name\": \"IndexPublisher\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"Show\",\n \"fr\": {\n \"URL\": \"index/editeurs/{filterSelected}\"\n }\n },\n {\n \"Name\": \"SortedIndexPublisher\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"ShowSorted\",\n \"fr\": {\n \"URL\": \"index/editeurs/{filterSelected}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"IndexPublisherByPage\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"ShowPageSorted\",\n \"fr\": {\n \"URL\": \"index/editeurs/{filterSelected}/{page}/{sortType:alpha}\"\n }\n },\n {\n \"Name\": \"ValidCart\",\n \"Controller\": \"CdlCart\",\n \"Action\": \"ValidCart\",\n \"fr\": {\n \"URL\": \"panier/confirmation\"\n }\n },\n {\n \"Name\": \"AccountNoteTracking\",\n \"Controller\": \"AccountNoteTracking\",\n \"Action\": \"AccountNoteTracking\",\n \"fr\": {\n \"URL\": \"suivi-notes\"\n },\n \"en\": {\n \"URL\": \"note-tracking\"\n }\n },\n {\n \"Name\": \"Login\",\n \"Controller\": \"AuthenticationOverride\",\n \"Action\": \"Login\",\n \"fr\": {\n \"URL\": \"identification\"\n },\n \"en\": {\n \"URL\": \"authentication\"\n }\n },\n {\n \"Name\": \"Search\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche\"\n },\n \"en\": {\n \"URL\": \"research\"\n }\n },\n {\n \"Name\": \"SortedSearchPageAngular\",\n \"Controller\": \"CdlSearch\",\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\": \"CdlSearch\",\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\": \"SearchPageAngular\",\n \"Controller\": \"CdlSearch\",\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\": \"SearchAngular\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"Search\",\n \"fr\": {\n \"URL\": \"recherche/{q}\"\n },\n \"en\": {\n \"URL\": \"research/{q}\"\n }\n },\n {\n \"Name\": \"SearchProducts\",\n \"Controller\": \"CdlSearch\",\n \"Action\": \"SearchProducts\",\n \"fr\": {\n \"URL\": \"produits\"\n },\n \"en\": {\n \"URL\": \"products\"\n }\n },\n {\n \"Name\": \"SearchProductsPageAngular\",\n \"Controller\": \"CdlSearch\",\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\": \"CdlSearch\",\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\": \"CdlSearch\",\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})();\n","(function (ng) {\n'use strict';\nng.module('gulp-dependencies', ['angucomplete-alt','app.account-create','app.authentication','app.autocomplete','app.autocomplete-select','app.category','app.category.filters','app.comparator','app.form','app.password-revovery','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','app.stores-service','app.wishlist','compare.checkbox','index.authorsEditor','main.nav','minilogin','newsletter','service.authentication']);\n})(angular);","angular.module(\"gulp-templates\", []).run([\"$templateCache\", function($templateCache) {$templateCache.put(\"component.addtocart-classic.tpl\",\"
\");\n$templateCache.put(\"component.addtocart-quantity.tpl\",\"\");\n$templateCache.put(\"component.addtocart.tpl\",\"
\");\n$templateCache.put(\"component.addtomultiwishlist.tpl\",\"\");\n$templateCache.put(\"component.addtoquotation-advanced.tpl\",\"\");\n$templateCache.put(\"component.addtowishlist.tpl\",\"\");\n$templateCache.put(\"component.delete-cart-item.tpl\",\"\");\n$templateCache.put(\"component.input-quantity.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\r\n /* /components */\r\n 'component.input.quantity',\r\n 'component.addtocart',\r\n 'component.addtocart-quantity',\r\n 'component.addtowishlist',\r\n /* 'component.addtocart-classic',*/\r\n /*'component.addtomultiwishlist',*/\r\n 'component.addtoquotation-advanced',\r\n 'component.delete-cart-item',\r\n 'component.modify-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 'thatisuday.dropzone',\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.ngclipboard',\r\n 'directive.video-player',\r\n 'directive.flip',\r\n 'directive.back-to-top',\r\n 'infinite-scroll',\r\n 'directive.searchlink',\r\n 'directive.stop-propagation',\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\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 $scope.$emit('lazy:refresh');\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 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([\"usSpinnerConfigProvider\", function (usSpinnerConfigProvider) {\r\n usSpinnerConfigProvider.setDefaults({\r\n color: '#344d65',\r\n lines: 15,\r\n length: 12,\r\n width: 2,\r\n radius: 10,\r\n opacity: 0\r\n });\r\n usSpinnerConfigProvider.setTheme('small', {\r\n length: 8,\r\n radius: 5\r\n });\r\n usSpinnerConfigProvider.setDelay(400);\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 AppService.getParams();\r\n /*.then(function (params) {\r\n if (params.Localization.UseLogs) {\r\n RollbarService.init({\r\n local: true,\r\n rollbarJsUrl: '/js/rollbar.min.js',\r\n endpoint: (window.location.protocol + '//' + window.location.hostname + (window.location.port ? ':' + window.location.port : '') + '/api/log/'),\r\n enabled: true,\r\n accessToken: '61e410bdea92494d816368158aea2a11',\r\n captureUncaught: true,\r\n captureUnhandledRejections: true,\r\n autoInstrument: true,\r\n payload: {\r\n client: {\r\n javascript: {\r\n source_map_enabled: true,\r\n code_version: 'WEB7_v1',\r\n guess_uncaught_frames: true\r\n }\r\n }\r\n }\r\n });\r\n }\r\n });*/\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}}')\r\n .replace('{validValue1}', '{{validValue1}}')\r\n .replace('{validValue2}', '{{validValue2}}')\r\n .replace('{matchName}', '{{matchName}}');\r\n });\r\n bsValidationConfig.setMessages(translate.forms);\r\n })\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\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: '.\r\n **/\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('component.input.quantity', [])\r\n\r\n .component('inputQuantity', {\r\n require: {\r\n productCtrl: '?^^productDetail'\r\n },\r\n bindings: {\r\n id: ' $window.innerHeight && sc < lastPos ? true : false;\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', [\"Environment\", function (Environment) {\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: Environment === 'dev' ? '/js/bootstrap-select.js' : '/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","/*\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 {},\r\n null,\r\n 'clearCartConfirmModalCtrl'\r\n );\r\n };\r\n\r\n ctrl.remove = function (line) {\r\n ModalService.show(\r\n '/Template/Cart/ModalDeleteConfirm',\r\n {\r\n action: function () {\r\n AppService.deleteLine(line.IDLine, 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 && (params.Cart && params.Cart.Products && params.Cart.Products.length);\r\n ctrl.cartLink = !ctrl.hasCart ? '' : '/' + RoutesService.getUrlByName('Cart');\r\n ctrl.showTTCPrice = params.Visitor.CardType.ShowTTCPrice;\r\n ctrl.count = 0;\r\n if (ctrl.hasCart) {\r\n ctrl.data = params.Cart;\r\n 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\", function (data, $rootScope, HttpService, AppService, ModalService, toastr) {\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 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 },\r\n link: function (scope, element) {\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.searchlink', [])\r\n\r\n /* @ngInject */\r\n .directive('searchLink', [\"HttpService\", \"$location\", \"$rootScope\", function (HttpService, $location, $rootScope) {\r\n return {\r\n restrict: 'A',\r\n link: function (scope, element, attrs) {\r\n element.click(function (event) {\r\n var product = angular.fromJson(attrs.item);\r\n if (product) {\r\n if (product.IDProduct > 0) {\r\n HttpService.post({\r\n url: 'Search/SearchLog',\r\n data: {\r\n Query: attrs.query,\r\n Id: attrs.id,\r\n Index: attrs.index,\r\n Type: attrs.type\r\n }\r\n });\r\n }\r\n if (product.IsDilicom) {\r\n event.preventDefault();\r\n $rootScope.$broadcast('showPageLoader', true);\r\n HttpService.get({\r\n url: 'CreateDilicom/' + product.BarCode\r\n }).then(function (response) {\r\n if (response.status === 'OK') {\r\n $location.path(response.product.URL);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.error(error);\r\n })\r\n .finally(function () {\r\n $rootScope.$broadcast('showPageLoader', true);\r\n });\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 || 'default';\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 () {\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 = params.Visitor.CardType.ShowTTCPrice ? prices.TTCPrice : prices.HTPrice;\r\n template = ttc ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n case 'round-value':\r\n value = prices;\r\n template = ttc ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n break;\r\n case 'amount-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCAmount : prices.HTAmount;\r\n template = loc.PriceHTMLFormatVATexcluded;\r\n break;\r\n case 'final-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCDiscountedPrice : prices.HTDiscountedPrice;\r\n template = ttc ? loc.PriceHTMLFormatVATincluded : loc.PriceHTMLFormatVATexcluded;\r\n break;\r\n case 'saved-price':\r\n value = params.Visitor.CardType.ShowTTCPrice ? prices.TTCDiscountedPrice : prices.HTDiscountedPrice;\r\n template = '[%amount%] [%currency%]';\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 if (str === 'round-value' && Math.floor(value) === value) {\r\n template = template.replace('[%decimal-separator%]', '');\r\n template = template.replace('[%amount-dec%]', '');\r\n }\r\n\r\n 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","/*!\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.off('click.scrollto').on('click.scrollto', 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.7\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.7' }).\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.7\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.7' });\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 if (!ngModelController.$$attr.required && !ngModelController.$$attr.pattern) return;\r\n\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 // TODO Find alternative for this watch\r\n /*$scope.$watch(function () {\r\n return ngModelController.$error;\r\n }, displayOrHideValidationState, true);*/\r\n\r\n $scope.$watch(function () {\r\n return ngModelController.$valid;\r\n }, displayOrHideValidationState, true);\r\n\r\n $scope.$watch(function () {\r\n return ngModelController.$$attr.required;\r\n }, function () {\r\n hideSuccess();\r\n hideError();\r\n displayOrHideValidationState();\r\n }, true);\r\n\r\n $scope.$on('onBsValidationStateChange', function (event, data) {\r\n displayValidationState = data.showValidationState;\r\n displayOrHideValidationState();\r\n });\r\n\r\n $scope.$on('onBsValidationReset', function (event) {\r\n $element.blur();\r\n hideSuccess();\r\n hideError();\r\n ngModelController.$setUntouched();\r\n ngModelController.$setPristine();\r\n watchBlur();\r\n });\r\n\r\n\r\n $scope.$on('$destroy', function () {\r\n validationMessageService.destroyMessage($element);\r\n });\r\n\r\n ngModelController.$showValidation = showValidation;\r\n ngModelController.$hideValidation = hideValidation;\r\n }\r\n };\r\n }\r\n]);\r\n","'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: 'range',\r\n validateFn: function (value, $scope, attr) {\r\n return parseFloat(value) >= parseFloat(attr.range.split('|')[0]) && parseFloat(value) <= parseFloat(attr.range.split('|')[1]);\r\n }\r\n }, {\r\n name: 'length',\r\n validateFn: function (value, $scope, attr) {\r\n return value.length === parseInt(attr.length);\r\n }\r\n }, {\r\n name: 'strictemail',\r\n validateFn: function (value) {\r\n return new RegExp(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{1,63}$/).test(value);\r\n }\r\n }];\r\n\r\n function getTrigger($element, triggerEvent) {\r\n var attributeName = 'bs-trigger';\r\n if ($element.attr(attributeName)) {\r\n return $element.attr(attributeName) === triggerEvent;\r\n }\r\n\r\n var parentForm = $element.parents('form');\r\n if (parentForm && parentForm.attr(attributeName)) {\r\n return parentForm.attr(attributeName) === triggerEvent;\r\n }\r\n\r\n // Use the global config\r\n return 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 attrKey = $attr[key];\r\n var matchers;\r\n if (attrKey && angular.isFunction(attrKey.indexOf)) {\r\n matchers = angular.extend({}, {\r\n validValue: attrKey,\r\n validValue1: attrKey.indexOf('|') !== -1 ? attrKey.split('|')[0] : '',\r\n validValue2: attrKey.indexOf('|') !== -1 ? attrKey.split('|')[1] : ''\r\n }, metaInformation);\r\n } else {\r\n matchers = angular.extend({}, {\r\n validValue: attrKey\r\n }, metaInformation);\r\n }\r\n\r\n return $interpolate(message)(matchers);\r\n },\r\n\r\n shouldValidateOnBlur: function ($element) {\r\n return getTrigger($element, 'blur');\r\n },\r\n\r\n shouldValidateOnDisplay: function ($element) {\r\n return getTrigger($element, 'display');\r\n },\r\n\r\n shouldValidateOnSubmit: function ($element) {\r\n return getTrigger($element, 'submit');\r\n },\r\n\r\n /**\r\n * Add or remove various classes on form-group element. For example, if an input has two errors \"required\" & \"min\"\r\n * then whenever the validation fails, form-group element will have classes like \"bs-has-error-required\" or\r\n * \"bs-has-error-min\".\r\n * @param $formGroupElement jQLite/jQuery form-group element\r\n * @param errors Errors object as returned by ngModelController.$error\r\n */\r\n toggleErrorKeyClasses: function ($formGroupElement, errors) {\r\n removeClassByPrefix($formGroupElement, 'bs-has-error-');\r\n\r\n angular.forEach(errors, function (value, key) {\r\n $formGroupElement.addClass('bs-has-error-' + key);\r\n });\r\n }\r\n\r\n };\r\n }\r\n]);","/* 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","/*\r\n*\r\n* Version : 1.0.0\r\n* 04/09/2016 - 10h18\r\n*\r\n*! Octave Web7 !*/\r\n\r\n/**\r\n * angular-spinner version 0.8.1\r\n * License: MIT.\r\n * Copyright (C) 2013, 2014, 2015, 2016, Uri Shaked and contributors.\r\n * https://github.com/urish/angular-spinner\r\n */\r\n(function (root) {\r\n\t'use strict';\r\n\r\n\tfunction factory(angular, Spinner) {\r\n\r\n\t\treturn angular\r\n\t\t\t.module('module.spinner', [])\r\n\r\n\t\t\t.constant('SpinJSSpinner', Spinner)\r\n\r\n\t\t\t.provider('usSpinnerConfig', function () {\r\n\t\t\t\tvar _config = {}, _themes = {}, _delay = 0;\r\n\r\n\t\t\t\treturn {\r\n\t\t\t\t\tsetDefaults: function (config) {\r\n\t\t\t\t\t\t_config = config || _config;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsetTheme: function(name, config) {\r\n\t\t\t\t\t\t_themes[name] = config;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsetDelay: function(delay) {\r\n\t\t\t\t\t\t_delay = delay;\r\n\t\t\t\t\t},\r\n\t\t\t\t\t$get: function () {\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tconfig: _config,\r\n\t\t\t\t\t\t\tthemes: _themes,\r\n\t\t\t\t\t\t\tdelay: _delay\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})\r\n\r\n\t\t\t.directive('usSpinner', ['SpinJSSpinner', 'usSpinnerConfig', function (SpinJSSpinner, usSpinnerConfig) {\r\n\t\t\t\treturn {\r\n\t\t\t\t\tscope: true,\r\n\t\t\t\t\tlink: function (scope, element, attr) {\r\n\t\t\t\t\t\tscope.spinner = null;\r\n\r\n\t\t\t\t\t\tfunction stopSpinner() {\r\n\t\t\t\t\t\t\tif (scope.spinner) {\r\n\t\t\t\t\t\t\t\telement.children().removeClass('in').addClass('out');\r\n\t\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\t\tif (scope.spinner) {\r\n\t\t\t\t\t\t\t\t\t\tscope.spinner.stop();\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\telement.children('.overlay').remove();\r\n\t\t\t\t\t\t\t\t}, scope.delay);\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\tscope.spin = function () {\r\n\t\t\t\t\t\t\tif (scope.spinner) {\r\n\t\t\t\t\t\t\t\telement.children().removeClass('out');\r\n\t\t\t\t\t\t\t\tscope.spinner.spin(element[0]);\r\n\t\t\t\t\t\t\t\tsetTimeout(function() {\r\n\t\t\t\t\t\t\t\t\telement.children().addClass('in');\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\t$('
').appendTo(element);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tscope.stop = function () {\r\n\t\t\t\t\t\t\tstopSpinner();\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tvar options = angular.extend(\r\n\t\t\t\t\t\t\t{},\r\n\t\t\t\t\t\t\tusSpinnerConfig.config,\r\n\t\t\t\t\t\t\tusSpinnerConfig.themes[attr.spinnerTheme]);\r\n\t\t\t\t\t\tscope.delay = usSpinnerConfig.delay;\r\n\t\t\t\t\t\tscope.spinner = new SpinJSSpinner(options);\r\n\t\t\t\t\t\tif (!scope.key && !attr.spinnerOn) {\r\n\t\t\t\t\t\t\tscope.spinner.spin(element[0]);\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tscope.$watch(attr.spinnerOn, function (spin) {\r\n\t\t\t\t\t\t\tif (spin) {\r\n\t\t\t\t\t\t\t\tscope.spin();\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tscope.stop();\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\tscope.$on('$destroy', function () {\r\n\t\t\t\t\t\t\tscope.stop();\r\n\t\t\t\t\t\t\tscope.spinner = null;\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}]);\r\n\t}\r\n\r\n factory(root.angular, root.Spinner);\r\n\r\n}(this));\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', [\"Environment\", function (Environment) {\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: Environment === 'dev' ? '/js/clipboard.js' : '/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\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\\': 1042 + (index && 1 || 0) + index*10}',\r\n 'uib-modal-animation-class': 'fade',\r\n 'modal-in-class': 'in'\r\n });\r\n if (modal.backdropClass) {\r\n backdropDomEl.addClass(modal.backdropClass);\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 }\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('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 if (ctrl.data.length === 1) {\r\n ctrl.suggestionsUrl = 'GetProductSuggestions/Modal/ModalAddToCartSuggestions/' + ctrl.data[0].idProduct + '?' + (new Date().getTime());\r\n }\r\n\r\n }])\r\n\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('uploadCropModalCtrl', [\"data\", \"device\", \"options\", \"$scope\", \"ModalService\", \"Environment\", \"$uibModalInstance\", function (data, device, options, $scope, ModalService, Environment, $uibModalInstance) {\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 var cropper;\r\n\r\n $uibModalInstance.rendered.then(function () {\r\n init();\r\n });\r\n\r\n ctrl.plus = function () {\r\n cropper.zoom(0.1);\r\n };\r\n ctrl.minus = function () {\r\n cropper.zoom(-0.1);\r\n };\r\n ctrl.rotate = function () {\r\n cropper.rotate(90);\r\n };\r\n\r\n ctrl.save = function () {\r\n var dropzone = ctrl.data.ctrlFrom.dzMethods.getDropzone();\r\n dropzone.options.url = '/Upload';\r\n var blob = cropper.getCroppedCanvas(\r\n {\r\n width: 240,\r\n height: 240,\r\n fillColor: '#fff',\r\n imageSmoothingEnabled: true,\r\n imageSmoothingQuality: 'high'\r\n })\r\n .toDataURL('image/jpeg');\r\n var croppedFile = dataURItoBlob(blob);\r\n croppedFile.name = ctrl.data.name;\r\n\r\n ctrl.data.ctrlFrom.tmpFileName = ctrl.data.name;\r\n dropzone.removeAllFiles();\r\n dropzone.addFile(croppedFile);\r\n\r\n ctrl.data.ctrlFrom.deleteTmpFile(ctrl.data.serverName);\r\n ModalService.close();\r\n };\r\n\r\n function init() {\r\n if (typeof Cropper === 'undefined') {\r\n $.ajax({\r\n url: Environment === 'dev' ? '/js/cropper.js' : '/js/cropper.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success: function () {\r\n ctrl.showLoader = false;\r\n initCropper();\r\n }\r\n });\r\n } else {\r\n initCropper();\r\n }\r\n }\r\n\r\n function initCropper() {\r\n cropper = new Cropper(document.getElementById('img_' + ctrl.data.tmpId), {\r\n aspectRatio: 1,\r\n movable: true,\r\n cropBoxResizable: true,\r\n rotatable: true,\r\n ready: function () {\r\n // eslint-disable-next-line\r\n $(this.cropper.cropper).addClass('cropper-circle');\r\n }\r\n });\r\n }\r\n\r\n function dataURItoBlob(dataURI) {\r\n var byteString = atob(dataURI.split(',')[1]);\r\n var ab = new ArrayBuffer(byteString.length);\r\n var ia = new Uint8Array(ab);\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n return new Blob([ab], { type: 'image/jpeg' });\r\n }\r\n }]);\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, crop) {\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 if (crop) {\r\n url += quality !== 80 ? '&crop' : '?crop';\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 cdnCrop: '@?'\r\n },\r\n link: function (scope, element, attrs) {\r\n if (angular.isDefined(attrs.cdnChangeable)) {\r\n var observerCdnId = attrs.$observe('cdnId', function () {\r\n processImage();\r\n });\r\n scope.$on('$destroy', observerCdnId);\r\n } else {\r\n processImage();\r\n }\r\n\r\n function processImage() {\r\n CdnService.get(\r\n scope.cdnId,\r\n scope.cdnSize,\r\n scope.cdnDesignation,\r\n scope.cdnExtension,\r\n scope.cdnQuality,\r\n scope.cdnAbsolute,\r\n scope.cdnCrop\r\n )\r\n .then(function (res) {\r\n setSrc(element, attrs, res);\r\n })\r\n .catch(function (err) {\r\n console.error(err);\r\n });\r\n }\r\n\r\n function setSrc(_element, _attrs, res) {\r\n if (_element[0].tagName.toLowerCase() === 'img') {\r\n if (angular.isDefined(_attrs.lazy) && !_element.hasClass('loaded')) {\r\n _attrs.$set('lazy', res);\r\n } else if (angular.isDefined(_element.data('src')) && !_element.hasClass('loaded')) {\r\n _element.attr('data-src', res);\r\n } else {\r\n _element.attr('src', res);\r\n }\r\n } else {\r\n if (angular.isDefined(_element.data('srcset')) && !_element.parent().children('img').hasClass('loaded')) {\r\n _element.attr('data-srcset', res);\r\n } else {\r\n _element.attr('srcset', res);\r\n }\r\n }\r\n }\r\n }\r\n };\r\n }]);\r\n})();\r\n","(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('service.gtm', [])\r\n\r\n /* @ngInject */\r\n .factory('GtmService', [\"$cookies\", \"DateService\", function ($cookies, DateService) {\r\n this.inject = function (key) {\r\n var script = document.createElement('script');\r\n script.type = 'text/javascript';\r\n script.innerHTML = getContent(key);\r\n $('head')[0].appendChild(script);\r\n $cookies.put('gtmOK', 'true', {\r\n path: '/',\r\n expires: DateService.nextYear()\r\n });\r\n };\r\n\r\n return {\r\n inject: this.inject\r\n };\r\n\r\n function getContent(key) {\r\n /* eslint-disable */\r\n return \"(function (w, d, s, l, i) {\" +\r\n \"w[l] = w[l] || []; w[l].push({\" +\r\n \"'gtm.start':\" +\r\n \"new Date().getTime(), event: 'gtm.js'\" +\r\n \"}); var f = d.getElementsByTagName(s)[0],\" +\r\n \"j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src =\" +\r\n \"'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f);\" +\r\n \"})(window, document, 'script', 'dataLayer', '\" + key + \"');\";\r\n /* eslint-enable */\r\n }\r\n }])\r\n\r\n /* @ngInject */\r\n .directive('gtm', function () {\r\n return {\r\n restrict: 'A',\r\n bindToController: {\r\n content: '@'\r\n },\r\n /* @ngInject */\r\n controller: [\"GtmService\", function (GtmService) {\r\n var ctrl = this;\r\n\r\n ctrl.$onInit = function () {\r\n GtmService.inject(ctrl.content);\r\n };\r\n }]\r\n };\r\n });\r\n\r\n})();\r\n","/*\r\n * angular-lazy-load\r\n * base https://github.com/Pentiado/angular-lazy-img\r\n */\r\n\r\n(function () {\r\n 'use strict';\r\n\r\n angular\r\n .module('module.lazy', [])\r\n\r\n /* @ngInject */\r\n .factory('lazyObserver', [\"lazyHelpers\", function (lazyHelpers) {\r\n var env = lazyHelpers.env;\r\n if (env.intersectionObserverSupport !== true) return angular.noop;\r\n\r\n var intersectionListener = 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 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