@mantine/core
Version:
React components library focused on usability, accessibility and developer experience
32 lines (31 loc) • 1.24 kB
JavaScript
"use client";
require("../../../_virtual/_rolldown/runtime.cjs");
let _mantine_hooks = require("@mantine/hooks");
//#region packages/@mantine/core/src/core/utils/create-use-external-events/create-use-external-events.ts
function dispatchEvent(type, detail) {
window.dispatchEvent(new CustomEvent(type, { detail }));
}
function createUseExternalEvents(prefix) {
function _useExternalEvents(events) {
const handlers = Object.keys(events).reduce((acc, eventKey) => {
acc[`${prefix}:${eventKey}`] = (event) => events[eventKey](event.detail);
return acc;
}, {});
(0, _mantine_hooks.useIsomorphicEffect)(() => {
Object.keys(handlers).forEach((eventKey) => {
window.removeEventListener(eventKey, handlers[eventKey]);
window.addEventListener(eventKey, handlers[eventKey]);
});
return () => Object.keys(handlers).forEach((eventKey) => {
window.removeEventListener(eventKey, handlers[eventKey]);
});
}, [handlers]);
}
function createEvent(event) {
return (...payload) => dispatchEvent(`${prefix}:${String(event)}`, payload[0]);
}
return [_useExternalEvents, createEvent];
}
//#endregion
exports.createUseExternalEvents = createUseExternalEvents;
//# sourceMappingURL=create-use-external-events.cjs.map