{"version":3,"sources":["asynciterable/fromevent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAiBtD,SAAS,kBAAkB,CAAC,GAAQ;IAClC,OAAO,CAAC,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,WAAW,KAAK,UAAU,IAAI,OAAO,GAAG,CAAC,cAAc,KAAK,UAAU,CAAC;AACpG,CAAC;AAED,SAAS,aAAa,CAAC,GAAQ;IAC7B,OAAO,CACL,CAAC,CAAC,GAAG;QACL,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU;QAC1C,OAAO,GAAG,CAAC,mBAAmB,KAAK,UAAU,CAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,GAAkB,EAClB,IAAY,EACZ,OAA8B;IAE9B,IAAI,aAAa,CAAC,GAAG,CAAC,EAAE;QACtB,MAAM,MAAM,GAAgB,GAAG,CAAC;QAChC,OAAO,gBAAgB,CACrB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAiB,CAAC,EAAE,OAAO,CAAC,EAC7D,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAiB,CAAC,EAAE,OAAO,CAAC,CACjE,CAAC;KACH;SAAM,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE;QAClC,MAAM,MAAM,GAAqB,GAAG,CAAC;QACrC,OAAO,gBAAgB,CACrB,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,EAChC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,CACpC,CAAC;KACH;SAAM;QACL,MAAM,IAAI,SAAS,CAAC,0BAA0B,CAAC,CAAC;KACjD;AACH,CAAC","file":"fromevent.js","sourcesContent":["import { AsyncIterableX } from './asynciterablex';\nimport { fromEventPattern } from './fromeventpattern';\n\nexport interface NodeEventEmitter {\n  addListener(event: string | symbol, listener: (...args: any[]) => void): this;\n  removeListener(event: string | symbol, listener: (...args: any[]) => void): this;\n}\n\nexport type EventListenerOptions =\n  | {\n    capture?: boolean;\n    passive?: boolean;\n    once?: boolean;\n  }\n  | boolean;\n\nexport type EventedTarget = EventTarget | NodeEventEmitter;\n\nfunction isNodeEventEmitter(obj: any): obj is NodeEventEmitter {\n  return !!obj && typeof obj.addListener === 'function' && typeof obj.removeListener === 'function';\n}\n\nfunction isEventTarget(obj: any): obj is EventTarget {\n  return (\n    !!obj &&\n    typeof obj.addEventListener === 'function' &&\n    typeof obj.removeEventListener === 'function'\n  );\n}\n\nexport function fromEvent<TSource>(\n  obj: EventedTarget,\n  type: string,\n  options?: EventListenerOptions\n): AsyncIterableX<TSource> {\n  if (isEventTarget(obj)) {\n    const target = <EventTarget>obj;\n    return fromEventPattern<TSource>(\n      h => target.addEventListener(type, <EventListener>h, options),\n      h => target.removeEventListener(type, <EventListener>h, options)\n    );\n  } else if (isNodeEventEmitter(obj)) {\n    const target = <NodeEventEmitter>obj;\n    return fromEventPattern<TSource>(\n      h => target.addListener(type, h),\n      h => target.removeListener(type, h)\n    );\n  } else {\n    throw new TypeError('Unsupported event target');\n  }\n}\n"]}