@ima/react-page-renderer
Version:
IMA.js React page renderer.
41 lines (40 loc) • 1.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "useEventBus", {
enumerable: true,
get: function() {
return useEventBus;
}
});
const _react = require("react");
const _componentUtils = require("./componentUtils");
function useEventBus(eventTarget, eventName, listener) {
const { $EventBus } = (0, _componentUtils.useComponentUtils)();
const memoListener = (0, _react.useCallback)((...args)=>{
listener?.(...args);
}, [
listener
]);
(0, _react.useEffect)(()=>{
if (!eventTarget || !eventName || !memoListener) {
return;
}
$EventBus.listen(eventTarget, eventName, memoListener);
return ()=>{
$EventBus.unlisten(eventTarget, eventName, memoListener);
};
}, [
$EventBus,
eventName,
eventTarget,
memoListener
]);
return (0, _react.useMemo)(()=>({
fire: (...params)=>$EventBus.fire(...params)
}), [
$EventBus
]);
}
//# sourceMappingURL=eventBus.js.map