blob: f8a3e532902e831d009d183167c4926588935c59 [file] [log] [blame]
/*!
* Angular Material Design
* https://github.com/angular/material
* @license MIT
* v1.0.0-master-19c11fd
*/
!function(e,t,n){"use strict";function i(e,n,i,a,r,o,d,s,l){function u(e,t){return e.attr({tabIndex:0,role:"slider"}),i.expect(e,"aria-label"),c}function c(i,u,c,m){function f(){w(),C(),g()}function v(e){B=parseFloat(e),u.attr("aria-valuemin",e),f()}function p(e){H=parseFloat(e),u.attr("aria-valuemax",e),f()}function $(e){J=parseFloat(e),g()}function h(e){u.attr("aria-disabled",!!e)}function g(){if(t.isDefined(c.mdDiscrete)&&!t.isUndefined(J)){if(0>=J){var e="Slider step value must be greater than zero when in discrete mode";throw l.error(e),new Error(e)}var i=Math.floor((H-B)/J);if(!Q){Q=t.element('<canvas style="position:absolute;">'),U.append(Q);var a=n.getComputedStyle(U[0]);X=Q[0].getContext("2d"),X.fillStyle=a.backgroundColor||"black"}var r=b();Q[0].width=r.width,Q[0].height=r.height;for(var o,d=0;i>=d;d++)o=Math.floor(r.width*(d/i)),X.fillRect(o-1,0,2,r.height)}}function w(){Z=G[0].getBoundingClientRect()}function b(){return W(),Z}function y(e){if(!u[0].hasAttribute("disabled")){var t;e.keyCode===r.KEY_CODE.LEFT_ARROW?t=-J:e.keyCode===r.KEY_CODE.RIGHT_ARROW&&(t=J),t&&((e.metaKey||e.ctrlKey||e.altKey)&&(t*=4),e.preventDefault(),e.stopPropagation(),i.$evalAsync(function(){x(m.$viewValue+t)}))}}function x(e){m.$setViewValue(k(D(e)))}function C(){isNaN(m.$viewValue)&&(m.$viewValue=m.$modelValue);var e=(m.$viewValue-B)/(H-B);i.modelValue=m.$viewValue,u.attr("aria-valuenow",m.$viewValue),V(e),_.text(m.$viewValue)}function k(e){return t.isNumber(e)?Math.max(B,Math.min(H,e)):void 0}function D(e){if(t.isNumber(e)){var n=Math.round((e-B)/J)*J+B;return Math.round(1e3*n)/1e3}}function V(e){var t=100*e+"%";I.css("width",t),z.css("left",t),u.toggleClass("md-min",0===e),u.toggleClass("md-max",1===e)}function M(e){if(!P()){u.addClass("md-active"),u[0].focus(),w();var t=N(L(e.pointer.x)),n=k(D(t));i.$apply(function(){x(n),V(O(n))})}}function S(e){if(!P()){u.removeClass("md-dragging md-active");var t=N(L(e.pointer.x)),n=k(D(t));i.$apply(function(){x(n),C()})}}function A(e){P()||(ee=!0,e.stopPropagation(),u.addClass("md-dragging"),q(e))}function E(e){ee&&(e.stopPropagation(),q(e))}function R(e){ee&&(e.stopPropagation(),ee=!1)}function q(e){te?K(e.pointer.x):F(e.pointer.x)}function F(e){i.$evalAsync(function(){x(N(L(e)))})}function K(e){var t=N(L(e)),n=k(D(t));V(L(e)),_.text(n)}function L(e){return Math.max(0,Math.min(1,(e-Z.left)/Z.width))}function N(e){return B+e*(H-B)}function O(e){return(e-B)/(H-B)}o(u),m=m||{$setViewValue:function(e){this.$viewValue=e,this.$viewChangeListeners.forEach(function(e){e()})},$parsers:[],$formatters:[],$viewChangeListeners:[]};var P=t.noop;null!=c.disabled?P=function(){return!0}:c.ngDisabled&&(P=t.bind(null,s(c.ngDisabled),i.$parent));var T=t.element(u[0].querySelector(".md-thumb")),_=t.element(u[0].querySelector(".md-thumb-text")),z=T.parent(),G=t.element(u[0].querySelector(".md-track-container")),I=t.element(u[0].querySelector(".md-track-fill")),U=t.element(u[0].querySelector(".md-track-ticks")),W=a.throttle(w,5e3);t.isDefined(c.min)?c.$observe("min",v):v(0),t.isDefined(c.max)?c.$observe("max",p):p(100),t.isDefined(c.step)?c.$observe("step",$):$(1);var Y=t.noop;c.ngDisabled&&(Y=i.$parent.$watch(c.ngDisabled,h)),d.register(u,"drag"),u.on("keydown",y).on("$md.pressdown",M).on("$md.pressup",S).on("$md.dragstart",A).on("$md.drag",E).on("$md.dragend",R),setTimeout(f,0);var j=e.throttle(f);t.element(n).on("resize",j),i.$on("$destroy",function(){t.element(n).off("resize",j),Y()}),m.$render=C,m.$viewChangeListeners.push(C),m.$formatters.push(k),m.$formatters.push(D);var B,H,J,Q,X,Z={};w();var ee=!1,te=t.isDefined(c.mdDiscrete)}return{scope:{},require:"?ngModel",template:'<div class="md-slider-wrapper"><div class="md-track-container"><div class="md-track"></div><div class="md-track md-track-fill"></div><div class="md-track-ticks"></div></div><div class="md-thumb-container"><div class="md-thumb"></div><div class="md-focus-thumb"></div><div class="md-focus-ring"></div><div class="md-sign"><span class="md-thumb-text"></span></div><div class="md-disabled-thumb"></div></div></div>',compile:u}}t.module("material.components.slider",["material.core"]).directive("mdSlider",i),i.$inject=["$$rAF","$window","$mdAria","$mdUtil","$mdConstant","$mdTheming","$mdGesture","$parse","$log"]}(window,window.angular);