| import { connectableObservableDescriptor } from '../observable/ConnectableObservable'; |
| export function multicast(subjectOrSubjectFactory, selector) { |
| return function multicastOperatorFunction(source) { |
| let subjectFactory; |
| if (typeof subjectOrSubjectFactory === 'function') { |
| subjectFactory = subjectOrSubjectFactory; |
| } |
| else { |
| subjectFactory = function subjectFactory() { |
| return subjectOrSubjectFactory; |
| }; |
| } |
| if (typeof selector === 'function') { |
| return source.lift(new MulticastOperator(subjectFactory, selector)); |
| } |
| const connectable = Object.create(source, connectableObservableDescriptor); |
| connectable.source = source; |
| connectable.subjectFactory = subjectFactory; |
| return connectable; |
| }; |
| } |
| export class MulticastOperator { |
| constructor(subjectFactory, selector) { |
| this.subjectFactory = subjectFactory; |
| this.selector = selector; |
| } |
| call(subscriber, source) { |
| const { selector } = this; |
| const subject = this.subjectFactory(); |
| const subscription = selector(subject).subscribe(subscriber); |
| subscription.add(source.subscribe(subject)); |
| return subscription; |
| } |
| } |
| //# sourceMappingURL=multicast.js.map |