react-custom-events
Version:
A react layer for easily utilizing CustomEvent API
50 lines (46 loc) • 1.6 kB
JavaScript
Object.defineProperty(exports, '__esModule', { value: true });
var react = require('react');
var targetElement;
function getElement() {
if (!targetElement) {
targetElement = document.createElement('div');
}
return targetElement;
}
function useCustomEventListener(eventName, eventHandler, deps) {
var element;
react.useEffect(function () {
element = element || getElement();
var handleEvent = function (event) {
var data = event.detail;
eventHandler(data);
};
element.addEventListener(eventName, handleEvent, false);
return function () {
element === null || element === void 0 ? void 0 : element.removeEventListener(eventName, handleEvent, false);
};
}, deps);
return function (el) {
element = el;
};
}
function emitCustomEvent(eventName, data) {
var element = getElement();
var event = new CustomEvent(eventName, { detail: data });
element.dispatchEvent(event);
}
function newCustomEventEmitter() {
var element;
function setElement(el) {
element = el;
}
setElement.emit = function (eventName, data) {
var event = new CustomEvent(eventName, { bubbles: true, detail: data });
element === null || element === void 0 ? void 0 : element.dispatchEvent(event);
};
return setElement;
}
exports.emitCustomEvent = emitCustomEvent;
exports.newCustomEventEmitter = newCustomEventEmitter;
exports.useCustomEventListener = useCustomEventListener;
//# sourceMappingURL=index.js.map