UNPKG

2.15 kBSource Map (JSON)View Raw
1{"version":3,"sources":["useGlobalEvent.js"],"names":["defaultOptions","capture","once","passive","useGlobalEvent","eventName","options","fn","callbackRef","setCallbackRef","opts","cb","event","current","window","addEventListener","removeEventListener"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;;;;;;;;;;;AAEA,IAAMA,cAAc,GAAG;AACrBC,EAAAA,OAAO,EAAE,KADY;AAErBC,EAAAA,IAAI,EAAE,KAFe;AAGrBC,EAAAA,OAAO,EAAE;AAHY,CAAvB;;AASA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,SAAD,EAA6C;AAAA,MAAjCC,OAAiC,uEAAvBN,cAAuB;AAAA,MAAPO,EAAO;;AAAA,6BAC5B,sCAAoBA,EAApB,CAD4B;AAAA;AAAA,MAC3DC,WAD2D;AAAA,MAC9CC,cAD8C;;AAElE,MAAMC,IAAI,qBAAQV,cAAR,MAA4BM,OAAO,IAAI,EAAvC,CAAV;;AAEA,wBAAU,YAAM;AACd,QAAMK,EAAE,GAAG,SAALA,EAAK,CAACC,KAAD,EAAW;AACpB,UAAIJ,WAAW,CAACK,OAAhB,EAAyB;AACvBL,QAAAA,WAAW,CAACK,OAAZ,CAAoBD,KAApB;AACD;AACF,KAJD;;AAMA,QAAIJ,WAAW,CAACK,OAAZ,IAAuBR,SAA3B,EAAsC;AACpCS,MAAAA,MAAM,CAACC,gBAAP,CAAwBV,SAAxB,EAAmCM,EAAnC,EAAuCD,IAAvC;AACD;;AAED,WAAO,YAAM;AACX,UAAIL,SAAJ,EAAe;AACbS,QAAAA,MAAM,CAACE,mBAAP,CAA2BX,SAA3B,EAAsCM,EAAtC,EAA0CD,IAA1C;AACD;AACF,KAJD;AAKD,GAhBD,EAgBG,CAACL,SAAD,EAAYC,OAAZ,CAhBH;AAkBA,SAAOG,cAAP;AACD,CAvBD;;eAyBeL,c","sourcesContent":["import { useEffect } from 'react';\nimport createHandlerSetter from './utils/createHandlerSetter';\n\nconst defaultOptions = {\n capture: false,\n once: false,\n passive: false,\n};\n\n/**\n * Accepts an event name then returns a callback setter for a function to be performed when the event triggers.\n */\nconst useGlobalEvent = (eventName, options = defaultOptions, fn) => {\n const [callbackRef, setCallbackRef] = createHandlerSetter(fn);\n const opts = { ...defaultOptions, ...(options || {}) };\n\n useEffect(() => {\n const cb = (event) => {\n if (callbackRef.current) {\n callbackRef.current(event);\n }\n };\n\n if (callbackRef.current && eventName) {\n window.addEventListener(eventName, cb, opts);\n }\n\n return () => {\n if (eventName) {\n window.removeEventListener(eventName, cb, opts);\n }\n };\n }, [eventName, options]);\n\n return setCallbackRef;\n};\n\nexport default useGlobalEvent;\n"],"file":"useGlobalEvent.js"}
\No newline at end of file