Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

angular-material

Package Overview
Dependencies
Maintainers
1
Versions
66
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

angular-material - npm Package Compare versions

Comparing version 0.9.6 to 0.9.7

2

bower.json
{
"name": "angular-material",
"version": "0.9.6",
"version": "0.9.7",
"ignore": [],

@@ -5,0 +5,0 @@ "dependencies": {

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -256,3 +256,3 @@ goog.provide('ng.material.components.autocomplete');

updateScroll();
updateSelectionMessage();
updateMessages();
break;

@@ -264,3 +264,3 @@ case $mdConstant.KEY_CODE.UP_ARROW:

updateScroll();
updateSelectionMessage();
updateMessages();
break;

@@ -361,17 +361,16 @@ case $mdConstant.KEY_CODE.TAB:

function updateMessages () {
if (self.hidden) return;
self.messages = self.matches.length
? [ getCountMessage(), getCurrentDisplayValue() ]
: [];
}
function getCountMessage () {
switch (self.matches.length) {
case 0: return self.messages.splice(0);
case 1: return self.messages.push({ display: 'There is 1 match available.' });
default: return self.messages.push({ display: 'There are '
+ self.matches.length
+ ' matches available.' });
case 1: return 'There is 1 match available.';
default: return 'There are ' + self.matches.length + ' matches available.';
}
}
function updateSelectionMessage () {
self.messages.push({ display: getCurrentDisplayValue() });
}
function updateScroll () {
if (!elements.li[self.index]) return;
var li = elements.li[self.index],

@@ -403,3 +402,3 @@ top = li.offsetTop,

}
self.hidden = shouldHide();
if (hasFocus) self.hidden = shouldHide();
}

@@ -429,3 +428,16 @@

* a tag for `md-not-found`. An example of this is shown below.
* ### Validation
*
* You can use `ng-messages` to include validation the same way that you would normally validate;
* however, if you want to replicate a standard input with a floating label, you will have to do the
* following:
*
* - Make sure that your template is wrapped in `md-item-template`
* - Add your `ng-messages` code inside of `md-autocomplete`
* - Add your validation properties to `md-autocomplete` (ie. `required`)
* - Add a `name` to `md-autocomplete` (to be used on the generated `input`)
*
* There is an example below of how this should look.
*
*
* @param {expression} md-items An expression in the format of `item in items` to iterate over matches for your search.

@@ -476,2 +488,25 @@ * @param {expression} md-selected-item-change An expression to be run each time a new item is selected

* parts that make up our component.
*
* ### Example with validation
* <hljs lang="html">
* <form name="autocompleteForm">
* <md-autocomplete
* required
* input-name="autocomplete"
* md-selected-item="selectedItem"
* md-search-text="searchText"
* md-items="item in getMatches(searchText)"
* md-item-text="item.display">
* <md-item-template>
* <span md-highlight-text="searchText">{{item.display}}</span>
* </md-item-template>
* <div ng-messages="autocompleteForm.autocomplete.$error">
* <div ng-message="required">This field is required</div>
* </div>
* </md-autocomplete>
* </form>
* </hljs>
*
* In this example, our code utilizes `md-item-template` and `md-not-found` to specify the different
* parts that make up our component.
*/

@@ -485,21 +520,29 @@

scope: {
name: '@',
searchText: '=?mdSearchText',
selectedItem: '=?mdSelectedItem',
itemsExpr: '@mdItems',
itemText: '&mdItemText',
placeholder: '@placeholder',
noCache: '=?mdNoCache',
itemChange: '&?mdSelectedItemChange',
textChange: '&?mdSearchTextChange',
minLength: '=?mdMinLength',
delay: '=?mdDelay',
autofocus: '=?mdAutofocus',
floatingLabel: '@?mdFloatingLabel',
autoselect: '=?mdAutoselect',
menuClass: '@?mdMenuClass'
inputName: '@mdInputName',
inputMinlength: '@mdInputMinlength',
inputMaxlength: '@mdInputMaxlength',
searchText: '=?mdSearchText',
selectedItem: '=?mdSelectedItem',
itemsExpr: '@mdItems',
itemText: '&mdItemText',
placeholder: '@placeholder',
noCache: '=?mdNoCache',
itemChange: '&?mdSelectedItemChange',
textChange: '&?mdSearchTextChange',
minLength: '=?mdMinLength',
delay: '=?mdDelay',
autofocus: '=?mdAutofocus',
floatingLabel: '@?mdFloatingLabel',
autoselect: '=?mdAutoselect',
menuClass: '@?mdMenuClass'
},
template: function (element, attr) {
var noItemsTemplate = getNoItemsTemplate(),
itemTemplate = getItemTemplate(),
leftover = element.html();
return '\
<md-autocomplete-wrap ng-class="{ \'md-whiteframe-z1\': !floatingLabel }" role="listbox">\
<md-autocomplete-wrap\
layout="row"\
ng-class="{ \'md-whiteframe-z1\': !floatingLabel }"\
role="listbox">\
' + getInputElement() + '\

@@ -528,5 +571,5 @@ <button\

md-autocomplete-list-item="$mdAutocompleteCtrl.itemName">\
' + getItemTemplate() + '\
' + itemTemplate + '\
</li>\
' + getNoItemsTemplate() + '\
' + noItemsTemplate + '\
</ul>\

@@ -538,8 +581,10 @@ </md-autocomplete-wrap>\

aria-live="assertive">\
<p ng-repeat="message in $mdAutocompleteCtrl.messages">{{message.display}}</p>\
<p ng-repeat="message in $mdAutocompleteCtrl.messages" ng-if="message">{{message}}</p>\
</aria-status>';
function getItemTemplate() {
var templateTag = element.find('md-item-template').remove();
return templateTag.length ? templateTag.html() : element.html();
var templateTag = element.find('md-item-template').remove(),
html = templateTag.length ? templateTag.html() : element.html();
if (!templateTag.length) element.empty();
return html;
}

@@ -562,8 +607,11 @@

return '\
<md-input-container ng-if="floatingLabel">\
<md-input-container flex ng-if="floatingLabel">\
<label>{{floatingLabel}}</label>\
<input type="search"\
id="fl-input-{{$mdAutocompleteCtrl.id}}"\
name="{{name}}"\
name="{{inputName}}"\
autocomplete="off"\
ng-required="isRequired"\
ng-minlength="inputMinlength"\
ng-maxlength="inputMaxlength"\
ng-disabled="isDisabled"\

@@ -580,10 +628,12 @@ ng-model="$mdAutocompleteCtrl.scope.searchText"\

aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>\
<div md-autocomplete-parent-scope md-autocomplete-replace>' + leftover + '</div>\
</md-input-container>';
} else {
return '\
<input type="search"\
<input flex type="search"\
id="input-{{$mdAutocompleteCtrl.id}}"\
name="{{name}}"\
name="{{inputName}}"\
ng-if="!floatingLabel"\
autocomplete="off"\
ng-required="isRequired"\
ng-disabled="isDisabled"\

@@ -608,2 +658,3 @@ ng-model="$mdAutocompleteCtrl.scope.searchText"\

attr.$observe('disabled', function (value) { scope.isDisabled = value; });
attr.$observe('required', function (value) { scope.isRequired = value !== null; });

@@ -735,2 +786,6 @@ $mdUtil.initOptionalProperties(scope, attr, {searchText:null, selectedItem:null} );

$compile(element.contents())(ctrl.parent);
if (attr.hasOwnProperty('mdAutocompleteReplace')) {
element.after(element.contents());
element.remove();
}
}

@@ -737,0 +792,0 @@ }

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.backdrop');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -138,3 +138,3 @@ goog.provide('ng.material.components.bottomSheet');

