@ozen-ui/kit
Version:
React component library
41 lines (40 loc) • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useEventBusEvents = void 0;
var tslib_1 = require("tslib");
var react_1 = require("react");
var logger_1 = require("@ozen-ui/logger");
var useDevEffect_1 = require("../useDevEffect");
var useIsomorphicEffect_1 = require("../useIsomorphicEffect");
var useStoredValue_1 = require("../useStoredValue");
var useEventBusEvents = function (eventBus, subscribes, params) {
var _a = (params !== null && params !== void 0 ? params : {}).layoutEffect, layoutEffect = _a === void 0 ? false : _a;
var savedLayoutEffect = (0, useStoredValue_1.useStoredValue)(layoutEffect);
(0, useDevEffect_1.useDevEffect)(function () {
if (savedLayoutEffect.current !== layoutEffect) {
logger_1.logger.warn('Свойство "layoutEffect" не может отличаться между рендерами.');
}
}, [layoutEffect]);
var clearSubscribes = (0, useStoredValue_1.useStoredValue)(function () { return function () { }; });
var useNeededEffect = savedLayoutEffect.current
? useIsomorphicEffect_1.useIsomorphicEffect
: react_1.useEffect;
useNeededEffect(function () {
clearSubscribes.current();
var clearSubscribesCallbacks = [];
Object.entries(subscribes).forEach(function (_a) {
var _b = tslib_1.__read(_a, 2), event = _b[0], callback = _b[1];
var unsubscribe = eventBus.subscribe(event, callback);
clearSubscribesCallbacks.push(unsubscribe);
});
clearSubscribes.current = function () {
clearSubscribesCallbacks.forEach(function (unsubscribe) {
unsubscribe();
});
};
return function () {
clearSubscribes.current();
};
}, [eventBus, subscribes]);
};
exports.useEventBusEvents = useEventBusEvents;