UNPKG

rxjs

Version:

Reactive Extensions for modern JavaScript

42 lines 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.windowWhen = void 0; var Subject_1 = require("../Subject"); var lift_1 = require("../util/lift"); var OperatorSubscriber_1 = require("./OperatorSubscriber"); var from_1 = require("../observable/from"); function windowWhen(closingSelector) { return lift_1.operate(function (source, subscriber) { var window; var closingSubscriber; var handleError = function (err) { window.error(err); subscriber.error(err); }; var openWindow = function () { closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); window === null || window === void 0 ? void 0 : window.complete(); window = new Subject_1.Subject(); subscriber.next(window.asObservable()); var closingNotifier; try { closingNotifier = from_1.innerFrom(closingSelector()); } catch (err) { handleError(err); return; } closingNotifier.subscribe((closingSubscriber = new OperatorSubscriber_1.OperatorSubscriber(subscriber, openWindow, handleError, openWindow))); }; openWindow(); source.subscribe(new OperatorSubscriber_1.OperatorSubscriber(subscriber, function (value) { return window.next(value); }, handleError, function () { window.complete(); subscriber.complete(); }, function () { closingSubscriber === null || closingSubscriber === void 0 ? void 0 : closingSubscriber.unsubscribe(); window = null; })); }); } exports.windowWhen = windowWhen; //# sourceMappingURL=windowWhen.js.map