"use strict"; exports.__esModule = true; exports.default = void 0; var _react = require("react"); var _useMounted = _interopRequireDefault(require("./useMounted")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function useCustomEffect(effect, dependencies, isEqualOrOptions) { var isMounted = (0, _useMounted.default)(); var _ref = typeof isEqualOrOptions === 'function' ? { isEqual: isEqualOrOptions } : isEqualOrOptions, isEqual = _ref.isEqual, _ref$effectHook = _ref.effectHook, effectHook = _ref$effectHook === void 0 ? _react.useEffect : _ref$effectHook; var dependenciesRef = (0, _react.useRef)(); dependenciesRef.current = dependencies; var cleanupRef = (0, _react.useRef)(null); effectHook(function () { // If the ref the is `null` it's either the first effect or the last effect // ran and was cleared, meaning _this_ update should run, b/c the equality // check failed on in the cleanup of the last effect. if (cleanupRef.current === null) { var cleanup = effect(); cleanupRef.current = function () { if (isMounted() && isEqual(dependenciesRef.current, dependencies)) { return; } cleanupRef.current = null; if (cleanup) cleanup(); }; } return cleanupRef.current; }); (0, _react.useDebugValue)(effect); } var _default = useCustomEffect; exports.default = _default;