@reactivex/ix-esnext-esm
Version:
The Interactive Extensions for JavaScript
25 lines (23 loc) • 896 B
JavaScript
import { fromEventPattern } from './fromeventpattern';
function isNodeEventEmitter(obj) {
return !!obj && typeof obj.addListener === 'function' && typeof obj.removeListener === 'function';
}
function isEventTarget(obj) {
return (!!obj &&
typeof obj.addEventListener === 'function' &&
typeof obj.removeEventListener === 'function');
}
export function fromEvent(obj, type, options) {
if (isEventTarget(obj)) {
const target = obj;
return fromEventPattern(h => target.addEventListener(type, h, options), h => target.removeEventListener(type, h, options));
}
else if (isNodeEventEmitter(obj)) {
const target = obj;
return fromEventPattern(h => target.addListener(type, h), h => target.removeListener(type, h));
}
else {
throw new TypeError('Unsupported event target');
}
}
//# sourceMappingURL=fromevent.mjs.map