UNPKG

1.95 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3/** @module rx */
4/** */
5var rxjs_1 = require("rxjs");
6var operators_1 = require("rxjs/operators");
7/** Augments UIRouterGlobals with observables for transition starts, successful transitions, and state parameters */
8var UIRouterRx = /** @class */ (function () {
9 function UIRouterRx(router) {
10 this.name = '@uirouter/rx';
11 this.deregisterFns = [];
12 var start$ = new rxjs_1.ReplaySubject(1);
13 var success$ = start$.pipe(operators_1.mergeMap(function (t) { return t.promise.then(function () { return t; }, function () { return null; }); }), operators_1.filter(function (t) { return !!t; }));
14 var params$ = success$.pipe(operators_1.map(function (transition) { return transition.params(); }));
15 var states$ = new rxjs_1.ReplaySubject(1);
16 function onStatesChangedEvent(event, states) {
17 var changeEvent = {
18 currentStates: router.stateRegistry.get(),
19 registered: [],
20 deregistered: [],
21 };
22 if (event)
23 changeEvent[event] = states;
24 states$.next(changeEvent);
25 }
26 this.deregisterFns.push(router.transitionService.onStart({}, function (transition) { return start$.next(transition); }));
27 this.deregisterFns.push(router.stateRegistry.onStatesChanged(onStatesChangedEvent));
28 onStatesChangedEvent(null, null);
29 Object.assign(router.globals, { start$: start$, success$: success$, params$: params$, states$: states$ });
30 }
31 UIRouterRx.prototype.dispose = function () {
32 this.deregisterFns.forEach(function (deregisterFn) { return deregisterFn(); });
33 this.deregisterFns = [];
34 };
35 return UIRouterRx;
36}());
37exports.UIRouterRx = UIRouterRx;
38exports.UIRouterRxPlugin = UIRouterRx;
39//# sourceMappingURL=ui-router-rx.js.map
\No newline at end of file