38 lines
1.5 KiB
JavaScript
38 lines
1.5 KiB
JavaScript
/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */
|
|
import { connectableObservableDescriptor } from '../observable/ConnectableObservable';
|
|
export function multicast(subjectOrSubjectFactory, selector) {
|
|
return function multicastOperatorFunction(source) {
|
|
var subjectFactory;
|
|
if (typeof subjectOrSubjectFactory === 'function') {
|
|
subjectFactory = subjectOrSubjectFactory;
|
|
}
|
|
else {
|
|
subjectFactory = function subjectFactory() {
|
|
return subjectOrSubjectFactory;
|
|
};
|
|
}
|
|
if (typeof selector === 'function') {
|
|
return source.lift(new MulticastOperator(subjectFactory, selector));
|
|
}
|
|
var connectable = Object.create(source, connectableObservableDescriptor);
|
|
connectable.source = source;
|
|
connectable.subjectFactory = subjectFactory;
|
|
return connectable;
|
|
};
|
|
}
|
|
var MulticastOperator = /*@__PURE__*/ (function () {
|
|
function MulticastOperator(subjectFactory, selector) {
|
|
this.subjectFactory = subjectFactory;
|
|
this.selector = selector;
|
|
}
|
|
MulticastOperator.prototype.call = function (subscriber, source) {
|
|
var selector = this.selector;
|
|
var subject = this.subjectFactory();
|
|
var subscription = selector(subject).subscribe(subscriber);
|
|
subscription.add(source.subscribe(subject));
|
|
return subscription;
|
|
};
|
|
return MulticastOperator;
|
|
}());
|
|
export { MulticastOperator };
|
|
//# sourceMappingURL=multicast.js.map
|