| /** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ | 
| import { Observable } from '../Observable'; | 
| import { isArray } from '../util/isArray'; | 
| import { isFunction } from '../util/isFunction'; | 
| import { map } from '../operators/map'; | 
| var toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })(); | 
| export function fromEvent(target, eventName, options, resultSelector) { | 
|     if (isFunction(options)) { | 
|         resultSelector = options; | 
|         options = undefined; | 
|     } | 
|     if (resultSelector) { | 
|         return fromEvent(target, eventName, options).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); | 
|     } | 
|     return new Observable(function (subscriber) { | 
|         function handler(e) { | 
|             if (arguments.length > 1) { | 
|                 subscriber.next(Array.prototype.slice.call(arguments)); | 
|             } | 
|             else { | 
|                 subscriber.next(e); | 
|             } | 
|         } | 
|         setupSubscription(target, eventName, handler, subscriber, options); | 
|     }); | 
| } | 
| function setupSubscription(sourceObj, eventName, handler, subscriber, options) { | 
|     var unsubscribe; | 
|     if (isEventTarget(sourceObj)) { | 
|         var source_1 = sourceObj; | 
|         sourceObj.addEventListener(eventName, handler, options); | 
|         unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); }; | 
|     } | 
|     else if (isJQueryStyleEventEmitter(sourceObj)) { | 
|         var source_2 = sourceObj; | 
|         sourceObj.on(eventName, handler); | 
|         unsubscribe = function () { return source_2.off(eventName, handler); }; | 
|     } | 
|     else if (isNodeStyleEventEmitter(sourceObj)) { | 
|         var source_3 = sourceObj; | 
|         sourceObj.addListener(eventName, handler); | 
|         unsubscribe = function () { return source_3.removeListener(eventName, handler); }; | 
|     } | 
|     else if (sourceObj && sourceObj.length) { | 
|         for (var i = 0, len = sourceObj.length; i < len; i++) { | 
|             setupSubscription(sourceObj[i], eventName, handler, subscriber, options); | 
|         } | 
|     } | 
|     else { | 
|         throw new TypeError('Invalid event target'); | 
|     } | 
|     subscriber.add(unsubscribe); | 
| } | 
| function isNodeStyleEventEmitter(sourceObj) { | 
|     return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function'; | 
| } | 
| function isJQueryStyleEventEmitter(sourceObj) { | 
|     return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function'; | 
| } | 
| function isEventTarget(sourceObj) { | 
|     return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function'; | 
| } | 
| //# sourceMappingURL=fromEvent.js.map |