UNPKG

@orca-fe/hooks

Version:

React Hooks Collections

35 lines (34 loc) 1.25 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _defineProperty from "@babel/runtime/helpers/esm/defineProperty"; /* eslint-disable @typescript-eslint/no-explicit-any,react-hooks/rules-of-hooks */ import { useEffect, useRef, useState } from 'react'; import { EventEmitter } from 'events'; export class EventEmitterWithHook { constructor() { _defineProperty(this, "eventEmitter", new EventEmitter()); _defineProperty(this, "emit", (eventName, ...args) => { this.eventEmitter.emit(eventName, ...args); }); _defineProperty(this, "useSubscription", (eventName, callback) => { var callbackRef = useRef(callback); callbackRef.current = callback; useEffect(() => { var callbackFn = (...args) => { if (callbackRef.current) { callbackRef.current(...args); } }; this.eventEmitter.on(eventName, callbackFn); return () => { this.eventEmitter.off(eventName, callbackFn); }; }, []); }); } } export default function useEventEmitter() { var _useState = useState(() => new EventEmitterWithHook()), _useState2 = _slicedToArray(_useState, 1), eventEmitter = _useState2[0]; return eventEmitter; }