text: /*!
   * Angular Material Design
   * https://github.com/angular/material
   * @license MIT
   * v0.8.1-master-4d722ec
   */
  goog.provide('ng.material.components.subheader');
  goog.require('ng.material.components.sticky');
  goog.require('ng.material.core');
  (function() {
  'use strict';
  
  /**
   * @ngdoc module
   * @name material.components.subheader
   * @description
   * SubHeader module
   *
   *  Subheaders are special list tiles that delineate distinct sections of a
   *  list or grid list and are typically related to the current filtering or
   *  sorting criteria. Subheader tiles are either displayed inline with tiles or
   *  can be associated with content, for example, in an adjacent column.
   *
   *  Upon scrolling, subheaders remain pinned to the top of the screen and remain
   *  pinned until pushed on or off screen by the next subheader. @see [Material
   *  Design Specifications](https://www.google.com/design/spec/components/subheaders.html)
   *
   *  > To improve the visual grouping of content, use the system color for your subheaders.
   *
   */
  angular.module('material.components.subheader', [
    'material.core',
    'material.components.sticky'
  ])
    .directive('mdSubheader', MdSubheaderDirective);
  
  /**
   * @ngdoc directive
   * @name mdSubheader
   * @module material.components.subheader
   *
   * @restrict E
   *
   * @description
   * The `<md-subheader>` directive is a subheader for a section
   *
   * @usage
   * <hljs lang="html">
   * <md-subheader>Online Friends</md-subheader>
   * </hljs>
   */
  
  function MdSubheaderDirective($mdSticky, $compile, $mdTheming) {
    return {
      restrict: 'E',
      replace: true,
      transclude: true,
      template: 
        '<h2 class="md-subheader">' +
          '<span class="md-subheader-content"></span>' +
        '</h2>',
      compile: function(element, attr, transclude) {
        var outerHTML = element[0].outerHTML;
        return function postLink(scope, element, attr) {
          $mdTheming(element);
          function getContent(el) {
            return angular.element(el[0].querySelector('.md-subheader-content'));
          }
  
          // Transclude the user-given contents of the subheader
          // the conventional way.
          transclude(scope, function(clone) {
            getContent(element).append(clone);
          });
  
          // Create another clone, that uses the outer and inner contents
          // of the element, that will be 'stickied' as the user scrolls.
          transclude(scope, function(clone) {
            var stickyClone = $compile(angular.element(outerHTML))(scope);
            $mdTheming(stickyClone);
            getContent(stickyClone).append(clone);
            $mdSticky(scope, element, stickyClone);
          });
        };
      }
    };
  }
  MdSubheaderDirective.$inject = ["$mdSticky", "$compile", "$mdTheming"];
  })();
  