angular-material-npfixed
Version:
The Angular Material project is an implementation of Material Design in Angular.js. This project provides a set of reusable, well-tested, and accessible Material Design UI components. Angular Material is supported internally at Google by the Angular.js, M
99 lines (90 loc) • 2.49 kB
JavaScript
/**
* Initialization function that validates environment
* requirements.
*/
angular
.module('material.core', [
'ngAnimate',
'material.core.animate',
'material.core.layout',
'material.core.interaction',
'material.core.gestures',
'material.core.theming'
])
.config(MdCoreConfigure)
.run(DetectNgTouch);
/**
* Detect if the ng-Touch module is also being used.
* Warn if detected.
* @ngInject
*/
function DetectNgTouch($log, $injector) {
if ( $injector.has('$swipe') ) {
var msg = "" +
"You are using the ngTouch module. \n" +
"Angular Material already has mobile click, tap, and swipe support... \n" +
"ngTouch is not supported with Angular Material!";
$log.warn(msg);
}
}
/**
* @ngInject
*/
function MdCoreConfigure($provide, $mdThemingProvider) {
$provide.decorator('$$rAF', ['$delegate', rAFDecorator]);
$provide.decorator('$q', ['$delegate', qDecorator]);
$mdThemingProvider.theme('default')
.primaryPalette('indigo')
.accentPalette('pink')
.warnPalette('deep-orange')
.backgroundPalette('grey');
}
/**
* @ngInject
*/
function rAFDecorator($delegate) {
/**
* Use this to throttle events that come in often.
* The throttled function will always use the *last* invocation before the
* coming frame.
*
* For example, window resize events that fire many times a second:
* If we set to use an raf-throttled callback on window resize, then
* our callback will only be fired once per frame, with the last resize
* event that happened before that frame.
*
* @param {function} callback function to debounce
*/
$delegate.throttle = function(cb) {
var queuedArgs, alreadyQueued, queueCb, context;
return function debounced() {
queuedArgs = arguments;
context = this;
queueCb = cb;
if (!alreadyQueued) {
alreadyQueued = true;
$delegate(function() {
queueCb.apply(context, Array.prototype.slice.call(queuedArgs));
alreadyQueued = false;
});
}
};
};
return $delegate;
}
/**
* @ngInject
*/
function qDecorator($delegate) {
/**
* Adds a shim for $q.resolve for Angular version that don't have it,
* so we don't have to think about it.
*
* via https://github.com/angular/angular.js/pull/11987
*/
// TODO(crisbeto): this won't be necessary once we drop Angular 1.3
if (!$delegate.resolve) {
$delegate.resolve = $delegate.when;
}
return $delegate;
}