UNPKG

react-native-web-internals

Version:

React Native for Web

23 lines (22 loc) 994 B
import createEventHandle from "../createEventHandle/index.mjs"; import useLayoutEffect from "../useLayoutEffect/index.mjs"; import useStable from "../useStable/index.mjs"; function useEvent(event, options) { const targetListeners = useStable(() => /* @__PURE__ */new Map()), addListener = useStable(() => { const addEventListener = createEventHandle(event, options); return (target, callback) => { const removeTargetListener = targetListeners.get(target); removeTargetListener?.(), callback == null && targetListeners.delete(target); const removeEventListener = addEventListener(target, callback); return targetListeners.set(target, removeEventListener), removeEventListener; }; }); return useLayoutEffect(() => () => { targetListeners.forEach(removeListener => { removeListener(); }), targetListeners.clear(); }, [targetListeners]), addListener; } export { useEvent as default }; //# sourceMappingURL=index.mjs.map