/*! * AngularJS Material Design * https://github.com/angular/material * @license MIT * v1.1.18-master-97a1616 */ function MenuController(o,t,a,i,l,r,e,n,s){var u,d,c=l.prefixer(),m=this;this.nestLevel=parseInt(t.mdNestLevel,10)||0,this.init=function(e,t){t=t||{},u=e,(d=a[0].querySelector(c.buildSelector(["ng-click","ng-mouseenter"]))).setAttribute("aria-expanded","false"),this.isInMenuBar=t.isInMenuBar,this.nestedMenus=l.nodesToArray(u[0].querySelectorAll(".md-nested-menu")),u.on("$mdInterimElementRemove",function(){m.isOpen=!1,l.nextTick(function(){m.onIsOpenChanged(m.isOpen)})}),l.nextTick(function(){m.onIsOpenChanged(m.isOpen)});var n="menu_container_"+l.nextUid();u.attr("id",n),angular.element(d).attr({"aria-owns":n,"aria-haspopup":"true"}),i.$on("$destroy",angular.bind(this,function(){this.disableHoverListener(),o.destroy()})),u.on("$destroy",function(){o.destroy()})};var p,f,h=[];this.enableHoverListener=function(){h.push(e.$on("$mdMenuOpen",function(e,t){u[0].contains(t[0])&&(m.currentlyOpenMenu=t.controller("mdMenu"),m.isAlreadyOpening=!1,m.currentlyOpenMenu.registerContainerProxy(m.triggerContainerProxy.bind(m)))})),h.push(e.$on("$mdMenuClose",function(e,t){u[0].contains(t[0])&&(m.currentlyOpenMenu=void 0)})),(f=angular.element(l.nodesToArray(u[0].children[0].children))).on("mouseenter",m.handleMenuItemHover),f.on("mouseleave",m.handleMenuItemMouseLeave)},this.disableHoverListener=function(){for(;h.length;)h.shift()();f&&f.off("mouseenter",m.handleMenuItemHover),f&&f.off("mouseleave",m.handleMenuItemMouseLeave)},this.handleMenuItemHover=function(e){if(!m.isAlreadyOpening){var t=e.target.querySelector("md-menu")||l.getClosest(e.target,"MD-MENU");p=r(function(){if(t=t&&angular.element(t).controller("mdMenu"),m.currentlyOpenMenu&&m.currentlyOpenMenu!=t){var e=m.nestLevel+1;m.currentlyOpenMenu.close(!0,{closeTo:e}),m.isAlreadyOpening=!!t,t&&t.open()}else t&&!t.isOpen&&t.open&&(m.isAlreadyOpening=!!t,t&&t.open())},t?100:250);var n=e.currentTarget.querySelector(".md-button:not([disabled])");n&&n.focus()}},this.handleMenuItemMouseLeave=function(){p&&(r.cancel(p),p=void 0)},this.open=function(e){e&&e.stopPropagation(),e&&e.preventDefault(),m.isOpen||(m.enableHoverListener(),m.isOpen=!0,l.nextTick(function(){m.onIsOpenChanged(m.isOpen)}),(d=d||(e?e.target:a[0])).setAttribute("aria-expanded","true"),i.$emit("$mdMenuOpen",a),o.show({scope:i,mdMenuCtrl:m,nestLevel:m.nestLevel,element:u,target:d,preserveElement:!0,parent:"body"}).finally(function(){d.setAttribute("aria-expanded","false"),m.disableHoverListener()}))},this.onIsOpenChanged=function(e){e?(u.attr("aria-hidden","false"),a[0].classList.add("md-open"),angular.forEach(m.nestedMenus,function(e){e.classList.remove("md-open")})):(u.attr("aria-hidden","true"),a[0].classList.remove("md-open")),i.$mdMenuIsOpen=m.isOpen},this.focusMenuContainer=function(){var e=u[0].querySelector(c.buildSelector(["md-menu-focus-target","md-autofocus"]));(e=e||u[0].querySelector(".md-button:not([disabled])")).focus()},this.registerContainerProxy=function(e){this.containerProxy=e},this.triggerContainerProxy=function(e){this.containerProxy&&this.containerProxy(e)},this.destroy=function(){return m.isOpen?o.destroy():n.when(!1)},this.close=function(e,t){if(m.isOpen){m.isOpen=!1,l.nextTick(function(){m.onIsOpenChanged(m.isOpen)});var n=angular.extend({},t,{skipFocus:e});if(i.$emit("$mdMenuClose",a,n),o.hide(null,t),!e){var r=m.restoreFocusTo||a.find("button")[0];r instanceof angular.element&&(r=r[0]),r&&r.focus()}}},this.positionMode=function(){var e=(t.mdPositionMode||"target").split(" ");return 1===e.length&&e.push(e[0]),{left:e[0],top:e[1]}},this.offsets=function(){var e=(t.mdOffset||"0 0").split(" ").map(parseFloat);if(2===e.length)return{left:e[0],top:e[1]};if(1===e.length)return{top:e[0],left:e[0]};throw Error("Invalid offsets specified. Please follow format or ")},i.$mdMenu={open:this.open,close:this.close},i.$mdOpenMenu=angular.bind(this,function(){return s.warn("mdMenu: The $mdOpenMenu method is deprecated. Please use `$mdMenu.open`."),this.open.apply(this,arguments)})}function MenuDirective(i){var l="Invalid HTML for md-menu: ";return{restrict:"E",require:["mdMenu","?^mdMenuBar"],controller:"mdMenuCtrl",scope:!0,compile:function(e){e.addClass("md-menu");var t=e.children()[0],n=i.prefixer();n.hasAttribute(t,"ng-click")||(t=t.querySelector(n.buildSelector(["ng-click","ng-mouseenter"]))||t);var r="MD-BUTTON"===t.nodeName||"BUTTON"===t.nodeName;t&&r&&!t.hasAttribute("type")&&t.setAttribute("type","button");if(!t)throw Error(l+"Expected the menu to have a trigger element.");if(2!==e.children().length)throw Error(l+"Expected two children elements. The second element must have a `md-menu-content` element.");t&&t.setAttribute("aria-haspopup","true");var o=e[0].querySelectorAll("md-menu"),a=parseInt(e[0].getAttribute("md-nest-level"),10)||0;o&&angular.forEach(i.nodesToArray(o),function(e){e.hasAttribute("md-position-mode")||e.setAttribute("md-position-mode","cascade"),e.classList.add("_md-nested-menu"),e.setAttribute("md-nest-level",a+1)});return s}};function s(e,t,n,r){var o=r[0],a=!!r[1],i=angular.element('
'),l=t.children()[1];t.addClass("_md"),l.hasAttribute("role")||l.setAttribute("role","menu"),i.append(l),t.on("$destroy",function(){i.remove()}),t.append(i),i[0].style.display="none",o.init(i,{isInMenuBar:a})}}function MenuProvider(e){t.$inject=["$mdUtil","$mdTheming","$mdConstant","$document","$window","$q","$$rAF","$animateCss","$animate","$log"];var A=8;return e("$mdMenu").setDefaults({methods:["target"],options:t});function t(E,e,s,k,O,r,o,a,u,d){var $=E.prefixer(),c=E.dom.animator;return{parent:"body",onShow:function(i,n,l){(function(){if(!l.target)throw Error("$mdMenu.show() expected a target to animate from in options.target");angular.extend(l,{alreadyOpen:!1,isRemoved:!1,target:angular.element(l.target),parent:angular.element(l.parent),menuContentEl:angular.element(n[0].querySelector("md-menu-content"))})})(),l.menuContentEl[0]?e.inherit(l.menuContentEl,l.target):d.warn("$mdMenu: Menu elements should always contain a `md-menu-content` element,otherwise interactivity features will not work properly.",n);return l.cleanupResizing=function(){var e=function(t,n){return o.throttle(function(){if(!l.isRemoved){var e=f(t,n);t.css(c.toCss(e))}})}(n,l);return O.addEventListener("resize",e),O.addEventListener("orientationchange",e),function(){O.removeEventListener("resize",e),O.removeEventListener("orientationchange",e)}}(),l.hideBackdrop=function(e,t,n){if(n.nestLevel)return angular.noop;n.disableParentScroll&&!E.getClosest(n.target,"MD-DIALOG")?n.restoreScroll=E.disableScrollAround(n.element,n.parent):n.disableParentScroll=!1;n.hasBackdrop&&(n.backdrop=E.createBackdrop(e,"md-menu-backdrop md-click-catcher"),u.enter(n.backdrop,k[0].body));return function(){n.backdrop&&n.backdrop.remove(),n.disableParentScroll&&n.restoreScroll()}}(i,0,l),function(){return l.parent.append(n),n[0].style.display="",r(function(e){var t=f(n,l);n.removeClass("md-leave"),a(n,{addClass:"md-active",from:c.toCss(t),to:c.toCss({transform:""})}).start().then(e)})}().then(function(e){return l.alreadyOpen=!0,l.cleanupInteraction=function(){if(!l.menuContentEl[0])return angular.noop;l.menuContentEl.on("keydown",o),l.menuContentEl[0].addEventListener("click",a,!0);var e=l.menuContentEl[0].querySelector($.buildSelector(["md-menu-focus-target","md-autofocus"]));if(!e)for(var t=l.menuContentEl[0].children.length,n=0;n