1 |
|
2 |
|
3 | import "rxjs/add/operator/mergeMap";
|
4 | import "rxjs/add/operator/map";
|
5 | import { ReplaySubject } from "rxjs/ReplaySubject";
|
6 |
|
7 | var 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 | }());
|
36 | export { UIRouterRx };
|
37 | export var UIRouterRxPlugin = UIRouterRx;
|
38 |
|
\ | No newline at end of file |