1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | exports.$stateNotFound = exports.$stateChangeError = exports.$stateChangeSuccess = exports.$stateChangeCancel = exports.$stateChangeStart = void 0;
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 |
|
22 |
|
23 |
|
24 | var angular_1 = require("../angular");
|
25 | (function () {
|
26 | var isFunction = angular_1.ng.isFunction, isString = angular_1.ng.isString;
|
27 | function applyPairs(memo, keyValTuple) {
|
28 | var key, value;
|
29 | if (Array.isArray(keyValTuple))
|
30 | key = keyValTuple[0], value = keyValTuple[1];
|
31 | if (!isString(key))
|
32 | throw new Error('invalid parameters to applyPairs');
|
33 | memo[key] = value;
|
34 | return memo;
|
35 | }
|
36 | function stateChangeStartHandler($transition$) {
|
37 | if (!$transition$.options().notify || !$transition$.valid() || $transition$.ignored())
|
38 | return;
|
39 | var $injector = $transition$.injector();
|
40 | var $stateEvents = $injector.get('$stateEvents');
|
41 | var $rootScope = $injector.get('$rootScope');
|
42 | var $state = $injector.get('$state');
|
43 | var $urlRouter = $injector.get('$urlRouter');
|
44 | var enabledEvents = $stateEvents.provider.enabled();
|
45 | var toParams = $transition$.params('to');
|
46 | var fromParams = $transition$.params('from');
|
47 | if (enabledEvents.$stateChangeSuccess) {
|
48 | var startEvent = $rootScope.$broadcast('$stateChangeStart', $transition$.to(), toParams, $transition$.from(), fromParams, $transition$.options(), $transition$);
|
49 | if (startEvent.defaultPrevented) {
|
50 | if (enabledEvents.$stateChangeCancel) {
|
51 | $rootScope.$broadcast('$stateChangeCancel', $transition$.to(), toParams, $transition$.from(), fromParams, $transition$.options(), $transition$);
|
52 | }
|
53 |
|
54 | if ($state.transition == null)
|
55 | $urlRouter.update();
|
56 | return false;
|
57 | }
|
58 |
|
59 | var successOpts = { priority: 9999 };
|
60 | $transition$.onSuccess({}, function () {
|
61 | $rootScope.$broadcast('$stateChangeSuccess', $transition$.to(), toParams, $transition$.from(), fromParams, $transition$.options(), $transition$);
|
62 | }, successOpts);
|
63 | }
|
64 | if (enabledEvents.$stateChangeError) {
|
65 | $transition$.promise['catch'](function (error) {
|
66 | if (error && (error.type === 2 || error.type === 3) )
|
67 | return;
|
68 | var evt = $rootScope.$broadcast('$stateChangeError', $transition$.to(), toParams, $transition$.from(), fromParams, error, $transition$.options(), $transition$);
|
69 | if (!evt.defaultPrevented) {
|
70 | $urlRouter.update();
|
71 | }
|
72 | });
|
73 | }
|
74 | }
|
75 | stateNotFoundHandler.$inject = ['$to$', '$from$', '$state', '$rootScope', '$urlRouter'];
|
76 | function stateNotFoundHandler($to$, $from$, injector) {
|
77 | var $state = injector.get('$state');
|
78 | var $rootScope = injector.get('$rootScope');
|
79 | var $urlRouter = injector.get('$urlRouter');
|
80 | var redirect = { to: $to$.identifier(), toParams: $to$.params(), options: $to$.options() };
|
81 | var e = $rootScope.$broadcast('$stateNotFound', redirect, $from$.state(), $from$.params());
|
82 | if (e.defaultPrevented || e.retry)
|
83 | $urlRouter.update();
|
84 | function redirectFn() {
|
85 | return $state.target(redirect.to, redirect.toParams, redirect.options);
|
86 | }
|
87 | if (e.defaultPrevented) {
|
88 | return false;
|
89 | }
|
90 | else if (e.retry || !!$state.get(redirect.to)) {
|
91 | return e.retry && isFunction(e.retry.then) ? e.retry.then(redirectFn) : redirectFn();
|
92 | }
|
93 | }
|
94 | $StateEventsProvider.$inject = ['$stateProvider'];
|
95 | function $StateEventsProvider($stateProvider) {
|
96 | $StateEventsProvider.prototype.instance = this;
|
97 | var runtime = false;
|
98 | var allEvents = ['$stateChangeStart', '$stateNotFound', '$stateChangeSuccess', '$stateChangeError'];
|
99 | var enabledStateEvents = allEvents.map(function (e) { return [e, true]; }).reduce(applyPairs, {});
|
100 | function assertNotRuntime() {
|
101 | if (runtime)
|
102 | throw new Error('Cannot enable events at runtime (use $stateEventsProvider');
|
103 | }
|
104 | |
105 |
|
106 |
|
107 |
|
108 | this.enable = function () {
|
109 | var events = [];
|
110 | for (var _i = 0; _i < arguments.length; _i++) {
|
111 | events[_i] = arguments[_i];
|
112 | }
|
113 | assertNotRuntime();
|
114 | if (!events || !events.length)
|
115 | events = allEvents;
|
116 | events.forEach(function (event) { return (enabledStateEvents[event] = true); });
|
117 | };
|
118 | |
119 |
|
120 |
|
121 |
|
122 | this.disable = function () {
|
123 | var events = [];
|
124 | for (var _i = 0; _i < arguments.length; _i++) {
|
125 | events[_i] = arguments[_i];
|
126 | }
|
127 | assertNotRuntime();
|
128 | if (!events || !events.length)
|
129 | events = allEvents;
|
130 | events.forEach(function (event) { return delete enabledStateEvents[event]; });
|
131 | };
|
132 | this.enabled = function () { return enabledStateEvents; };
|
133 | this.$get = $get;
|
134 | $get.$inject = ['$transitions'];
|
135 | function $get($transitions) {
|
136 | runtime = true;
|
137 | if (enabledStateEvents['$stateNotFound'])
|
138 | $stateProvider.onInvalid(stateNotFoundHandler);
|
139 | if (enabledStateEvents.$stateChangeStart)
|
140 | $transitions.onBefore({}, stateChangeStartHandler, { priority: 1000 });
|
141 | return {
|
142 | provider: $StateEventsProvider.prototype.instance,
|
143 | };
|
144 | }
|
145 | }
|
146 | angular_1.ng
|
147 | .module('ui.router.state.events', ['ui.router.state'])
|
148 | .provider('$stateEvents', $StateEventsProvider)
|
149 | .run([
|
150 | '$stateEvents',
|
151 |
|
152 | function ($stateEvents) {
|
153 |
|
154 | },
|
155 | ]);
|
156 | })();
|
157 |
|
\ | No newline at end of file |