/*! * Angular Material Design * https://github.com/angular/material * @license MIT * v0.11.3-master-3fe7d76 */ goog.provide("ng.material.components.fabShared"),goog.require("ng.material.core"),function(){"use strict";function n(n,e,t,o,r){function a(){$.direction=$.direction||"down",$.isOpen=$.isOpen||!1,f()}function i(){var t=["mousedown","mouseup","click","touchstart","touchend","focusin","focusout"];angular.forEach(t,function(n){e.on(n,s)}),n.$on("$destroy",function(){angular.forEach(t,function(n){e.off(n,s)}),v()})}function c(){_=[]}function l(n){var e,t,o,r=0;do t=n.map(function(n){return n.replace("?","")}),e=angular.equals(_,t),e||(n=u(n),o=n.length>=_.length&&n.length!==t.length);while(10>r&&!e&&o);return e}function u(n){var e=!1;return n.filter(function(n){return e||-1===n.indexOf("?")?!0:(e=!0,!1)})}function s(n){return _.push(n.type),l(["mousedown","focusout?","focusin?","mouseup","click"])?(D(n),void c()):l(["touchstart?","touchend?","click"])?(D(n),void c()):l(["focusin"])?($.open(),void c()):l(["focusout"])?($.close(),void c()):void d()}function d(){T&&window.clearTimeout(T),T=window.setTimeout(function(){c()},250)}function f(){$.currentActionIndex=-1}function m(){n.$watch("vm.direction",function(n,o){t.removeClass(e,"md-"+o),t.addClass(e,"md-"+n),f()});var o,r;n.$watch("vm.isOpen",function(n){f(),o&&r||(o=I(),r=k()),n?g():v();var a=n?"md-is-open":"",i=n?"":"md-is-open";o.attr("aria-haspopup",!0),o.attr("aria-expanded",n),r.attr("aria-hidden",!n),t.setClass(e,a,i)})}function p(){o.nextTick(function(){t.addClass(e,"md-noop")})}function g(){angular.element(document).on("keydown",h)}function v(){angular.element(document).off("keydown",h)}function h(n){switch(n.which){case r.KEY_CODE.SPACE:return n.preventDefault(),!1;case r.KEY_CODE.ESCAPE:return $.close(),n.preventDefault(),!1;case r.KEY_CODE.LEFT_ARROW:return w(n),!1;case r.KEY_CODE.UP_ARROW:return A(n),!1;case r.KEY_CODE.RIGHT_ARROW:return y(n),!1;case r.KEY_CODE.DOWN_ARROW:return E(n),!1}}function b(n){O(n,-1)}function C(n){O(n,1)}function O(n,e){var t=k()[0].querySelectorAll(".md-fab-action-item");angular.forEach(t,function(n){angular.element(angular.element(n).children()[0]).attr("tabindex",-1)}),$.currentActionIndex=$.currentActionIndex+e,$.currentActionIndex=Math.min(t.length-1,$.currentActionIndex),$.currentActionIndex=Math.max(0,$.currentActionIndex);var o=angular.element(t[$.currentActionIndex]).children()[0];angular.element(o).attr("tabindex",0),o.focus(),n.preventDefault(),n.stopImmediatePropagation()}function w(n){"left"===$.direction?C(n):b(n)}function A(n){"down"===$.direction?b(n):C(n)}function y(n){"left"===$.direction?b(n):C(n)}function E(n){"up"===$.direction?b(n):C(n)}function S(n){return o.getClosest(n,"md-fab-trigger")}function x(n){return o.getClosest(n,"md-fab-actions")}function D(n){S(n.target)&&$.toggle(),x(n.target)&&$.close()}function I(){return e.find("md-fab-trigger")}function k(){return e.find("md-fab-actions")}var $=this;$.open=function(){n.$evalAsync("vm.isOpen = true")},$.close=function(){n.$evalAsync("vm.isOpen = false"),e.find("md-fab-trigger")[0].focus()},$.toggle=function(){n.$evalAsync("vm.isOpen = !vm.isOpen")},a(),i(),m(),p();var T,_=[]}angular.module("material.components.fabShared",["material.core"]).controller("FabController",n),n.$inject=["$scope","$element","$animate","$mdUtil","$mdConstant"]}(),function(){"use strict";function n(){function n(n,e){e.prepend('
')}return{restrict:"E",scope:{direction:"@?mdDirection",isOpen:"=?mdOpen"},bindToController:!0,controller:"FabController",controllerAs:"vm",link:n}}function e(){function n(n){var e=n[0],t=n.controller("mdFabSpeedDial"),o=e.querySelectorAll(".md-fab-action-item"),r=e.querySelector("md-fab-trigger"),a=e.querySelector(".md-css-variables"),i=parseInt(window.getComputedStyle(a).zIndex);angular.forEach(o,function(n,e){var t=n.style;t.transform=t.webkitTransform="",t.transitionDelay="",t.opacity=1,t.zIndex=o.length-e+i}),r.style.zIndex=i+o.length+1,t.isOpen||angular.forEach(o,function(n,e){var o,r,a=n.style;switch(t.direction){case"up":o=n.scrollHeight*(e+1),r="Y";break;case"down":o=-n.scrollHeight*(e+1),r="Y";break;case"left":o=n.scrollWidth*(e+1),r="X";break;case"right":o=-n.scrollWidth*(e+1),r="X"}var i="translate"+r+"("+o+"px)";a.transform=a.webkitTransform=i})}return{addClass:function(e,t,o){e.hasClass("md-fling")&&(n(e),o())},removeClass:function(e,t,o){n(e),o()}}}function t(){function n(n){var t=n[0],o=n.controller("mdFabSpeedDial"),r=t.querySelectorAll(".md-fab-action-item"),a=t.querySelector(".md-css-variables"),i=parseInt(window.getComputedStyle(a).zIndex);angular.forEach(r,function(n,t){var a=n.style,c=t*e;a.opacity=o.isOpen?1:0,a.transform=a.webkitTransform=o.isOpen?"scale(1)":"scale(0)",a.transitionDelay=(o.isOpen?c:r.length-c)+"ms",a.zIndex=r.length-t+i})}var e=65;return{addClass:function(e,t,o){n(e),o()},removeClass:function(e,t,o){n(e),o()}}}angular.module("material.components.fabSpeedDial",["material.core","material.components.fabShared","material.components.fabTrigger","material.components.fabActions"]).directive("mdFabSpeedDial",n).animation(".md-fling",e).animation(".md-scale",t).service("mdFabSpeedDialFlingAnimation",e).service("mdFabSpeedDialScaleAnimation",t)}(),ng.material.components.fabShared=angular.module("material.components.fabShared");