UNPKG

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