angular-material
Version:
**[Support for legacy AngularJS ended on January 1st, 2022](https://goo.gle/angularjs-end-of-life). [See `@angular/core` for the actively supported Angular](https://npmjs.com/@angular/core).**
7 lines • 4.17 kB
JavaScript
/*!
* AngularJS Material Design
* https://github.com/angular/material
* @license MIT
* v1.2.4-master-bfc8ae7
*/
function MdProgressCircularDirective(M,$,s,k,g,r){var P=M.requestAnimationFrame||M.webkitRequestAnimationFrame||angular.noop,f=M.cancelAnimationFrame||M.webkitCancelAnimationFrame||M.webkitCancelRequestAnimationFrame||angular.noop,v="determinate",I="indeterminate",x="_md-progress-circular-disabled",F="md-mode-indeterminate";return{restrict:"E",scope:{value:"@",mdDiameter:"@",mdMode:"@"},template:'<svg xmlns="http://www.w3.org/2000/svg"><path fill="none"/></svg>',compile:function(r,e){if(r.attr({"aria-valuemin":0,"aria-valuemax":100,role:"progressbar"}),angular.isUndefined(e.mdMode)){var t=e.hasOwnProperty("value")?v:I;e.$set("mdMode",t)}else e.$set("mdMode",e.mdMode.trim());return a}};function a(p,d,u){var h,r,e=d[0],o=angular.element(e.querySelector("svg")),w=angular.element(e.querySelector("path")),t=$.startIndeterminate,a=$.endIndeterminate,n=0,C=0;function m(t,r,e,a,n,i){var o=++C,s=k.now(),d=r-t,u=D(p.mdDiameter),m=q(u),l=e||$.easeFn,c=a||$.duration,g=-90*(n||0),f=i||100;function v(r){w.attr("stroke-dashoffset",y(u,m,r,f)),w.attr("transform","rotate("+g+" "+u/2+" "+u/2+")")}r===t?v(r):h=P(function r(){var e=M.Math.max(0,M.Math.min(k.now()-s,c));v(l(e,t,d,c)),o===C&&e<c&&(h=P(r))})}function i(){m(t,a,$.easeFnIndeterminate,$.durationIndeterminate,n,75),n=++n%4}function l(){r||(r=g(i,$.durationIndeterminate,0,!1),i(),d.addClass(F).removeAttr("aria-valuenow"))}function c(){r&&(g.cancel(r),r=null,d.removeClass(F))}s(d),d.toggleClass(x,u.hasOwnProperty("disabled")),p.mdMode===I&&l(),p.$on("$destroy",function(){c(),h&&f(h)}),p.$watchGroup(["value","mdMode",function(){var r=e.disabled;return!0===r||!1===r?r:angular.isDefined(d.attr("disabled"))}],function(r,e){var t=r[1],a=r[2],n=0,i=0;if(a!==e[2]&&d.toggleClass(x,!!a),a)c();else if(t!==v&&t!==I&&(t=I,u.$set("mdMode",t)),t===I)e[1]===v&&(i=q(n=D(p.mdDiameter)),w.attr("d",b(n,i,!0)),w.attr("stroke-dasharray",S(n,i,75))),l();else{var o=A(r[0]),s=A(e[0]);c(),e[1]===I&&(i=q(n=D(p.mdDiameter)),w.attr("d",b(n,i,!1)),w.attr("stroke-dasharray",S(n,i,100))),d.attr("aria-valuenow",o),m(s,o)}}),p.$watch("mdDiameter",function(r){var e=D(r),t=q(e),a=A(p.value),n=e/2+"px",i={width:e+"px",height:e+"px"};o[0].setAttribute("viewBox","0 0 "+e+" "+e),o.css(i).css("transform-origin",n+" "+n+" "+n),d.css(i),w.attr("stroke-width",t),w.attr("stroke-linecap","square"),p.mdMode==I?(w.attr("d",b(e,t,!0)),w.attr("stroke-dasharray",S(e,t,75)),w.attr("stroke-dashoffset",y(e,t,1,75))):(w.attr("d",b(e,t,!1)),w.attr("stroke-dasharray",S(e,t,100)),w.attr("stroke-dashoffset",y(e,t,0,100)),m(a,a))})}function b(r,e,t){var a=r/2,n=e/2,i=a+","+n,o=a-n;return"M"+i+"A"+o+","+o+" 0 1 1 "+(n+","+a)+(t?"":"A"+o+","+o+" 0 0 1 "+i)}function y(r,e,t,a){return n(r,e)*((a-t)/100)}function A(r){return M.Math.max(0,M.Math.min(r||0,100))}function D(r){var e=$.progressSize;if(r){var t=parseFloat(r);return r.lastIndexOf("%")===r.length-1&&(t=t/100*e),t}return e}function q(r){return $.strokeWidth/100*r}function S(r,e,t){return n(r,e)*(t/100)}function n(r,e){return(r-e)*M.Math.PI}}function MdProgressCircularProvider(){var e={progressSize:50,strokeWidth:10,duration:100,easeFn:r,durationIndeterminate:1333,startIndeterminate:1,endIndeterminate:149,easeFnIndeterminate:t,easingPresets:{linearEase:r,materialEase:t}};return{configure:function(r){return e=angular.extend(e,r||{})},$get:function(){return e}};function r(r,e,t,a){return t*r/a+e}function t(r,e,t,a){var n=(r/=a)*r,i=n*r;return e+t*(6*i*n+-15*n*n+10*i)}}goog.provide("ngmaterial.components.progressCircular"),goog.require("ngmaterial.core"),angular.module("material.components.progressCircular",["material.core"]),MdProgressCircularDirective.$inject=["$window","$mdProgressCircular","$mdTheming","$mdUtil","$interval","$log"],angular.module("material.components.progressCircular").directive("mdProgressCircular",MdProgressCircularDirective),angular.module("material.components.progressCircular").provider("$mdProgressCircular",MdProgressCircularProvider),ngmaterial.components.progressCircular=angular.module("material.components.progressCircular");