/* @ngInject */
/* ngInject */
function bottomSheetDefaults($animate, $mdConstant, $mdUtil, $timeout, $compile, $mdTheming, $mdBottomSheet, $rootElement, $mdGesture) {

@@ -141,0 +141,0 @@ var backdrop;

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -32,6 +32,4 @@ goog.provide('ng.material.components.button');

* If you supply a `href` or `ng-href` attribute, it will become an `<a>` element. Otherwise, it will
* become a `<button>` element.
*
* As per the [material design spec](http://www.google.com/design/spec/style/color.html#color-ui-color-application)
* the FAB button is in the accent color by default. The primary color palette may be used with
* become a `<button>` element. As per the [Material Design specifications](http://www.google.com/design/spec/style/color.html#color-ui-color-application)
* the FAB button background is filled with the accent color [by default]. The primary color palette may be used with
* the `md-primary` class.

@@ -46,21 +44,27 @@ *

* @usage
*
* Regular buttons:
*
* <hljs lang="html">
* <md-button> Flat Button </md-button>
* <md-button href="http://google.com"> Flat link </md-button>
* <md-button class="md-raised"> Raised Button </md-button>
* <md-button ng-disabled="true"> Disabled Button </md-button>
* <md-button>
* Flat Button
* <md-icon md-svg-src="your/icon.svg"></md-icon>
* Register Now
* </md-button>
* <md-button href="http://google.com">
* Flat link
* </md-button>
* <md-button class="md-raised">
* Raised Button
* </md-button>
* <md-button ng-disabled="true">
* Disabled Button
* </md-button>
* </hljs>
*
* FAB buttons:
*
* <hljs lang="html">
* <md-button class="md-fab" aria-label="FAB">
* <md-icon md-svg-src="your/icon.svg"></md-icon>
* </md-button>
* <!-- mini-FAB -->
* <md-button class="md-fab md-mini" aria-label="Mini FAB">
* <md-icon md-svg-src="your/icon.svg"></md-icon>
* </md-button>
* <!-- Button with SVG Icon -->
* <md-button class="md-icon-button" aria-label="Custom Icon Button">

@@ -67,0 +71,0 @@ * <md-icon md-svg-icon="path/to/your.svg"></md-icon>

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.card');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.checkbox');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -56,3 +56,3 @@ goog.provide('ng.material.components.chips');

* @param $mdInkRipple
* @ngInject
* ngInject
*/

@@ -915,3 +915,3 @@ function MdChip($mdTheming) {

* @returns {*}
* @ngInject
* ngInject
*/

@@ -918,0 +918,0 @@ function MdContactChips ($mdTheming, $mdUtil) {

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.content');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -403,3 +403,3 @@ goog.provide('ng.material.components.dialog');

/* @ngInject */
/* ngInject */
function advancedDialogOptions($mdDialog, $mdTheming) {

@@ -438,3 +438,3 @@ return {

/* @ngInject */
/* ngInject */
function dialogDefaultOptions($mdAria, $document, $mdUtil, $mdConstant, $mdTheming, $mdDialog, $timeout, $rootElement, $animate, $$rAF, $q) {

@@ -441,0 +441,0 @@ return {

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.divider');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -424,3 +424,3 @@ goog.provide('ng.material.components.gridList');

/* @ngInject */
/* ngInject */
function GridListController($timeout) {

@@ -459,3 +459,3 @@ this.layoutInvalidated = false;

/* @ngInject */
/* ngInject */
function GridLayoutFactory($mdUtil) {

@@ -462,0 +462,0 @@ var defaultAnimator = GridTileAnimator;

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -29,6 +29,55 @@ goog.provide('ng.material.components.icon');

* @description
* The `md-icon` directive is an markup element useful for showing an icon based on a font-face
* or a SVG. Both external SVGs (via URLs) or cached SVG from icon sets can be
* easily loaded and used.
* The `<md-icon />` directive is an markup element useful for showing an icon based on a font-icon
* or a SVG. Icons are view-only elements that should not be used directly as buttons; instead nest a `<md-icon />`
* inside a `md-button` to add hover and click features.
*
* When using SVGs, both external SVGs (via URLs) or sets of SVGs [from icon sets] can be
* easily loaded and used.When use font-icons, developers must following three (3) simple steps:
*
* <ol>
* <li>Load the font library. e.g.<br/>
* &lt;link href="https://fonts.googleapis.com/icon?family=Material+Icons"
* rel="stylesheet"&gt;
* </li>
* <li> Use either (a) font-icon class names or (b) font ligatures to render the font glyph by using its textual name</li>
* <li> Use &lt;md-icon md-font-icon="classname" /&gt; or <br/>
* use &lt;md-icon md-font-library="library_style_name"&gt; textual_name &lt;/md-icon&gt; or <br/>
* use &lt;md-icon md-font-library="library_style_name"&gt; numerical_character_reference &lt;/md-icon&gt;
* </li>
* </ol>
*
* Full details for these steps can be found:
*
* <ul>
* <li>http://google.github.io/material-design-icons/</li>
* <li>http://google.github.io/material-design-icons/#icon-font-for-the-web</li>
* </ul>
*
* The Material Design icon style <code>.material-icons</code> and the icon font references are published in
* Material Design Icons:
*
* <ul>
* <li>http://www.google.com/design/icons/</li>
* <li>https://www.google.com/design/icons/#ic_accessibility</li>
* </ul>
*
* <h2 id="material_design_icons">Material Design Icons</h2>
* Using the Material Design Icon-Selector, developers can easily and quickly search for a Material Design font-icon and
* determine its textual name and character reference code. Click on any icon to see the slide-up information
* panel with details regarding a SVG download or information on the font-icon usage.
*
* <a href="https://www.google.com/design/icons/#ic_accessibility" target="_blank" style="border-bottom:none;">
* <img src="https://cloud.githubusercontent.com/assets/210413/7902490/fe8dd14c-0780-11e5-98fb-c821cc6475e6.png"
* alt="Material Design Icon-Selector" style="max-width:75%;padding-left:10%">
* </a>
*
* <span class="image_caption">
* Click on the image above to link to the
* <a href="https://www.google.com/design/icons/#ic_accessibility" target="_blank">Material Design Icon-Selector</a>.
* </span>
*
* @param {string} md-font-icon String name of CSS icon associated with the font-face will be used
* to render the icon. Requires the fonts and the named CSS styles to be preloaded.
* @param {string} md-font-library String name of CSS icon associated with the font-face will be used
* to render the icon. Requires the fonts and the named CSS styles to be preloaded.
* @param {string} md-svg-src String URL [or expression ] used to load, cache, and display an external SVG.

@@ -38,4 +87,2 @@ * @param {string} md-svg-icon String name used for lookup of the icon from the internal cache; interpolated strings or

* To use icon sets, developers are required to pre-register the sets using the `$mdIconProvider` service.
* @param {string} md-font-icon String name of CSS icon associated with the font-face will be used
* to render the icon. Requires the fonts and the named CSS styles to be preloaded.
* @param {string=} alt Labels icon for accessibility. If an empty string is provided, icon

@@ -46,12 +93,52 @@ * will be hidden from accessibility layer with `aria-hidden="true"`. If there's no alt on the icon

* @usage
* When using SVGs:
* <hljs lang="html">
* <md-icon md-font-icon="android" alt="android " ></md-icon>
* <md-icon md-svg-icon="action:android" alt="android " ></md-icon>
*
* <!-- Icon ID; may contain optional icon set prefix; icons must registered using $mdIconProvider -->
* <md-icon md-svg-icon="social:android" alt="android " ></md-icon>
*
* <!-- Icon urls; may be preloaded in templateCache -->
* <md-icon md-svg-src="/android.svg" alt="android " ></md-icon>
* <md-icon md-svg-src="{{ getAndroid() }}" alt="android " ></md-icon>
*
* </hljs>
*
* Use the <code>$mdIconProvider</code> to configure your application with
* svg iconsets.
*
* <hljs lang="js">
* angular.module('appSvgIconSets', ['ngMaterial'])
* .controller('DemoCtrl', function($scope) {})
* .config(function($mdIconProvider) {
* $mdIconProvider
* .iconSet('social', 'img/icons/sets/social-icons.svg', 24)
* .defaultIconSet('img/icons/sets/core-icons.svg', 24);
* });
* </hljs>
*
*
* When using Font Icons with classnames:
* <hljs lang="html">
*
* <md-icon md-font-icon="android" alt="android" ></md-icon>
* <md-icon md-font-icon="fa-magic" class="fa" alt="magic wand"></md-icon>
*
* </hljs>
*
* When using Font Icons with ligatures:
* <hljs lang="html">
*
* <md-icon md-font-library="material-icons">face</md-icon>
* <md-icon md-font-library="material-icons">#xE87C;</md-icon>
* <md-icon md-font-library="material-icons" class="md-light md-48">face</md-icon>
*
* </hljs>
*
*
*/
function mdIconDirective($mdIcon, $mdTheming, $mdAria ) {
function mdIconDirective($mdIcon, $mdTheming, $mdAria, $interpolate ) {
return {
scope: {
fontLib: '@mdFontLibrary',
fontIcon: '@mdFontIcon',

@@ -62,2 +149,3 @@ svgIcon: '@mdSvgIcon',

restrict: 'E',
transclude:true,
template: getTemplate,

@@ -68,5 +156,19 @@ link: postLink

function getTemplate(element, attr) {
return attr.mdFontIcon ? '<span class="md-font" ng-class="fontIcon"></span>' : '';
var hasAttrValue = function(key) { return attr[key] && attr[key].length };
var attrValue = function(key) { return hasAttrValue(key) ? attr[key] : '' };
// If using font-icons, transclude the ligature or NRCs
var tmpl = hasAttrValue('mdFontIcon') ? '<span class="md-font {{classNames}}" ng-class="fontIcon"></span>' :
hasAttrValue('mdFontLibrary') ? '<span ng-transclude></span>' : '';
// Transpose the mdFontLibrary name to the list of classnames
// For example, Material Icons expects classnames like `.material-icons.md-48` instead of `.material-icons .md-48`
var names = (attrValue('mdFontLibrary') + ' ' + attrValue('class')).trim();
element.attr('class',names);
return $interpolate( tmpl )({ classNames: names });
}
/**

@@ -79,11 +181,16 @@ * Directive postLink

// If using a font-icon, then the textual name of the icon itself
// provides the aria-label.
var ariaLabel = attr.alt || scope.fontIcon || scope.svgIcon;
var attrName = attr.$normalize(attr.$attr.mdSvgIcon || attr.$attr.mdSvgSrc || '');
if (attr.alt != '' && !parentsHaveText()) {
$mdAria.expect(element, 'aria-label', ariaLabel);
$mdAria.expect(element, 'role', 'img');
} else {
// Hide from the accessibility layer.
$mdAria.expect(element, 'aria-hidden', 'true');
if ( !attr.mdFontLibrary ) {
if (attr.alt != '' && !parentsHaveText() ) {
$mdAria.expect(element, 'aria-label', ariaLabel);
$mdAria.expect(element, 'role', 'img');
} else {
// Hide from the accessibility layer.
$mdAria.expect(element, 'aria-hidden', 'true');
}
}

@@ -116,3 +223,3 @@

}
mdIconDirective.$inject = ["$mdIcon", "$mdTheming", "$mdAria"];
mdIconDirective.$inject = ["$mdIcon", "$mdTheming", "$mdAria", "$interpolate"];

@@ -138,2 +245,3 @@ angular

*
* @usage
* <hljs lang="js">

@@ -217,3 +325,3 @@ * app.config(function($mdIconProvider) {

* has an icon id. Individual icons can be subsequently retrieved from this cached set using
* `$mdIcon( <icon set name>:<icon name> )`
* `$mdIcon(<icon set name>:<icon name>)`
*

@@ -248,3 +356,3 @@ * @param {string} id Icon name/id used to register the iconset

* subsequent lookups of icons will failover to search this 'default' icon set.
* Icon can be retrieved from this cached, default set using `$mdIcon( <icon name> )`
* Icon can be retrieved from this cached, default set using `$mdIcon(<name>)`
*

@@ -422,3 +530,3 @@ * @param {string} url specifies the external location for the data file. Used internally by `$http` to load the

*
* NOTE: The `md-icon` directive internally uses the `$mdIcon` service to query, loaded, and instantiate
* NOTE: The `<md-icon /> ` directive internally uses the `$mdIcon` service to query, loaded, and instantiate
* SVG DOM elements.

@@ -425,0 +533,0 @@ */

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.input');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.list');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.progressCircular');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.progressLinear');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.radioButton');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -693,3 +693,3 @@ goog.provide('ng.material.components.select');

/* @ngInject */
/* ngInject */
function selectDefaultOptions($mdSelect, $mdConstant, $$rAF, $mdUtil, $mdTheming, $timeout, $window ) {

@@ -696,0 +696,0 @@ return {

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.sidenav');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.slider');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.sticky');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.subheader');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -59,3 +59,3 @@ goog.provide('ng.material.components.swipe');

/* @ngInject */
/* ngInject */
function DirectiveFactory($parse) {

@@ -62,0 +62,0 @@ return { restrict: 'A', link: postLink };

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.switch');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -100,4 +100,30 @@ goog.provide('ng.material.components.tabs');

terminal: true,
template: function (element, attr) {
var label = getLabel(),
body = getTemplate();
return '' +
'<md-tab-label>' + label + '</md-tab-label>' +
'<md-tab-body>' + body + '</md-tab-body>';
function getLabel () {
return getLabelAttribute() || getLabelElement() || getElementContents();
function getLabelAttribute () { return attr.label; }
function getLabelElement () {
var label = element.find('md-tab-label');
if (label.length) return label.remove().html();
}
function getElementContents () {
var html = element.html();
element.empty();
return html;
}
}
function getTemplate () {
var content = element.find('md-tab-body'),
template = content.length ? content.html() : attr.label ? element.html() : '';
if (content.length) content.remove();
else if (attr.label) element.empty();
return template;
}
},
scope: {
label: '@',
active: '=?mdActive',

@@ -119,4 +145,5 @@ disabled: '=?ngDisabled',

index: index,
template: getTemplate(),
label: getLabel()
element: element,
template: element.find('md-tab-body').html(),
label: element.find('md-tab-label').html()
}, index);

@@ -140,24 +167,2 @@

function getLabel () {
var label = attr.label || (element.find('md-tab-label')[0] || element[0]).innerHTML;
return getLabelAttribute() || getLabelElement() || getElementContents();
function getLabelAttribute () { return attr.label; }
function getLabelElement () {
var label = element.find('md-tab-label');
if (label.length) return label.remove().html();
}
function getElementContents () {
var html = element.html();
element.empty();
return html;
}
}
function getTemplate () {
var content = element.find('md-tab-body'),
template = content.length ? content.html() : attr.label ? element.html() : null;
if (content.length) content.remove();
else if (attr.label) element.empty();
return template;
}
}

@@ -180,2 +185,11 @@ }

angular
.module('material.components.tabs')
.directive('mdTabLabel', MdTabLabel);
function MdTabLabel () {
return { terminal: true };
}
angular.module('material.components.tabs')

@@ -204,3 +218,3 @@ .directive('mdTabScroll', MdTabScroll);

/**
* @ngInject
* ngInject
*/

@@ -218,3 +232,3 @@ function MdTabsController ($scope, $element, $window, $timeout, $mdConstant, $mdTabInkRipple,

ctrl.lastSelectedIndex = null;
ctrl.focusIndex = 0;
ctrl.focusIndex = $scope.selectedIndex || 0;
ctrl.offsetLeft = 0;

@@ -241,3 +255,3 @@ ctrl.hasContent = false;

ctrl.incrementSelectedIndex = incrementSelectedIndex;
ctrl.updateInkBarStyles = updateInkBarStyles;
ctrl.updateInkBarStyles = $mdUtil.debounce(updateInkBarStyles, 100);
ctrl.updateTabOrder = $mdUtil.debounce(updateTabOrder, 100);

@@ -252,7 +266,16 @@

$scope.$watch('$mdTabsCtrl.hasContent', handleHasContent);
angular.element($window).on('resize', function () { $scope.$apply(handleWindowResize); });
$timeout(updateInkBarStyles, 0, false);
angular.element($window).on('resize', handleWindowResize);
angular.element(elements.paging).on('DOMSubtreeModified', ctrl.updateInkBarStyles);
$timeout(updateHeightFromContent, 0, false);
$timeout(adjustOffset);
$scope.$on('$destroy', cleanup);
}
function cleanup () {
angular.element($window).off('resize', handleWindowResize);
angular.element(elements.paging).off('DOMSubtreeModified', ctrl.updateInkBarStyles);
}
//-- Change handlers
function handleHasContent (hasContent) {

@@ -262,20 +285,50 @@ $element[hasContent ? 'removeClass' : 'addClass']('md-no-tab-content');

function getElements () {
var elements = {};
function handleOffsetChange (left) {
var newValue = shouldCenterTabs() ? '' : '-' + left + 'px';
angular.element(elements.paging).css('transform', 'translate3d(' + newValue + ', 0, 0)');
$scope.$broadcast('$mdTabsPaginationChanged');
}
//-- gather tab bar elements
elements.wrapper = $element[0].getElementsByTagName('md-tabs-wrapper')[0];
elements.canvas = elements.wrapper.getElementsByTagName('md-tabs-canvas')[0];
elements.paging = elements.canvas.getElementsByTagName('md-pagination-wrapper')[0];
elements.tabs = elements.paging.getElementsByTagName('md-tab-item');
elements.dummies = elements.canvas.getElementsByTagName('md-dummy-tab');
elements.inkBar = elements.paging.getElementsByTagName('md-ink-bar')[0];
function handleFocusIndexChange (newIndex, oldIndex) {
if (newIndex === oldIndex) return;
if (!elements.tabs[newIndex]) return;
adjustOffset();
redirectFocus();
}
//-- gather tab content elements
elements.contentsWrapper = $element[0].getElementsByTagName('md-tabs-content-wrapper')[0];
elements.contents = elements.contentsWrapper.getElementsByTagName('md-tab-content');
function handleSelectedIndexChange (newValue, oldValue) {
if (newValue === oldValue) return;
return elements;
$scope.selectedIndex = getNearestSafeIndex(newValue);
ctrl.lastSelectedIndex = oldValue;
ctrl.updateInkBarStyles();
updateHeightFromContent();
$scope.$broadcast('$mdTabsChanged');
ctrl.tabs[oldValue] && ctrl.tabs[oldValue].scope.deselect();
ctrl.tabs[newValue] && ctrl.tabs[newValue].scope.select();
}
function handleResizeWhenVisible () {
//-- if there is already a watcher waiting for resize, do nothing
if (handleResizeWhenVisible.watcher) return;
//-- otherwise, we will abuse the $watch function to check for visible
handleResizeWhenVisible.watcher = $scope.$watch(function () {
//-- since we are checking for DOM size, we use $timeout to wait for after the DOM updates
$timeout(function () {
//-- if the watcher has already run (ie. multiple digests in one cycle), do nothing
if (!handleResizeWhenVisible.watcher) return;
if ($element.prop('offsetParent')) {
handleResizeWhenVisible.watcher();
handleResizeWhenVisible.watcher = null;
//-- we have to trigger our own $apply so that the DOM bindings will update
handleWindowResize();
}
}, 0, false);
});
}
//-- Event handlers / actions
function keydown (event) {

@@ -300,2 +353,139 @@ switch (event.keyCode) {

function select (index) {
if (!locked) ctrl.focusIndex = $scope.selectedIndex = index;
ctrl.lastClick = true;
ctrl.tabs[index].element.triggerHandler('click');
}
function scroll (event) {
if (!shouldPaginate()) return;
event.preventDefault();
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft - event.wheelDelta);
}
function nextPage () {
var viewportWidth = elements.canvas.clientWidth,
totalWidth = viewportWidth + ctrl.offsetLeft,
i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
if (tab.offsetLeft + tab.offsetWidth > totalWidth) break;
}
ctrl.offsetLeft = fixOffset(tab.offsetLeft);
}
function previousPage () {
var i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
if (tab.offsetLeft + tab.offsetWidth >= ctrl.offsetLeft) break;
}
ctrl.offsetLeft = fixOffset(tab.offsetLeft + tab.offsetWidth - elements.canvas.clientWidth);
}
function handleWindowResize () {
$scope.$apply(function () {
ctrl.lastSelectedIndex = $scope.selectedIndex;
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft);
$timeout(ctrl.updateInkBarStyles, 0, false);
});
}
function removeTab (tabData) {
var selectedIndex = $scope.selectedIndex,
tab = ctrl.tabs.splice(tabData.getIndex(), 1)[0];
refreshIndex();
//-- when removing a tab, if the selected index did not change, we have to manually trigger the
// tab select/deselect events
if ($scope.selectedIndex === selectedIndex) {
tab.scope.deselect();
ctrl.tabs[$scope.selectedIndex] && ctrl.tabs[$scope.selectedIndex].scope.select();
}
$timeout(function () {
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft);
});
}
function insertTab (tabData, index) {
var proto = {
getIndex: function () { return ctrl.tabs.indexOf(tab); },
isActive: function () { return this.getIndex() === $scope.selectedIndex; },
isLeft: function () { return this.getIndex() < $scope.selectedIndex; },
isRight: function () { return this.getIndex() > $scope.selectedIndex; },
hasFocus: function () { return !ctrl.lastClick && ctrl.hasFocus && this.getIndex() === ctrl.focusIndex; },
id: $mdUtil.nextUid()
},
tab = angular.extend(proto, tabData);
if (angular.isDefined(index)) {
ctrl.tabs.splice(index, 0, tab);
} else {
ctrl.tabs.push(tab);
}
processQueue();
updateHasContent();
return tab;
}
//-- Getter methods
function getElements () {
var elements = {};
//-- gather tab bar elements
elements.wrapper = $element[0].getElementsByTagName('md-tabs-wrapper')[0];
elements.canvas = elements.wrapper.getElementsByTagName('md-tabs-canvas')[0];
elements.paging = elements.canvas.getElementsByTagName('md-pagination-wrapper')[0];
elements.tabs = elements.paging.getElementsByTagName('md-tab-item');
elements.dummies = elements.canvas.getElementsByTagName('md-dummy-tab');
elements.inkBar = elements.paging.getElementsByTagName('md-ink-bar')[0];
//-- gather tab content elements
elements.contentsWrapper = $element[0].getElementsByTagName('md-tabs-content-wrapper')[0];
elements.contents = elements.contentsWrapper.getElementsByTagName('md-tab-content');
return elements;
}
function canPageBack () {
return ctrl.offsetLeft > 0;
}
function canPageForward () {
var lastTab = elements.tabs[elements.tabs.length - 1];
return lastTab && lastTab.offsetLeft + lastTab.offsetWidth > elements.canvas.clientWidth + ctrl.offsetLeft;
}
function shouldStretchTabs () {
switch ($scope.stretchTabs) {
case 'always': return true;
case 'never': return false;
default: return !shouldPaginate() && $window.matchMedia('(max-width: 600px)').matches;
}
}
function shouldCenterTabs () {
return $scope.centerTabs && !shouldPaginate();
}
function shouldPaginate () {
if ($scope.noPagination) return false;
var canvasWidth = $element.prop('clientWidth');
angular.forEach(elements.tabs, function (tab) { canvasWidth -= tab.offsetWidth; });
return canvasWidth < 0;
}
function getNearestSafeIndex(newIndex) {
var maxOffset = Math.max(ctrl.tabs.length - newIndex, newIndex),
i, tab;
for (i = 0; i <= maxOffset; i++) {
tab = ctrl.tabs[newIndex + i];
if (tab && (tab.scope.disabled !== true)) return tab.getIndex();
tab = ctrl.tabs[newIndex - i];
if (tab && (tab.scope.disabled !== true)) return tab.getIndex();
}
return newIndex;
}
//-- Utility methods
function updateTabOrder () {

@@ -309,3 +499,2 @@ var selectedItem = ctrl.tabs[$scope.selectedIndex],

ctrl.focusIndex = ctrl.tabs.indexOf(focusItem);
$timeout(updateInkBarStyles, 0, false);
}

@@ -325,15 +514,2 @@

function handleOffsetChange (left) {
var newValue = shouldCenterTabs() ? '' : '-' + left + 'px';
angular.element(elements.paging).css('transform', 'translate3d(' + newValue + ', 0, 0)');
$scope.$broadcast('$mdTabsPaginationChanged');
}
function handleFocusIndexChange (newIndex, oldIndex) {
if (newIndex === oldIndex) return;
if (!elements.tabs[newIndex]) return;
adjustOffset();
redirectFocus();
}
function redirectFocus () {

@@ -352,8 +528,2 @@ elements.dummies[ctrl.focusIndex].focus();

function handleWindowResize () {
ctrl.lastSelectedIndex = $scope.selectedIndex;
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft);
$timeout(updateInkBarStyles, 0, false);
}
function processQueue () {

@@ -364,22 +534,2 @@ queue.forEach(function (func) { $timeout(func); });

function insertTab (tabData, index) {
var proto = {
getIndex: function () { return ctrl.tabs.indexOf(tab); },
isActive: function () { return this.getIndex() === $scope.selectedIndex; },
isLeft: function () { return this.getIndex() < $scope.selectedIndex; },
isRight: function () { return this.getIndex() > $scope.selectedIndex; },
hasFocus: function () { return !ctrl.lastClick && ctrl.hasFocus && this.getIndex() === ctrl.focusIndex; },
id: $mdUtil.nextUid()
},
tab = angular.extend(proto, tabData);
if (angular.isDefined(index)) {
ctrl.tabs.splice(index, 0, tab);
} else {
ctrl.tabs.push(tab);
}
processQueue();
updateHasContent();
return tab;
}
function updateHasContent () {

@@ -393,11 +543,2 @@ var hasContent = false;

function removeTab (tabData) {
ctrl.tabs.splice(tabData.getIndex(), 1);
refreshIndex();
$timeout(function () {
updateInkBarStyles();
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft);
});
}
function refreshIndex () {

@@ -408,35 +549,2 @@ $scope.selectedIndex = getNearestSafeIndex($scope.selectedIndex);

function handleSelectedIndexChange (newValue, oldValue) {
if (newValue === oldValue) return;
$scope.selectedIndex = getNearestSafeIndex(newValue);
ctrl.lastSelectedIndex = oldValue;
updateInkBarStyles();
updateHeightFromContent();
$scope.$broadcast('$mdTabsChanged');
ctrl.tabs[oldValue] && ctrl.tabs[oldValue].scope.deselect();
ctrl.tabs[newValue] && ctrl.tabs[newValue].scope.select();
}
function handleResizeWhenVisible () {
//-- if there is already a watcher waiting for resize, do nothing
if (handleResizeWhenVisible.watcher) return;
//-- otherwise, we will abuse the $watch function to check for visible
handleResizeWhenVisible.watcher = $scope.$watch(function () {
//-- since we are checking for DOM size, we use $timeout to wait for after the DOM updates
$timeout(function () {
//-- if the watcher has already run (ie. multiple digests in one cycle), do nothing
if (!handleResizeWhenVisible.watcher) return;
if ($element.prop('offsetParent')) {
handleResizeWhenVisible.watcher();
handleResizeWhenVisible.watcher = null;
//-- we have to trigger our own $apply so that the DOM bindings will update
$scope.$apply(handleWindowResize);
}
}, 0, false);
});
}
function updateHeightFromContent () {

@@ -465,3 +573,4 @@ if (!$scope.dynamicHeight) return $element.css('height', '');

function updateInkBarStyles () {
if (!ctrl.tabs.length) return queue.push(updateInkBarStyles);
if (!elements.tabs[$scope.selectedIndex]) return;
if (!ctrl.tabs.length) return queue.push(ctrl.updateInkBarStyles);
//-- if the element is not visible, we will not be able to calculate sizes until it is

@@ -492,44 +601,2 @@ //-- we should treat that as a resize event rather than just updating the ink bar

function getNearestSafeIndex(newIndex) {
var maxOffset = Math.max(ctrl.tabs.length - newIndex, newIndex),
i, tab;
for (i = 0; i <= maxOffset; i++) {
tab = ctrl.tabs[newIndex + i];
if (tab && (tab.scope.disabled !== true)) return tab.getIndex();
tab = ctrl.tabs[newIndex - i];
if (tab && (tab.scope.disabled !== true)) return tab.getIndex();
}
return newIndex;
}
function shouldStretchTabs () {
switch ($scope.stretchTabs) {
case 'always': return true;
case 'never': return false;
default: return !shouldPaginate() && $window.matchMedia('(max-width: 600px)').matches;
}
}
function shouldCenterTabs () {
return $scope.centerTabs && !shouldPaginate();
}
function shouldPaginate () {
if ($scope.noPagination) return false;
var canvasWidth = $element.prop('clientWidth');
angular.forEach(elements.tabs, function (tab) { canvasWidth -= tab.offsetWidth; });
return canvasWidth < 0;
}
function select (index) {
if (!locked) ctrl.focusIndex = $scope.selectedIndex = index;
ctrl.lastClick = true;
}
function scroll (event) {
if (!shouldPaginate()) return;
event.preventDefault();
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft - event.wheelDelta);
}
function fixOffset (value) {

@@ -544,31 +611,2 @@ if (!elements.tabs.length || !shouldPaginate()) return 0;

function nextPage () {
var viewportWidth = elements.canvas.clientWidth,
totalWidth = viewportWidth + ctrl.offsetLeft,
i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
if (tab.offsetLeft + tab.offsetWidth > totalWidth) break;
}
ctrl.offsetLeft = fixOffset(tab.offsetLeft);
}
function previousPage () {
var i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
if (tab.offsetLeft + tab.offsetWidth >= ctrl.offsetLeft) break;
}
ctrl.offsetLeft = fixOffset(tab.offsetLeft + tab.offsetWidth - elements.canvas.clientWidth);
}
function canPageBack () {
return ctrl.offsetLeft > 0;
}
function canPageForward () {
var lastTab = elements.tabs[elements.tabs.length - 1];
return lastTab && lastTab.offsetLeft + lastTab.offsetWidth > elements.canvas.clientWidth + ctrl.offsetLeft;
}
function attachRipple (scope, element) {

@@ -678,3 +716,3 @@ var options = { colorElement: angular.element(elements.inkBar) };

template: function (element, attr) {
var content = attr["$mdTabsTemplate"] = element.html();
attr["$mdTabsTemplate"] = element.html();
return '\

@@ -823,3 +861,3 @@ <md-tabs-wrapper ng-class="{ \'md-stretch-tabs\': $mdTabsCtrl.shouldStretchTabs() }">\

function handleScope () {
scope.$watch('connected', function (value) { value ? reconnect() : disconnect(); });
scope.$watch('connected', function (value) { value === false ? disconnect() : reconnect(); });
scope.$on('$destroy', reconnect);

@@ -826,0 +864,0 @@ }

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -189,3 +189,3 @@ goog.provide('ng.material.components.toast');

methods: ['content', 'action', 'highlightAction', 'theme', 'parent'],
options: /* @ngInject */ ["$mdToast", "$mdTheming", function($mdToast, $mdTheming) {
options: /* ngInject */ ["$mdToast", "$mdTheming", function($mdToast, $mdTheming) {
var opts = {

@@ -200,3 +200,3 @@ template: [

].join(''),
controller: /* @ngInject */ ["$scope", function mdToastCtrl($scope) {
controller: /* ngInject */ ["$scope", function mdToastCtrl($scope) {
var self = this;

@@ -224,3 +224,3 @@ $scope.$watch(function() { return activeToastContent; }, function() {

/* @ngInject */
/* ngInject */
function toastDefaultOptions($timeout, $animate, $mdToast, $mdUtil) {

@@ -227,0 +227,0 @@ return {

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.toolbar');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -92,6 +92,2 @@ goog.provide('ng.material.components.tooltip');

function configureWatchers () {
scope.$watch('visible', function (isVisible) {
if (isVisible) showTooltip();
else hideTooltip();
});
scope.$on('$destroy', function() {

@@ -102,2 +98,6 @@ scope.visible = false;

});
scope.$watch('visible', function (isVisible) {
if (isVisible) showTooltip();
else hideTooltip();
});
}

@@ -118,3 +118,3 @@

var parent = element.parent();
while ($window.getComputedStyle(parent[0])['pointer-events'] == 'none') {
while (parent && $window.getComputedStyle(parent[0])['pointer-events'] == 'none') {
parent = parent.parent();

@@ -135,6 +135,29 @@ }

function hasComputedStyleValue(key, value) {
// Check if we should show it or not...
var computedStyles = $window.getComputedStyle(element[0]);
return angular.isDefined(computedStyles[key]) && (computedStyles[key] == value);
}
function bindEvents () {
var autohide = scope.hasOwnProperty('autohide') ? scope.autohide : attr.hasOwnProperty('mdAutohide');
parent.on('focus mouseenter touchstart', function() { setVisible(true); });
parent.on('blur mouseleave touchend touchcancel', function() { if ($document[0].activeElement !== parent[0] || autohide) setVisible(false); });
var mouseActive = false;
var enterHandler = function() {
if (!hasComputedStyleValue('pointer-events','none')) {
setVisible(true);
}
};
var leaveHandler = function () {
var autohide = scope.hasOwnProperty('autohide') ? scope.autohide : attr.hasOwnProperty('mdAutohide');
if (autohide || mouseActive || ($document[0].activeElement !== parent[0]) ) {
setVisible(false);
}
mouseActive = false;
};
// to avoid `synthetic clicks` we listen to mousedown instead of `click`
parent.on('mousedown', function() { mouseActive = true; });
parent.on('focus mouseenter touchstart', enterHandler );
parent.on('blur mouseleave touchend touchcancel', leaveHandler );
angular.element($window).on('resize', debouncedOnResize);

@@ -165,4 +188,4 @@ }

// This handles hide-* and show-* along with any user defined css
var computedStyles = $window.getComputedStyle(element[0]);
if (angular.isDefined(computedStyles.display) && computedStyles.display == 'none') {
if ( hasComputedStyleValue('display','none') ) {
scope.visible = false;
element.detach();

@@ -169,0 +192,0 @@ return;

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ goog.provide('ng.material.components.whiteframe');

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -256,3 +256,3 @@ (function( window, angular, undefined ){

updateScroll();
updateSelectionMessage();
updateMessages();
break;

@@ -264,3 +264,3 @@ case $mdConstant.KEY_CODE.UP_ARROW:

updateScroll();
updateSelectionMessage();
updateMessages();
break;

@@ -361,17 +361,16 @@ case $mdConstant.KEY_CODE.TAB:

function updateMessages () {
if (self.hidden) return;
self.messages = self.matches.length
? [ getCountMessage(), getCurrentDisplayValue() ]
: [];
}
function getCountMessage () {
switch (self.matches.length) {
case 0: return self.messages.splice(0);
case 1: return self.messages.push({ display: 'There is 1 match available.' });
default: return self.messages.push({ display: 'There are '
+ self.matches.length
+ ' matches available.' });
case 1: return 'There is 1 match available.';
default: return 'There are ' + self.matches.length + ' matches available.';
}
}
function updateSelectionMessage () {
self.messages.push({ display: getCurrentDisplayValue() });
}
function updateScroll () {
if (!elements.li[self.index]) return;
var li = elements.li[self.index],

@@ -403,3 +402,3 @@ top = li.offsetTop,

}
self.hidden = shouldHide();
if (hasFocus) self.hidden = shouldHide();
}

@@ -429,3 +428,16 @@

* a tag for `md-not-found`. An example of this is shown below.
* ### Validation
*
* You can use `ng-messages` to include validation the same way that you would normally validate;
* however, if you want to replicate a standard input with a floating label, you will have to do the
* following:
*
* - Make sure that your template is wrapped in `md-item-template`
* - Add your `ng-messages` code inside of `md-autocomplete`
* - Add your validation properties to `md-autocomplete` (ie. `required`)
* - Add a `name` to `md-autocomplete` (to be used on the generated `input`)
*
* There is an example below of how this should look.
*
*
* @param {expression} md-items An expression in the format of `item in items` to iterate over matches for your search.

@@ -476,2 +488,25 @@ * @param {expression} md-selected-item-change An expression to be run each time a new item is selected

* parts that make up our component.
*
* ### Example with validation
* <hljs lang="html">
* <form name="autocompleteForm">
* <md-autocomplete
* required
* input-name="autocomplete"
* md-selected-item="selectedItem"
* md-search-text="searchText"
* md-items="item in getMatches(searchText)"
* md-item-text="item.display">
* <md-item-template>
* <span md-highlight-text="searchText">{{item.display}}</span>
* </md-item-template>
* <div ng-messages="autocompleteForm.autocomplete.$error">
* <div ng-message="required">This field is required</div>
* </div>
* </md-autocomplete>
* </form>
* </hljs>
*
* In this example, our code utilizes `md-item-template` and `md-not-found` to specify the different
* parts that make up our component.
*/

@@ -485,21 +520,29 @@

scope: {
name: '@',
searchText: '=?mdSearchText',
selectedItem: '=?mdSelectedItem',
itemsExpr: '@mdItems',
itemText: '&mdItemText',
placeholder: '@placeholder',
noCache: '=?mdNoCache',
itemChange: '&?mdSelectedItemChange',
textChange: '&?mdSearchTextChange',
minLength: '=?mdMinLength',
delay: '=?mdDelay',
autofocus: '=?mdAutofocus',
floatingLabel: '@?mdFloatingLabel',
autoselect: '=?mdAutoselect',
menuClass: '@?mdMenuClass'
inputName: '@mdInputName',
inputMinlength: '@mdInputMinlength',
inputMaxlength: '@mdInputMaxlength',
searchText: '=?mdSearchText',
selectedItem: '=?mdSelectedItem',
itemsExpr: '@mdItems',
itemText: '&mdItemText',
placeholder: '@placeholder',
noCache: '=?mdNoCache',
itemChange: '&?mdSelectedItemChange',
textChange: '&?mdSearchTextChange',
minLength: '=?mdMinLength',
delay: '=?mdDelay',
autofocus: '=?mdAutofocus',
floatingLabel: '@?mdFloatingLabel',
autoselect: '=?mdAutoselect',
menuClass: '@?mdMenuClass'
},
template: function (element, attr) {
var noItemsTemplate = getNoItemsTemplate(),
itemTemplate = getItemTemplate(),
leftover = element.html();
return '\
<md-autocomplete-wrap ng-class="{ \'md-whiteframe-z1\': !floatingLabel }" role="listbox">\
<md-autocomplete-wrap\
layout="row"\
ng-class="{ \'md-whiteframe-z1\': !floatingLabel }"\
role="listbox">\
' + getInputElement() + '\

@@ -528,5 +571,5 @@ <button\

md-autocomplete-list-item="$mdAutocompleteCtrl.itemName">\
' + getItemTemplate() + '\
' + itemTemplate + '\
</li>\
' + getNoItemsTemplate() + '\
' + noItemsTemplate + '\
</ul>\

@@ -538,8 +581,10 @@ </md-autocomplete-wrap>\

aria-live="assertive">\
<p ng-repeat="message in $mdAutocompleteCtrl.messages">{{message.display}}</p>\
<p ng-repeat="message in $mdAutocompleteCtrl.messages" ng-if="message">{{message}}</p>\
</aria-status>';
function getItemTemplate() {
var templateTag = element.find('md-item-template').remove();
return templateTag.length ? templateTag.html() : element.html();
var templateTag = element.find('md-item-template').remove(),
html = templateTag.length ? templateTag.html() : element.html();
if (!templateTag.length) element.empty();
return html;
}

@@ -562,8 +607,11 @@

return '\
<md-input-container ng-if="floatingLabel">\
<md-input-container flex ng-if="floatingLabel">\
<label>{{floatingLabel}}</label>\
<input type="search"\
id="fl-input-{{$mdAutocompleteCtrl.id}}"\
name="{{name}}"\
name="{{inputName}}"\
autocomplete="off"\
ng-required="isRequired"\
ng-minlength="inputMinlength"\
ng-maxlength="inputMaxlength"\
ng-disabled="isDisabled"\

@@ -580,10 +628,12 @@ ng-model="$mdAutocompleteCtrl.scope.searchText"\

aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>\
<div md-autocomplete-parent-scope md-autocomplete-replace>' + leftover + '</div>\
</md-input-container>';
} else {
return '\
<input type="search"\
<input flex type="search"\
id="input-{{$mdAutocompleteCtrl.id}}"\
name="{{name}}"\
name="{{inputName}}"\
ng-if="!floatingLabel"\
autocomplete="off"\
ng-required="isRequired"\
ng-disabled="isDisabled"\

@@ -608,2 +658,3 @@ ng-model="$mdAutocompleteCtrl.scope.searchText"\

attr.$observe('disabled', function (value) { scope.isDisabled = value; });
attr.$observe('required', function (value) { scope.isRequired = value !== null; });

@@ -735,2 +786,6 @@ $mdUtil.initOptionalProperties(scope, attr, {searchText:null, selectedItem:null} );

$compile(element.contents())(ctrl.parent);
if (attr.hasOwnProperty('mdAutocompleteReplace')) {
element.after(element.contents());
element.remove();
}
}

@@ -737,0 +792,0 @@ }

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,n){"use strict";function o(e,n,o,i,l,a,c,r,m){function s(){f(),l(function(){$(),g(),h()})}function p(){function e(){var e=z.ul.getBoundingClientRect(),n={};e.right>o.right-d&&(n.left=t.right-e.width+"px"),z.$.ul.css(n)}if(!z)return l(p,0,!1);var t=z.wrap.getBoundingClientRect(),n=z.snap.getBoundingClientRect(),o=z.root.getBoundingClientRect(),i=n.bottom-o.top,a=o.bottom-n.top,c=t.left-o.left,r=t.width,m={left:c+"px",minWidth:r+"px",maxWidth:Math.max(t.right-o.left,o.right-t.left)-d+"px"};i>a&&o.height-t.bottom-d<u?(m.top="auto",m.bottom=a+"px",m.maxHeight=Math.min(u,t.top-o.top-d)+"px"):(m.top=i+"px",m.bottom="auto",m.maxHeight=Math.min(u,o.bottom-t.bottom-d)+"px"),z.$.ul.css(m),l(e,0,!1)}function h(){z.$.root.length&&(a(z.$.ul),z.$.ul.detach(),z.$.root.append(z.$.ul),r.pin&&r.pin(z.$.ul,m))}function g(){e.autofocus&&z.input.focus()}function f(){var n=parseInt(e.delay,10)||0;e.$watch("searchText",n?o.debounce(w,n):w),b(v),e.$watch("selectedItem",A),e.$watch("$mdAutocompleteCtrl.hidden",function(e,t){!e&&t&&p()}),t.element(c).on("resize",p)}function $(){z={main:n[0],ul:n.find("ul")[0],input:n.find("input")[0],wrap:n.find("md-autocomplete-wrap")[0],root:document.body},z.li=z.ul.getElementsByTagName("li"),z.snap=x(),z.$=C(z)}function x(){for(var e=n;e.length;e=e.parent())if(t.isDefined(e.attr("md-autocomplete-snap")))return e[0];return z.wrap}function C(e){var n={};for(var o in e)n[o]=t.element(e[o]);return n}function v(t,n){t&&(e.searchText=D(t)),e.itemChange&&t!==n&&e.itemChange(k(t))}function A(e,t){for(var n=0;n<G.length;++n)G[n](e,t)}function b(e){-1==G.indexOf(e)&&G.push(e)}function T(e){var t=G.indexOf(e);-1!=t&&G.splice(t,1)}function w(t,n){K.index=O(),t!==n&&t!==D(e.selectedItem)&&(e.selectedItem=null,e.textChange&&t!==n&&e.textChange(k(e.selectedItem)),N()?j():(K.loading=!1,K.matches=[],K.hidden=M(),_()))}function E(){J=!1,q||(K.hidden=!0)}function y(){J=!0,t.isString(e.searchText)||(e.searchText=""),e.minLength>0||(K.hidden=M(),K.hidden||j())}function L(e){switch(e.keyCode){case i.KEY_CODE.DOWN_ARROW:if(K.loading)return;e.preventDefault(),K.index=Math.min(K.index+1,K.matches.length-1),B(),W();break;case i.KEY_CODE.UP_ARROW:if(K.loading)return;e.preventDefault(),K.index=K.index<0?K.matches.length-1:Math.max(0,K.index-1),B(),W();break;case i.KEY_CODE.TAB:case i.KEY_CODE.ENTER:if(K.hidden||K.loading||K.index<0||K.matches.length<1)return;e.preventDefault(),S(K.index);break;case i.KEY_CODE.ESCAPE:K.matches=[],K.hidden=!0,K.index=O()}}function I(){return t.isNumber(e.minLength)?e.minLength:1}function D(t){return t&&e.itemText?e.itemText(k(t)):t}function k(e){if(e){var t={};return K.itemName&&(t[K.itemName]=e),t}}function O(){return e.autoselect?0:-1}function M(){return N()?void 0:!0}function R(){return D(K.matches[K.index])}function N(){return e.searchText.length>=I()}function S(t){e.selectedItem=K.matches[t],e.searchText=D(e.selectedItem)||e.searchText,K.hidden=!0,K.index=0,K.matches=[]}function U(){e.searchText="",S(-1);var t=document.createEvent("CustomEvent");t.initCustomEvent("input",!0,!0,{value:e.searchText}),z.input.dispatchEvent(t),z.input.focus()}function H(n){function o(t){V[l]=t,K.loading=!1,n===e.searchText&&(F=null,K.matches=t,K.hidden=M(),_(),p())}var i=e.$parent.$eval(P),l=n.toLowerCase();t.isArray(i)?o(i):(K.loading=!0,i.success&&i.success(o),i.then&&i.then(o),i.error&&i.error(function(){K.loading=!1}))}function _(){if(!K.hidden)switch(K.matches.length){case 0:return K.messages.splice(0);case 1:return K.messages.push({display:"There is 1 match available."});default:return K.messages.push({display:"There are "+K.matches.length+" matches available."})}}function W(){K.messages.push({display:R()})}function B(){var e=z.li[K.index],t=e.offsetTop,n=t+e.offsetHeight,o=z.ul.clientHeight;t<z.ul.scrollTop?z.ul.scrollTop=t:n>z.ul.scrollTop+o&&(z.ul.scrollTop=n-o)}function j(){var t=e.searchText,n=t.toLowerCase();F&&F.cancel&&(F.cancel(),F=null),!e.noCache&&V[n]?(K.matches=V[n],_()):H(t),K.hidden=M()}var K=this,Y=e.itemsExpr.split(/ in /i),P=Y[1],z=null,F=null,V={},q=!1,G=[],J=!1;return K.scope=e,K.parent=e.$parent,K.itemName=Y[0],K.matches=[],K.loading=!1,K.hidden=!0,K.index=null,K.messages=[],K.id=o.nextUid(),K.keydown=L,K.blur=E,K.focus=y,K.clear=U,K.select=S,K.getCurrentDisplayValue=R,K.registerSelectedItemWatcher=b,K.unregisterSelectedItemWatcher=T,K.listEnter=function(){q=!0},K.listLeave=function(){q=!1,J||(K.hidden=!0)},K.mouseUp=function(){z.input.focus()},s()}function i(e,t){function n(n,o,i){i.$observe("disabled",function(e){n.isDisabled=e}),t.initOptionalProperties(n,i,{searchText:null,selectedItem:null}),e(o)}return{controller:"MdAutocompleteCtrl",controllerAs:"$mdAutocompleteCtrl",link:n,scope:{name:"@",searchText:"=?mdSearchText",selectedItem:"=?mdSelectedItem",itemsExpr:"@mdItems",itemText:"&mdItemText",placeholder:"@placeholder",noCache:"=?mdNoCache",itemChange:"&?mdSelectedItemChange",textChange:"&?mdSearchTextChange",minLength:"=?mdMinLength",delay:"=?mdDelay",autofocus:"=?mdAutofocus",floatingLabel:"@?mdFloatingLabel",autoselect:"=?mdAutoselect",menuClass:"@?mdMenuClass"},template:function(e,t){function n(){var t=e.find("md-item-template").remove();return t.length?t.html():e.html()}function o(){var t=e.find("md-not-found").remove(),n=t.length?t.html():"";return n?'<li ng-if="!$mdAutocompleteCtrl.matches.length && !$mdAutocompleteCtrl.loading && !$mdAutocompleteCtrl.hidden" ng-hide="$mdAutocompleteCtrl.hidden" md-autocomplete-parent-scope>'+n+"</li>":""}function i(){return t.mdFloatingLabel?' <md-input-container ng-if="floatingLabel"> <label>{{floatingLabel}}</label> <input type="search" id="fl-input-{{$mdAutocompleteCtrl.id}}" name="{{name}}" autocomplete="off" ng-disabled="isDisabled" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur()" ng-focus="$mdAutocompleteCtrl.focus()" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" aria-label="{{floatingLabel}}" aria-autocomplete="list" aria-haspopup="true" aria-activedescendant="" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/> </md-input-container>':' <input type="search" id="input-{{$mdAutocompleteCtrl.id}}" name="{{name}}" ng-if="!floatingLabel" autocomplete="off" ng-disabled="isDisabled" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur()" ng-focus="$mdAutocompleteCtrl.focus()" placeholder="{{placeholder}}" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" aria-label="{{placeholder}}" aria-autocomplete="list" aria-haspopup="true" aria-activedescendant="" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>'}return' <md-autocomplete-wrap ng-class="{ \'md-whiteframe-z1\': !floatingLabel }" role="listbox"> '+i()+' <button type="button" tabindex="-1" ng-if="$mdAutocompleteCtrl.scope.searchText && !isDisabled" ng-click="$mdAutocompleteCtrl.clear()"> <md-icon md-svg-icon="md-cancel"></md-icon> <span class="md-visually-hidden">Clear</span> </button> <md-progress-linear ng-if="$mdAutocompleteCtrl.loading" md-mode="indeterminate"></md-progress-linear> <ul role="presentation" class="md-autocomplete-suggestions md-whiteframe-z1 {{menuClass || \'\'}}" id="ul-{{$mdAutocompleteCtrl.id}}" ng-mouseenter="$mdAutocompleteCtrl.listEnter()" ng-mouseleave="$mdAutocompleteCtrl.listLeave()" ng-mouseup="$mdAutocompleteCtrl.mouseUp()"> <li ng-repeat="(index, item) in $mdAutocompleteCtrl.matches" ng-class="{ selected: index === $mdAutocompleteCtrl.index }" ng-hide="$mdAutocompleteCtrl.hidden" ng-click="$mdAutocompleteCtrl.select(index)" md-autocomplete-list-item="$mdAutocompleteCtrl.itemName"> '+n()+" </li> "+o()+' </ul> </md-autocomplete-wrap> <aria-status class="md-visually-hidden" role="status" aria-live="assertive"> <p ng-repeat="message in $mdAutocompleteCtrl.messages">{{message.display}}</p> </aria-status>'}}}function l(e,n,o){function i(i){var l=o(n.html())(e),c=t.element("<div>").text(l).html(),r=n.attr("md-highlight-flags")||"",m=e.$watch(i,function(e){var t=a(e,r),o=c.replace(t,'<span class="highlight">$&</span>');n.html(o)});n.on("$destroy",function(){m()})}function l(e){return e?e.replace(/[\\\^\$\*\+\?\.\(\)\|\{\}\[\]]/g,"\\$&"):e}function a(e,t){var n="";return t.indexOf("^")>=1&&(n+="^"),n+=e,t.indexOf("$")>=1&&(n+="$"),new RegExp(l(n),t.replace(/[\$\^]/g,""))}return this.init=i,i()}function a(){return{terminal:!0,scope:!1,controller:"MdHighlightCtrl",link:function(e,t,n,o){o.init(n.mdHighlightText)}}}function c(e,t){function n(n,o,i){var l=n.$parent.$mdAutocompleteCtrl,a=l.parent.$new(!1,l.parent),c=l.scope.$eval(i.mdAutocompleteListItem);a[c]=n.item,e(o.contents())(a),o.attr({role:"option",id:"item_"+t.nextUid()})}return{terminal:!0,link:n,scope:!1}}function r(e,t){function n(t,n,o){var i=t.$parent.$mdAutocompleteCtrl;e(n.contents())(i.parent)}return{restrict:"A",terminal:!0,link:n,scope:!1}}t.module("material.components.autocomplete",["material.core","material.components.icon"]),t.module("material.components.autocomplete").controller("MdAutocompleteCtrl",o);var m=41,u=5.5*m,d=8;o.$inject=["$scope","$element","$mdUtil","$mdConstant","$timeout","$mdTheming","$window","$animate","$rootElement"],t.module("material.components.autocomplete").directive("mdAutocomplete",i),i.$inject=["$mdTheming","$mdUtil"],t.module("material.components.autocomplete").controller("MdHighlightCtrl",l),l.$inject=["$scope","$element","$interpolate"],t.module("material.components.autocomplete").directive("mdHighlightText",a),t.module("material.components.autocomplete").directive("mdAutocompleteListItem",c),c.$inject=["$compile","$mdUtil"],t.module("material.components.autocomplete").directive("mdAutocompleteParentScope",r),r.$inject=["$compile","$mdUtil"]}(window,window.angular);
!function(e,t,n){"use strict";function o(e,n,o,i,l,a,r,m,c){function s(){f(),l(function(){$(),g(),h()})}function p(){function e(){var e=Y.ul.getBoundingClientRect(),n={};e.right>o.right-d&&(n.left=t.right-e.width+"px"),Y.$.ul.css(n)}if(!Y)return l(p,0,!1);var t=Y.wrap.getBoundingClientRect(),n=Y.snap.getBoundingClientRect(),o=Y.root.getBoundingClientRect(),i=n.bottom-o.top,a=o.bottom-n.top,r=t.left-o.left,m=t.width,c={left:r+"px",minWidth:m+"px",maxWidth:Math.max(t.right-o.left,o.right-t.left)-d+"px"};i>a&&o.height-t.bottom-d<u?(c.top="auto",c.bottom=a+"px",c.maxHeight=Math.min(u,t.top-o.top-d)+"px"):(c.top=i+"px",c.bottom="auto",c.maxHeight=Math.min(u,o.bottom-t.bottom-d)+"px"),Y.$.ul.css(c),l(e,0,!1)}function h(){Y.$.root.length&&(a(Y.$.ul),Y.$.ul.detach(),Y.$.root.append(Y.$.ul),m.pin&&m.pin(Y.$.ul,c))}function g(){e.autofocus&&Y.input.focus()}function f(){var n=parseInt(e.delay,10)||0;e.$watch("searchText",n?o.debounce(w,n):w),b(v),e.$watch("selectedItem",A),e.$watch("$mdAutocompleteCtrl.hidden",function(e,t){!e&&t&&p()}),t.element(r).on("resize",p)}function $(){Y={main:n[0],ul:n.find("ul")[0],input:n.find("input")[0],wrap:n.find("md-autocomplete-wrap")[0],root:document.body},Y.li=Y.ul.getElementsByTagName("li"),Y.snap=x(),Y.$=C(Y)}function x(){for(var e=n;e.length;e=e.parent())if(t.isDefined(e.attr("md-autocomplete-snap")))return e[0];return Y.wrap}function C(e){var n={};for(var o in e)n[o]=t.element(e[o]);return n}function v(t,n){t&&(e.searchText=M(t)),e.itemChange&&t!==n&&e.itemChange(D(t))}function A(e,t){for(var n=0;n<G.length;++n)G[n](e,t)}function b(e){-1==G.indexOf(e)&&G.push(e)}function T(e){var t=G.indexOf(e);-1!=t&&G.splice(t,1)}function w(t,n){j.index=k(),t!==n&&t!==M(e.selectedItem)&&(e.selectedItem=null,e.textChange&&t!==n&&e.textChange(D(e.selectedItem)),N()?B():(j.loading=!1,j.matches=[],j.hidden=O(),_()))}function E(){J=!1,V||(j.hidden=!0)}function y(){J=!0,t.isString(e.searchText)||(e.searchText=""),e.minLength>0||(j.hidden=O(),j.hidden||B())}function I(e){switch(e.keyCode){case i.KEY_CODE.DOWN_ARROW:if(j.loading)return;e.preventDefault(),j.index=Math.min(j.index+1,j.matches.length-1),q(),_();break;case i.KEY_CODE.UP_ARROW:if(j.loading)return;e.preventDefault(),j.index=j.index<0?j.matches.length-1:Math.max(0,j.index-1),q(),_();break;case i.KEY_CODE.TAB:case i.KEY_CODE.ENTER:if(j.hidden||j.loading||j.index<0||j.matches.length<1)return;e.preventDefault(),S(j.index);break;case i.KEY_CODE.ESCAPE:j.matches=[],j.hidden=!0,j.index=k()}}function L(){return t.isNumber(e.minLength)?e.minLength:1}function M(t){return t&&e.itemText?e.itemText(D(t)):t}function D(e){if(e){var t={};return j.itemName&&(t[j.itemName]=e),t}}function k(){return e.autoselect?0:-1}function O(){return N()?void 0:!0}function R(){return M(j.matches[j.index])}function N(){return e.searchText.length>=L()}function S(t){e.selectedItem=j.matches[t],e.searchText=M(e.selectedItem)||e.searchText,j.hidden=!0,j.index=0,j.matches=[]}function U(){e.searchText="",S(-1);var t=document.createEvent("CustomEvent");t.initCustomEvent("input",!0,!0,{value:e.searchText}),Y.input.dispatchEvent(t),Y.input.focus()}function H(n){function o(t){F[l]=t,j.loading=!1,n===e.searchText&&(z=null,j.matches=t,j.hidden=O(),_(),p())}var i=e.$parent.$eval(P),l=n.toLowerCase();t.isArray(i)?o(i):(j.loading=!0,i.success&&i.success(o),i.then&&i.then(o),i.error&&i.error(function(){j.loading=!1}))}function _(){j.messages=j.matches.length?[W(),R()]:[]}function W(){switch(j.matches.length){case 1:return"There is 1 match available.";default:return"There are "+j.matches.length+" matches available."}}function q(){if(Y.li[j.index]){var e=Y.li[j.index],t=e.offsetTop,n=t+e.offsetHeight,o=Y.ul.clientHeight;t<Y.ul.scrollTop?Y.ul.scrollTop=t:n>Y.ul.scrollTop+o&&(Y.ul.scrollTop=n-o)}}function B(){var t=e.searchText,n=t.toLowerCase();z&&z.cancel&&(z.cancel(),z=null),!e.noCache&&F[n]?(j.matches=F[n],_()):H(t),J&&(j.hidden=O())}var j=this,K=e.itemsExpr.split(/ in /i),P=K[1],Y=null,z=null,F={},V=!1,G=[],J=!1;return j.scope=e,j.parent=e.$parent,j.itemName=K[0],j.matches=[],j.loading=!1,j.hidden=!0,j.index=null,j.messages=[],j.id=o.nextUid(),j.keydown=I,j.blur=E,j.focus=y,j.clear=U,j.select=S,j.getCurrentDisplayValue=R,j.registerSelectedItemWatcher=b,j.unregisterSelectedItemWatcher=T,j.listEnter=function(){V=!0},j.listLeave=function(){V=!1,J||(j.hidden=!0)},j.mouseUp=function(){Y.input.focus()},s()}function i(e,t){function n(n,o,i){i.$observe("disabled",function(e){n.isDisabled=e}),i.$observe("required",function(e){n.isRequired=null!==e}),t.initOptionalProperties(n,i,{searchText:null,selectedItem:null}),e(o)}return{controller:"MdAutocompleteCtrl",controllerAs:"$mdAutocompleteCtrl",link:n,scope:{inputName:"@mdInputName",inputMinlength:"@mdInputMinlength",inputMaxlength:"@mdInputMaxlength",searchText:"=?mdSearchText",selectedItem:"=?mdSelectedItem",itemsExpr:"@mdItems",itemText:"&mdItemText",placeholder:"@placeholder",noCache:"=?mdNoCache",itemChange:"&?mdSelectedItemChange",textChange:"&?mdSearchTextChange",minLength:"=?mdMinLength",delay:"=?mdDelay",autofocus:"=?mdAutofocus",floatingLabel:"@?mdFloatingLabel",autoselect:"=?mdAutoselect",menuClass:"@?mdMenuClass"},template:function(e,t){function n(){var t=e.find("md-item-template").remove(),n=t.length?t.html():e.html();return t.length||e.empty(),n}function o(){var t=e.find("md-not-found").remove(),n=t.length?t.html():"";return n?'<li ng-if="!$mdAutocompleteCtrl.matches.length && !$mdAutocompleteCtrl.loading && !$mdAutocompleteCtrl.hidden" ng-hide="$mdAutocompleteCtrl.hidden" md-autocomplete-parent-scope>'+n+"</li>":""}function i(){return t.mdFloatingLabel?' <md-input-container flex ng-if="floatingLabel"> <label>{{floatingLabel}}</label> <input type="search" id="fl-input-{{$mdAutocompleteCtrl.id}}" name="{{inputName}}" autocomplete="off" ng-required="isRequired" ng-minlength="inputMinlength" ng-maxlength="inputMaxlength" ng-disabled="isDisabled" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur()" ng-focus="$mdAutocompleteCtrl.focus()" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" aria-label="{{floatingLabel}}" aria-autocomplete="list" aria-haspopup="true" aria-activedescendant="" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/> <div md-autocomplete-parent-scope md-autocomplete-replace>'+r+"</div> </md-input-container>":' <input flex type="search" id="input-{{$mdAutocompleteCtrl.id}}" name="{{inputName}}" ng-if="!floatingLabel" autocomplete="off" ng-required="isRequired" ng-disabled="isDisabled" ng-model="$mdAutocompleteCtrl.scope.searchText" ng-keydown="$mdAutocompleteCtrl.keydown($event)" ng-blur="$mdAutocompleteCtrl.blur()" ng-focus="$mdAutocompleteCtrl.focus()" placeholder="{{placeholder}}" aria-owns="ul-{{$mdAutocompleteCtrl.id}}" aria-label="{{placeholder}}" aria-autocomplete="list" aria-haspopup="true" aria-activedescendant="" aria-expanded="{{!$mdAutocompleteCtrl.hidden}}"/>'}var l=o(),a=n(),r=e.html();return' <md-autocomplete-wrap layout="row" ng-class="{ \'md-whiteframe-z1\': !floatingLabel }" role="listbox"> '+i()+' <button type="button" tabindex="-1" ng-if="$mdAutocompleteCtrl.scope.searchText && !isDisabled" ng-click="$mdAutocompleteCtrl.clear()"> <md-icon md-svg-icon="md-cancel"></md-icon> <span class="md-visually-hidden">Clear</span> </button> <md-progress-linear ng-if="$mdAutocompleteCtrl.loading" md-mode="indeterminate"></md-progress-linear> <ul role="presentation" class="md-autocomplete-suggestions md-whiteframe-z1 {{menuClass || \'\'}}" id="ul-{{$mdAutocompleteCtrl.id}}" ng-mouseenter="$mdAutocompleteCtrl.listEnter()" ng-mouseleave="$mdAutocompleteCtrl.listLeave()" ng-mouseup="$mdAutocompleteCtrl.mouseUp()"> <li ng-repeat="(index, item) in $mdAutocompleteCtrl.matches" ng-class="{ selected: index === $mdAutocompleteCtrl.index }" ng-hide="$mdAutocompleteCtrl.hidden" ng-click="$mdAutocompleteCtrl.select(index)" md-autocomplete-list-item="$mdAutocompleteCtrl.itemName"> '+a+" </li> "+l+' </ul> </md-autocomplete-wrap> <aria-status class="md-visually-hidden" role="status" aria-live="assertive"> <p ng-repeat="message in $mdAutocompleteCtrl.messages" ng-if="message">{{message}}</p> </aria-status>'}}}function l(e,n,o){function i(i){var l=o(n.html())(e),r=t.element("<div>").text(l).html(),m=n.attr("md-highlight-flags")||"",c=e.$watch(i,function(e){var t=a(e,m),o=r.replace(t,'<span class="highlight">$&</span>');n.html(o)});n.on("$destroy",function(){c()})}function l(e){return e?e.replace(/[\\\^\$\*\+\?\.\(\)\|\{\}\[\]]/g,"\\$&"):e}function a(e,t){var n="";return t.indexOf("^")>=1&&(n+="^"),n+=e,t.indexOf("$")>=1&&(n+="$"),new RegExp(l(n),t.replace(/[\$\^]/g,""))}return this.init=i,i()}function a(){return{terminal:!0,scope:!1,controller:"MdHighlightCtrl",link:function(e,t,n,o){o.init(n.mdHighlightText)}}}function r(e,t){function n(n,o,i){var l=n.$parent.$mdAutocompleteCtrl,a=l.parent.$new(!1,l.parent),r=l.scope.$eval(i.mdAutocompleteListItem);a[r]=n.item,e(o.contents())(a),o.attr({role:"option",id:"item_"+t.nextUid()})}return{terminal:!0,link:n,scope:!1}}function m(e,t){function n(t,n,o){var i=t.$parent.$mdAutocompleteCtrl;e(n.contents())(i.parent),o.hasOwnProperty("mdAutocompleteReplace")&&(n.after(n.contents()),n.remove())}return{restrict:"A",terminal:!0,link:n,scope:!1}}t.module("material.components.autocomplete",["material.core","material.components.icon"]),t.module("material.components.autocomplete").controller("MdAutocompleteCtrl",o);var c=41,u=5.5*c,d=8;o.$inject=["$scope","$element","$mdUtil","$mdConstant","$timeout","$mdTheming","$window","$animate","$rootElement"],t.module("material.components.autocomplete").directive("mdAutocomplete",i),i.$inject=["$mdTheming","$mdUtil"],t.module("material.components.autocomplete").controller("MdHighlightCtrl",l),l.$inject=["$scope","$element","$interpolate"],t.module("material.components.autocomplete").directive("mdHighlightText",a),t.module("material.components.autocomplete").directive("mdAutocompleteListItem",r),r.$inject=["$compile","$mdUtil"],t.module("material.components.autocomplete").directive("mdAutocompleteParentScope",m),m.$inject=["$compile","$mdUtil"]}(window,window.angular);
{
"name": "angular-material-autocomplete",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-icon": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-icon": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(n,e,i){"use strict";function o(n){return n}e.module("material.components.backdrop",["material.core"]).directive("mdBackdrop",o),o.$inject=["$mdTheming"]}(window,window.angular);
{
"name": "angular-material-backdrop",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -138,3 +138,3 @@ (function( window, angular, undefined ){

/* @ngInject */
/* ngInject */
function bottomSheetDefaults($animate, $mdConstant, $mdUtil, $timeout, $compile, $mdTheming, $mdBottomSheet, $rootElement, $mdGesture) {

@@ -141,0 +141,0 @@ var backdrop;

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,n){"use strict";function o(){return{restrict:"E"}}function r(e){function n(e,n,a,l,c,i,s,m,d){function u(o,r,d){r=a.extractElementByName(r,"md-bottom-sheet"),S=c('<md-backdrop class="md-opaque md-bottom-sheet-backdrop">')(o),S.on("click",function(){l(s.cancel)}),i.inherit(S,d.parent),e.enter(S,d.parent,null);var u=new f(r,d.parent);return d.bottomSheet=u,d.targetEvent&&t.element(d.targetEvent.target).blur(),i.inherit(u.element,d.parent),d.disableParentScroll&&(d.lastOverflow=d.parent.css("overflow"),d.parent.css("overflow","hidden")),e.enter(u.element,d.parent).then(function(){var e=t.element(r[0].querySelector("button")||r[0].querySelector("a")||r[0].querySelector("[ng-click]"));e.focus(),d.escapeToClose&&(d.rootElementKeyupCallback=function(e){e.keyCode===n.KEY_CODE.ESCAPE&&l(s.cancel)},m.on("keyup",d.rootElementKeyupCallback))})}function p(n,o,r){var a=r.bottomSheet;return e.leave(S),e.leave(a.element).then(function(){r.disableParentScroll&&(r.parent.css("overflow",r.lastOverflow),delete r.lastOverflow),a.cleanup(),r.targetEvent&&t.element(r.targetEvent.target).focus()})}function f(e,t){function a(t){e.css(n.CSS.TRANSITION_DURATION,"0ms")}function c(t){var o=t.pointer.distanceY;5>o&&(o=Math.max(-r,o/2)),e.css(n.CSS.TRANSFORM,"translate3d(0,"+(r+o)+"px,0)")}function i(t){if(t.pointer.distanceY>0&&(t.pointer.distanceY>20||Math.abs(t.pointer.velocityY)>o)){var r=e.prop("offsetHeight")-t.pointer.distanceY,a=Math.min(r/t.pointer.velocityY*.75,500);e.css(n.CSS.TRANSITION_DURATION,a+"ms"),l(s.cancel)}else e.css(n.CSS.TRANSITION_DURATION,""),e.css(n.CSS.TRANSFORM,"")}var m=d.register(t,"drag",{horizontal:!1});return t.on("$md.dragstart",a).on("$md.drag",c).on("$md.dragend",i),{element:e,cleanup:function(){m(),t.off("$md.dragstart",a).off("$md.drag",c).off("$md.dragend",i)}}}var S;return{themable:!0,targetEvent:null,onShow:u,onRemove:p,escapeToClose:!0,disableParentScroll:!0}}var o=.5,r=80;return n.$inject=["$animate","$mdConstant","$mdUtil","$timeout","$compile","$mdTheming","$mdBottomSheet","$rootElement","$mdGesture"],e("$mdBottomSheet").setDefaults({methods:["disableParentScroll","escapeToClose","targetEvent"],options:n})}t.module("material.components.bottomSheet",["material.core","material.components.backdrop"]).directive("mdBottomSheet",o).provider("$mdBottomSheet",r),r.$inject=["$$interimElementProvider"]}(window,window.angular);
{
"name": "angular-material-bottomSheet",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-backdrop": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-backdrop": "0.9.7"
}
}
{
"name": "angular-material-button",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -33,6 +33,4 @@ (function( window, angular, undefined ){

* If you supply a `href` or `ng-href` attribute, it will become an `<a>` element. Otherwise, it will
* become a `<button>` element.
*
* As per the [material design spec](http://www.google.com/design/spec/style/color.html#color-ui-color-application)
* the FAB button is in the accent color by default. The primary color palette may be used with
* become a `<button>` element. As per the [Material Design specifications](http://www.google.com/design/spec/style/color.html#color-ui-color-application)
* the FAB button background is filled with the accent color [by default]. The primary color palette may be used with
* the `md-primary` class.

@@ -47,21 +45,27 @@ *

* @usage
*
* Regular buttons:
*
* <hljs lang="html">
* <md-button> Flat Button </md-button>
* <md-button href="http://google.com"> Flat link </md-button>
* <md-button class="md-raised"> Raised Button </md-button>
* <md-button ng-disabled="true"> Disabled Button </md-button>
* <md-button>
* Flat Button
* <md-icon md-svg-src="your/icon.svg"></md-icon>
* Register Now
* </md-button>
* <md-button href="http://google.com">
* Flat link
* </md-button>
* <md-button class="md-raised">
* Raised Button
* </md-button>
* <md-button ng-disabled="true">
* Disabled Button
* </md-button>
* </hljs>
*
* FAB buttons:
*
* <hljs lang="html">
* <md-button class="md-fab" aria-label="FAB">
* <md-icon md-svg-src="your/icon.svg"></md-icon>
* </md-button>
* <!-- mini-FAB -->
* <md-button class="md-fab md-mini" aria-label="Mini FAB">
* <md-icon md-svg-src="your/icon.svg"></md-icon>
* </md-button>
* <!-- Button with SVG Icon -->
* <md-button class="md-icon-button" aria-label="Custom Icon Button">

@@ -68,0 +72,0 @@ * <md-icon md-svg-icon="path/to/your.svg"></md-icon>

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(n,t,e){"use strict";function i(n,e,i,o){function u(n){return t.isDefined(n.href)||t.isDefined(n.ngHref)||t.isDefined(n.ngLink)||t.isDefined(n.uiSref)}function a(n,t){return u(t)?'<a class="md-button" ng-transclude></a>':'<button class="md-button" ng-transclude></button>'}function c(a,c,s){var d=c[0];e(c),n.attach(a,c);var r=d.textContent.trim();r||i.expect(c,"aria-label"),u(s)&&t.isDefined(s.ngDisabled)&&a.$watch(s.ngDisabled,function(n){c.attr("tabindex",n?-1:0)}),c.on("click",function(n){s.disabled===!0&&(n.preventDefault(),n.stopImmediatePropagation())}),a.mouseActive=!1,c.on("mousedown",function(){a.mouseActive=!0,o(function(){a.mouseActive=!1},100)}).on("focus",function(){a.mouseActive===!1&&c.addClass("md-focused")}).on("blur",function(){c.removeClass("md-focused")})}return{restrict:"EA",replace:!0,transclude:!0,template:a,link:c}}t.module("material.components.button",["material.core"]).directive("mdButton",i),i.$inject=["$mdButtonInkRipple","$mdTheming","$mdAria","$timeout"]}(window,window.angular);
{
"name": "angular-material-card",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(n,i,t){"use strict";function e(n){return{restrict:"E",link:function(i,t,e){n(t)}}}i.module("material.components.card",["material.core"]).directive("mdCard",e),e.$inject=["$mdTheming"]}(window,window.angular);
{
"name": "angular-material-checkbox",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,n,i){"use strict";function t(e,i,t,c,d,o,a){function s(i,s){return s.type="checkbox",s.tabindex=s.tabindex||"0",i.attr("role",s.type),function(i,s,u,l){function m(e,n,t){u[e]&&i.$watch(u[e],function(e){t[e]&&s.attr(n,t[e])})}function f(e){var n=e.which||e.keyCode;(n===c.KEY_CODE.SPACE||n===c.KEY_CODE.ENTER)&&(e.preventDefault(),s.hasClass("md-focused")||s.addClass("md-focused"),p(e))}function p(e){s[0].hasAttribute("disabled")||i.$apply(function(){var n=u.ngChecked?u.checked:!l.$viewValue;l.$setViewValue(n,e&&e.type),l.$render()})}function v(){l.$viewValue?s.addClass(r):s.removeClass(r)}l=l||o.fakeNgModel(),d(s),u.ngChecked&&i.$watch(i.$eval.bind(i,u.ngChecked),l.$setViewValue.bind(l)),m("ngDisabled","tabindex",{"true":"-1","false":u.tabindex}),t.expectWithText(s,"aria-label"),e.link.pre(i,{on:n.noop,0:{}},u,[l]),i.mouseActive=!1,s.on("click",p).on("keypress",f).on("mousedown",function(){i.mouseActive=!0,a(function(){i.mouseActive=!1},100)}).on("focus",function(){i.mouseActive===!1&&s.addClass("md-focused")}).on("blur",function(){s.removeClass("md-focused")}),l.$render=v}}e=e[0];var r="md-checked";return{restrict:"E",transclude:!0,require:"?ngModel",priority:210,template:'<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-icon"></div></div><div ng-transclude class="md-label"></div>',compile:s}}n.module("material.components.checkbox",["material.core"]).directive("mdCheckbox",t),t.$inject=["inputDirective","$mdInkRipple","$mdAria","$mdConstant","$mdTheming","$mdUtil","$timeout"]}(window,window.angular);
{
"name": "angular-material-chips",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-autocomplete": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-autocomplete": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -56,3 +56,3 @@ (function( window, angular, undefined ){

* @param $mdInkRipple
* @ngInject
* ngInject
*/

@@ -915,3 +915,3 @@ function MdChip($mdTheming) {

* @returns {*}
* @ngInject
* ngInject
*/

@@ -918,0 +918,0 @@ function MdContactChips ($mdTheming, $mdUtil) {

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(t,e,i){"use strict";function n(t){function i(i,n){return i.append(l),function(i,n,o,s){n.addClass("md-chip"),t(n),s&&e.element(n[0].querySelector(".md-chip-content")).on("blur",function(){s.selectedChip=-1})}}return{restrict:"E",require:"^?mdChips",compile:i}}function o(t){function e(e,i,n,o){i.on("click",function(t){e.$apply(function(){o.removeChip(e.$$replacedScope.$index)})}),t(function(){i.attr({tabindex:-1,ariaHidden:!0}),i.find("button").attr("tabindex","-1")})}return{restrict:"A",require:"^mdChips",scope:!1,link:e}}function s(t,e){function i(e,i,n){var o=e.$parent.$mdChipsCtrl,s=o.parent.$new(!1,o.parent);s.$$replacedScope=e,s.$chip=e.$chip,s.$mdChipsCtrl=o,i.html(o.$scope.$eval(n.mdChipTransclude)),t(i.contents())(s)}return{restrict:"EA",terminal:!0,link:i,scope:!1}}function c(t,e,i,n,o){this.$timeout=o,this.$mdConstant=e,this.$scope=t,this.parent=t.$parent,this.$log=i,this.$element=n,this.ngModelCtrl=null,this.userInputNgModelCtrl=null,this.userInputElement=null,this.items=[],this.selectedChip=-1,this.deleteHint="Press delete to remove this chip.",this.deleteButtonLabel="Remove",this.chipBuffer="",this.useMdOnAppend=!1}function r(t,e,i,n,o){function s(s,c){function r(t){if(c.ngModel){var e=p[0].querySelector(t);return e&&e.outerHTML}}var p=c.$mdUserTemplate;c.$mdUserTemplate=null;var d=r("md-chips>*[md-chip-remove]")||u,l=r("md-chips>md-chip-template")||m,h=r("md-chips>md-autocomplete")||r("md-chips>input")||a,C=p.find("md-chip");return p[0].querySelector("md-chip-template>*[md-chip-remove]")&&n.warn("invalid placement of md-chip-remove within md-chip-template."),function(n,s,r,p){e.initOptionalProperties(n,c),t(s);var m=p[0];if(m.chipContentsTemplate=l,m.chipRemoveTemplate=d,m.chipInputTemplate=h,s.attr({ariaHidden:!0,tabindex:-1}).on("focus",function(){m.onFocus()}),c.ngModel&&(m.configureNgModel(s.controller("ngModel")),r.mdOnAppend&&m.useMdOnAppendExpression(),h!=a&&o(function(){0===h.indexOf("<md-autocomplete")&&m.configureAutocomplete(s.find("md-autocomplete").controller("mdAutocomplete")),m.configureUserInput(s.find("input"))})),C.length>0){var u=i(C)(n.$parent);o(function(){s.find("md-chips-wrap").prepend(u)})}}}return{template:function(t,e){e.$mdUserTemplate=t.clone();return h},require:["mdChips"],restrict:"E",controller:"MdChipsCtrl",controllerAs:"$mdChipsCtrl",bindToController:!0,compile:s,scope:{readonly:"=readonly",placeholder:"@",secondaryPlaceholder:"@",mdOnAppend:"&",deleteHint:"@",deleteButtonLabel:"@",requireMatch:"=?mdRequireMatch"}}}function p(){this.selectedItem=null,this.searchText=""}function d(t,e){function i(i,n){return function(i,o,s,c){e.initOptionalProperties(i,n),t(o),o.attr("tabindex","-1")}}return{template:function(t,e){return C},restrict:"E",controller:"MdContactChipsCtrl",controllerAs:"$mdContactChipsCtrl",bindToController:!0,compile:i,scope:{contactQuery:"&mdContacts",placeholder:"@",secondaryPlaceholder:"@",contactName:"@mdContactName",contactImage:"@mdContactImage",contactEmail:"@mdContactEmail",contacts:"=ngModel",requireMatch:"=?mdRequireMatch"}}}e.module("material.components.chips",["material.core","material.components.autocomplete"]),e.module("material.components.chips").directive("mdChip",n);var l=' <span ng-if="!$mdChipsCtrl.readonly" class="md-visually-hidden"> {{$mdChipsCtrl.deleteHint}} </span>';n.$inject=["$mdTheming"],e.module("material.components.chips").directive("mdChipRemove",o),o.$inject=["$timeout"],e.module("material.components.chips").directive("mdChipTransclude",s),s.$inject=["$compile","$mdUtil"],e.module("material.components.chips").controller("MdChipsCtrl",c),c.$inject=["$scope","$mdConstant","$log","$element","$timeout"],c.prototype.inputKeydown=function(t){var e=this.getChipBuffer();switch(t.keyCode){case this.$mdConstant.KEY_CODE.ENTER:if(this.$scope.requireMatch||!e)break;t.preventDefault(),this.appendChip(e),this.resetChipBuffer();break;case this.$mdConstant.KEY_CODE.BACKSPACE:if(e)break;t.stopPropagation(),this.items.length&&this.selectAndFocusChipSafe(this.items.length-1)}},c.prototype.chipKeydown=function(t){if(!this.getChipBuffer())switch(t.keyCode){case this.$mdConstant.KEY_CODE.BACKSPACE:case this.$mdConstant.KEY_CODE.DELETE:if(this.selectedChip<0)return;t.preventDefault(),this.removeAndSelectAdjacentChip(this.selectedChip);break;case this.$mdConstant.KEY_CODE.LEFT_ARROW:t.preventDefault(),this.selectedChip<0&&(this.selectedChip=this.items.length),this.items.length&&this.selectAndFocusChipSafe(this.selectedChip-1);break;case this.$mdConstant.KEY_CODE.RIGHT_ARROW:t.preventDefault(),this.selectAndFocusChipSafe(this.selectedChip+1);break;case this.$mdConstant.KEY_CODE.ESCAPE:case this.$mdConstant.KEY_CODE.TAB:if(this.selectedChip<0)return;t.preventDefault(),this.onFocus()}},c.prototype.getPlaceholder=function(){var t=this.items.length&&(""==this.secondaryPlaceholder||this.secondaryPlaceholder);return t?this.placeholder:this.secondaryPlaceholder},c.prototype.removeAndSelectAdjacentChip=function(t){var i=this.getAdjacentChipIndex(t);this.removeChip(t),this.$timeout(e.bind(this,function(){this.selectAndFocusChipSafe(i)}))},c.prototype.resetSelectedChip=function(){this.selectedChip=-1},c.prototype.getAdjacentChipIndex=function(t){var e=this.items.length-1;return 0==e?-1:t==e?t-1:t},c.prototype.appendChip=function(t){this.items.indexOf(t)+1||(this.useMdOnAppend&&this.mdOnAppend&&(t=this.mdOnAppend({$chip:t})),this.items.push(t))},c.prototype.useMdOnAppendExpression=function(){this.useMdOnAppend=!0},c.prototype.getChipBuffer=function(){return this.userInputElement?this.userInputNgModelCtrl?this.userInputNgModelCtrl.$viewValue:this.userInputElement[0].value:this.chipBuffer},c.prototype.resetChipBuffer=function(){this.userInputElement?this.userInputNgModelCtrl?(this.userInputNgModelCtrl.$setViewValue(""),this.userInputNgModelCtrl.$render()):this.userInputElement[0].value="":this.chipBuffer=""},c.prototype.removeChip=function(t){this.items.splice(t,1)},c.prototype.removeChipAndFocusInput=function(t){this.removeChip(t),this.onFocus()},c.prototype.selectAndFocusChipSafe=function(t){return this.items.length?t===this.items.length?this.onFocus():(t=Math.max(t,0),t=Math.min(t,this.items.length-1),this.selectChip(t),void this.focusChip(t)):(this.selectChip(-1),void this.onFocus())},c.prototype.selectChip=function(t){t>=-1&&t<=this.items.length?this.selectedChip=t:this.$log.warn("Selected Chip index out of bounds; ignoring.")},c.prototype.selectAndFocusChip=function(t){this.selectChip(t),-1!=t&&this.focusChip(t)},c.prototype.focusChip=function(t){this.$element[0].querySelector('md-chip[index="'+t+'"] .md-chip-content').focus()},c.prototype.configureNgModel=function(t){this.ngModelCtrl=t;var e=this;t.$render=function(){e.items=e.ngModelCtrl.$viewValue}},c.prototype.onFocus=function(){var t=this.$element[0].querySelector("input");t&&t.focus(),this.resetSelectedChip()},c.prototype.onInputFocus=function(){this.inputHasFocus=!0,this.resetSelectedChip()},c.prototype.onInputBlur=function(){this.inputHasFocus=!1},c.prototype.configureUserInput=function(t){this.userInputElement=t;var i=t.controller("ngModel");i!=this.ngModelCtrl&&(this.userInputNgModelCtrl=i);var n=this.$scope,o=this;t.attr({tabindex:0}).on("keydown",function(t){n.$apply(e.bind(o,function(){o.inputKeydown(t)}))}).on("focus",e.bind(o,o.onInputFocus)).on("blur",e.bind(o,o.onInputBlur))},c.prototype.configureAutocomplete=function(t){t.registerSelectedItemWatcher(e.bind(this,function(t){t&&(this.appendChip(t),this.resetChipBuffer())})),this.$element.find("input").on("focus",e.bind(this,this.onInputFocus)).on("blur",e.bind(this,this.onInputBlur))},c.prototype.hasFocus=function(){return this.inputHasFocus||this.selectedChip>=0},e.module("material.components.chips").directive("mdChips",r);var h=' <md-chips-wrap ng-if="!$mdChipsCtrl.readonly || $mdChipsCtrl.items.length > 0" ng-keydown="$mdChipsCtrl.chipKeydown($event)" ng-class="{ \'md-focused\': $mdChipsCtrl.hasFocus() }" class="md-chips"> <md-chip ng-repeat="$chip in $mdChipsCtrl.items" index="{{$index}}" ng-class="{\'md-focused\': $mdChipsCtrl.selectedChip == $index}"> <div class="md-chip-content" tabindex="-1" aria-hidden="true" ng-focus="!$mdChipsCtrl.readonly && $mdChipsCtrl.selectChip($index)" md-chip-transclude="$mdChipsCtrl.chipContentsTemplate"></div> <div class="md-chip-remove-container" md-chip-transclude="$mdChipsCtrl.chipRemoveTemplate"></div> </md-chip> <div ng-if="!$mdChipsCtrl.readonly && $mdChipsCtrl.ngModelCtrl" class="md-chip-input-container" md-chip-transclude="$mdChipsCtrl.chipInputTemplate"></div> </div> </md-chips-wrap>',a=' <input tabindex="0" placeholder="{{$mdChipsCtrl.getPlaceholder()}}" aria-label="{{$mdChipsCtrl.getPlaceholder()}}" ng-model="$mdChipsCtrl.chipBuffer" ng-focus="$mdChipsCtrl.onInputFocus()" ng-blur="$mdChipsCtrl.onInputBlur()" ng-keydown="$mdChipsCtrl.inputKeydown($event)">',m=" <span>{{$chip}}</span>",u=' <button class="md-chip-remove" ng-if="!$mdChipsCtrl.readonly" ng-click="$mdChipsCtrl.removeChipAndFocusInput($$replacedScope.$index)" type="button" aria-hidden="true" tabindex="-1"> <md-icon md-svg-icon="md-close"></md-icon> <span class="md-visually-hidden"> {{$mdChipsCtrl.deleteButtonLabel}} </span> </button>';r.$inject=["$mdTheming","$mdUtil","$compile","$log","$timeout"],e.module("material.components.chips").controller("MdContactChipsCtrl",p),p.prototype.queryContact=function(t){var i=this.contactQuery({$query:t});return this.filterSelected?i.filter(e.bind(this,this.filterSelectedContacts)):i},p.prototype.filterSelectedContacts=function(t){return-1==this.contacts.indexOf(t)},e.module("material.components.chips").directive("mdContactChips",d);var C=' <md-chips class="md-contact-chips" ng-model="$mdContactChipsCtrl.contacts" md-require-match="$mdContactChipsCtrl.requireMatch" md-autocomplete-snap> <md-autocomplete md-menu-class="md-contact-chips-suggestions" md-selected-item="$mdContactChipsCtrl.selectedItem" md-search-text="$mdContactChipsCtrl.searchText" md-items="item in $mdContactChipsCtrl.queryContact($mdContactChipsCtrl.searchText)" md-item-text="$mdContactChipsCtrl.mdContactName" md-no-cache="true" md-autoselect placeholder="{{$mdContactChipsCtrl.contacts.length == 0 ? $mdContactChipsCtrl.placeholder : $mdContactChipsCtrl.secondaryPlaceholder}}"> <div class="md-contact-suggestion"> <img ng-src="{{item[$mdContactChipsCtrl.contactImage]}}" alt="{{item[$mdContactChipsCtrl.contactName]}}" /> <span class="md-contact-name" md-highlight-text="$mdContactChipsCtrl.searchText"> {{item[$mdContactChipsCtrl.contactName]}} </span> <span class="md-contact-email" >{{item[$mdContactChipsCtrl.contactEmail]}}</span> </div> </md-autocomplete> <md-chip-template> <div class="md-contact-avatar"> <img ng-src="{{$chip[$mdContactChipsCtrl.contactImage]}}" alt="{{$chip[$mdContactChipsCtrl.contactName]}}" /> </div> <div class="md-contact-name"> {{$chip[$mdContactChipsCtrl.contactName]}} </div> </md-chip-template> </md-chips>';d.$inject=["$mdTheming","$mdUtil"]}(window,window.angular);
{
"name": "angular-material-content",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,o){"use strict";function n(e){function t(e,t){this.$scope=e,this.$element=t}return{restrict:"E",controller:["$scope","$element",t],link:function(t,o,n){o[0];e(o),t.$broadcast("$mdContentLoaded",o),i(o[0])}}}function i(e){t.element(e).on("$md.pressdown",function(t){"t"===t.pointer.type&&(t.$materialScrollFixed||(t.$materialScrollFixed=!0,0===e.scrollTop?e.scrollTop=1:e.scrollHeight===e.scrollTop+e.offsetHeight&&(e.scrollTop-=1)))})}t.module("material.components.content",["material.core"]).directive("mdContent",n),n.$inject=["$mdTheming"]}(window,window.angular);
{
"name": "angular-material-core",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-gestures": "0.9.6",
"angular-material-theming": "0.9.6"
"angular-material-gestures": "0.9.7",
"angular-material-theming": "0.9.7"
}
}
{
"name": "angular-material-dialog",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-backdrop": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-backdrop": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -403,3 +403,3 @@ (function( window, angular, undefined ){

/* @ngInject */
/* ngInject */
function advancedDialogOptions($mdDialog, $mdTheming) {

@@ -438,3 +438,3 @@ return {

/* @ngInject */
/* ngInject */
function dialogDefaultOptions($mdAria, $document, $mdUtil, $mdConstant, $mdTheming, $mdDialog, $timeout, $rootElement, $animate, $$rAF, $q) {

@@ -441,0 +441,0 @@ return {

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,n){"use strict";function o(e,t){return{restrict:"E",link:function(n,o,a){t(o),e(function(){var e=o[0].querySelector("md-dialog-content");e&&e.scrollHeight>e.clientHeight&&o.addClass("md-content-overflow")})}}}function a(e){function n(e,t){return{template:['<md-dialog md-theme="{{ dialog.theme }}" aria-label="{{ dialog.ariaLabel }}">','<md-dialog-content role="document" tabIndex="-1">','<h2 class="md-title">{{ dialog.title }}</h2>',"<p>{{ dialog.content }}</p>","</md-dialog-content>",'<div class="md-actions">','<md-button ng-if="dialog.$type == \'confirm\'" ng-click="dialog.abort()" class="md-primary">',"{{ dialog.cancel }}","</md-button>",'<md-button ng-click="dialog.hide()" class="md-primary">',"{{ dialog.ok }}","</md-button>","</div>","</md-dialog>"].join(""),controller:function(){this.hide=function(){e.hide(!0)},this.abort=function(){e.cancel()}},controllerAs:"dialog",bindToController:!0,theme:t.defaultTheme()}}function o(e,n,o,a,i,l,r,d,c,s,m){function p(e){var t=document.querySelector("md-dialog");t&&!t.contains(e.target)&&(e.stopImmediatePropagation(),t.focus())}function u(e,s,m){function u(){var e=s[0].querySelector(".dialog-close");if(!e){var n=s[0].querySelectorAll(".md-actions button");e=n[n.length-1]}return t.element(e)}t.element(n[0].body).addClass("md-dialog-is-showing"),s=o.extractElementByName(s,"md-dialog"),m.parent=t.element(m.parent),m.popInTarget=t.element((m.targetEvent||{}).target);var g=u();if(m.hasBackdrop){var h=m.parent[0]==n[0].body&&n[0].documentElement&&n[0].documentElement.scrollTop?t.element(n[0].documentElement):m.parent,k=h.prop("scrollTop");m.backdrop=t.element('<md-backdrop class="md-dialog-backdrop md-opaque">'),m.backdrop.css("top",k+"px"),i.inherit(m.backdrop,m.parent),c.enter(m.backdrop,m.parent),s.css("top",k+"px")}var C="dialog",T=g;return"alert"===m.$type&&(C="alertdialog",T=s.find("md-dialog-content")),f(s.find("md-dialog"),C,m),document.addEventListener("focus",p,!0),m.disableParentScroll&&(m.lastOverflow=m.parent.css("overflow"),m.parent.css("overflow","hidden")),v(s,m.parent,m.popInTarget&&m.popInTarget.length&&m.popInTarget).then(function(){b(s,!0),m.escapeToClose&&(m.rootElementKeyupCallback=function(e){e.keyCode===a.KEY_CODE.ESCAPE&&r(l.cancel)},d.on("keyup",m.rootElementKeyupCallback)),m.clickOutsideToClose&&(m.dialogClickOutsideCallback=function(e){e.target===s[0]&&r(l.cancel)},s.on("click",m.dialogClickOutsideCallback)),m.focusOnOpen&&T.focus()})}function g(e,o,a){return t.element(n[0].body).removeClass("md-dialog-is-showing"),a.backdrop&&c.leave(a.backdrop),a.disableParentScroll&&(a.parent.css("overflow",a.lastOverflow),delete a.lastOverflow),a.escapeToClose&&d.off("keyup",a.rootElementKeyupCallback),a.clickOutsideToClose&&o.off("click",a.dialogClickOutsideCallback),b(o,!1),document.removeEventListener("focus",p,!0),k(o,a.parent,a.popInTarget&&a.popInTarget.length&&a.popInTarget).then(function(){o.remove(),a.popInTarget&&a.popInTarget.focus()})}function f(t,n,a){t.attr({role:n,tabIndex:"-1"});var i=t.find("md-dialog-content");0===i.length&&(i=t);var l=t.attr("id")||"dialog_"+o.nextUid();i.attr("id",l),t.attr("aria-describedby",l),a.ariaLabel?e.expect(t,"aria-label",a.ariaLabel):e.expectAsync(t,"aria-label",function(){var e=i.text().split(/\s+/);return e.length>3&&(e=e.slice(0,3).concat("...")),e.join(" ")})}function h(e,t){return-1!==t.indexOf(e.nodeName)?!0:void 0}function b(e,t){function n(e){for(;e.parentNode;){if(e===document.body)return;for(var a=e.parentNode.children,i=0;i<a.length;i++)e===a[i]||h(a[i],["SCRIPT","STYLE"])||a[i].setAttribute(o,t);n(e=e.parentNode)}}var o="aria-hidden";e=e[0],n(e)}function v(e,t,n){var i=e.find("md-dialog");return t.append(e),C(i,n),s(function(){i.addClass("transition-in").css(a.CSS.TRANSFORM,"")}),o.transitionEndPromise(i)}function k(e,t,n){var a=e.find("md-dialog");return a.addClass("transition-out").removeClass("transition-in"),C(a,n),o.transitionEndPromise(a)}function C(e,t){if(t){var n=t[0].getBoundingClientRect(),o=e[0].getBoundingClientRect(),i=Math.min(.5,n.width/o.width),l=Math.min(.5,n.height/o.height);e.css(a.CSS.TRANSFORM,"translate3d("+(-o.left+n.left+n.width/2-o.width/2)+"px,"+(-o.top+n.top+n.height/2-o.height/2)+"px,0) scale("+i+","+l+")")}}return{hasBackdrop:!0,isolateScope:!0,onShow:u,onRemove:g,clickOutsideToClose:!1,escapeToClose:!0,targetEvent:null,focusOnOpen:!0,disableParentScroll:!0,transformTemplate:function(e){return'<div class="md-dialog-container">'+e+"</div>"}}}return n.$inject=["$mdDialog","$mdTheming"],o.$inject=["$mdAria","$document","$mdUtil","$mdConstant","$mdTheming","$mdDialog","$timeout","$rootElement","$animate","$$rAF","$q"],e("$mdDialog").setDefaults({methods:["disableParentScroll","hasBackdrop","clickOutsideToClose","escapeToClose","targetEvent","parent"],options:o}).addPreset("alert",{methods:["title","content","ariaLabel","ok","theme"],options:n}).addPreset("confirm",{methods:["title","content","ariaLabel","ok","cancel","theme"],options:n})}t.module("material.components.dialog",["material.core","material.components.backdrop"]).directive("mdDialog",o).provider("$mdDialog",a),o.$inject=["$$rAF","$mdTheming"],a.$inject=["$$interimElementProvider"]}(window,window.angular);
{
"name": "angular-material-divider",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(i,e,n){"use strict";function r(i){return{restrict:"E",link:i}}e.module("material.components.divider",["material.core"]).directive("mdDivider",r),r.$inject=["$mdTheming"]}(window,window.angular);
{
"name": "angular-material-gridList",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -425,3 +425,3 @@ (function( window, angular, undefined ){

/* @ngInject */
/* ngInject */
function GridListController($timeout) {

@@ -460,3 +460,3 @@ this.layoutInvalidated = false;

/* @ngInject */
/* ngInject */
function GridLayoutFactory($mdUtil) {

@@ -463,0 +463,0 @@ var defaultAnimator = GridTileAnimator;

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(t,e,n){"use strict";function i(t,n,i,o){function a(r,a,u,s){function l(){for(var t in n.MEDIA)o(t),o.getQuery(n.MEDIA[t]).addListener(L);return o.watchResponsiveAttributes(["md-cols","md-row-height"],u,d)}function c(){s.layoutDelegate=e.noop,T();for(var t in n.MEDIA)o.getQuery(n.MEDIA[t]).removeListener(L)}function d(t){null==t?s.invalidateLayout():o(t)&&s.invalidateLayout()}function f(t){var n=h(),o={tileSpans:v(n),colCount:w(),rowMode:I(),rowHeight:$(),gutter:y()};if(t||!e.equals(o,M)){var u=i(o.colCount,o.tileSpans,n).map(function(t,i){return{grid:{element:a,style:m(o.colCount,i,o.gutter,o.rowMode,o.rowHeight)},tiles:t.map(function(t,i){return{element:e.element(n[i]),style:g(t.position,t.spans,o.colCount,o.rowCount,o.gutter,o.rowMode,o.rowHeight)}})}}).reflow().performance();r.mdOnLayout({$event:{performance:u}}),M=o}}function p(t){return x+t+A}function g(t,e,n,i,r,o,a){var u=1/n*100,s=(n-1)/n,l=D({share:u,gutterShare:s,gutter:r}),c={left:C({unit:l,offset:t.col,gutter:r}),width:G({unit:l,span:e.col,gutter:r}),paddingTop:"",marginTop:"",top:"",height:""};switch(o){case"fixed":c.top=C({unit:a,offset:t.row,gutter:r}),c.height=G({unit:a,span:e.row,gutter:r});break;case"ratio":var d=u/a,f=D({share:d,gutterShare:s,gutter:r});c.paddingTop=G({unit:f,span:e.row,gutter:r}),c.marginTop=C({unit:f,offset:t.row,gutter:r});break;case"fit":var p=(i-1)/i,d=1/i*100,f=D({share:d,gutterShare:p,gutter:r});c.top=C({unit:f,offset:t.row,gutter:r}),c.height=G({unit:f,span:e.row,gutter:r})}return c}function m(t,e,n,i,r){var o={height:"",paddingBottom:""};switch(i){case"fixed":o.height=G({unit:r,span:e,gutter:n});break;case"ratio":var a=1===t?0:(t-1)/t,u=1/t*100,s=u*(1/r),l=D({share:s,gutterShare:a,gutter:n});o.paddingBottom=G({unit:l,span:e,gutter:n});break;case"fit":}return o}function h(){return[].filter.call(a.children(),function(t){return"MD-GRID-TILE"==t.tagName})}function v(t){return[].map.call(t,function(t){var n=e.element(t).controller("mdGridTile");return{row:parseInt(o.getResponsiveAttribute(n.$attrs,"md-rowspan"),10)||1,col:parseInt(o.getResponsiveAttribute(n.$attrs,"md-colspan"),10)||1}})}function w(){var t=parseInt(o.getResponsiveAttribute(u,"md-cols"),10);if(isNaN(t))throw"md-grid-list: md-cols attribute was not found, or contained a non-numeric value";return t}function y(){return b(o.getResponsiveAttribute(u,"md-gutter")||1)}function $(){var t=o.getResponsiveAttribute(u,"md-row-height");switch(I()){case"fixed":return b(t);case"ratio":var e=t.split(":");return parseFloat(e[0])/parseFloat(e[1]);case"fit":return 0}}function I(){var t=o.getResponsiveAttribute(u,"md-row-height");return"fit"==t?"fit":-1!==t.indexOf(":")?"ratio":"fixed"}function b(t){return/\D$/.test(t)?t:t+"px"}a.attr("role","list"),s.layoutDelegate=f;var L=e.bind(s,s.invalidateLayout),T=l();r.$on("$destroy",c);var M,x=t.startSymbol(),A=t.endSymbol(),D=t(p("share")+"% - ("+p("gutter")+" * "+p("gutterShare")+")"),C=t("calc(("+p("unit")+" + "+p("gutter")+") * "+p("offset")+")"),G=t("calc(("+p("unit")+") * "+p("span")+" + ("+p("span")+" - 1) * "+p("gutter")+")")}return{restrict:"E",controller:r,scope:{mdOnLayout:"&"},link:a}}function r(t){this.layoutInvalidated=!1,this.tilesInvalidated=!1,this.$timeout_=t,this.layoutDelegate=e.noop}function o(t){function n(e,n){var i,a,u,s,l,c;return s=t.time(function(){a=r(e,n)}),i={layoutInfo:function(){return a},map:function(e){return l=t.time(function(){var t=i.layoutInfo();u=e(t.positioning,t.rowCount)}),i},reflow:function(e){return c=t.time(function(){var t=e||o;t(u.grid,u.tiles)}),i},performance:function(){return{tileCount:n.length,layoutTime:s,mapTime:l,reflowTime:c,totalTime:s+l+c}}}}function i(t,e){t.element.css(t.style),e.forEach(function(t){t.element.css(t.style)})}function r(t,e){function n(e,n){if(e.col>t)throw"md-grid-list: Tile at position "+n+" has a colspan ("+e.col+") that exceeds the column count ("+t+")";for(var a=0,c=0;c-a<e.col;)u>=t?i():(a=l.indexOf(0,u),-1!==a&&-1!==(c=o(a+1))?u=c+1:(a=c=0,i()));return r(a,e.col,e.row),u=a+e.col,{col:a,row:s}}function i(){u=0,s++,r(0,t,-1)}function r(t,e,n){for(var i=t;t+e>i;i++)l[i]=Math.max(l[i]+n,0)}function o(t){var e;for(e=t;e<l.length;e++)if(0!==l[e])return e;return e===l.length?e:void 0}function a(){for(var e=[],n=0;t>n;n++)e.push(0);return e}var u=0,s=0,l=a();return{positioning:e.map(function(t,e){return{spans:t,position:n(t,e)}}),rowCount:s+Math.max.apply(Math,l)}}var o=i;return n.animateWith=function(t){o=e.isFunction(t)?t:i},n}function a(t){function n(n,i,r,o){i.attr("role","listitem");var a=t.watchResponsiveAttributes(["md-colspan","md-rowspan"],r,e.bind(o,o.invalidateLayout));o.invalidateTiles(),n.$on("$destroy",function(){a(),o.invalidateLayout()}),e.isDefined(n.$parent.$index)&&n.$watch(function(){return n.$parent.$index},function(t,e){t!==e&&o.invalidateTiles()})}return{restrict:"E",require:"^mdGridList",template:"<figure ng-transclude></figure>",transclude:!0,scope:{},controller:["$attrs",function(t){this.$attrs=t}],link:n}}function u(){return{template:"<figcaption ng-transclude></figcaption>",transclude:!0}}e.module("material.components.gridList",["material.core"]).directive("mdGridList",i).directive("mdGridTile",a).directive("mdGridTileFooter",u).directive("mdGridTileHeader",u).factory("$mdGridLayout",o),i.$inject=["$interpolate","$mdConstant","$mdGridLayout","$mdMedia"],r.$inject=["$timeout"],r.prototype={invalidateTiles:function(){this.tilesInvalidated=!0,this.invalidateLayout()},invalidateLayout:function(){this.layoutInvalidated||(this.layoutInvalidated=!0,this.$timeout_(e.bind(this,this.layout)))},layout:function(){try{this.layoutDelegate(this.tilesInvalidated)}finally{this.layoutInvalidated=!1,this.tilesInvalidated=!1}}},o.$inject=["$mdUtil"],a.$inject=["$mdMedia"]}(window,window.angular);
{
"name": "angular-material-icon",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -30,6 +30,55 @@ (function( window, angular, undefined ){

* @description
* The `md-icon` directive is an markup element useful for showing an icon based on a font-face
* or a SVG. Both external SVGs (via URLs) or cached SVG from icon sets can be
* easily loaded and used.
* The `<md-icon />` directive is an markup element useful for showing an icon based on a font-icon
* or a SVG. Icons are view-only elements that should not be used directly as buttons; instead nest a `<md-icon />`
* inside a `md-button` to add hover and click features.
*
* When using SVGs, both external SVGs (via URLs) or sets of SVGs [from icon sets] can be
* easily loaded and used.When use font-icons, developers must following three (3) simple steps:
*
* <ol>
* <li>Load the font library. e.g.<br/>
* &lt;link href="https://fonts.googleapis.com/icon?family=Material+Icons"
* rel="stylesheet"&gt;
* </li>
* <li> Use either (a) font-icon class names or (b) font ligatures to render the font glyph by using its textual name</li>
* <li> Use &lt;md-icon md-font-icon="classname" /&gt; or <br/>
* use &lt;md-icon md-font-library="library_style_name"&gt; textual_name &lt;/md-icon&gt; or <br/>
* use &lt;md-icon md-font-library="library_style_name"&gt; numerical_character_reference &lt;/md-icon&gt;
* </li>
* </ol>
*
* Full details for these steps can be found:
*
* <ul>
* <li>http://google.github.io/material-design-icons/</li>
* <li>http://google.github.io/material-design-icons/#icon-font-for-the-web</li>
* </ul>
*
* The Material Design icon style <code>.material-icons</code> and the icon font references are published in
* Material Design Icons:
*
* <ul>
* <li>http://www.google.com/design/icons/</li>
* <li>https://www.google.com/design/icons/#ic_accessibility</li>
* </ul>
*
* <h2 id="material_design_icons">Material Design Icons</h2>
* Using the Material Design Icon-Selector, developers can easily and quickly search for a Material Design font-icon and
* determine its textual name and character reference code. Click on any icon to see the slide-up information
* panel with details regarding a SVG download or information on the font-icon usage.
*
* <a href="https://www.google.com/design/icons/#ic_accessibility" target="_blank" style="border-bottom:none;">
* <img src="https://cloud.githubusercontent.com/assets/210413/7902490/fe8dd14c-0780-11e5-98fb-c821cc6475e6.png"
* alt="Material Design Icon-Selector" style="max-width:75%;padding-left:10%">
* </a>
*
* <span class="image_caption">
* Click on the image above to link to the
* <a href="https://www.google.com/design/icons/#ic_accessibility" target="_blank">Material Design Icon-Selector</a>.
* </span>
*
* @param {string} md-font-icon String name of CSS icon associated with the font-face will be used
* to render the icon. Requires the fonts and the named CSS styles to be preloaded.
* @param {string} md-font-library String name of CSS icon associated with the font-face will be used
* to render the icon. Requires the fonts and the named CSS styles to be preloaded.
* @param {string} md-svg-src String URL [or expression ] used to load, cache, and display an external SVG.

@@ -39,4 +88,2 @@ * @param {string} md-svg-icon String name used for lookup of the icon from the internal cache; interpolated strings or

* To use icon sets, developers are required to pre-register the sets using the `$mdIconProvider` service.
* @param {string} md-font-icon String name of CSS icon associated with the font-face will be used
* to render the icon. Requires the fonts and the named CSS styles to be preloaded.
* @param {string=} alt Labels icon for accessibility. If an empty string is provided, icon

@@ -47,12 +94,52 @@ * will be hidden from accessibility layer with `aria-hidden="true"`. If there's no alt on the icon

* @usage
* When using SVGs:
* <hljs lang="html">
* <md-icon md-font-icon="android" alt="android " ></md-icon>
* <md-icon md-svg-icon="action:android" alt="android " ></md-icon>
*
* <!-- Icon ID; may contain optional icon set prefix; icons must registered using $mdIconProvider -->
* <md-icon md-svg-icon="social:android" alt="android " ></md-icon>
*
* <!-- Icon urls; may be preloaded in templateCache -->
* <md-icon md-svg-src="/android.svg" alt="android " ></md-icon>
* <md-icon md-svg-src="{{ getAndroid() }}" alt="android " ></md-icon>
*
* </hljs>
*
* Use the <code>$mdIconProvider</code> to configure your application with
* svg iconsets.
*
* <hljs lang="js">
* angular.module('appSvgIconSets', ['ngMaterial'])
* .controller('DemoCtrl', function($scope) {})
* .config(function($mdIconProvider) {
* $mdIconProvider
* .iconSet('social', 'img/icons/sets/social-icons.svg', 24)
* .defaultIconSet('img/icons/sets/core-icons.svg', 24);
* });
* </hljs>
*
*
* When using Font Icons with classnames:
* <hljs lang="html">
*
* <md-icon md-font-icon="android" alt="android" ></md-icon>
* <md-icon md-font-icon="fa-magic" class="fa" alt="magic wand"></md-icon>
*
* </hljs>
*
* When using Font Icons with ligatures:
* <hljs lang="html">
*
* <md-icon md-font-library="material-icons">face</md-icon>
* <md-icon md-font-library="material-icons">#xE87C;</md-icon>
* <md-icon md-font-library="material-icons" class="md-light md-48">face</md-icon>
*
* </hljs>
*
*
*/
function mdIconDirective($mdIcon, $mdTheming, $mdAria ) {
function mdIconDirective($mdIcon, $mdTheming, $mdAria, $interpolate ) {
return {
scope: {
fontLib: '@mdFontLibrary',
fontIcon: '@mdFontIcon',

@@ -63,2 +150,3 @@ svgIcon: '@mdSvgIcon',

restrict: 'E',
transclude:true,
template: getTemplate,

@@ -69,5 +157,19 @@ link: postLink

function getTemplate(element, attr) {
return attr.mdFontIcon ? '<span class="md-font" ng-class="fontIcon"></span>' : '';
var hasAttrValue = function(key) { return attr[key] && attr[key].length };
var attrValue = function(key) { return hasAttrValue(key) ? attr[key] : '' };
// If using font-icons, transclude the ligature or NRCs
var tmpl = hasAttrValue('mdFontIcon') ? '<span class="md-font {{classNames}}" ng-class="fontIcon"></span>' :
hasAttrValue('mdFontLibrary') ? '<span ng-transclude></span>' : '';
// Transpose the mdFontLibrary name to the list of classnames
// For example, Material Icons expects classnames like `.material-icons.md-48` instead of `.material-icons .md-48`
var names = (attrValue('mdFontLibrary') + ' ' + attrValue('class')).trim();
element.attr('class',names);
return $interpolate( tmpl )({ classNames: names });
}
/**

@@ -80,11 +182,16 @@ * Directive postLink

// If using a font-icon, then the textual name of the icon itself
// provides the aria-label.
var ariaLabel = attr.alt || scope.fontIcon || scope.svgIcon;
var attrName = attr.$normalize(attr.$attr.mdSvgIcon || attr.$attr.mdSvgSrc || '');
if (attr.alt != '' && !parentsHaveText()) {
$mdAria.expect(element, 'aria-label', ariaLabel);
$mdAria.expect(element, 'role', 'img');
} else {
// Hide from the accessibility layer.
$mdAria.expect(element, 'aria-hidden', 'true');
if ( !attr.mdFontLibrary ) {
if (attr.alt != '' && !parentsHaveText() ) {
$mdAria.expect(element, 'aria-label', ariaLabel);
$mdAria.expect(element, 'role', 'img');
} else {
// Hide from the accessibility layer.
$mdAria.expect(element, 'aria-hidden', 'true');
}
}

@@ -117,3 +224,3 @@

}
mdIconDirective.$inject = ["$mdIcon", "$mdTheming", "$mdAria"];
mdIconDirective.$inject = ["$mdIcon", "$mdTheming", "$mdAria", "$interpolate"];

@@ -139,2 +246,3 @@ angular

*
* @usage
* <hljs lang="js">

@@ -218,3 +326,3 @@ * app.config(function($mdIconProvider) {

* has an icon id. Individual icons can be subsequently retrieved from this cached set using
* `$mdIcon( <icon set name>:<icon name> )`
* `$mdIcon(<icon set name>:<icon name>)`
*

@@ -249,3 +357,3 @@ * @param {string} id Icon name/id used to register the iconset

* subsequent lookups of icons will failover to search this 'default' icon set.
* Icon can be retrieved from this cached, default set using `$mdIcon( <icon name> )`
* Icon can be retrieved from this cached, default set using `$mdIcon(<name>)`
*

@@ -423,3 +531,3 @@ * @param {string} url specifies the external location for the data file. Used internally by `$http` to load the

*
* NOTE: The `md-icon` directive internally uses the `$mdIcon` service to query, loaded, and instantiate
* NOTE: The `<md-icon /> ` directive internally uses the `$mdIcon` service to query, loaded, and instantiate
* SVG DOM elements.

@@ -426,0 +534,0 @@ */

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(t,e,n){"use strict";function i(t,e,n){function i(t,e){return e.mdFontIcon?'<span class="md-font" ng-class="fontIcon"></span>':""}function r(i,r,o){function c(){var t=r.parent();return t.attr("aria-label")||t.text()?!0:t.parent().attr("aria-label")||t.parent().text()?!0:!1}e(r);var a=o.alt||i.fontIcon||i.svgIcon,s=o.$normalize(o.$attr.mdSvgIcon||o.$attr.mdSvgSrc||"");""==o.alt||c()?n.expect(r,"aria-hidden","true"):(n.expect(r,"aria-label",a),n.expect(r,"role","img")),s&&o.$observe(s,function(e){r.empty(),e&&t(e).then(function(t){r.append(t)})})}return{scope:{fontIcon:"@mdFontIcon",svgIcon:"@mdSvgIcon",svgSrc:"@mdSvgSrc"},restrict:"E",template:i,link:r}}function r(){}function o(t,e){this.url=t,this.iconSize=e||a.defaultIconSize}function c(t,n,i,r,o){function c(e){return function(n){return h[e]=f(n)?n:new g(n,t[e]),h[e].clone()}}function a(e){var n=t[e];return n?u(n.url).then(function(t){return new g(t,n)}):i.reject(e)}function s(e){function n(t){var n=e.slice(e.lastIndexOf(":")+1),r=t.querySelector("#"+n);return r?new g(r,o):i.reject(e)}var r=e.substring(0,e.lastIndexOf(":"))||"$default",o=t[r];return o?u(o.url).then(n):i.reject(e)}function u(t){return n.get(t,{cache:o}).then(function(t){return e.element("<div>").append(t.data).find("svg")[0]})}function l(t){var n;return e.isString(t)&&(n="icon "+t+" not found",r.warn(n)),i.reject(n||t)}function d(t){var n=e.isString(t)?t:t.message||t.data||t.statusText;return r.warn(n),i.reject(n)}function f(t){return e.isDefined(t.element)&&e.isDefined(t.config)}function g(t,n){"svg"!=t.tagName&&(t=e.element('<svg xmlns="http://www.w3.org/2000/svg">').append(t)[0]),t.getAttribute("xmlns")||t.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.element=t,this.config=n,this.prepare()}function p(){var n=this.config?this.config.iconSize:t.defaultIconSize;e.forEach({fit:"",height:"100%",width:"100%",preserveAspectRatio:"xMidYMid meet",viewBox:this.element.getAttribute("viewBox")||"0 0 "+n+" "+n},function(t,e){this.element.setAttribute(e,t)},this),e.forEach({"pointer-events":"none",display:"block"},function(t,e){this.element.style[e]=t},this)}function v(){return this.element.cloneNode(!0)}var h={},m=/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/i;return g.prototype={clone:v,prepare:p},function(t){return t=t||"",h[t]?i.when(h[t].clone()):m.test(t)?u(t).then(c(t)):(-1==t.indexOf(":")&&(t="$default:"+t),a(t)["catch"](s)["catch"](l)["catch"](d).then(c(t)))}}e.module("material.components.icon",["material.core"]).directive("mdIcon",i),i.$inject=["$mdIcon","$mdTheming","$mdAria"],e.module("material.components.icon").provider("$mdIcon",r);var a={defaultIconSize:24};r.prototype={icon:function(t,e,n){return-1==t.indexOf(":")&&(t="$default:"+t),a[t]=new o(e,n),this},iconSet:function(t,e,n){return a[t]=new o(e,n),this},defaultIconSet:function(t,e){var n="$default";return a[n]||(a[n]=new o(t,e)),a[n].iconSize=e||a.defaultIconSize,this},defaultIconSize:function(t){return a.defaultIconSize=t,this},preloadIcons:function(t){var e=this,n=[{id:"md-tabs-arrow",url:"md-tabs-arrow.svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 24 24"><g><polygon points="15.4,7.4 14,6 8,12 14,18 15.4,16.6 10.8,12 "/></g></svg>'},{id:"md-close",url:"md-close.svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 24 24"><g><path d="M19 6.41l-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z"/></g></svg>'},{id:"md-cancel",url:"md-cancel.svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 24 24"><g><path d="M12 2c-5.53 0-10 4.47-10 10s4.47 10 10 10 10-4.47 10-10-4.47-10-10-10zm5 13.59l-1.41 1.41-3.59-3.59-3.59 3.59-1.41-1.41 3.59-3.59-3.59-3.59 1.41-1.41 3.59 3.59 3.59-3.59 1.41 1.41-3.59 3.59 3.59 3.59z"/></g></svg>'},{id:"md-menu",url:"md-menu.svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 100 100"><path d="M 50 0 L 100 14 L 92 80 L 50 100 L 8 80 L 0 14 Z" fill="#b2b2b2"></path><path d="M 50 5 L 6 18 L 13.5 77 L 50 94 Z" fill="#E42939"></path><path d="M 50 5 L 94 18 L 86.5 77 L 50 94 Z" fill="#B72833"></path><path d="M 50 7 L 83 75 L 72 75 L 65 59 L 50 59 L 50 50 L 61 50 L 50 26 Z" fill="#b2b2b2"></path><path d="M 50 7 L 17 75 L 28 75 L 35 59 L 50 59 L 50 50 L 39 50 L 50 26 Z" fill="#fff"></path></svg>'},{id:"md-toggle-arrow",url:"md-toggle-arrow-svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 48 48"><path d="M24 16l-12 12 2.83 2.83 9.17-9.17 9.17 9.17 2.83-2.83z"/><path d="M0 0h48v48h-48z" fill="none"/></svg>'}];n.forEach(function(n){e.icon(n.id,n.url),t.put(n.url,n.svg)})},$get:["$http","$q","$log","$templateCache",function(t,e,n,i){return this.preloadIcons(i),new c(a,t,e,n,i)}]}}(window,window.angular);
!function(t,n,e){"use strict";function r(t,n,e,r){function i(t,n){var e=function(t){return n[t]&&n[t].length},i=function(t){return e(t)?n[t]:""},o=e("mdFontIcon")?'<span class="md-font {{classNames}}" ng-class="fontIcon"></span>':e("mdFontLibrary")?"<span ng-transclude></span>":"",a=(i("mdFontLibrary")+" "+i("class")).trim();return t.attr("class",a),r(o)({classNames:a})}function o(r,i,o){function a(){var t=i.parent();return t.attr("aria-label")||t.text()?!0:t.parent().attr("aria-label")||t.parent().text()?!0:!1}n(i);var c=o.alt||r.fontIcon||r.svgIcon,s=o.$normalize(o.$attr.mdSvgIcon||o.$attr.mdSvgSrc||"");o.mdFontLibrary||(""==o.alt||a()?e.expect(i,"aria-hidden","true"):(e.expect(i,"aria-label",c),e.expect(i,"role","img"))),s&&o.$observe(s,function(n){i.empty(),n&&t(n).then(function(t){i.append(t)})})}return{scope:{fontLib:"@mdFontLibrary",fontIcon:"@mdFontIcon",svgIcon:"@mdSvgIcon",svgSrc:"@mdSvgSrc"},restrict:"E",transclude:!0,template:i,link:o}}function i(){}function o(t,n){this.url=t,this.iconSize=n||c.defaultIconSize}function a(t,e,r,i,o){function a(n){return function(e){return h[n]=f(e)?e:new p(e,t[n]),h[n].clone()}}function c(n){var e=t[n];return e?u(e.url).then(function(t){return new p(t,e)}):r.reject(n)}function s(n){function e(t){var e=n.slice(n.lastIndexOf(":")+1),i=t.querySelector("#"+e);return i?new p(i,o):r.reject(n)}var i=n.substring(0,n.lastIndexOf(":"))||"$default",o=t[i];return o?u(o.url).then(e):r.reject(n)}function u(t){return e.get(t,{cache:o}).then(function(t){return n.element("<div>").append(t.data).find("svg")[0]})}function l(t){var e;return n.isString(t)&&(e="icon "+t+" not found",i.warn(e)),r.reject(e||t)}function d(t){var e=n.isString(t)?t:t.message||t.data||t.statusText;return i.warn(e),r.reject(e)}function f(t){return n.isDefined(t.element)&&n.isDefined(t.config)}function p(t,e){"svg"!=t.tagName&&(t=n.element('<svg xmlns="http://www.w3.org/2000/svg">').append(t)[0]),t.getAttribute("xmlns")||t.setAttribute("xmlns","http://www.w3.org/2000/svg"),this.element=t,this.config=e,this.prepare()}function g(){var e=this.config?this.config.iconSize:t.defaultIconSize;n.forEach({fit:"",height:"100%",width:"100%",preserveAspectRatio:"xMidYMid meet",viewBox:this.element.getAttribute("viewBox")||"0 0 "+e+" "+e},function(t,n){this.element.setAttribute(n,t)},this),n.forEach({"pointer-events":"none",display:"block"},function(t,n){this.element.style[n]=t},this)}function v(){return this.element.cloneNode(!0)}var h={},m=/[-a-zA-Z0-9@:%_\+.~#?&//=]{2,256}\.[a-z]{2,4}\b(\/[-a-zA-Z0-9@:%_\+.~#?&//=]*)?/i;return p.prototype={clone:v,prepare:g},function(t){return t=t||"",h[t]?r.when(h[t].clone()):m.test(t)?u(t).then(a(t)):(-1==t.indexOf(":")&&(t="$default:"+t),c(t)["catch"](s)["catch"](l)["catch"](d).then(a(t)))}}n.module("material.components.icon",["material.core"]).directive("mdIcon",r),r.$inject=["$mdIcon","$mdTheming","$mdAria","$interpolate"],n.module("material.components.icon").provider("$mdIcon",i);var c={defaultIconSize:24};i.prototype={icon:function(t,n,e){return-1==t.indexOf(":")&&(t="$default:"+t),c[t]=new o(n,e),this},iconSet:function(t,n,e){return c[t]=new o(n,e),this},defaultIconSet:function(t,n){var e="$default";return c[e]||(c[e]=new o(t,n)),c[e].iconSize=n||c.defaultIconSize,this},defaultIconSize:function(t){return c.defaultIconSize=t,this},preloadIcons:function(t){var n=this,e=[{id:"md-tabs-arrow",url:"md-tabs-arrow.svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 24 24"><g><polygon points="15.4,7.4 14,6 8,12 14,18 15.4,16.6 10.8,12 "/></g></svg>'},{id:"md-close",url:"md-close.svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 24 24"><g><path d="M19 6.41l-1.41-1.41-5.59 5.59-5.59-5.59-1.41 1.41 5.59 5.59-5.59 5.59 1.41 1.41 5.59-5.59 5.59 5.59 1.41-1.41-5.59-5.59z"/></g></svg>'},{id:"md-cancel",url:"md-cancel.svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 24 24"><g><path d="M12 2c-5.53 0-10 4.47-10 10s4.47 10 10 10 10-4.47 10-10-4.47-10-10-10zm5 13.59l-1.41 1.41-3.59-3.59-3.59 3.59-1.41-1.41 3.59-3.59-3.59-3.59 1.41-1.41 3.59 3.59 3.59-3.59 1.41 1.41-3.59 3.59 3.59 3.59z"/></g></svg>'},{id:"md-menu",url:"md-menu.svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 100 100"><path d="M 50 0 L 100 14 L 92 80 L 50 100 L 8 80 L 0 14 Z" fill="#b2b2b2"></path><path d="M 50 5 L 6 18 L 13.5 77 L 50 94 Z" fill="#E42939"></path><path d="M 50 5 L 94 18 L 86.5 77 L 50 94 Z" fill="#B72833"></path><path d="M 50 7 L 83 75 L 72 75 L 65 59 L 50 59 L 50 50 L 61 50 L 50 26 Z" fill="#b2b2b2"></path><path d="M 50 7 L 17 75 L 28 75 L 35 59 L 50 59 L 50 50 L 39 50 L 50 26 Z" fill="#fff"></path></svg>'},{id:"md-toggle-arrow",url:"md-toggle-arrow-svg",svg:'<svg version="1.1" x="0px" y="0px" viewBox="0 0 48 48"><path d="M24 16l-12 12 2.83 2.83 9.17-9.17 9.17 9.17 2.83-2.83z"/><path d="M0 0h48v48h-48z" fill="none"/></svg>'}];e.forEach(function(e){n.icon(e.id,e.url),t.put(e.url,e.svg)})},$get:["$http","$q","$log","$templateCache",function(t,n,e,r){return this.preloadIcons(r),new a(c,t,n,e,r)}]}}(window,window.angular);
{
"name": "angular-material-input",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,n){"use strict";function i(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.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 r(){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 l(e,n,i){function r(r,l,o,a){function u(e){return d.setHasValue(!f.$isEmpty(e)),e}function s(){d.setHasValue(l.val().length>0||(l[0].validity||{}).badInput)}function c(){function i(e){return c(),e}function o(){s.style.height="auto",s.scrollTop=0;var e=a();e&&(s.style.height=e+"px")}function a(){var e=s.scrollHeight-s.offsetHeight;return s.offsetHeight+(e>0?e:0)}function u(e){s.scrollTop=0;var t=s.scrollHeight-s.offsetHeight,n=s.offsetHeight+t;s.style.height=n+"px"}var s=l[0],c=e.debounce(o,1);f?(f.$formatters.push(i),f.$viewChangeListeners.push(i)):c(),l.on("keydown input",c),l.on("scroll",u),t.element(n).on("resize",c),r.$on("$destroy",function(){t.element(n).off("resize",c)})}var d=a[0],f=a[1]||e.fakeNgModel(),m=t.isDefined(o.readonly);if(d){if(d.input)throw new Error("<md-input-container> can only have *one* <input> or <textarea> child element!");d.input=l,d.label||i.expect(l,"aria-label",l.attr("placeholder")),l.addClass("md-input"),l.attr("id")||l.attr("id","input_"+e.nextUid()),"textarea"===l[0].tagName.toLowerCase()&&c();var p=d.isErrorGetter||function(){return f.$invalid&&f.$touched};r.$watch(p,d.setInvalid),f.$parsers.push(u),f.$formatters.push(u),l.on("input",s),m||l.on("focus",function(e){d.setFocused(!0)}).on("blur",function(e){d.setFocused(!1),s()}),r.$on("$destroy",function(){d.setFocused(!1),d.setHasValue(!1),d.input=null})}}return{restrict:"E",require:["^?mdInputContainer","?ngModel"],link:r}}function o(e){function n(n,i,r,l){function o(e){return c.text((i.val()||e||"").length+"/"+a),e}var a,u=l[0],s=l[1],c=t.element('<div class="md-char-counter">');r.$set("ngTrim","false"),s.element.append(c),u.$formatters.push(o),u.$viewChangeListeners.push(o),i.on("input keydown",function(){o()}),n.$watch(r.mdMaxlength,function(n){a=n,t.isNumber(n)&&n>0?(c.parent().length||e.enter(c,s.element,t.element(s.element[0].lastElementChild)),o()):e.leave(c)}),u.$validators["md-maxlength"]=function(e,n){return!t.isNumber(a)||0>a?!0:(e||i.val()||n||"").length<=a}}return{restrict:"A",require:["ngModel","^mdInputContainer"],link:n}}function a(e){function n(n,r,l,o){if(o&&-1==i.indexOf(r[0].nodeName)&&!t.isDefined(o.element.attr("md-no-float"))){var a=l.placeholder;if(r.removeAttr("placeholder"),0==o.element.find("label").length){var u='<label ng-click="delegateClick()">'+a+"</label>";o.element.addClass("md-icon-float"),o.element.prepend(u)}else e.warn("The placeholder='"+a+"' will be ignored since this md-input-container has a child label element.")}}var i=["MD-SELECT"];return{restrict:"A",require:"^^?mdInputContainer",priority:200,link:n}}t.module("material.components.input",["material.core"]).directive("mdInputContainer",i).directive("label",r).directive("input",l).directive("textarea",l).directive("mdMaxlength",o).directive("placeholder",a),i.$inject=["$mdTheming","$parse"],l.$inject=["$mdUtil","$window","$mdAria"],o.$inject=["$animate"],a.$inject=["$log"]}(window,window.angular);
{
"name": "angular-material-list",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(t,e,n){"use strict";function i(t){return{restrict:"E",compile:function(e){return e[0].setAttribute("role","list"),t}}}function r(t,n,i){var r=["md-checkbox","md-switch"];return{restrict:"E",controller:"MdListController",compile:function(c,o){function a(){for(var t,e,n=["md-switch","md-checkbox"],i=0;e=n[i];++i)if((t=c.find(e)[0])&&!t.hasAttribute("aria-label")){var r=c.find("p")[0];if(!r)return;t.setAttribute("aria-label","Toggle "+r.textContent)}}function l(n){var i;if("div"==n)i=e.element('<div class="md-no-style md-list-item-inner">'),i.append(c.contents()),c.addClass("md-proxy-focus");else{i=e.element('<md-button class="md-no-style"><div class="md-list-item-inner"></div></md-button>');var r=["ng-click","aria-label","ng-disabled"];e.forEach(r,function(t){c[0].hasAttribute(t)&&(i[0].setAttribute(t,c[0].getAttribute(t)),c[0].removeAttribute(t))}),i.children().eq(0).append(c.contents())}if(c[0].setAttribute("tabindex","-1"),c.append(i),f&&f.hasAttribute("ng-click")){t.expect(f,"aria-label");var a=e.element('<md-button class="md-secondary-container md-icon-button">');a.attr("ng-click",f.getAttribute("ng-click")),f.removeAttribute("ng-click"),f.setAttribute("tabindex","-1"),f.classList.remove("md-secondary"),a.append(f),f=a[0]}f&&(f.hasAttribute("ng-click")||o.ngClick&&s(f))&&(c.addClass("md-with-secondary"),c.append(f))}function s(t){return-1!=r.indexOf(t.nodeName.toLowerCase())}function d(t,c,o,a){function l(){var t=c.children();t.length&&!t[0].hasAttribute("ng-click")&&e.forEach(r,function(t){e.forEach(u.querySelectorAll(t),function(t){d.push(t)})})}function s(){(d.length||m)&&(c.addClass("md-clickable"),a.attachRipple(t,e.element(c[0].querySelector(".md-no-style"))))}var d=[],u=c[0].firstElementChild,m=u&&u.hasAttribute("ng-click");l(),s(),c.hasClass("md-proxy-focus")&&d.length&&e.forEach(d,function(n){n=e.element(n),t.mouseActive=!1,n.on("mousedown",function(){t.mouseActive=!0,i(function(){t.mouseActive=!1},100)}).on("focus",function(){t.mouseActive===!1&&c.addClass("md-focused"),n.on("blur",function e(){c.removeClass("md-focused"),n.off("blur",e)})})}),m||d.length||u.addEventListener("keypress",function(t){if("INPUT"!=t.target.nodeName&&"TEXTAREA"!=t.target.nodeName){var e=t.which||t.keyCode;e==n.KEY_CODE.SPACE&&(u.click(),t.preventDefault(),t.stopPropagation())}}),c.off("click"),c.off("keypress"),d.length&&u&&c.children().eq(0).on("click",function(t){u.contains(t.target)&&e.forEach(d,function(n){t.target===n||n.contains(t.target)||e.element(n).triggerHandler("click")})})}var u,m,f=c[0].querySelector(".md-secondary");if(c[0].setAttribute("role","listitem"),o.ngClick)l("button");else{for(var b,h=0;b=r[h];++h)if(m=c[0].querySelector(b)){u=!0;break}u?l("div"):c[0].querySelector("md-button")||c.addClass("md-no-proxy")}return a(),d}}}function c(t,e,n){function i(t,e){var i={};n.attach(t,e,i)}var r=this;r.attachRipple=i}e.module("material.components.list",["material.core"]).controller("MdListController",c).directive("mdList",i).directive("mdListItem",r),i.$inject=["$mdTheming"],r.$inject=["$mdAria","$mdConstant","$timeout"],c.$inject=["$scope","$element","$mdListInkRipple"]}(window,window.angular);
{
"name": "angular-material-progressCircular",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(a,i,r){"use strict";function e(a,i){function r(a){return a.attr("aria-valuemin",0),a.attr("aria-valuemax",100),a.attr("role","progressbar"),e}function e(r,e,n){i(e);var d=e[0],s=n.mdDiameter||48,c=s/48;d.style[a.CSS.TRANSFORM]="scale("+c+")",n.$observe("value",function(a){var i=t(a);e.attr("aria-valuenow",i)})}function t(a){return Math.max(0,Math.min(a||0,100))}return{restrict:"E",template:'<div class="md-spinner-wrapper"><div class="md-inner"><div class="md-gap"></div><div class="md-left"><div class="md-half-circle"></div></div><div class="md-right"><div class="md-half-circle"></div></div></div></div>',compile:r}}i.module("material.components.progressCircular",["material.core"]).directive("mdProgressCircular",e),e.$inject=["$mdConstant","$mdTheming"]}(window,window.angular);
{
"name": "angular-material-progressLinear",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(r,e,a){"use strict";function t(r,a,t){function i(r,e,a){return r.attr("aria-valuemin",0),r.attr("aria-valuemax",100),r.attr("role","progressbar"),o}function o(i,o,c){t(o);var s=o[0].querySelector(".md-bar1").style,u=o[0].querySelector(".md-bar2").style,l=e.element(o[0].querySelector(".md-container"));c.$observe("value",function(r){if("query"!=c.mdMode){var e=d(r);o.attr("aria-valuenow",e),u[a.CSS.TRANSFORM]=n[e]}}),c.$observe("mdBufferValue",function(r){s[a.CSS.TRANSFORM]=n[d(r)]}),r(function(){l.addClass("md-ready")})}function d(r){return r>100?100:0>r?0:Math.ceil(r||0)}return{restrict:"E",template:'<div class="md-container"><div class="md-dashed"></div><div class="md-bar md-bar1"></div><div class="md-bar md-bar2"></div></div>',compile:i}}e.module("material.components.progressLinear",["material.core"]).directive("mdProgressLinear",t),t.$inject=["$$rAF","$mdConstant","$mdTheming"];var n=function(){function r(r){var e=r/100,a=(r-100)/2;return"translateX("+a.toString()+"%) scale("+e.toString()+", 1)"}for(var e=new Array(101),a=0;101>a;a++)e[a]=r(a);return e}()}(window,window.angular);
{
"name": "angular-material-radioButton",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,n){"use strict";function i(e,n,i,r){function o(o,d,a,c){function s(){d.hasClass("md-focused")||d.addClass("md-focused")}function u(i){var r=i.which||i.keyCode;switch(r){case n.KEY_CODE.LEFT_ARROW:case n.KEY_CODE.UP_ARROW:i.preventDefault(),l.selectPrevious(),s();break;case n.KEY_CODE.RIGHT_ARROW:case n.KEY_CODE.DOWN_ARROW:i.preventDefault(),l.selectNext(),s();break;case n.KEY_CODE.ENTER:var o=t.element(e.getClosest(d[0],"form"));o.length>0&&o.triggerHandler("submit")}}i(d);var l=c[0],m=c[1]||e.fakeNgModel();l.init(m),o.mouseActive=!1,d.attr({role:"radiogroup",tabIndex:d.attr("tabindex")||"0"}).on("keydown",u).on("mousedown",function(e){o.mouseActive=!0,r(function(){o.mouseActive=!1},100)}).on("focus",function(){o.mouseActive===!1&&l.$element.addClass("md-focused")}).on("blur",function(){l.$element.removeClass("md-focused")})}function d(e){this._radioButtonRenderFns=[],this.$element=e}function a(){return{init:function(e){this._ngModelCtrl=e,this._ngModelCtrl.$render=t.bind(this,this.render)},add:function(e){this._radioButtonRenderFns.push(e)},remove:function(e){var t=this._radioButtonRenderFns.indexOf(e);-1!==t&&this._radioButtonRenderFns.splice(t,1)},render:function(){this._radioButtonRenderFns.forEach(function(e){e()})},setViewValue:function(e,t){this._ngModelCtrl.$setViewValue(e,t),this.render()},getViewValue:function(){return this._ngModelCtrl.$viewValue},selectNext:function(){return c(this.$element,1)},selectPrevious:function(){return c(this.$element,-1)},setActiveDescendant:function(e){this.$element.attr("aria-activedescendant",e)}}}function c(n,i){var r=e.iterator(n[0].querySelectorAll("md-radio-button"),!0);if(r.count()){var o=function(e){return!t.element(e).attr("disabled")},d=n[0].querySelector("md-radio-button.md-checked"),a=r[0>i?"previous":"next"](d,o)||r.first();t.element(a).triggerHandler("click")}}return d.prototype=a(),{restrict:"E",controller:["$element",d],require:["mdRadioGroup","?ngModel"],link:{pre:o}}}function r(e,t,n){function i(i,o,d,a){function c(e){o[0].hasAttribute("disabled")||i.$apply(function(){a.setViewValue(d.value,e&&e.type)})}function s(){var e=a.getViewValue()==d.value;e!==l&&(l=e,o.attr("aria-checked",e),e?(o.addClass(r),a.setActiveDescendant(o.attr("id"))):o.removeClass(r))}function u(n,i){function r(){return d.id||"radio_"+t.nextUid()}i.ariaId=r(),n.attr({id:i.ariaId,role:"radio","aria-checked":"false"}),e.expectWithText(n,"aria-label")}var l;n(o),u(o,i),a.add(s),d.$observe("value",s),o.on("click",c).on("$destroy",function(){a.remove(s)})}var r="md-checked";return{restrict:"E",require:"^mdRadioGroup",transclude:!0,template:'<div class="md-container" md-ink-ripple md-ink-ripple-checkbox><div class="md-off"></div><div class="md-on"></div></div><div ng-transclude class="md-label"></div>',link:i}}t.module("material.components.radioButton",["material.core"]).directive("mdRadioGroup",i).directive("mdRadioButton",r),i.$inject=["$mdUtil","$mdConstant","$mdTheming","$timeout"],r.$inject=["$mdAria","$mdUtil","$mdTheming"]}(window,window.angular);
{
"name": "angular-material-select",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-backdrop": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-backdrop": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -693,3 +693,3 @@ (function( window, angular, undefined ){

/* @ngInject */
/* ngInject */
function selectDefaultOptions($mdSelect, $mdConstant, $$rAF, $mdUtil, $mdTheming, $timeout, $window ) {

@@ -696,0 +696,0 @@ return {

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,n){"use strict";function l(e,l,o,i,r,a,d){function c(r,c){var s=r.find("md-select-label").remove();if(s.length){if(!s[0].firstElementChild){var u=t.element("<span>");u.append(s.contents()),s.append(u)}}else s=t.element("<md-select-label><span></span></md-select-label>");if(s.append('<span class="md-select-icon" aria-hidden="true"></span>'),s.addClass("md-select-label"),s[0].hasAttribute("id")||s.attr("id","select_label_"+l.nextUid()),r.find("md-content").length||r.append(t.element("<md-content>").append(r.contents())),c.mdOnOpen&&r.find("md-content").prepend(t.element("<md-progress-circular>").attr("md-mode","indeterminate").attr("ng-hide","$$loadingAsyncDone").wrap("<div>").parent()),c.name){var p=t.element('<select class="md-visually-hidden">');p.attr({name:"."+c.name,"ng-model":c.ngModel,"aria-hidden":"true",tabindex:"-1"});var f=r.find("md-option");t.forEach(f,function(e){var n=t.element("<option>"+e.innerHTML+"</option>");e.hasAttribute("ng-value")?n.attr("ng-value",e.getAttribute("ng-value")):e.hasAttribute("value")&&n.attr("value",e.getAttribute("value")),p.append(n)}),r.parent().append(p)}var m='<div class="md-select-menu-container"><md-select-menu '+(t.isDefined(c.multiple)?"multiple":"")+">"+r.html()+"</md-select-menu></div>";return r.empty().append(s),c.tabindex=c.tabindex||"0",function(r,c,s,u){function p(){var e=c.attr("placeholder");e||(e=c.find("md-select-label").text()),i.expect(c,"aria-label",e)}function f(){y&&(w=w||y.find("md-select-menu").controller("mdSelectMenu"),E.setLabelText(w.selectedLabels()))}function h(){y=t.element(m);var e=y.find("md-select-menu");e.data("$ngModelController",k),e.data("$mdSelectController",E),C=r.$new(),y=a(y)(C),w=y.find("md-select-menu").controller("mdSelectMenu")}function g(e){var n=[32,13,38,40];if(-1!=n.indexOf(e.keyCode))e.preventDefault(),v(e);else if(e.keyCode<=90&&e.keyCode>=31){e.preventDefault();var l=w.optNodeForKeyboardSearch(e);if(!l)return;var o=t.element(l).controller("mdOption");w.isMultiple||w.deselect(Object.keys(w.selected)[0]),w.select(o.hashKey,o.value),w.refreshViewValue(),k.$render()}}function v(){r.$evalAsync(function(){$=!0,e.show({scope:C,preserveScope:!0,skipCompile:!0,element:y,target:c[0],hasBackdrop:!0,loadingAsync:s.mdOnOpen?r.$eval(s.mdOnOpen)||!0:!1}).then(function(e){$=!1})})}var $,b,y,C,w,E=u[0],k=u[1],S=u[2],x=c.find("md-select-label"),M=0!==x.text().length;if(h(),o(c),s.name&&S){var O=c.parent()[0].querySelector('select[name=".'+s.name+'"]');S.$removeControl(t.element(O).controller())}var A=k.$render;k.$render=function(){A(),f()},E.setLabelText=function(e){if(!M){E.setIsPlaceholder(!e),e=e||s.placeholder||"";var t=M?x:x.children().eq(0);t.text(e)}},E.setIsPlaceholder=function(e){e?x.addClass("md-placeholder"):x.removeClass("md-placeholder")},r.$$postDigest(function(){p(),f()});var D;s.$observe("ngMultiple",function(e){D&&D();var t=d(e);D=r.$watch(function(){return t(r)},function(e,t){(e!==n||t!==n)&&(e?c.attr("multiple","multiple"):c.removeAttr("multiple"),y&&(w.setMultiple(e),A=k.$render,k.$render=function(){A(),f()},w.refreshViewValue(),k.$render()))})}),s.$observe("disabled",function(e){"string"==typeof e&&(e=!0),(b===n||b!==e)&&(b=e,e?(c.attr({tabindex:-1,"aria-disabled":"true"}),c.off("click",v),c.off("keydown",g)):(c.attr({tabindex:s.tabindex,"aria-disabled":"false"}),c.on("click",v),c.on("keydown",g)))}),s.disabled||s.ngDisabled||(c.attr({tabindex:s.tabindex,"aria-disabled":"false"}),c.on("click",v),c.on("keydown",g));var R={role:"combobox","aria-expanded":"false"};c[0].hasAttribute("id")||(R.id="select_"+l.nextUid()),c.attr(R),r.$on("$destroy",function(){$?e.cancel().then(function(){y.remove()}):y.remove()})}}return{restrict:"E",require:["mdSelect","ngModel","?^form"],compile:c,controller:function(){}}}function o(e,l,o){function i(e,n,i,r){function a(){n.attr({id:"select_menu_"+l.nextUid(),role:"listbox","aria-multiselectable":s.isMultiple?"true":"false"})}function d(e){(13==e.keyCode||32==e.keyCode)&&c(e)}function c(n){var o=l.getClosest(n.target,"md-option"),i=o&&t.element(o).data("$mdOptionController");if(o&&i){var r=s.hashGetter(i.value),a=t.isDefined(s.selected[r]);e.$apply(function(){s.isMultiple?a?s.deselect(r):s.select(r,i.value):a||(s.deselect(Object.keys(s.selected)[0]),s.select(r,i.value)),s.refreshViewValue()})}}var s=r[0],u=r[1];o(n),n.on("click",c),n.on("keypress",d),u&&s.init(u),a()}function r(l,o,i){function r(){var e=c.ngModel.$modelValue||c.ngModel.$viewValue;if(t.isArray(e)){var n=Object.keys(c.selected),l=e.map(c.hashGetter),o=n.filter(function(e){return-1===l.indexOf(e)});o.forEach(c.deselect),l.forEach(function(t,n){c.select(t,e[n])})}}function a(){var e=c.ngModel.$viewValue||c.ngModel.$modelValue;Object.keys(c.selected).forEach(c.deselect),c.select(c.hashGetter(e),e)}var c=this;c.isMultiple=t.isDefined(o.multiple),c.selected={},c.options={},l.$watch(function(){return c.options},function(){c.ngModel.$render()},!0);var u;c.setMultiple=function(e){function n(e,n){return t.isArray(e||n||[])}var i=c.ngModel;c.isMultiple=e,u&&u(),c.isMultiple?(i.$validators["md-multiple"]=n,i.$render=r,l.$watchCollection(o.ngModel,function(e){n(e)&&r(e)})):(delete i.$validators["md-multiple"],i.$render=a)};var p,f,m,h="",g=300;c.optNodeForKeyboardSearch=function(e){p&&clearTimeout(p),p=setTimeout(function(){p=n,h="",m=n,f=n},g),h+=String.fromCharCode(e.keyCode);var l=new RegExp("^"+h,"i");f||(f=i.find("md-option"),m=new Array(f.length),t.forEach(f,function(e,t){m[t]=e.textContent.trim()}));for(var o=0;o<m.length;++o)if(l.test(m[o]))return f[o]},c.init=function(n){if(c.ngModel=n,n.$options&&n.$options.trackBy){var o={},i=e(n.$options.trackBy);c.hashGetter=function(e,t){return o.$value=e,i(t||l,o)}}else c.hashGetter=function(e){return t.isObject(e)?"object_"+(e.$$mdSelectId||(e.$$mdSelectId=++s)):e};c.setMultiple(c.isMultiple)},c.selectedLabels=function(){var e=d(i[0].querySelectorAll("md-option[selected]"));return e.length?e.map(function(e){return e.textContent}).join(", "):""},c.select=function(e,t){var n=c.options[e];n&&n.setSelected(!0),c.selected[e]=t},c.deselect=function(e){var t=c.options[e];t&&t.setSelected(!1),delete c.selected[e]},c.addOption=function(e,n){if(t.isDefined(c.options[e]))throw new Error('Duplicate md-option values are not allowed in a select. Duplicate value "'+n.value+'" found.');c.options[e]=n,t.isDefined(c.selected[e])&&(c.select(e,n.value),c.refreshViewValue())},c.removeOption=function(e){delete c.options[e]},c.refreshViewValue=function(){var e,t=[];for(var n in c.selected)t.push((e=c.options[n])?e.value:c.selected[n]);c.ngModel.$setViewValue(c.isMultiple?t:t[0])}}return r.$inject=["$scope","$attrs","$element"],{restrict:"E",require:["mdSelectMenu","?ngModel"],controller:r,link:{pre:i}}}function i(e,n){function l(e,n){return e.append(t.element('<div class="md-text">').append(e.contents())),e.attr("tabindex",n.tabindex||"0"),o}function o(l,o,i,r){function a(e,t){var n=s.hashGetter(t,l),o=s.hashGetter(e,l);c.hashKey=o,c.value=e,s.removeOption(n,c),s.addOption(o,c)}function d(){var e={role:"option","aria-selected":"false"};o[0].hasAttribute("id")||(e.id="select_option_"+n.nextUid()),o.attr(e)}var c=r[0],s=r[1];t.isDefined(i.ngValue)?l.$watch(i.ngValue,a):t.isDefined(i.value)?a(i.value):l.$watch(function(){return o.text()},a),l.$$postDigest(function(){i.$observe("selected",function(e){t.isDefined(e)&&(e?(s.isMultiple||s.deselect(Object.keys(s.selected)[0]),s.select(c.hashKey,c.value)):s.deselect(c.hashKey),s.refreshViewValue(),s.ngModel.$render())})}),e.attach(l,o),d(),l.$on("$destroy",function(){s.removeOption(c.hashKey,c)})}function i(e){this.selected=!1,this.setSelected=function(t){t&&!this.selected?e.attr({selected:"selected","aria-selected":"true"}):!t&&this.selected&&(e.removeAttr("selected"),e.attr("aria-selected","false")),this.selected=t}}return i.$inject=["$element"],{restrict:"E",require:["mdOption","^^mdSelectMenu"],controller:i,compile:l}}function r(){function e(e,n){var l=e.find("label");l.length||(l=t.element("<label>"),e.prepend(l)),n.label&&l.text(n.label)}return{restrict:"E",compile:e}}function a(e){function l(e,l,r,a,s,u,p){function f(n,o,i){function c(){i.target.attr("aria-expanded","true")}function f(){function t(e){var t=d(m),n=t.indexOf(i.focusedNode);-1===n?n=0:"next"===e&&n<t.length-1?n++:"prev"===e&&n>0&&n--;var l=i.focusedNode=t[n];l&&l.focus()}function r(){t("next")}function c(){t("prev")}function s(){u.isMultiple||(i.restoreFocus=!0,n.$evalAsync(function(){e.hide(u.ngModel.$viewValue)}))}if(!i.isRemoved){var u=i.selectEl.controller("mdSelectMenu")||{};o.addClass("md-clickable"),i.backdrop&&i.backdrop.on("click",function(t){t.preventDefault(),t.stopPropagation(),i.restoreFocus=!1,n.$apply(e.cancel)}),i.selectEl.on("keydown",function(t){switch(t.keyCode){case l.KEY_CODE.SPACE:case l.KEY_CODE.ENTER:var o=a.getClosest(t.target,"md-option");o&&(i.selectEl.triggerHandler({type:"click",target:o}),t.preventDefault());break;case l.KEY_CODE.TAB:case l.KEY_CODE.ESCAPE:t.preventDefault(),i.restoreFocus=!0,n.$apply(e.cancel)}}),i.selectEl.on("keydown",function(e){switch(e.keyCode){case l.KEY_CODE.UP_ARROW:return c();case l.KEY_CODE.DOWN_ARROW:return r();default:if(e.keyCode>=31&&e.keyCode<=90){var t=i.selectEl.controller("mdSelectMenu").optNodeForKeyboardSearch(e);t&&t.focus()}}}),i.selectEl.on("click",s),i.selectEl.on("keydown",function(e){(32==e.keyCode||13==e.keyCode)&&s()})}}if(!i.target)throw new Error('$mdSelect.show() expected a target element in options.target but got "'+i.target+'"!');t.extend(i,{isRemoved:!1,target:t.element(i.target),parent:t.element(i.parent),selectEl:o.find("md-select-menu"),contentEl:o.find("md-content"),backdrop:i.hasBackdrop&&t.element('<md-backdrop class="md-select-backdrop md-click-catcher">')}),i.resizeFn=function(){r(function(){r(function(){h(n,o,i)})})},t.element(p).on("resize",i.resizeFn),t.element(p).on("orientationchange",i.resizeFn),c(),o.removeClass("md-leave");var m=i.selectEl[0].getElementsByTagName("md-option");return i.loadingAsync&&i.loadingAsync.then?i.loadingAsync.then(function(){n.$$loadingAsyncDone=!0,r(function(){r(function(){i.isRemoved||h(n,o,i)})})}):i.loadingAsync&&(n.$$loadingAsyncDone=!0),i.disableParentScroll&&!a.getClosest(i.target,"MD-DIALOG")?i.restoreScroll=a.disableScrollAround(i.target):i.disableParentScroll=!1,u(f,75,!1),i.backdrop&&(s.inherit(i.backdrop,i.parent),i.parent.append(i.backdrop)),i.parent.append(o),r(function(){r(function(){i.isRemoved||h(n,o,i)})}),a.transitionEndPromise(i.selectEl,{timeout:350})}function m(e,l,o){o.isRemoved=!0,l.addClass("md-leave").removeClass("md-clickable"),o.target.attr("aria-expanded","false"),t.element(p).off("resize",o.resizeFn),t.element(p).off("orientationchange",o.resizefn),o.resizeFn=n;var i=o.selectEl.controller("mdSelect");return i&&i.setLabelText(o.selectEl.controller("mdSelectMenu").selectedLabels()),a.transitionEndPromise(l,{timeout:350}).then(function(){l.removeClass("md-active"),o.backdrop&&o.backdrop.remove(),l[0].parentNode===o.parent[0]&&o.parent[0].removeChild(l[0]),o.disableParentScroll&&o.restoreScroll(),o.restoreFocus&&o.target.focus()})}function h(e,t,n){var d,s=t[0],u=n.target[0].firstElementChild.firstElementChild,f=n.parent[0],m=n.selectEl[0],h=n.contentEl[0],g=f.getBoundingClientRect(),v=u.getBoundingClientRect(),$=!1,b={left:g.left+c,top:c,bottom:g.height-c,right:g.width-c-(a.floatingScrollbars()?16:0)},y={top:v.top-b.top,left:v.left-b.left,right:b.right-(v.left+v.width),bottom:b.bottom-(v.top+v.height)},C=g.width-2*c,w=h.scrollHeight>h.offsetHeight,E=m.querySelector("md-option[selected]"),k=m.getElementsByTagName("md-option"),S=m.getElementsByTagName("md-optgroup");d=E?E:S.length?S[0]:k.length?k[0]:h.firstElementChild||h,h.offsetWidth>C&&(h.style["max-width"]=C+"px"),$&&(h.style["min-width"]=v.width+"px"),w&&m.classList.add("md-overflow");var x=m.getBoundingClientRect(),M=i(d);if(d){var O=p.getComputedStyle(d);M.paddingLeft=parseInt(O.paddingLeft,10)||0,M.paddingRight=parseInt(O.paddingRight,10)||0}var A=d;if("MD-OPTGROUP"===(A.tagName||"").toUpperCase()&&(A=k[0]||h.firstElementChild||h),w){var D=h.offsetHeight/2;h.scrollTop=M.top+M.height/2-D,y.top<D?h.scrollTop=Math.min(M.top,h.scrollTop+D-y.top):y.bottom<D&&(h.scrollTop=Math.max(M.top+M.height-x.height,h.scrollTop-D+y.bottom))}var R,T,V;$?(R=v.left,T=v.top+v.height,V="50% 0",T+x.height>b.bottom&&(T=v.top-x.height,V="50% 100%")):(R=v.left+M.left-M.paddingLeft,T=Math.floor(v.top+v.height/2-M.height/2-M.top+h.scrollTop),V=M.left+v.width/2+"px "+(M.top+M.height/2-h.scrollTop)+"px 0px",s.style.minWidth=v.width+M.paddingLeft+M.paddingRight+"px");var N=s.getBoundingClientRect();s.style.left=o(b.left,R,b.right-N.width)+"px",s.style.top=o(b.top,T,b.bottom-N.height)+"px",m.style[l.CSS.TRANSFORM_ORIGIN]=V,m.style[l.CSS.TRANSFORM]="scale("+Math.min(v.width/x.width,1)+","+Math.min(v.height/x.height,1)+")",r(function(){t.addClass("md-active"),m.style[l.CSS.TRANSFORM]="",A&&(n.focusedNode=A,A.focus())})}return{parent:"body",onShow:f,onRemove:m,hasBackdrop:!0,disableParentScroll:!0,themable:!0}}function o(e,t,n){return Math.max(e,Math.min(t,n))}function i(e){return e?{left:e.offsetLeft,top:e.offsetTop,width:e.offsetWidth,height:e.offsetHeight}:{left:0,top:0,width:0,height:0}}return l.$inject=["$mdSelect","$mdConstant","$$rAF","$mdUtil","$mdTheming","$timeout","$window"],e("$mdSelect").setDefaults({methods:["target"],options:l})}function d(e){for(var t=[],n=0;n<e.length;++n)t.push(e.item(n));return t}var c=8,s=0;t.module("material.components.select",["material.core","material.components.backdrop"]).directive("mdSelect",l).directive("mdSelectMenu",o).directive("mdOption",i).directive("mdOptgroup",r).provider("$mdSelect",a),l.$inject=["$mdSelect","$mdUtil","$mdTheming","$mdAria","$interpolate","$compile","$parse"],o.$inject=["$parse","$mdUtil","$mdTheming"],i.$inject=["$mdButtonInkRipple","$mdUtil"],a.$inject=["$$interimElementProvider"]}(window,window.angular);
{
"name": "angular-material-sidenav",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-backdrop": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-backdrop": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,n,t){"use strict";function o(e,t){return function(o){function r(){return e.when(o).then(function(e){return s=e,e})}var i,c="SideNav '"+o+"' is not available!",s=e.get(o);return s||e.notFoundError(o),i={isOpen:function(){return s&&s.isOpen()},isLockedOpen:function(){return s&&s.isLockedOpen()},toggle:function(){return s?s.toggle():t.reject(c)},open:function(){return s?s.open():t.reject(c)},close:function(){return s?s.close():t.reject(c)},then:function(e){var o=s?t.when(s):r();return o.then(e||n.noop)}}}}function r(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,o){o.focusElement(n)}}}function i(e,o,r,i,c,s,d,u,a,l){function f(f,p,m,$){function v(e,n){f.isLockedOpen=e,e===n?p.toggleClass("md-locked-open",!!e):o[e?"addClass":"removeClass"](p,"md-locked-open"),L.toggleClass("md-locked-open",!!e)}function g(e){var n=p.parent();n[e?"on":"off"]("keydown",k),L[e?"on":"off"]("click",w),e&&(E=l[0].activeElement);var t=$.focusElement();return O(e),y=a.all([e?o.enter(L,n):o.leave(L),o[e?"removeClass":"addClass"](p,"md-closed")]).then(function(){f.isOpen&&t&&t.focus()})}function O(e){var o=p.parent();e?(C=o.css("overflow"),o.css("overflow","hidden")):n.isDefined(C)&&(o.css("overflow",C),C=t)}function h(n){if(f.isOpen==n)return a.when(!0);var t=a.defer();return f.isOpen=n,e(function(){y.then(function(e){f.isOpen||(E&&E.focus(),E=null),t.resolve(e)})},0,!1),t.promise}function k(e){var n=e.keyCode===s.KEY_CODE.ESCAPE;return n?w(e):a.when(!0)}function w(e){return e.preventDefault(),e.stopPropagation(),$.close()}var C,E=null,y=a.when(!0),S=r(m.mdIsLockedOpen),j=function(){return S(f.$parent,{$media:function(e){return i.warn("$media is deprecated for is-locked-open. Use $mdMedia instead."),c(e)},$mdMedia:c})},L=d('<md-backdrop class="md-sidenav-backdrop md-opaque ng-enter">')(f);p.on("$destroy",$.destroy),u.inherit(L,p),f.$watch(j,v),f.$watch("isOpen",g),$.$toggleOpen=h,$.focusElement($.focusElement()||p)}return{restrict:"E",scope:{isOpen:"=?mdIsOpen"},controller:"$mdSidenavController",compile:function(e){return e.addClass("md-closed"),e.attr("tabIndex","-1"),f}}}function c(e,t,o,r,i){var c,s=this;s.isOpen=function(){return!!e.isOpen},s.isLockedOpen=function(){return!!e.isLockedOpen},s.open=function(){return s.$toggleOpen(!0)},s.close=function(){return s.$toggleOpen(!1)},s.toggle=function(){return s.$toggleOpen(!e.isOpen)},s.focusElement=function(e){return n.isDefined(e)&&(c=e),c},s.$toggleOpen=function(){return i.when(e.isOpen)},s.destroy=r.register(s,o.mdComponentId)}n.module("material.components.sidenav",["material.core","material.components.backdrop"]).factory("$mdSidenav",o).directive("mdSidenav",i).directive("mdSidenavFocus",r).controller("$mdSidenavController",c),o.$inject=["$mdComponentRegistry","$q"],i.$inject=["$timeout","$animate","$parse","$log","$mdMedia","$mdConstant","$compile","$mdTheming","$q","$document"],c.$inject=["$scope","$element","$attrs","$mdComponentRegistry","$q"]}(window,window.angular);
{
"name": "angular-material-slider",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,n){"use strict";function i(e,n,i,a,r,o,s,d){function l(e,t){return e.attr({tabIndex:0,role:"slider"}),i.expect(e,"aria-label"),u}function u(i,l,u,c){function m(){g(),x(),h()}function f(e){H=parseFloat(e),l.attr("aria-valuemin",e),m()}function v(e){U=parseFloat(e),l.attr("aria-valuemax",e),m()}function p(e){J=parseFloat(e),h()}function $(e){l.attr("aria-disabled",!!e)}function h(){if(t.isDefined(u.mdDiscrete)){var e=Math.floor((U-H)/J);if(!Q){var i=n.getComputedStyle(W[0]);Q=t.element('<canvas style="position:absolute;">'),X=Q[0].getContext("2d"),X.fillStyle=i.backgroundColor||"black",W.append(Q)}var a=w();Q[0].width=a.width,Q[0].height=a.height;for(var r,o=0;e>=o;o++)r=Math.floor(a.width*(o/e)),X.fillRect(r-1,0,2,a.height)}}function g(){Z=G[0].getBoundingClientRect()}function w(){return Y(),Z}function b(e){if(!l[0].hasAttribute("disabled")){var t;e.keyCode===r.KEY_CODE.LEFT_ARROW?t=-J:e.keyCode===r.KEY_CODE.RIGHT_ARROW&&(t=J),t&&((e.metaKey||e.ctrlKey||e.altKey)&&(t*=4),e.preventDefault(),e.stopPropagation(),i.$evalAsync(function(){y(c.$viewValue+t)}))}}function y(e){c.$setViewValue(C(k(e)))}function x(){isNaN(c.$viewValue)&&(c.$viewValue=c.$modelValue);var e=(c.$viewValue-H)/(U-H);i.modelValue=c.$viewValue,l.attr("aria-valuenow",c.$viewValue),V(e),_.text(c.$viewValue)}function C(e){return t.isNumber(e)?Math.max(H,Math.min(U,e)):void 0}function k(e){return t.isNumber(e)?Math.round(e/J)*J:void 0}function V(e){I.css("width",100*e+"%"),z.css("left",100*e+"%"),l.toggleClass("md-min",0===e)}function D(e){if(!P()){l.addClass("active"),l[0].focus(),g();var t=L(K(e.pointer.x)),n=C(k(t));i.$apply(function(){y(n),V(N(n))})}}function M(e){if(!P()){l.removeClass("dragging active");var t=L(K(e.pointer.x)),n=C(k(t));i.$apply(function(){y(n),x()})}}function S(e){P()||(ee=!0,e.stopPropagation(),l.addClass("dragging"),q(e))}function A(e){ee&&(e.stopPropagation(),q(e))}function R(e){ee&&(e.stopPropagation(),ee=!1)}function q(e){te?F(e.pointer.x):E(e.pointer.x)}function E(e){i.$evalAsync(function(){y(L(K(e)))})}function F(e){var t=L(K(e)),n=C(k(t));V(K(e)),_.text(n)}function K(e){return Math.max(0,Math.min(1,(e-Z.left)/Z.width))}function L(e){return H+e*(U-H)}function N(e){return(e-H)/(U-H)}o(l),c=c||{$setViewValue:function(e){this.$viewValue=e,this.$viewChangeListeners.forEach(function(e){e()})},$parsers:[],$formatters:[],$viewChangeListeners:[]};var O=u.ngDisabled&&d(u.ngDisabled),P=O?function(){return O(i.$parent)}:t.noop,T=t.element(l[0].querySelector(".md-thumb")),_=t.element(l[0].querySelector(".md-thumb-text")),z=T.parent(),G=t.element(l[0].querySelector(".md-track-container")),I=t.element(l[0].querySelector(".md-track-fill")),W=t.element(l[0].querySelector(".md-track-ticks")),Y=a.throttle(g,5e3);u.min?u.$observe("min",f):f(0),u.max?u.$observe("max",v):v(100),u.step?u.$observe("step",p):p(1);var j=t.noop;u.ngDisabled&&(j=i.$parent.$watch(u.ngDisabled,$)),s.register(l,"drag"),l.on("keydown",b).on("$md.pressdown",D).on("$md.pressup",M).on("$md.dragstart",S).on("$md.drag",A).on("$md.dragend",R),setTimeout(m);var B=e.throttle(m);t.element(n).on("resize",B),i.$on("$destroy",function(){t.element(n).off("resize",B),j()}),c.$render=x,c.$viewChangeListeners.push(x),c.$formatters.push(C),c.$formatters.push(k);var H,U,J,Q,X,Z={};g();var ee=!1,te=t.isDefined(u.mdDiscrete)}return{scope:{},require:"?ngModel",template:'<div class="md-slider-wrapper"> <div class="md-track-container"> <div class="md-track"></div> <div class="md-track md-track-fill"></div> <div class="md-track-ticks"></div> </div> <div class="md-thumb-container"> <div class="md-thumb"></div> <div class="md-focus-thumb"></div> <div class="md-focus-ring"></div> <div class="md-sign"> <span class="md-thumb-text"></span> </div> <div class="md-disabled-thumb"></div> </div> </div>',compile:l}}t.module("material.components.slider",["material.core"]).directive("mdSlider",i),i.$inject=["$$rAF","$window","$mdAria","$mdUtil","$mdConstant","$mdTheming","$mdGesture","$parse"]}(window,window.angular);
{
"name": "angular-material-sticky",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-content": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-content": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(t,e,n){"use strict";function r(t,r,o,l,c){function s(t){function e(t,e){e.addClass("md-sticky-clone"),e.css("top",v+"px");var n={element:t,clone:e};return d.items.push(n),f.parent().prepend(n.clone),m(),function(){d.items.forEach(function(e,n){e.element[0]===t[0]&&(d.items.splice(n,1),e.clone.remove())}),m()}}function o(){d.items.forEach(c),d.items=d.items.sort(function(t,e){return t.top<e.top?-1:1});for(var t,e=f.prop("scrollTop"),n=d.items.length-1;n>=0;n--)if(e>d.items[n].top){t=d.items[n];break}i(t)}function c(t){var e=t.element[0];for(t.top=0,t.left=0;e&&e!==f[0];)t.top+=e.offsetTop,t.left+=e.offsetLeft,e=e.offsetParent;t.height=t.element.prop("offsetHeight"),t.clone.css("margin-left",t.left+"px")}function s(){var t=f.prop("scrollTop"),e=t>(s.prevScrollTop||0);s.prevScrollTop=t,0===t?i(null):e&&d.next?d.next.top-t<=0?i(d.next):d.current&&(d.next.top-t<=d.next.height?p(d.current,d.next.top-d.next.height-t):p(d.current,null)):!e&&d.current&&(t<d.current.top&&i(d.prev),d.current&&d.next&&(t>=d.next.top-d.current.height?p(d.current,d.next.top-t-d.current.height):p(d.current,null)))}function i(t){if(d.current!==t){d.current&&(p(d.current,null),u(d.current,null)),t&&u(t,"active"),d.current=t;var e=d.items.indexOf(t);d.next=d.items[e+1],d.prev=d.items[e-1],u(d.next,"next"),u(d.prev,"prev")}}function u(t,e){t&&t.state!==e&&(t.state&&(t.clone.attr("sticky-prev-state",t.state),t.element.attr("sticky-prev-state",t.state)),t.clone.attr("sticky-state",e),t.element.attr("sticky-state",e),t.state=e)}function p(t,e){t&&(null===e||e===n?t.translateY&&(t.translateY=null,t.clone.css(r.CSS.TRANSFORM,"")):(t.translateY=e,t.clone.css(r.CSS.TRANSFORM,"translate3d("+t.left+"px,"+e+"px,0)")))}var f=t.$element,m=l.throttle(o);a(f),f.on("$scrollstart",m),f.on("$scroll",s);var d,v=f.prop("offsetTop");return d={prev:null,current:null,next:null,items:[],add:e,refreshElements:o}}function i(n){var r,o=e.element("<div>");t[0].body.appendChild(o[0]);for(var l=["sticky","-webkit-sticky"],c=0;c<l.length;++c)if(o.css({position:l[c],top:0,"z-index":2}),o.css("position")==l[c]){r=l[c];break}return o.remove(),r}function a(t){function e(){+c.now()-r>o?(n=!1,t.triggerHandler("$scrollend")):(t.triggerHandler("$scroll"),l(e))}var n,r,o=200;t.on("scroll touchmove",function(){n||(n=!0,l(e),t.triggerHandler("$scrollstart")),t.triggerHandler("$scroll"),r=+c.now()})}var u=i();return function(t,e,n){var r=e.controller("mdContent");if(r)if(u)e.css({position:u,top:0,"z-index":2});else{var o=r.$element.data("$$sticky");o||(o=s(r),r.$element.data("$$sticky",o));var l=o.add(e,n||e.clone());t.$on("$destroy",l)}}}e.module("material.components.sticky",["material.core","material.components.content"]).factory("$mdSticky",r),r.$inject=["$document","$mdConstant","$compile","$$rAF","$mdUtil"]}(window,window.angular);
{
"name": "angular-material-subheader",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-sticky": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-sticky": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,n,t){"use strict";function r(e,t,r){return{restrict:"E",replace:!0,transclude:!0,template:'<h2 class="md-subheader"><div class="md-subheader-inner"><span class="md-subheader-content"></span></div></h2>',compile:function(a,c,i){return function(a,c,s){function d(e){return n.element(e[0].querySelector(".md-subheader-content"))}r(c);var o=c[0].outerHTML;i(a,function(e){d(c).append(e)}),c.hasClass("md-no-sticky")||i(a,function(r){var i=t(n.element(o))(a);d(i).append(r),e(a,c,i)})}}}}n.module("material.components.subheader",["material.core","material.components.sticky"]).directive("mdSubheader",r),r.$inject=["$mdSticky","$compile","$mdTheming"]}(window,window.angular);
{
"name": "angular-material-swipe",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -60,3 +60,3 @@ (function( window, angular, undefined ){

/* @ngInject */
/* ngInject */
function DirectiveFactory($parse) {

@@ -63,0 +63,0 @@ return { restrict: 'A', link: postLink };

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,i,t){"use strict";function n(e){function i(e){function i(i,r,o){var c=e(o[t]);r.on(n,function(e){i.$apply(function(){c(i,{$event:e})})})}return{restrict:"A",link:i}}var t="md"+e,n="$md."+e.toLowerCase();return i.$inject=["$parse"],i}i.module("material.components.swipe",["material.core"]).directive("mdSwipeLeft",n("SwipeLeft")).directive("mdSwipeRight",n("SwipeRight"))}(window,window.angular);
{
"name": "angular-material-switch",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-checkbox": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-checkbox": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,n){"use strict";function a(e,n,a,i,r,d,o,s){function c(e,n){var i=l.compile(e,n);return e.addClass("md-dragging"),function(e,n,c,l){function m(t){p(e)||(t.stopPropagation(),n.addClass("md-dragging"),h={width:$.prop("offsetWidth")},n.removeClass("transition"))}function u(e){if(h){e.stopPropagation(),e.srcEvent&&e.srcEvent.preventDefault();var t=e.pointer.distanceX/h.width,n=l.$viewValue?1+t:t;n=Math.max(0,Math.min(1,n)),$.css(r.CSS.TRANSFORM,"translate3d("+100*n+"%,0,0)"),h.translate=n}}function g(e){if(h){e.stopPropagation(),n.removeClass("md-dragging"),$.css(r.CSS.TRANSFORM,"");var t=l.$viewValue?h.translate<.5:h.translate>.5;t&&v(!l.$viewValue),h=null}}function v(t){e.$apply(function(){l.$setViewValue(t),l.$render()})}l=l||a.fakeNgModel();var p=d(c.ngDisabled),$=t.element(n[0].querySelector(".md-thumb-container")),f=t.element(n[0].querySelector(".md-container"));o(function(){n.removeClass("md-dragging")}),i(e,n,c,l),t.isDefined(c.ngDisabled)&&e.$watch(p,function(e){n.attr("tabindex",e?-1:0)}),s.register(f,"drag"),f.on("$md.dragstart",m).on("$md.drag",u).on("$md.dragend",g);var h}}var l=e[0];return{restrict:"E",priority:210,transclude:!0,template:'<div class="md-container"><div class="md-bar"></div><div class="md-thumb-container"><div class="md-thumb" md-ink-ripple md-ink-ripple-checkbox></div></div></div><div ng-transclude class="md-label"></div>',require:"?ngModel",compile:c}}t.module("material.components.switch",["material.core","material.components.checkbox"]).directive("mdSwitch",a),a.$inject=["mdCheckboxDirective","$mdTheming","$mdUtil","$document","$mdConstant","$parse","$$rAF","$mdGesture"]}(window,window.angular);
{
"name": "angular-material-tabs",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-icon": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-icon": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -100,4 +100,30 @@ (function( window, angular, undefined ){

terminal: true,
template: function (element, attr) {
var label = getLabel(),
body = getTemplate();
return '' +
'<md-tab-label>' + label + '</md-tab-label>' +
'<md-tab-body>' + body + '</md-tab-body>';
function getLabel () {
return getLabelAttribute() || getLabelElement() || getElementContents();
function getLabelAttribute () { return attr.label; }
function getLabelElement () {
var label = element.find('md-tab-label');
if (label.length) return label.remove().html();
}
function getElementContents () {
var html = element.html();
element.empty();
return html;
}
}
function getTemplate () {
var content = element.find('md-tab-body'),
template = content.length ? content.html() : attr.label ? element.html() : '';
if (content.length) content.remove();
else if (attr.label) element.empty();
return template;
}
},
scope: {
label: '@',
active: '=?mdActive',

@@ -119,4 +145,5 @@ disabled: '=?ngDisabled',

index: index,
template: getTemplate(),
label: getLabel()
element: element,
template: element.find('md-tab-body').html(),
label: element.find('md-tab-label').html()
}, index);

@@ -140,24 +167,2 @@

function getLabel () {
var label = attr.label || (element.find('md-tab-label')[0] || element[0]).innerHTML;
return getLabelAttribute() || getLabelElement() || getElementContents();
function getLabelAttribute () { return attr.label; }
function getLabelElement () {
var label = element.find('md-tab-label');
if (label.length) return label.remove().html();
}
function getElementContents () {
var html = element.html();
element.empty();
return html;
}
}
function getTemplate () {
var content = element.find('md-tab-body'),
template = content.length ? content.html() : attr.label ? element.html() : null;
if (content.length) content.remove();
else if (attr.label) element.empty();
return template;
}
}

@@ -180,2 +185,11 @@ }

angular
.module('material.components.tabs')
.directive('mdTabLabel', MdTabLabel);
function MdTabLabel () {
return { terminal: true };
}
angular.module('material.components.tabs')

@@ -204,3 +218,3 @@ .directive('mdTabScroll', MdTabScroll);

/**
* @ngInject
* ngInject
*/

@@ -218,3 +232,3 @@ function MdTabsController ($scope, $element, $window, $timeout, $mdConstant, $mdTabInkRipple,

ctrl.lastSelectedIndex = null;
ctrl.focusIndex = 0;
ctrl.focusIndex = $scope.selectedIndex || 0;
ctrl.offsetLeft = 0;

@@ -241,3 +255,3 @@ ctrl.hasContent = false;

ctrl.incrementSelectedIndex = incrementSelectedIndex;
ctrl.updateInkBarStyles = updateInkBarStyles;
ctrl.updateInkBarStyles = $mdUtil.debounce(updateInkBarStyles, 100);
ctrl.updateTabOrder = $mdUtil.debounce(updateTabOrder, 100);

@@ -252,7 +266,16 @@

$scope.$watch('$mdTabsCtrl.hasContent', handleHasContent);
angular.element($window).on('resize', function () { $scope.$apply(handleWindowResize); });
$timeout(updateInkBarStyles, 0, false);
angular.element($window).on('resize', handleWindowResize);
angular.element(elements.paging).on('DOMSubtreeModified', ctrl.updateInkBarStyles);
$timeout(updateHeightFromContent, 0, false);
$timeout(adjustOffset);
$scope.$on('$destroy', cleanup);
}
function cleanup () {
angular.element($window).off('resize', handleWindowResize);
angular.element(elements.paging).off('DOMSubtreeModified', ctrl.updateInkBarStyles);
}
//-- Change handlers
function handleHasContent (hasContent) {

@@ -262,20 +285,50 @@ $element[hasContent ? 'removeClass' : 'addClass']('md-no-tab-content');

function getElements () {
var elements = {};
function handleOffsetChange (left) {
var newValue = shouldCenterTabs() ? '' : '-' + left + 'px';
angular.element(elements.paging).css('transform', 'translate3d(' + newValue + ', 0, 0)');
$scope.$broadcast('$mdTabsPaginationChanged');
}
//-- gather tab bar elements
elements.wrapper = $element[0].getElementsByTagName('md-tabs-wrapper')[0];
elements.canvas = elements.wrapper.getElementsByTagName('md-tabs-canvas')[0];
elements.paging = elements.canvas.getElementsByTagName('md-pagination-wrapper')[0];
elements.tabs = elements.paging.getElementsByTagName('md-tab-item');
elements.dummies = elements.canvas.getElementsByTagName('md-dummy-tab');
elements.inkBar = elements.paging.getElementsByTagName('md-ink-bar')[0];
function handleFocusIndexChange (newIndex, oldIndex) {
if (newIndex === oldIndex) return;
if (!elements.tabs[newIndex]) return;
adjustOffset();
redirectFocus();
}
//-- gather tab content elements
elements.contentsWrapper = $element[0].getElementsByTagName('md-tabs-content-wrapper')[0];
elements.contents = elements.contentsWrapper.getElementsByTagName('md-tab-content');
function handleSelectedIndexChange (newValue, oldValue) {
if (newValue === oldValue) return;
return elements;
$scope.selectedIndex = getNearestSafeIndex(newValue);
ctrl.lastSelectedIndex = oldValue;
ctrl.updateInkBarStyles();
updateHeightFromContent();
$scope.$broadcast('$mdTabsChanged');
ctrl.tabs[oldValue] && ctrl.tabs[oldValue].scope.deselect();
ctrl.tabs[newValue] && ctrl.tabs[newValue].scope.select();
}
function handleResizeWhenVisible () {
//-- if there is already a watcher waiting for resize, do nothing
if (handleResizeWhenVisible.watcher) return;
//-- otherwise, we will abuse the $watch function to check for visible
handleResizeWhenVisible.watcher = $scope.$watch(function () {
//-- since we are checking for DOM size, we use $timeout to wait for after the DOM updates
$timeout(function () {
//-- if the watcher has already run (ie. multiple digests in one cycle), do nothing
if (!handleResizeWhenVisible.watcher) return;
if ($element.prop('offsetParent')) {
handleResizeWhenVisible.watcher();
handleResizeWhenVisible.watcher = null;
//-- we have to trigger our own $apply so that the DOM bindings will update
handleWindowResize();
}
}, 0, false);
});
}
//-- Event handlers / actions
function keydown (event) {

@@ -300,2 +353,139 @@ switch (event.keyCode) {

function select (index) {
if (!locked) ctrl.focusIndex = $scope.selectedIndex = index;
ctrl.lastClick = true;
ctrl.tabs[index].element.triggerHandler('click');
}
function scroll (event) {
if (!shouldPaginate()) return;
event.preventDefault();
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft - event.wheelDelta);
}
function nextPage () {
var viewportWidth = elements.canvas.clientWidth,
totalWidth = viewportWidth + ctrl.offsetLeft,
i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
if (tab.offsetLeft + tab.offsetWidth > totalWidth) break;
}
ctrl.offsetLeft = fixOffset(tab.offsetLeft);
}
function previousPage () {
var i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
if (tab.offsetLeft + tab.offsetWidth >= ctrl.offsetLeft) break;
}
ctrl.offsetLeft = fixOffset(tab.offsetLeft + tab.offsetWidth - elements.canvas.clientWidth);
}
function handleWindowResize () {
$scope.$apply(function () {
ctrl.lastSelectedIndex = $scope.selectedIndex;
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft);
$timeout(ctrl.updateInkBarStyles, 0, false);
});
}
function removeTab (tabData) {
var selectedIndex = $scope.selectedIndex,
tab = ctrl.tabs.splice(tabData.getIndex(), 1)[0];
refreshIndex();
//-- when removing a tab, if the selected index did not change, we have to manually trigger the
// tab select/deselect events
if ($scope.selectedIndex === selectedIndex) {
tab.scope.deselect();
ctrl.tabs[$scope.selectedIndex] && ctrl.tabs[$scope.selectedIndex].scope.select();
}
$timeout(function () {
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft);
});
}
function insertTab (tabData, index) {
var proto = {
getIndex: function () { return ctrl.tabs.indexOf(tab); },
isActive: function () { return this.getIndex() === $scope.selectedIndex; },
isLeft: function () { return this.getIndex() < $scope.selectedIndex; },
isRight: function () { return this.getIndex() > $scope.selectedIndex; },
hasFocus: function () { return !ctrl.lastClick && ctrl.hasFocus && this.getIndex() === ctrl.focusIndex; },
id: $mdUtil.nextUid()
},
tab = angular.extend(proto, tabData);
if (angular.isDefined(index)) {
ctrl.tabs.splice(index, 0, tab);
} else {
ctrl.tabs.push(tab);
}
processQueue();
updateHasContent();
return tab;
}
//-- Getter methods
function getElements () {
var elements = {};
//-- gather tab bar elements
elements.wrapper = $element[0].getElementsByTagName('md-tabs-wrapper')[0];
elements.canvas = elements.wrapper.getElementsByTagName('md-tabs-canvas')[0];
elements.paging = elements.canvas.getElementsByTagName('md-pagination-wrapper')[0];
elements.tabs = elements.paging.getElementsByTagName('md-tab-item');
elements.dummies = elements.canvas.getElementsByTagName('md-dummy-tab');
elements.inkBar = elements.paging.getElementsByTagName('md-ink-bar')[0];
//-- gather tab content elements
elements.contentsWrapper = $element[0].getElementsByTagName('md-tabs-content-wrapper')[0];
elements.contents = elements.contentsWrapper.getElementsByTagName('md-tab-content');
return elements;
}
function canPageBack () {
return ctrl.offsetLeft > 0;
}
function canPageForward () {
var lastTab = elements.tabs[elements.tabs.length - 1];
return lastTab && lastTab.offsetLeft + lastTab.offsetWidth > elements.canvas.clientWidth + ctrl.offsetLeft;
}
function shouldStretchTabs () {
switch ($scope.stretchTabs) {
case 'always': return true;
case 'never': return false;
default: return !shouldPaginate() && $window.matchMedia('(max-width: 600px)').matches;
}
}
function shouldCenterTabs () {
return $scope.centerTabs && !shouldPaginate();
}
function shouldPaginate () {
if ($scope.noPagination) return false;
var canvasWidth = $element.prop('clientWidth');
angular.forEach(elements.tabs, function (tab) { canvasWidth -= tab.offsetWidth; });
return canvasWidth < 0;
}
function getNearestSafeIndex(newIndex) {
var maxOffset = Math.max(ctrl.tabs.length - newIndex, newIndex),
i, tab;
for (i = 0; i <= maxOffset; i++) {
tab = ctrl.tabs[newIndex + i];
if (tab && (tab.scope.disabled !== true)) return tab.getIndex();
tab = ctrl.tabs[newIndex - i];
if (tab && (tab.scope.disabled !== true)) return tab.getIndex();
}
return newIndex;
}
//-- Utility methods
function updateTabOrder () {

@@ -309,3 +499,2 @@ var selectedItem = ctrl.tabs[$scope.selectedIndex],

ctrl.focusIndex = ctrl.tabs.indexOf(focusItem);
$timeout(updateInkBarStyles, 0, false);
}

@@ -325,15 +514,2 @@

function handleOffsetChange (left) {
var newValue = shouldCenterTabs() ? '' : '-' + left + 'px';
angular.element(elements.paging).css('transform', 'translate3d(' + newValue + ', 0, 0)');
$scope.$broadcast('$mdTabsPaginationChanged');
}
function handleFocusIndexChange (newIndex, oldIndex) {
if (newIndex === oldIndex) return;
if (!elements.tabs[newIndex]) return;
adjustOffset();
redirectFocus();
}
function redirectFocus () {

@@ -352,8 +528,2 @@ elements.dummies[ctrl.focusIndex].focus();

function handleWindowResize () {
ctrl.lastSelectedIndex = $scope.selectedIndex;
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft);
$timeout(updateInkBarStyles, 0, false);
}
function processQueue () {

@@ -364,22 +534,2 @@ queue.forEach(function (func) { $timeout(func); });

function insertTab (tabData, index) {
var proto = {
getIndex: function () { return ctrl.tabs.indexOf(tab); },
isActive: function () { return this.getIndex() === $scope.selectedIndex; },
isLeft: function () { return this.getIndex() < $scope.selectedIndex; },
isRight: function () { return this.getIndex() > $scope.selectedIndex; },
hasFocus: function () { return !ctrl.lastClick && ctrl.hasFocus && this.getIndex() === ctrl.focusIndex; },
id: $mdUtil.nextUid()
},
tab = angular.extend(proto, tabData);
if (angular.isDefined(index)) {
ctrl.tabs.splice(index, 0, tab);
} else {
ctrl.tabs.push(tab);
}
processQueue();
updateHasContent();
return tab;
}
function updateHasContent () {

@@ -393,11 +543,2 @@ var hasContent = false;

function removeTab (tabData) {
ctrl.tabs.splice(tabData.getIndex(), 1);
refreshIndex();
$timeout(function () {
updateInkBarStyles();
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft);
});
}
function refreshIndex () {

@@ -408,35 +549,2 @@ $scope.selectedIndex = getNearestSafeIndex($scope.selectedIndex);

function handleSelectedIndexChange (newValue, oldValue) {
if (newValue === oldValue) return;
$scope.selectedIndex = getNearestSafeIndex(newValue);
ctrl.lastSelectedIndex = oldValue;
updateInkBarStyles();
updateHeightFromContent();
$scope.$broadcast('$mdTabsChanged');
ctrl.tabs[oldValue] && ctrl.tabs[oldValue].scope.deselect();
ctrl.tabs[newValue] && ctrl.tabs[newValue].scope.select();
}
function handleResizeWhenVisible () {
//-- if there is already a watcher waiting for resize, do nothing
if (handleResizeWhenVisible.watcher) return;
//-- otherwise, we will abuse the $watch function to check for visible
handleResizeWhenVisible.watcher = $scope.$watch(function () {
//-- since we are checking for DOM size, we use $timeout to wait for after the DOM updates
$timeout(function () {
//-- if the watcher has already run (ie. multiple digests in one cycle), do nothing
if (!handleResizeWhenVisible.watcher) return;
if ($element.prop('offsetParent')) {
handleResizeWhenVisible.watcher();
handleResizeWhenVisible.watcher = null;
//-- we have to trigger our own $apply so that the DOM bindings will update
$scope.$apply(handleWindowResize);
}
}, 0, false);
});
}
function updateHeightFromContent () {

@@ -465,3 +573,4 @@ if (!$scope.dynamicHeight) return $element.css('height', '');

function updateInkBarStyles () {
if (!ctrl.tabs.length) return queue.push(updateInkBarStyles);
if (!elements.tabs[$scope.selectedIndex]) return;
if (!ctrl.tabs.length) return queue.push(ctrl.updateInkBarStyles);
//-- if the element is not visible, we will not be able to calculate sizes until it is

@@ -492,44 +601,2 @@ //-- we should treat that as a resize event rather than just updating the ink bar

function getNearestSafeIndex(newIndex) {
var maxOffset = Math.max(ctrl.tabs.length - newIndex, newIndex),
i, tab;
for (i = 0; i <= maxOffset; i++) {
tab = ctrl.tabs[newIndex + i];
if (tab && (tab.scope.disabled !== true)) return tab.getIndex();
tab = ctrl.tabs[newIndex - i];
if (tab && (tab.scope.disabled !== true)) return tab.getIndex();
}
return newIndex;
}
function shouldStretchTabs () {
switch ($scope.stretchTabs) {
case 'always': return true;
case 'never': return false;
default: return !shouldPaginate() && $window.matchMedia('(max-width: 600px)').matches;
}
}
function shouldCenterTabs () {
return $scope.centerTabs && !shouldPaginate();
}
function shouldPaginate () {
if ($scope.noPagination) return false;
var canvasWidth = $element.prop('clientWidth');
angular.forEach(elements.tabs, function (tab) { canvasWidth -= tab.offsetWidth; });
return canvasWidth < 0;
}
function select (index) {
if (!locked) ctrl.focusIndex = $scope.selectedIndex = index;
ctrl.lastClick = true;
}
function scroll (event) {
if (!shouldPaginate()) return;
event.preventDefault();
ctrl.offsetLeft = fixOffset(ctrl.offsetLeft - event.wheelDelta);
}
function fixOffset (value) {

@@ -544,31 +611,2 @@ if (!elements.tabs.length || !shouldPaginate()) return 0;

function nextPage () {
var viewportWidth = elements.canvas.clientWidth,
totalWidth = viewportWidth + ctrl.offsetLeft,
i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
if (tab.offsetLeft + tab.offsetWidth > totalWidth) break;
}
ctrl.offsetLeft = fixOffset(tab.offsetLeft);
}
function previousPage () {
var i, tab;
for (i = 0; i < elements.tabs.length; i++) {
tab = elements.tabs[i];
if (tab.offsetLeft + tab.offsetWidth >= ctrl.offsetLeft) break;
}
ctrl.offsetLeft = fixOffset(tab.offsetLeft + tab.offsetWidth - elements.canvas.clientWidth);
}
function canPageBack () {
return ctrl.offsetLeft > 0;
}
function canPageForward () {
var lastTab = elements.tabs[elements.tabs.length - 1];
return lastTab && lastTab.offsetLeft + lastTab.offsetWidth > elements.canvas.clientWidth + ctrl.offsetLeft;
}
function attachRipple (scope, element) {

@@ -678,3 +716,3 @@ var options = { colorElement: angular.element(elements.inkBar) };

template: function (element, attr) {
var content = attr["$mdTabsTemplate"] = element.html();
attr["$mdTabsTemplate"] = element.html();
return '\

@@ -823,3 +861,3 @@ <md-tabs-wrapper ng-class="{ \'md-stretch-tabs\': $mdTabsCtrl.shouldStretchTabs() }">\

function handleScope () {
scope.$watch('connected', function (value) { value ? reconnect() : disconnect(); });
scope.$watch('connected', function (value) { value === false ? disconnect() : reconnect(); });
scope.$on('$destroy', reconnect);

@@ -826,0 +864,0 @@ }

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(e,t,n){"use strict";function a(){function e(e,n,a,s){function d(){function e(){return a.label}function t(){var e=n.find("md-tab-label");return e.length?e.remove().html():void 0}function s(){var e=n.html();return n.empty(),e}a.label||(n.find("md-tab-label")[0]||n[0]).innerHTML;return e()||t()||s()}function i(){var e=n.find("md-tab-body"),t=e.length?e.html():a.label?n.html():null;return e.length?e.remove():a.label&&n.empty(),t}if(s){var r=n.parent()[0].getElementsByTagName("md-tab"),c=Array.prototype.indexOf.call(r,n[0]),o=s.insertTab({scope:e,parent:e.$parent,index:c,template:i(),label:d()},c);e.select=e.select||t.noop,e.deselect=e.deselect||t.noop,e.$watch("active",function(e){e&&s.select(o.getIndex())}),e.$watch("disabled",function(){s.refreshIndex()}),e.$watch(function(){return Array.prototype.indexOf.call(r,n[0])},function(e){o.index=e,s.updateTabOrder()}),e.$on("$destroy",function(){s.removeTab(o)})}}return{require:"^?mdTabs",terminal:!0,scope:{label:"@",active:"=?mdActive",disabled:"=?ngDisabled",select:"&?mdOnSelect",deselect:"&?mdOnDeselect"},link:e}}function s(){return{require:"^?mdTabs",link:function(e,t,n,a){a&&a.attachRipple(e,t)}}}function d(e){return{restrict:"A",compile:function(t,n){var a=e(n.mdTabScroll,null,!0);return function(e,t){t.on("mousewheel",function(t){e.$apply(function(){a(e,{$event:t})})})}}}}function i(e,n,a,s,d,i,r,c){function o(){e.$watch("selectedIndex",y),e.$watch("$mdTabsCtrl.focusIndex",h),e.$watch("$mdTabsCtrl.offsetLeft",p),e.$watch("$mdTabsCtrl.hasContent",l),t.element(a).on("resize",function(){e.$apply(T)}),s(P,0,!1),s(L,0,!1)}function l(e){n[e?"removeClass":"addClass"]("md-no-tab-content")}function m(){var e={};return e.wrapper=n[0].getElementsByTagName("md-tabs-wrapper")[0],e.canvas=e.wrapper.getElementsByTagName("md-tabs-canvas")[0],e.paging=e.canvas.getElementsByTagName("md-pagination-wrapper")[0],e.tabs=e.paging.getElementsByTagName("md-tab-item"),e.dummies=e.canvas.getElementsByTagName("md-dummy-tab"),e.inkBar=e.paging.getElementsByTagName("md-ink-bar")[0],e.contentsWrapper=n[0].getElementsByTagName("md-tabs-content-wrapper")[0],e.contents=e.contentsWrapper.getElementsByTagName("md-tab-content"),e}function f(t){switch(t.keyCode){case d.KEY_CODE.LEFT_ARROW:t.preventDefault(),u(-1,!0);break;case d.KEY_CODE.RIGHT_ARROW:t.preventDefault(),u(1,!0);break;case d.KEY_CODE.SPACE:case d.KEY_CODE.ENTER:t.preventDefault(),K||(e.selectedIndex=j.focusIndex)}j.lastClick=!1}function b(){var t=j.tabs[e.selectedIndex],n=j.tabs[j.focusIndex];j.tabs=j.tabs.sort(function(e,t){return e.index-t.index}),e.selectedIndex=j.tabs.indexOf(t),j.focusIndex=j.tabs.indexOf(n),s(P,0,!1)}function u(t,n){var a,s=n?j.focusIndex:e.selectedIndex;for(a=s+t;j.tabs[a]&&j.tabs[a].scope.disabled;a+=t);j.tabs[a]&&(n?j.focusIndex=a:e.selectedIndex=a)}function p(n){var a=B()?"":"-"+n+"px";t.element(U.paging).css("transform","translate3d("+a+", 0, 0)"),e.$broadcast("$mdTabsPaginationChanged")}function h(e,t){e!==t&&U.tabs[e]&&(x(),g())}function g(){U.dummies[j.focusIndex].focus()}function x(){if(!B()){var e=U.tabs[j.focusIndex],t=e.offsetLeft,n=e.offsetWidth+t;j.offsetLeft=Math.max(j.offsetLeft,D(n-U.canvas.clientWidth)),j.offsetLeft=Math.min(j.offsetLeft,D(t))}}function T(){j.lastSelectedIndex=e.selectedIndex,j.offsetLeft=D(j.offsetLeft),s(P,0,!1)}function $(){Y.forEach(function(e){s(e)}),Y=[]}function v(n,a){var s={getIndex:function(){return j.tabs.indexOf(d)},isActive:function(){return this.getIndex()===e.selectedIndex},isLeft:function(){return this.getIndex()<e.selectedIndex},isRight:function(){return this.getIndex()>e.selectedIndex},hasFocus:function(){return!j.lastClick&&j.hasFocus&&this.getIndex()===j.focusIndex},id:r.nextUid()},d=t.extend(s,n);return t.isDefined(a)?j.tabs.splice(a,0,d):j.tabs.push(d),$(),C(),d}function C(){var e=!1;t.forEach(j.tabs,function(t){t.template&&(e=!0)}),j.hasContent=e}function I(e){j.tabs.splice(e.getIndex(),1),w(),s(function(){P(),j.offsetLeft=D(j.offsetLeft)})}function w(){e.selectedIndex=S(e.selectedIndex),j.focusIndex=S(j.focusIndex)}function y(t,n){t!==n&&(e.selectedIndex=S(t),j.lastSelectedIndex=n,P(),L(),e.$broadcast("$mdTabsChanged"),j.tabs[n]&&j.tabs[n].scope.deselect(),j.tabs[t]&&j.tabs[t].scope.select())}function k(){k.watcher||(k.watcher=e.$watch(function(){s(function(){k.watcher&&n.prop("offsetParent")&&(k.watcher(),k.watcher=null,e.$apply(T))},0,!1)}))}function L(){if(!e.dynamicHeight)return n.css("height","");if(!j.tabs.length)return Y.push(L);var t=U.contents[e.selectedIndex],a=t?t.offsetHeight:0,s=U.wrapper.offsetHeight,d=a+s,i=n.prop("clientHeight");i!==d&&(K=!0,c.animate(n,{height:i+"px"},{height:d+"px"}).then(function(){n.css("height",""),K=!1}))}function P(){if(!j.tabs.length)return Y.push(P);if(!n.prop("offsetParent"))return k();var a=e.selectedIndex,s=U.paging.offsetWidth,d=U.tabs[a],i=d.offsetLeft,r=s-i-d.offsetWidth;E(),t.element(U.inkBar).css({left:i+"px",right:r+"px"})}function E(){var n=e.selectedIndex,a=j.lastSelectedIndex,s=t.element(U.inkBar);s.removeClass("md-left md-right"),t.isNumber(a)&&(a>n?s.addClass("md-left"):n>a&&s.addClass("md-right"))}function S(e){var t,n,a=Math.max(j.tabs.length-e,e);for(t=0;a>=t;t++){if(n=j.tabs[e+t],n&&n.scope.disabled!==!0)return n.getIndex();if(n=j.tabs[e-t],n&&n.scope.disabled!==!0)return n.getIndex()}return e}function W(){switch(e.stretchTabs){case"always":return!0;case"never":return!1;default:return!O()&&a.matchMedia("(max-width: 600px)").matches}}function B(){return e.centerTabs&&!O()}function O(){if(e.noPagination)return!1;var a=n.prop("clientWidth");return t.forEach(U.tabs,function(e){a-=e.offsetWidth}),0>a}function A(t){K||(j.focusIndex=e.selectedIndex=t),j.lastClick=!0}function N(e){O()&&(e.preventDefault(),j.offsetLeft=D(j.offsetLeft-e.wheelDelta))}function D(e){if(!U.tabs.length||!O())return 0;var t=U.tabs[U.tabs.length-1],n=t.offsetLeft+t.offsetWidth;return e=Math.max(0,e),e=Math.min(n-U.canvas.clientWidth,e)}function F(){var e,t,n=U.canvas.clientWidth,a=n+j.offsetLeft;for(e=0;e<U.tabs.length&&(t=U.tabs[e],!(t.offsetLeft+t.offsetWidth>a));e++);j.offsetLeft=D(t.offsetLeft)}function R(){var e,t;for(e=0;e<U.tabs.length&&(t=U.tabs[e],!(t.offsetLeft+t.offsetWidth>=j.offsetLeft));e++);j.offsetLeft=D(t.offsetLeft+t.offsetWidth-U.canvas.clientWidth)}function H(){return j.offsetLeft>0}function M(){var e=U.tabs[U.tabs.length-1];return e&&e.offsetLeft+e.offsetWidth>U.canvas.clientWidth+j.offsetLeft}function _(e,n){var a={colorElement:t.element(U.inkBar)};i.attach(e,n,a)}var j=this,K=!1,U=m(),Y=[];j.scope=e,j.parent=e.$parent,j.tabs=[],j.lastSelectedIndex=null,j.focusIndex=0,j.offsetLeft=0,j.hasContent=!1,j.hasFocus=!1,j.lastClick=!0,j.redirectFocus=g,j.attachRipple=_,j.shouldStretchTabs=W,j.shouldPaginate=O,j.shouldCenterTabs=B,j.insertTab=v,j.removeTab=I,j.select=A,j.scroll=N,j.nextPage=F,j.previousPage=R,j.keydown=f,j.canPageForward=M,j.canPageBack=H,j.refreshIndex=w,j.incrementSelectedIndex=u,j.updateInkBarStyles=P,j.updateTabOrder=r.debounce(b,100),o()}function r(e,n,a){return{scope:{noPagination:"=?mdNoPagination",dynamicHeight:"=?mdDynamicHeight",centerTabs:"=?mdCenterTabs",selectedIndex:"=?mdSelected",stretchTabs:"@?mdStretchTabs"},template:function(e,t){t.$mdTabsTemplate=e.html();return' <md-tabs-wrapper ng-class="{ \'md-stretch-tabs\': $mdTabsCtrl.shouldStretchTabs() }"> <md-tab-data></md-tab-data> <md-prev-button tabindex="-1" role="button" aria-label="Previous Page" aria-disabled="{{!$mdTabsCtrl.canPageBack()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageBack() }" ng-if="$mdTabsCtrl.shouldPaginate()" ng-click="$mdTabsCtrl.previousPage()"> <md-icon md-svg-icon="md-tabs-arrow"></md-icon> </md-prev-button> <md-next-button tabindex="-1" role="button" aria-label="Next Page" aria-disabled="{{!$mdTabsCtrl.canPageForward()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageForward() }" ng-if="$mdTabsCtrl.shouldPaginate()" ng-click="$mdTabsCtrl.nextPage()"> <md-icon md-svg-icon="md-tabs-arrow"></md-icon> </md-next-button> <md-tabs-canvas tabindex="0" aria-activedescendant="tab-item-{{$mdTabsCtrl.tabs[$mdTabsCtrl.focusIndex].id}}" ng-focus="$mdTabsCtrl.redirectFocus()" ng-class="{ \'md-paginated\': $mdTabsCtrl.shouldPaginate(), \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs() }" ng-keydown="$mdTabsCtrl.keydown($event)" role="tablist"> <md-pagination-wrapper ng-class="{ \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs() }" md-tab-scroll="$mdTabsCtrl.scroll($event)"> <md-tab-item tabindex="-1" class="md-tab" style="max-width: {{ tabWidth ? tabWidth + \'px\' : \'none\' }}" ng-repeat="tab in $mdTabsCtrl.tabs" role="tab" aria-controls="tab-content-{{tab.id}}" aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-click="$mdTabsCtrl.select(tab.getIndex())" ng-class="{ \'md-active\': tab.isActive(), \'md-focused\': tab.hasFocus(), \'md-disabled\': tab.scope.disabled }" ng-disabled="tab.scope.disabled" md-swipe-left="$mdTabsCtrl.nextPage()" md-swipe-right="$mdTabsCtrl.previousPage()" md-template="tab.label" md-scope="tab.parent"></md-tab-item> <md-ink-bar ng-hide="noInkBar"></md-ink-bar> </md-pagination-wrapper> <div class="md-visually-hidden md-dummy-wrapper"> <md-dummy-tab tabindex="-1" id="tab-item-{{tab.id}}" role="tab" aria-controls="tab-content-{{tab.id}}" aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-focus="$mdTabsCtrl.hasFocus = true" ng-blur="$mdTabsCtrl.hasFocus = false" ng-repeat="tab in $mdTabsCtrl.tabs" md-template="tab.label" md-scope="tab.parent"></md-dummy-tab> </div> </md-tabs-canvas> </md-tabs-wrapper> <md-tabs-content-wrapper ng-show="$mdTabsCtrl.hasContent"> <md-tab-content id="tab-content-{{tab.id}}" role="tabpanel" aria-labelledby="tab-item-{{tab.id}}" md-swipe-left="$mdTabsCtrl.incrementSelectedIndex(1)" md-swipe-right="$mdTabsCtrl.incrementSelectedIndex(-1)" ng-if="$mdTabsCtrl.hasContent" ng-repeat="(index, tab) in $mdTabsCtrl.tabs" md-template="tab.template" md-scope="tab.parent" md-connected-if="tab.isActive()" ng-class="{ \'md-no-transition\': $mdTabsCtrl.lastSelectedIndex == null, \'md-active\': tab.isActive(), \'md-left\': tab.isLeft(), \'md-right\': tab.isRight(), \'md-no-scroll\': dynamicHeight }"></md-tab-content> </md-tabs-content-wrapper> '},controller:"MdTabsController",controllerAs:"$mdTabsCtrl",link:function(s,d,i){function r(e){var t=d.find("md-tab-data");t.html(e),a(t.contents())(s.$parent)}r(i.$mdTabsTemplate),delete i.$mdTabsTemplate,n.initOptionalProperties(s,i),i.$observe("mdNoBar",function(e){s.noInkBar=t.isDefined(e)}),s.selectedIndex=t.isNumber(s.selectedIndex)?s.selectedIndex:0,e(d)}}}function c(e,t,n){function a(a,s,d,i){function r(){a.$watch("connected",function(e){e?o():c()}),a.$on("$destroy",o)}function c(){t.disconnectScope(l)}function o(){t.reconnectScope(l)}if(i){var l=a.compileScope.$new();return s.html(a.template),e(s.contents())(l),n(r)}}return{restrict:"A",link:a,scope:{template:"=mdTemplate",compileScope:"=mdScope",connected:"=?mdConnectedIf"},require:"^?mdTabs"}}t.module("material.components.tabs",["material.core","material.components.icon"]),t.module("material.components.tabs").directive("mdTab",a),t.module("material.components.tabs").directive("mdTabItem",s),t.module("material.components.tabs").directive("mdTabScroll",d),d.$inject=["$parse"],t.module("material.components.tabs").controller("MdTabsController",i),i.$inject=["$scope","$element","$window","$timeout","$mdConstant","$mdTabInkRipple","$mdUtil","$animate"],t.module("material.components.tabs").directive("mdTabs",r),r.$inject=["$mdTheming","$mdUtil","$compile"],t.module("material.components.tabs").directive("mdTemplate",c),c.$inject=["$compile","$mdUtil","$timeout"]}(window,window.angular);
!function(e,t,n){"use strict";function a(){function e(e,n,a,s){if(s){var d=n.parent()[0].getElementsByTagName("md-tab"),i=Array.prototype.indexOf.call(d,n[0]),r=s.insertTab({scope:e,parent:e.$parent,index:i,element:n,template:n.find("md-tab-body").html(),label:n.find("md-tab-label").html()},i);e.select=e.select||t.noop,e.deselect=e.deselect||t.noop,e.$watch("active",function(e){e&&s.select(r.getIndex())}),e.$watch("disabled",function(){s.refreshIndex()}),e.$watch(function(){return Array.prototype.indexOf.call(d,n[0])},function(e){r.index=e,s.updateTabOrder()}),e.$on("$destroy",function(){s.removeTab(r)})}}return{require:"^?mdTabs",terminal:!0,template:function(e,t){function n(){function n(){return t.label}function a(){var t=e.find("md-tab-label");return t.length?t.remove().html():void 0}function s(){var t=e.html();return e.empty(),t}return n()||a()||s()}function a(){var n=e.find("md-tab-body"),a=n.length?n.html():t.label?e.html():"";return n.length?n.remove():t.label&&e.empty(),a}var s=n(),d=a();return"<md-tab-label>"+s+"</md-tab-label><md-tab-body>"+d+"</md-tab-body>"},scope:{active:"=?mdActive",disabled:"=?ngDisabled",select:"&?mdOnSelect",deselect:"&?mdOnDeselect"},link:e}}function s(){return{require:"^?mdTabs",link:function(e,t,n,a){a&&a.attachRipple(e,t)}}}function d(){return{terminal:!0}}function i(e){return{restrict:"A",compile:function(t,n){var a=e(n.mdTabScroll,null,!0);return function(e,t){t.on("mousewheel",function(t){e.$apply(function(){a(e,{$event:t})})})}}}}function r(e,n,a,s,d,i,r,c){function o(){e.$watch("selectedIndex",u),e.$watch("$mdTabsCtrl.focusIndex",b),e.$watch("$mdTabsCtrl.offsetLeft",f),e.$watch("$mdTabsCtrl.hasContent",m),t.element(a).on("resize",v),t.element(Y.paging).on("DOMSubtreeModified",K.updateInkBarStyles),s(M,0,!1),s(D),e.$on("$destroy",l)}function l(){t.element(a).off("resize",v),t.element(Y.paging).off("DOMSubtreeModified",K.updateInkBarStyles)}function m(e){n[e?"removeClass":"addClass"]("md-no-tab-content")}function f(n){var a=S()?"":"-"+n+"px";t.element(Y.paging).css("transform","translate3d("+a+", 0, 0)"),e.$broadcast("$mdTabsPaginationChanged")}function b(e,t){e!==t&&Y.tabs[e]&&(D(),O())}function u(t,n){t!==n&&(e.selectedIndex=B(t),K.lastSelectedIndex=n,K.updateInkBarStyles(),M(),e.$broadcast("$mdTabsChanged"),K.tabs[n]&&K.tabs[n].scope.deselect(),K.tabs[t]&&K.tabs[t].scope.select())}function p(){p.watcher||(p.watcher=e.$watch(function(){s(function(){p.watcher&&n.prop("offsetParent")&&(p.watcher(),p.watcher=null,v())},0,!1)}))}function h(t){switch(t.keyCode){case d.KEY_CODE.LEFT_ARROW:t.preventDefault(),W(-1,!0);break;case d.KEY_CODE.RIGHT_ARROW:t.preventDefault(),W(1,!0);break;case d.KEY_CODE.SPACE:case d.KEY_CODE.ENTER:t.preventDefault(),U||(e.selectedIndex=K.focusIndex)}K.lastClick=!1}function g(t){U||(K.focusIndex=e.selectedIndex=t),K.lastClick=!0,K.tabs[t].element.triggerHandler("click")}function x(e){P()&&(e.preventDefault(),K.offsetLeft=_(K.offsetLeft-e.wheelDelta))}function T(){var e,t,n=Y.canvas.clientWidth,a=n+K.offsetLeft;for(e=0;e<Y.tabs.length&&(t=Y.tabs[e],!(t.offsetLeft+t.offsetWidth>a));e++);K.offsetLeft=_(t.offsetLeft)}function $(){var e,t;for(e=0;e<Y.tabs.length&&(t=Y.tabs[e],!(t.offsetLeft+t.offsetWidth>=K.offsetLeft));e++);K.offsetLeft=_(t.offsetLeft+t.offsetWidth-Y.canvas.clientWidth)}function v(){e.$apply(function(){K.lastSelectedIndex=e.selectedIndex,K.offsetLeft=_(K.offsetLeft),s(K.updateInkBarStyles,0,!1)})}function I(t){var n=e.selectedIndex,a=K.tabs.splice(t.getIndex(),1)[0];F(),e.selectedIndex===n&&(a.scope.deselect(),K.tabs[e.selectedIndex]&&K.tabs[e.selectedIndex].scope.select()),s(function(){K.offsetLeft=_(K.offsetLeft)})}function C(n,a){var s={getIndex:function(){return K.tabs.indexOf(d)},isActive:function(){return this.getIndex()===e.selectedIndex},isLeft:function(){return this.getIndex()<e.selectedIndex},isRight:function(){return this.getIndex()>e.selectedIndex},hasFocus:function(){return!K.lastClick&&K.hasFocus&&this.getIndex()===K.focusIndex},id:r.nextUid()},d=t.extend(s,n);return t.isDefined(a)?K.tabs.splice(a,0,d):K.tabs.push(d),A(),N(),d}function w(){var e={};return e.wrapper=n[0].getElementsByTagName("md-tabs-wrapper")[0],e.canvas=e.wrapper.getElementsByTagName("md-tabs-canvas")[0],e.paging=e.canvas.getElementsByTagName("md-pagination-wrapper")[0],e.tabs=e.paging.getElementsByTagName("md-tab-item"),e.dummies=e.canvas.getElementsByTagName("md-dummy-tab"),e.inkBar=e.paging.getElementsByTagName("md-ink-bar")[0],e.contentsWrapper=n[0].getElementsByTagName("md-tabs-content-wrapper")[0],e.contents=e.contentsWrapper.getElementsByTagName("md-tab-content"),e}function y(){return K.offsetLeft>0}function k(){var e=Y.tabs[Y.tabs.length-1];return e&&e.offsetLeft+e.offsetWidth>Y.canvas.clientWidth+K.offsetLeft}function L(){switch(e.stretchTabs){case"always":return!0;case"never":return!1;default:return!P()&&a.matchMedia("(max-width: 600px)").matches}}function S(){return e.centerTabs&&!P()}function P(){if(e.noPagination)return!1;var a=n.prop("clientWidth");return t.forEach(Y.tabs,function(e){a-=e.offsetWidth}),0>a}function B(e){var t,n,a=Math.max(K.tabs.length-e,e);for(t=0;a>=t;t++){if(n=K.tabs[e+t],n&&n.scope.disabled!==!0)return n.getIndex();if(n=K.tabs[e-t],n&&n.scope.disabled!==!0)return n.getIndex()}return e}function E(){var t=K.tabs[e.selectedIndex],n=K.tabs[K.focusIndex];K.tabs=K.tabs.sort(function(e,t){return e.index-t.index}),e.selectedIndex=K.tabs.indexOf(t),K.focusIndex=K.tabs.indexOf(n)}function W(t,n){var a,s=n?K.focusIndex:e.selectedIndex;for(a=s+t;K.tabs[a]&&K.tabs[a].scope.disabled;a+=t);K.tabs[a]&&(n?K.focusIndex=a:e.selectedIndex=a)}function O(){Y.dummies[K.focusIndex].focus()}function D(){if(!S()){var e=Y.tabs[K.focusIndex],t=e.offsetLeft,n=e.offsetWidth+t;K.offsetLeft=Math.max(K.offsetLeft,_(n-Y.canvas.clientWidth)),K.offsetLeft=Math.min(K.offsetLeft,_(t))}}function A(){q.forEach(function(e){s(e)}),q=[]}function N(){var e=!1;t.forEach(K.tabs,function(t){t.template&&(e=!0)}),K.hasContent=e}function F(){e.selectedIndex=B(e.selectedIndex),K.focusIndex=B(K.focusIndex)}function M(){if(!e.dynamicHeight)return n.css("height","");if(!K.tabs.length)return q.push(M);var t=Y.contents[e.selectedIndex],a=t?t.offsetHeight:0,s=Y.wrapper.offsetHeight,d=a+s,i=n.prop("clientHeight");i!==d&&(U=!0,c.animate(n,{height:i+"px"},{height:d+"px"}).then(function(){n.css("height",""),U=!1}))}function R(){if(Y.tabs[e.selectedIndex]){if(!K.tabs.length)return q.push(K.updateInkBarStyles);if(!n.prop("offsetParent"))return p();var a=e.selectedIndex,s=Y.paging.offsetWidth,d=Y.tabs[a],i=d.offsetLeft,r=s-i-d.offsetWidth;H(),t.element(Y.inkBar).css({left:i+"px",right:r+"px"})}}function H(){var n=e.selectedIndex,a=K.lastSelectedIndex,s=t.element(Y.inkBar);s.removeClass("md-left md-right"),t.isNumber(a)&&(a>n?s.addClass("md-left"):n>a&&s.addClass("md-right"))}function _(e){if(!Y.tabs.length||!P())return 0;var t=Y.tabs[Y.tabs.length-1],n=t.offsetLeft+t.offsetWidth;return e=Math.max(0,e),e=Math.min(n-Y.canvas.clientWidth,e)}function j(e,n){var a={colorElement:t.element(Y.inkBar)};i.attach(e,n,a)}var K=this,U=!1,Y=w(),q=[];K.scope=e,K.parent=e.$parent,K.tabs=[],K.lastSelectedIndex=null,K.focusIndex=e.selectedIndex||0,K.offsetLeft=0,K.hasContent=!1,K.hasFocus=!1,K.lastClick=!0,K.redirectFocus=O,K.attachRipple=j,K.shouldStretchTabs=L,K.shouldPaginate=P,K.shouldCenterTabs=S,K.insertTab=C,K.removeTab=I,K.select=g,K.scroll=x,K.nextPage=T,K.previousPage=$,K.keydown=h,K.canPageForward=k,K.canPageBack=y,K.refreshIndex=F,K.incrementSelectedIndex=W,K.updateInkBarStyles=r.debounce(R,100),K.updateTabOrder=r.debounce(E,100),o()}function c(e,n,a){return{scope:{noPagination:"=?mdNoPagination",dynamicHeight:"=?mdDynamicHeight",centerTabs:"=?mdCenterTabs",selectedIndex:"=?mdSelected",stretchTabs:"@?mdStretchTabs"},template:function(e,t){return t.$mdTabsTemplate=e.html(),' <md-tabs-wrapper ng-class="{ \'md-stretch-tabs\': $mdTabsCtrl.shouldStretchTabs() }"> <md-tab-data></md-tab-data> <md-prev-button tabindex="-1" role="button" aria-label="Previous Page" aria-disabled="{{!$mdTabsCtrl.canPageBack()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageBack() }" ng-if="$mdTabsCtrl.shouldPaginate()" ng-click="$mdTabsCtrl.previousPage()"> <md-icon md-svg-icon="md-tabs-arrow"></md-icon> </md-prev-button> <md-next-button tabindex="-1" role="button" aria-label="Next Page" aria-disabled="{{!$mdTabsCtrl.canPageForward()}}" ng-class="{ \'md-disabled\': !$mdTabsCtrl.canPageForward() }" ng-if="$mdTabsCtrl.shouldPaginate()" ng-click="$mdTabsCtrl.nextPage()"> <md-icon md-svg-icon="md-tabs-arrow"></md-icon> </md-next-button> <md-tabs-canvas tabindex="0" aria-activedescendant="tab-item-{{$mdTabsCtrl.tabs[$mdTabsCtrl.focusIndex].id}}" ng-focus="$mdTabsCtrl.redirectFocus()" ng-class="{ \'md-paginated\': $mdTabsCtrl.shouldPaginate(), \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs() }" ng-keydown="$mdTabsCtrl.keydown($event)" role="tablist"> <md-pagination-wrapper ng-class="{ \'md-center-tabs\': $mdTabsCtrl.shouldCenterTabs() }" md-tab-scroll="$mdTabsCtrl.scroll($event)"> <md-tab-item tabindex="-1" class="md-tab" style="max-width: {{ tabWidth ? tabWidth + \'px\' : \'none\' }}" ng-repeat="tab in $mdTabsCtrl.tabs" role="tab" aria-controls="tab-content-{{tab.id}}" aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-click="$mdTabsCtrl.select(tab.getIndex())" ng-class="{ \'md-active\': tab.isActive(), \'md-focused\': tab.hasFocus(), \'md-disabled\': tab.scope.disabled }" ng-disabled="tab.scope.disabled" md-swipe-left="$mdTabsCtrl.nextPage()" md-swipe-right="$mdTabsCtrl.previousPage()" md-template="tab.label" md-scope="tab.parent"></md-tab-item> <md-ink-bar ng-hide="noInkBar"></md-ink-bar> </md-pagination-wrapper> <div class="md-visually-hidden md-dummy-wrapper"> <md-dummy-tab tabindex="-1" id="tab-item-{{tab.id}}" role="tab" aria-controls="tab-content-{{tab.id}}" aria-selected="{{tab.isActive()}}" aria-disabled="{{tab.scope.disabled || \'false\'}}" ng-focus="$mdTabsCtrl.hasFocus = true" ng-blur="$mdTabsCtrl.hasFocus = false" ng-repeat="tab in $mdTabsCtrl.tabs" md-template="tab.label" md-scope="tab.parent"></md-dummy-tab> </div> </md-tabs-canvas> </md-tabs-wrapper> <md-tabs-content-wrapper ng-show="$mdTabsCtrl.hasContent"> <md-tab-content id="tab-content-{{tab.id}}" role="tabpanel" aria-labelledby="tab-item-{{tab.id}}" md-swipe-left="$mdTabsCtrl.incrementSelectedIndex(1)" md-swipe-right="$mdTabsCtrl.incrementSelectedIndex(-1)" ng-if="$mdTabsCtrl.hasContent" ng-repeat="(index, tab) in $mdTabsCtrl.tabs" md-template="tab.template" md-scope="tab.parent" md-connected-if="tab.isActive()" ng-class="{ \'md-no-transition\': $mdTabsCtrl.lastSelectedIndex == null, \'md-active\': tab.isActive(), \'md-left\': tab.isLeft(), \'md-right\': tab.isRight(), \'md-no-scroll\': dynamicHeight }"></md-tab-content> </md-tabs-content-wrapper> '},controller:"MdTabsController",controllerAs:"$mdTabsCtrl",link:function(s,d,i){function r(e){var t=d.find("md-tab-data");t.html(e),a(t.contents())(s.$parent)}r(i.$mdTabsTemplate),delete i.$mdTabsTemplate,n.initOptionalProperties(s,i),i.$observe("mdNoBar",function(e){s.noInkBar=t.isDefined(e)}),s.selectedIndex=t.isNumber(s.selectedIndex)?s.selectedIndex:0,e(d)}}}function o(e,t,n){function a(a,s,d,i){function r(){a.$watch("connected",function(e){e===!1?c():o()}),a.$on("$destroy",o)}function c(){t.disconnectScope(l)}function o(){t.reconnectScope(l)}if(i){var l=a.compileScope.$new();return s.html(a.template),e(s.contents())(l),n(r)}}return{restrict:"A",link:a,scope:{template:"=mdTemplate",compileScope:"=mdScope",connected:"=?mdConnectedIf"},require:"^?mdTabs"}}t.module("material.components.tabs",["material.core","material.components.icon"]),t.module("material.components.tabs").directive("mdTab",a),t.module("material.components.tabs").directive("mdTabItem",s),t.module("material.components.tabs").directive("mdTabLabel",d),t.module("material.components.tabs").directive("mdTabScroll",i),i.$inject=["$parse"],t.module("material.components.tabs").controller("MdTabsController",r),r.$inject=["$scope","$element","$window","$timeout","$mdConstant","$mdTabInkRipple","$mdUtil","$animate"],t.module("material.components.tabs").directive("mdTabs",c),c.$inject=["$mdTheming","$mdUtil","$compile"],t.module("material.components.tabs").directive("mdTemplate",o),o.$inject=["$compile","$mdUtil","$timeout"]}(window,window.angular);
{
"name": "angular-material-toast",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-button": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-button": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -189,3 +189,3 @@ (function( window, angular, undefined ){

methods: ['content', 'action', 'highlightAction', 'theme', 'parent'],
options: /* @ngInject */ ["$mdToast", "$mdTheming", function($mdToast, $mdTheming) {
options: /* ngInject */ ["$mdToast", "$mdTheming", function($mdToast, $mdTheming) {
var opts = {

@@ -200,3 +200,3 @@ template: [

].join(''),
controller: /* @ngInject */ ["$scope", function mdToastCtrl($scope) {
controller: /* ngInject */ ["$scope", function mdToastCtrl($scope) {
var self = this;

@@ -224,3 +224,3 @@ $scope.$watch(function() { return activeToastContent; }, function() {

/* @ngInject */
/* ngInject */
function toastDefaultOptions($timeout, $animate, $mdToast, $mdUtil) {

@@ -227,0 +227,0 @@ return {

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(t,e,n){"use strict";function o(){return{restrict:"E"}}function i(t){function e(t,e,o,i){function a(a,s,m){return s=i.extractElementByName(s,"md-toast"),n=m.content,s.addClass(m.position.split(" ").map(function(t){return"md-"+t}).join(" ")),m.parent.addClass(r(m.position)),m.onSwipe=function(e,n){s.addClass("md-"+e.type.replace("$md.","")),t(o.cancel)},s.on("$md.swipeleft $md.swiperight",m.onSwipe),e.enter(s,m.parent)}function s(t,n,o){return n.off("$md.swipeleft $md.swiperight",o.onSwipe),o.parent.removeClass(r(o.position)),e.leave(n)}function r(t){return"md-toast-open-"+(t.indexOf("top")>-1?"top":"bottom")}return{onShow:a,onRemove:s,position:"bottom left",themable:!0,hideDelay:3e3}}var n,o=t("$mdToast").setDefaults({methods:["position","hideDelay","capsule"],options:e}).addPreset("simple",{argOption:"content",methods:["content","action","highlightAction","theme","parent"],options:["$mdToast","$mdTheming",function(t,e){var o={template:['<md-toast md-theme="{{ toast.theme }}" ng-class="{\'md-capsule\': toast.capsule}">',"<span flex>{{ toast.content }}</span>",'<md-button class="md-action" ng-if="toast.action" ng-click="toast.resolve()" ng-class="{\'md-highlight\': toast.highlightAction}">',"{{ toast.action }}","</md-button>","</md-toast>"].join(""),controller:["$scope",function(e){var o=this;e.$watch(function(){return n},function(){o.content=n}),this.resolve=function(){t.hide()}}],theme:e.defaultTheme(),controllerAs:"toast",bindToController:!0};return o}]}).addMethod("updateContent",function(t){n=t});return e.$inject=["$timeout","$animate","$mdToast","$mdUtil"],o}e.module("material.components.toast",["material.core","material.components.button"]).directive("mdToast",o).provider("$mdToast",i),i.$inject=["$$interimElementProvider"]}(window,window.angular);
{
"name": "angular-material-toolbar",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6",
"angular-material-content": "0.9.6"
"angular-material-core": "0.9.7",
"angular-material-content": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(t,n,o){"use strict";function e(t,o,e,r,a,i){return{restrict:"E",controller:n.noop,link:function(s,c,m){function l(){function n(n,o){c.parent()[0]===o.parent()[0]&&(f&&f.off("scroll",S),o.on("scroll",S),o.attr("scroll-shrink","true"),f=o,t(r))}function r(){d=c.prop("offsetHeight");var t=-d*h+"px";f.css("margin-top",t),f.css("margin-bottom",t),l()}function l(t){var n=t?t.target.scrollTop:p;$(),u=Math.min(d/h,Math.max(0,u+n-p)),c.css(o.CSS.TRANSFORM,"translate3d(0,"+-u*h+"px,0)"),f.css(o.CSS.TRANSFORM,"translate3d(0,"+(d-u)*h+"px,0)"),p=n,c.hasClass("md-whiteframe-z1")?u||i(function(){a.removeClass(c,"md-whiteframe-z1")}):u&&i(function(){a.addClass(c,"md-whiteframe-z1")})}var d,f,u=0,p=0,h=m.mdShrinkSpeedFactor||.5,S=t.throttle(l),$=e.debounce(r,5e3);s.$on("$mdContentLoaded",n)}r(c),n.isDefined(m.mdScrollShrink)&&l()}}}n.module("material.components.toolbar",["material.core","material.components.content"]).directive("mdToolbar",e),e.$inject=["$$rAF","$mdConstant","$mdUtil","$mdTheming","$animate","$timeout"]}(window,window.angular);
{
"name": "angular-material-tooltip",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {
"angular-material-core": "0.9.6"
"angular-material-core": "0.9.7"
}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -93,6 +93,2 @@ (function( window, angular, undefined ){

function configureWatchers () {
scope.$watch('visible', function (isVisible) {
if (isVisible) showTooltip();
else hideTooltip();
});
scope.$on('$destroy', function() {

@@ -103,2 +99,6 @@ scope.visible = false;

});
scope.$watch('visible', function (isVisible) {
if (isVisible) showTooltip();
else hideTooltip();
});
}

@@ -119,3 +119,3 @@

var parent = element.parent();
while ($window.getComputedStyle(parent[0])['pointer-events'] == 'none') {
while (parent && $window.getComputedStyle(parent[0])['pointer-events'] == 'none') {
parent = parent.parent();

@@ -136,6 +136,29 @@ }

function hasComputedStyleValue(key, value) {
// Check if we should show it or not...
var computedStyles = $window.getComputedStyle(element[0]);
return angular.isDefined(computedStyles[key]) && (computedStyles[key] == value);
}
function bindEvents () {
var autohide = scope.hasOwnProperty('autohide') ? scope.autohide : attr.hasOwnProperty('mdAutohide');
parent.on('focus mouseenter touchstart', function() { setVisible(true); });
parent.on('blur mouseleave touchend touchcancel', function() { if ($document[0].activeElement !== parent[0] || autohide) setVisible(false); });
var mouseActive = false;
var enterHandler = function() {
if (!hasComputedStyleValue('pointer-events','none')) {
setVisible(true);
}
};
var leaveHandler = function () {
var autohide = scope.hasOwnProperty('autohide') ? scope.autohide : attr.hasOwnProperty('mdAutohide');
if (autohide || mouseActive || ($document[0].activeElement !== parent[0]) ) {
setVisible(false);
}
mouseActive = false;
};
// to avoid `synthetic clicks` we listen to mousedown instead of `click`
parent.on('mousedown', function() { mouseActive = true; });
parent.on('focus mouseenter touchstart', enterHandler );
parent.on('blur mouseleave touchend touchcancel', leaveHandler );
angular.element($window).on('resize', debouncedOnResize);

@@ -166,4 +189,4 @@ }

// This handles hide-* and show-* along with any user defined css
var computedStyles = $window.getComputedStyle(element[0]);
if (angular.isDefined(computedStyles.display) && computedStyles.display == 'none') {
if ( hasComputedStyleValue('display','none') ) {
scope.visible = false;
element.detach();

@@ -170,0 +193,0 @@ return;

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(t,e,o){"use strict";function n(t,o,n,i,l,a,r,d,h){function u(u,s,p){function m(){v(),y(),M(),w(),g()}function v(){e.isDefined(p.mdDelay)||(u.delay=c)}function w(){u.$watch("visible",function(t){t?x():q()}),u.$on("$destroy",function(){u.visible=!1,s.remove(),e.element(o).off("resize",B)})}function g(){D.attr("aria-label")||D.text().trim()||D.attr("aria-label",s.text().trim())}function y(){s.detach(),s.attr("role","tooltip")}function b(){for(var t=s.parent();"none"==o.getComputedStyle(t[0])["pointer-events"];)t=t.parent();return t}function $(){for(var t=s.parent()[0];t&&t!==r[0]&&t!==document.body&&(!t.tagName||"md-content"!=t.tagName.toLowerCase());)t=t.parentNode;return t}function M(){var t=u.hasOwnProperty("autohide")?u.autohide:p.hasOwnProperty("mdAutohide");D.on("focus mouseenter touchstart",function(){C(!0)}),D.on("blur mouseleave touchend touchcancel",function(){(i[0].activeElement!==D[0]||t)&&C(!1)}),e.element(o).on("resize",B)}function C(e){C.value=!!e,C.queued||(e?(C.queued=!0,t(function(){u.visible=C.value,C.queued=!1},u.delay)):t(function(){u.visible=!1}))}function x(){z.append(s);var t=o.getComputedStyle(s[0]);return e.isDefined(t.display)&&"none"==t.display?void s.detach():(E(),void e.forEach([s,N,k],function(t){d.addClass(t,"md-show")}))}function q(){h.all([d.removeClass(k,"md-show"),d.removeClass(N,"md-show"),d.removeClass(s,"md-show")]).then(function(){u.visible||s.detach()})}function E(){function t(){var t="left"===A||"right"===A?2*Math.sqrt(Math.pow(n.width,2)+Math.pow(n.height/2,2)):2*Math.sqrt(Math.pow(n.width/2,2)+Math.pow(n.height,2)),e="left"===A?{left:100,top:50}:"right"===A?{left:0,top:50}:"top"===A?{left:50,top:100}:{left:50,top:0};N.css({width:t+"px",height:t+"px",left:e.left+"%",top:e.top+"%"})}function e(t){var e={left:t.left,top:t.top};return e.left=Math.min(e.left,z.prop("scrollWidth")-n.width-f),e.left=Math.max(e.left,f),e.top=Math.min(e.top,z.prop("scrollHeight")-n.height-f),e.top=Math.max(e.top,f),e}function o(t){return"left"===t?{left:i.left-n.width-f,top:i.top+i.height/2-n.height/2}:"right"===t?{left:i.left+i.width+f,top:i.top+i.height/2-n.height/2}:"top"===t?{left:i.left+i.width/2-n.width/2,top:i.top-n.height-f}:{left:i.left+i.width/2-n.width/2,top:i.top+i.height+f}}var n=l.offsetRect(s,z),i=l.offsetRect(D,z),a=o(A);A?a=e(a):a.top>s.prop("offsetParent").scrollHeight-n.height-f&&(a=e(o("top"))),s.css({top:a.top+"px",left:a.left+"px"}),t()}a(s);var D=b(),N=e.element(s[0].getElementsByClassName("md-background")[0]),k=e.element(s[0].getElementsByClassName("md-content")[0]),A=p.mdDirection,P=$(),z=e.element(P||document.body),B=n.throttle(function(){u.visible&&E()});return m()}var c=300,f=8;return{restrict:"E",transclude:!0,priority:210,template:' <div class="md-background"></div> <div class="md-content" ng-transclude></div>',scope:{visible:"=?mdVisible",delay:"=?mdDelay",autohide:"=?mdAutohide"},link:u}}e.module("material.components.tooltip",["material.core"]).directive("mdTooltip",n),n.$inject=["$timeout","$window","$$rAF","$document","$mdUtil","$mdTheming","$rootElement","$animate","$q"]}(window,window.angular);
!function(t,e,o){"use strict";function n(t,o,n,i,l,a,r,d,u){function h(h,s,p){function m(){v(),b(),C(),w(),g()}function v(){e.isDefined(p.mdDelay)||(h.delay=c)}function w(){h.$on("$destroy",function(){h.visible=!1,s.remove(),e.element(o).off("resize",H)}),h.$watch("visible",function(t){t?q():E()})}function g(){N.attr("aria-label")||N.text().trim()||N.attr("aria-label",s.text().trim())}function b(){s.detach(),s.attr("role","tooltip")}function y(){for(var t=s.parent();t&&"none"==o.getComputedStyle(t[0])["pointer-events"];)t=t.parent();return t}function $(){for(var t=s.parent()[0];t&&t!==r[0]&&t!==document.body&&(!t.tagName||"md-content"!=t.tagName.toLowerCase());)t=t.parentNode;return t}function M(t,n){var i=o.getComputedStyle(s[0]);return e.isDefined(i[t])&&i[t]==n}function C(){var t=!1,n=function(){M("pointer-events","none")||x(!0)},l=function(){var e=h.hasOwnProperty("autohide")?h.autohide:p.hasOwnProperty("mdAutohide");(e||t||i[0].activeElement!==N[0])&&x(!1),t=!1};N.on("mousedown",function(){t=!0}),N.on("focus mouseenter touchstart",n),N.on("blur mouseleave touchend touchcancel",l),e.element(o).on("resize",H)}function x(e){x.value=!!e,x.queued||(e?(x.queued=!0,t(function(){h.visible=x.value,x.queued=!1},h.delay)):t(function(){h.visible=!1}))}function q(){return B.append(s),M("display","none")?(h.visible=!1,void s.detach()):(D(),void e.forEach([s,k,A],function(t){d.addClass(t,"md-show")}))}function E(){u.all([d.removeClass(A,"md-show"),d.removeClass(k,"md-show"),d.removeClass(s,"md-show")]).then(function(){h.visible||s.detach()})}function D(){function t(){var t="left"===P||"right"===P?2*Math.sqrt(Math.pow(n.width,2)+Math.pow(n.height/2,2)):2*Math.sqrt(Math.pow(n.width/2,2)+Math.pow(n.height,2)),e="left"===P?{left:100,top:50}:"right"===P?{left:0,top:50}:"top"===P?{left:50,top:100}:{left:50,top:0};k.css({width:t+"px",height:t+"px",left:e.left+"%",top:e.top+"%"})}function e(t){var e={left:t.left,top:t.top};return e.left=Math.min(e.left,B.prop("scrollWidth")-n.width-f),e.left=Math.max(e.left,f),e.top=Math.min(e.top,B.prop("scrollHeight")-n.height-f),e.top=Math.max(e.top,f),e}function o(t){return"left"===t?{left:i.left-n.width-f,top:i.top+i.height/2-n.height/2}:"right"===t?{left:i.left+i.width+f,top:i.top+i.height/2-n.height/2}:"top"===t?{left:i.left+i.width/2-n.width/2,top:i.top-n.height-f}:{left:i.left+i.width/2-n.width/2,top:i.top+i.height+f}}var n=l.offsetRect(s,B),i=l.offsetRect(N,B),a=o(P);P?a=e(a):a.top>s.prop("offsetParent").scrollHeight-n.height-f&&(a=e(o("top"))),s.css({top:a.top+"px",left:a.left+"px"}),t()}a(s);var N=y(),k=e.element(s[0].getElementsByClassName("md-background")[0]),A=e.element(s[0].getElementsByClassName("md-content")[0]),P=p.mdDirection,z=$(),B=e.element(z||document.body),H=n.throttle(function(){h.visible&&D()});return m()}var c=300,f=8;return{restrict:"E",transclude:!0,priority:210,template:' <div class="md-background"></div> <div class="md-content" ng-transclude></div>',scope:{visible:"=?mdVisible",delay:"=?mdDelay",autohide:"=?mdAutohide"},link:h}}e.module("material.components.tooltip",["material.core"]).directive("mdTooltip",n),n.$inject=["$timeout","$window","$$rAF","$document","$mdUtil","$mdTheming","$rootElement","$animate","$q"]}(window,window.angular);
{
"name": "angular-material-whiteframe",
"version": "0.9.6",
"version": "0.9.7",
"dependencies": {}
}

@@ -5,3 +5,3 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/

@@ -8,0 +8,0 @@ (function( window, angular, undefined ){

@@ -5,4 +5,4 @@ /*!

* @license MIT
* v0.9.6
* v0.9.7
*/
!function(n,e,i){"use strict";e.module("material.components.whiteframe",[])}(window,window.angular);
{
"name": "angular-material",
"version": "0.9.6",
"version": "0.9.7",
"main": "index",

@@ -5,0 +5,0 @@ "format": "cjs",

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc