source: trip-planner-front/node_modules/rxjs/_esm2015/internal/operators/windowWhen.js

Last change on this file was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 2.2 KB
Line 
1import { Subject } from '../Subject';
2import { OuterSubscriber } from '../OuterSubscriber';
3import { subscribeToResult } from '../util/subscribeToResult';
4export function windowWhen(closingSelector) {
5 return function windowWhenOperatorFunction(source) {
6 return source.lift(new WindowOperator(closingSelector));
7 };
8}
9class WindowOperator {
10 constructor(closingSelector) {
11 this.closingSelector = closingSelector;
12 }
13 call(subscriber, source) {
14 return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));
15 }
16}
17class WindowSubscriber extends OuterSubscriber {
18 constructor(destination, closingSelector) {
19 super(destination);
20 this.destination = destination;
21 this.closingSelector = closingSelector;
22 this.openWindow();
23 }
24 notifyNext(_outerValue, _innerValue, _outerIndex, _innerIndex, innerSub) {
25 this.openWindow(innerSub);
26 }
27 notifyError(error) {
28 this._error(error);
29 }
30 notifyComplete(innerSub) {
31 this.openWindow(innerSub);
32 }
33 _next(value) {
34 this.window.next(value);
35 }
36 _error(err) {
37 this.window.error(err);
38 this.destination.error(err);
39 this.unsubscribeClosingNotification();
40 }
41 _complete() {
42 this.window.complete();
43 this.destination.complete();
44 this.unsubscribeClosingNotification();
45 }
46 unsubscribeClosingNotification() {
47 if (this.closingNotification) {
48 this.closingNotification.unsubscribe();
49 }
50 }
51 openWindow(innerSub = null) {
52 if (innerSub) {
53 this.remove(innerSub);
54 innerSub.unsubscribe();
55 }
56 const prevWindow = this.window;
57 if (prevWindow) {
58 prevWindow.complete();
59 }
60 const window = this.window = new Subject();
61 this.destination.next(window);
62 let closingNotifier;
63 try {
64 const { closingSelector } = this;
65 closingNotifier = closingSelector();
66 }
67 catch (e) {
68 this.destination.error(e);
69 this.window.error(e);
70 return;
71 }
72 this.add(this.closingNotification = subscribeToResult(this, closingNotifier));
73 }
74}
75//# sourceMappingURL=windowWhen.js.map
Note: See TracBrowser for help on using the repository browser.