react-event-connector
Version:
A library to connect react components
3 lines (2 loc) • 1.15 kB
JavaScript
Object.defineProperty(exports,"__esModule",{value:!0});var r=require("react"),e=function(){function r(){this.subscribers=new Map}return r.getInstance=function(){return r.instance},r.prototype.subscribe=function(r,e,s){this.subscribers.has(r)||this.subscribers.set(r,[]),this.subscribers.get(r).push({subscriber:s,id:e})},r.prototype.emit=function(r){var e=this;return function(s){var t=e.subscribers.get(r);t?t.forEach((function(r){return r.subscriber(s)})):console.warn("No subscribers found for signal: "+r)}},r.prototype.findSubscriber=function(r,e){var s=this.subscribers.get(r);return s?s.find((function(r){return r.id===e})):null},r.prototype.removeSubscriber=function(r,e){var s=this.subscribers.get(r);s&&this.subscribers.set(r,s.filter((function(r){return r.id!==e})))},r.instance=new r,r}();exports.useEmitter=function(r){return e.getInstance().emit(r)},exports.useSubscriber=function(s,t){var n=r.useId(),i=e.getInstance(),u=i.findSubscriber(s,n);function c(){u&&i.removeSubscriber(s,n)}c(),r.useEffect((function(){return i.findSubscriber(s,n)||i.subscribe(s,n,t),c}),[]),i.subscribe(s,n,t)};
//# sourceMappingURL=index.js.map
;