1 import { Subject } from '../Subject';
2 import { OuterSubscriber } from '../OuterSubscriber';
3 import { subscribeToResult } from '../util/subscribeToResult';
4 export function window(windowBoundaries) {
5 return function windowOperatorFunction(source) {
6 return source.lift(new WindowOperator(windowBoundaries));
10 constructor(windowBoundaries) {
11 this.windowBoundaries = windowBoundaries;
13 call(subscriber, source) {
14 const windowSubscriber = new WindowSubscriber(subscriber);
15 const sourceSubscription = source.subscribe(windowSubscriber);
16 if (!sourceSubscription.closed) {
17 windowSubscriber.add(subscribeToResult(windowSubscriber, this.windowBoundaries));
19 return sourceSubscription;
22 class WindowSubscriber extends OuterSubscriber {
23 constructor(destination) {
25 this.window = new Subject();
26 destination.next(this.window);
28 notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {
31 notifyError(error, innerSub) {
34 notifyComplete(innerSub) {
38 this.window.next(value);
41 this.window.error(err);
42 this.destination.error(err);
45 this.window.complete();
46 this.destination.complete();
52 const prevWindow = this.window;
54 prevWindow.complete();
56 const destination = this.destination;
57 const newWindow = this.window = new Subject();
58 destination.next(newWindow);
61 //# sourceMappingURL=window.js.map