/*! * Angular Material Design * https://github.com/angular/material * @license MIT * v0.11.3-master-3fe7d76 */ function mdInputContainerDirective(e,t){function n(t,n,i){e(n)}function i(e,n,i){var r=this;r.isErrorGetter=i.mdIsError&&t(i.mdIsError),r.delegateClick=function(){r.input.focus()},r.element=n,r.setFocused=function(e){n.toggleClass("md-input-focused",!!e)},r.setHasValue=function(e){n.toggleClass("md-input-has-value",!!e)},r.setHasMessages=function(e){n.toggleClass("md-input-has-messages",!!e)},r.setHasPlaceholder=function(e){n.toggleClass("md-input-has-placeholder",!!e)},r.setInvalid=function(e){n.toggleClass("md-input-invalid",!!e)},e.$watch(function(){return r.label&&r.input},function(e){e&&!r.label.attr("for")&&r.label.attr("for",r.input.attr("id"))})}return i.$inject=["$scope","$element","$attrs"],{restrict:"E",link:n,controller:i}}function labelDirective(){return{restrict:"E",require:"^?mdInputContainer",link:function(e,t,n,i){i&&!n.mdNoFloat&&(i.label=t,e.$on("$destroy",function(){i.label=null}))}}}function inputTextareaDirective(e,t,n){function i(i,r,a,l){function o(e){return c.setHasValue(!g.$isEmpty(e)),e}function s(){c.setHasValue(r.val().length>0||(r[0].validity||{}).badInput)}function u(){function n(e){return f(),e}function a(){if(u.style.height=u.offsetHeight+"px",r.addClass("md-no-flex"),isNaN(d)){s.style.height="auto",s.scrollTop=0;var e=l();e&&(s.style.height=e+"px")}else{s.setAttribute("rows",1),m||(s.style.minHeight="0",m=r.prop("clientHeight"),s.style.minHeight=null);var t=Math.max(d,Math.round(s.scrollHeight/m));s.setAttribute("rows",t)}r.removeClass("md-no-flex"),u.style.height="auto"}function l(){var e=s.scrollHeight-s.offsetHeight;return s.offsetHeight+(e>0?e:0)}function o(e){s.scrollTop=0;var t=s.scrollHeight-s.offsetHeight,n=s.offsetHeight+t;s.style.height=n+"px"}if(!angular.isDefined(r.attr("md-no-autogrow"))){var s=r[0],u=c.element[0],d=NaN,m=null;s.hasAttribute("rows")&&(d=parseInt(s.getAttribute("rows")));var f=e.debounce(a,1);if(g?(g.$formatters.push(n),g.$viewChangeListeners.push(n)):f(),r.on("keydown input",f),isNaN(d)&&(r.attr("rows","1"),r.on("scroll",o)),angular.element(t).on("resize",f),i.$on("$destroy",function(){angular.element(t).off("resize",f)}),angular.isDefined(r.attr("md-detect-hidden"))){var p=function(){var e=!1;return function(){var t=0===s.offsetHeight;t===!1&&e===!0&&a(),e=t}}();i.$watch(function(){return e.nextTick(p,!1),!0})}}}var c=l[0],d=!!l[1],g=l[1]||e.fakeNgModel(),m=angular.isDefined(a.readonly);if(c){if(c.input)throw new Error(" can only have *one* ,