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