/** * State-based routing for AngularJS 1.x * @version v1.0.20 * @link https://ui-router.github.io * @license MIT License, http://www.opensource.org/licenses/MIT */ !function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("angular")):"function"==typeof define&&define.amd?define(["exports","angular"],e):e(t["@uirouter/angularjs-state-events"]={},t.angular)}(this,function(t,e){"use strict";var r=angular,n=e&&e.module?e:r;!function(){var c=n.isFunction,o=n.isString;function s(t,e){var r,n;if(Array.isArray(e)&&(r=e[0],n=e[1]),!o(r))throw new Error("invalid parameters to applyPairs");return t[r]=n,t}function i(e){if(e.options().notify&&e.valid()&&!e.ignored()){var t=e.injector(),r=t.get("$stateEvents"),n=t.get("$rootScope"),o=t.get("$state"),a=t.get("$urlRouter"),s=r.provider.enabled(),i=e.params("to"),u=e.params("from");if(s.$stateChangeSuccess){if(n.$broadcast("$stateChangeStart",e.to(),i,e.from(),u,e.options(),e).defaultPrevented)return s.$stateChangeCancel&&n.$broadcast("$stateChangeCancel",e.to(),i,e.from(),u,e.options(),e),null==o.transition&&a.update(),!1;e.onSuccess({},function(){n.$broadcast("$stateChangeSuccess",e.to(),i,e.from(),u,e.options(),e)},{priority:9999})}s.$stateChangeError&&e.promise.catch(function(t){(!t||2!==t.type&&3!==t.type)&&(n.$broadcast("$stateChangeError",e.to(),i,e.from(),u,t,e.options(),e).defaultPrevented||a.update())})}}function u(t,e,r){var n=r.get("$state"),o=r.get("$rootScope"),a=r.get("$urlRouter"),s={to:t.identifier(),toParams:t.params(),options:t.options()},i=o.$broadcast("$stateNotFound",s,e.state(),e.params());function u(){return n.target(s.to,s.toParams,s.options)}return(i.defaultPrevented||i.retry)&&a.update(),!i.defaultPrevented&&(i.retry||n.get(s.to)?i.retry&&c(i.retry.then)?i.retry.then(u):u():void 0)}function d(e){d.prototype.instance=this;var r=!1,n=["$stateChangeStart","$stateNotFound","$stateChangeSuccess","$stateChangeError"],o=n.map(function(t){return[t,!0]}).reduce(s,{});function a(){if(r)throw new Error("Cannot enable events at runtime (use $stateEventsProvider")}function t(t){return r=!0,o.$stateNotFound&&e.onInvalid(u),o.$stateChangeStart&&t.onBefore({},i,{priority:1e3}),{provider:d.prototype.instance}}this.enable=function(){for(var t=[],e=0;e