UNPKG

@mantine/utils

Version:

[![npm](https://img.shields.io/npm/dm/@mantine/utils)](https://www.npmjs.com/package/@mantine/utils)

35 lines (30 loc) 1.24 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); function dispatchEvent(type, detail) { window.dispatchEvent(new CustomEvent(type, { detail })); } const useIsomorphicEffect = typeof window !== "undefined" ? React.useLayoutEffect : React.useEffect; function createUseExternalEvents(prefix) { function _useExternalEvents(events) { const handlers = Object.keys(events).reduce((acc, eventKey) => { acc[`${prefix}:${eventKey}`] = (event) => events[eventKey](event.detail); return acc; }, {}); 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]; } exports.createUseExternalEvents = createUseExternalEvents; //# sourceMappingURL=create-use-external-events.js.map