UNPKG

@orca-fe/hooks

Version:

React Hooks Collections

50 lines (49 loc) 2.23 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.EventEmitterWithHook = void 0; exports.default = useEventEmitter; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = require("react"); var _events = require("events"); /* eslint-disable @typescript-eslint/no-explicit-any,react-hooks/rules-of-hooks */ var EventEmitterWithHook = exports.EventEmitterWithHook = /*#__PURE__*/(0, _createClass2.default)(function EventEmitterWithHook() { var _this = this; (0, _classCallCheck2.default)(this, EventEmitterWithHook); (0, _defineProperty2.default)(this, "eventEmitter", new _events.EventEmitter()); (0, _defineProperty2.default)(this, "emit", function (eventName) { var _this$eventEmitter; for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { args[_key - 1] = arguments[_key]; } (_this$eventEmitter = _this.eventEmitter).emit.apply(_this$eventEmitter, [eventName].concat(args)); }); (0, _defineProperty2.default)(this, "useSubscription", function (eventName, callback) { var callbackRef = (0, _react.useRef)(callback); callbackRef.current = callback; (0, _react.useEffect)(function () { var callbackFn = function callbackFn() { if (callbackRef.current) { callbackRef.current.apply(callbackRef, arguments); } }; _this.eventEmitter.on(eventName, callbackFn); return function () { _this.eventEmitter.off(eventName, callbackFn); }; }, []); }); }); function useEventEmitter() { var _useState = (0, _react.useState)(function () { return new EventEmitterWithHook(); }), _useState2 = (0, _slicedToArray2.default)(_useState, 1), eventEmitter = _useState2[0]; return eventEmitter; }