@findify/react-components
Version:
Findify react UI components
38 lines (33 loc) • 1.14 kB
JavaScript
import { createChangeEmitter } from '@findify/change-emitter';
import { useEffect } from 'react';
var emmiter = createChangeEmitter();
var isSubscribed = false; // Replace global change emmiter with current
var subscribe = function subscribe() {
if (isSubscribed || !window.findify.addListeners) return;
window.findify.addListeners(emmiter.getListeners());
emmiter.emit = window.findify.emit;
emmiter.listen = window.findify.listen;
isSubscribed = true;
return;
};
export var emit = function emit() {
subscribe();
return emmiter.emit.apply(emmiter, arguments);
};
export var listen = function listen() {
subscribe();
return emmiter.listen.apply(emmiter, arguments);
};
export var useEvents = function useEvents(events) {
useEffect(function () {
var handler = function handler(event) {
if (!events || !events[event]) return;
for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
args[_key - 1] = arguments[_key];
}
events[event].apply(events, args);
};
var listener = listen(handler);
return listener;
}, []);
};