| import { Observable } from '../Observable'; |
| import { isArray } from '../util/isArray'; |
| import { isFunction } from '../util/isFunction'; |
| import { map } from '../operators/map'; |
| export function fromEventPattern(addHandler, removeHandler, resultSelector) { |
| if (resultSelector) { |
| return fromEventPattern(addHandler, removeHandler).pipe(map(args => isArray(args) ? resultSelector(...args) : resultSelector(args))); |
| } |
| return new Observable(subscriber => { |
| const handler = (...e) => subscriber.next(e.length === 1 ? e[0] : e); |
| let retValue; |
| try { |
| retValue = addHandler(handler); |
| } |
| catch (err) { |
| subscriber.error(err); |
| return undefined; |
| } |
| if (!isFunction(removeHandler)) { |
| return undefined; |
| } |
| return () => removeHandler(handler, retValue); |
| }); |
| } |
| //# sourceMappingURL=fromEventPattern.js.map |