function SidenavController($scope, $attrs, $mdComponentRegistry, $q, $interpolate) {

  var self = this;

  // Use Default internal method until overridden by directive postLink

  // Synchronous getters
  self.isOpen = function() { return !!$scope.isOpen; };
  self.isLockedOpen = function() { return !!$scope.isLockedOpen; };

  // Synchronous setters
  self.onClose = function (callback) {
    self.onCloseCb = callback;
    return self;
  };

  // Async actions
  self.open   = function() { return self.$toggleOpen( true );  };
  self.close  = function() { return self.$toggleOpen( false ); };
  self.toggle = function() { return self.$toggleOpen( !$scope.isOpen );  };
  self.$toggleOpen = function(value) { return $q.when($scope.isOpen = value); };

  // Evaluate the component id.
  var rawId = $attrs.mdComponentId;
  var hasDataBinding = rawId && rawId.indexOf($interpolate.startSymbol()) > -1;
  var componentId = hasDataBinding ? $interpolate(rawId)($scope.$parent) : rawId;

  // Register the component.
  self.destroy = $mdComponentRegistry.register(self, componentId);

  // Watch and update the component, if the id has changed.
  if (hasDataBinding) {
    $attrs.$observe('mdComponentId', function(id) {
      if (id && id !== self.$$mdHandle) {
        self.destroy(); // `destroy` only deregisters the old component id so we can add the new one.
        self.destroy = $mdComponentRegistry.register(self, id);
      }
    });
  }
}
function SidenavController($scope, $attrs, $mdComponentRegistry, $q, $interpolate) {

  var self = this;

  

  
  self.isOpen = function() { return !!$scope.isOpen; };
  self.isLockedOpen = function() { return !!$scope.isLockedOpen; };

  
  self.onClose = function (callback) {
    self.onCloseCb = callback;
    return self;
  };

  
  self.open   = function() { return self.$toggleOpen( true );  };
  self.close  = function() { return self.$toggleOpen( false ); };
  self.toggle = function() { return self.$toggleOpen( !$scope.isOpen );  };
  self.$toggleOpen = function(value) { return $q.when($scope.isOpen = value); };

  
  var rawId = $attrs.mdComponentId;
  var hasDataBinding = rawId && rawId.indexOf($interpolate.startSymbol()) > -1;
  var componentId = hasDataBinding ? $interpolate(rawId)($scope.$parent) : rawId;

  
  self.destroy = $mdComponentRegistry.register(self, componentId);

  
  if (hasDataBinding) {
    $attrs.$observe('mdComponentId', function(id) {
      if (id && id !== self.$$mdHandle) {
        self.destroy(); 
        self.destroy = $mdComponentRegistry.register(self, id);
      }
    });
  }
}
function SidenavController ( $scope , $attrs , $mdComponentRegistry , $q , $interpolate ) { var self = this ; // Use Default internal method until overridden by directive postLink // Synchronous getters self . isOpen = function ( ) { return ! ! $scope . isOpen ; } ; self . isLockedOpen = function ( ) { return ! ! $scope . isLockedOpen ; } ; // Synchronous setters self . onClose = function ( callback ) { self . onCloseCb = callback ; return self ; } ; // Async actions self . open = function ( ) { return self . $toggleOpen ( true ) ; } ; self . close = function ( ) { return self . $toggleOpen ( false ) ; } ; self . toggle = function ( ) { return self . $toggleOpen ( ! $scope . isOpen ) ; } ; self . $toggleOpen = function ( value ) { return $q . when ( $scope . isOpen = value ) ; } ; // Evaluate the component id. var rawId = $attrs . mdComponentId ; var hasDataBinding = rawId && rawId . indexOf ( $interpolate . startSymbol ( ) ) > - 1 ; var componentId = hasDataBinding ? $interpolate ( rawId ) ( $scope . $parent ) : rawId ; // Register the component. self . destroy = $mdComponentRegistry . register ( self , componentId ) ; // Watch and update the component, if the id has changed. if ( hasDataBinding ) { $attrs . $observe ( 'mdComponentId' , function ( id ) { if ( id && id !== self . $$mdHandle ) { self . destroy ( ) ; // `destroy` only deregisters the old component id so we can add the new one. self . destroy = $mdComponentRegistry . register ( self , id ) ; } } ) ; } }
/*
@private
@ngdoc controller
@name SidenavController
@module material.components.sidenav
/ *