/** * angular-spinner version 0.6.2 * License: MIT. * Copyright (C) 2013, 2014, 2015, Uri Shaked and contributors. */ (function (root) { 'use strict'; function factory(angular, Spinner) { return angular .module('angularSpinner', []) .provider('usSpinnerConfig', function () { var _config = {}; return { setDefaults: function (config) { _config = config || _config; }, $get: function () { return { config: _config }; } }; }) .factory('usSpinnerService', ['$rootScope', function ($rootScope) { var config = {}; config.spin = function (key) { $rootScope.$broadcast('us-spinner:spin', key); }; config.stop = function (key) { $rootScope.$broadcast('us-spinner:stop', key); }; return config; }]) .directive('usSpinner', ['$window', 'usSpinnerConfig', function ($window, usSpinnerConfig) { return { scope: true, link: function (scope, element, attr) { var SpinnerConstructor = Spinner || $window.Spinner; scope.spinner = null; scope.key = angular.isDefined(attr.spinnerKey) ? attr.spinnerKey : false; scope.startActive = angular.isDefined(attr.spinnerStartActive) ? scope.$eval(attr.spinnerStartActive) : scope.key ? false : true; function stopSpinner() { if (scope.spinner) { scope.spinner.stop(); } } scope.spin = function () { if (scope.spinner) { scope.spinner.spin(element[0]); } }; scope.stop = function () { scope.startActive = false; stopSpinner(); }; scope.$watch(attr.usSpinner, function (options) { stopSpinner(); options = options || {}; for (var property in usSpinnerConfig.config) { if (options[property] === undefined) { options[property] = usSpinnerConfig.config[property]; } } scope.spinner = new SpinnerConstructor(options); if (!scope.key || scope.startActive) { scope.spinner.spin(element[0]); } }, true); scope.$on('us-spinner:spin', function (event, key) { if (key === scope.key) { scope.spin(); } }); scope.$on('us-spinner:stop', function (event, key) { if (key === scope.key) { scope.stop(); } }); scope.$on('$destroy', function () { scope.stop(); scope.spinner = null; }); } }; }]); } if (typeof define === 'function' && define.amd) { /* AMD module */ define(['angular', 'spin'], factory); } else { /* Browser global */ factory(root.angular); } }(window));