UNPKG

react-native-web-internals

Version:

React Native for Web

27 lines (26 loc) 1.1 kB
import createEventHandle from "../createEventHandle/index.native.js"; import useLayoutEffect from "../useLayoutEffect/index.native.js"; import useStable from "../useStable/index.native.js"; function useEvent(event, options) { var targetListeners = useStable(function () { return /* @__PURE__ */new Map(); }), addListener = useStable(function () { var addEventListener = createEventHandle(event, options); return function (target, callback) { var removeTargetListener = targetListeners.get(target); removeTargetListener?.(), callback == null && targetListeners.delete(target); var removeEventListener = addEventListener(target, callback); return targetListeners.set(target, removeEventListener), removeEventListener; }; }); return useLayoutEffect(function () { return function () { targetListeners.forEach(function (removeListener) { removeListener(); }), targetListeners.clear(); }; }, [targetListeners]), addListener; } export { useEvent as default }; //# sourceMappingURL=index.native.js.map