UNPKG

react-native-web-internals

Version:

React Native for Web

24 lines (23 loc) 966 B
import createEventHandle from "../createEventHandle/index"; import useLayoutEffect from "../useLayoutEffect/index"; import useStable from "../useStable/index"; 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.js.map