@wiggindev/hooks 0.2.1 → 0.2.4

Sign up to get free protection for your applications and to get access to all the features.
package/.eslintrc.cjs ADDED
@@ -0,0 +1,18 @@
1
+ module.exports = {
2
+ parserOptions: {
3
+ ecmaFeatures: {
4
+ jsx: true,
5
+ },
6
+ },
7
+ settings: {
8
+ react: {
9
+ version: 'detect',
10
+ },
11
+ },
12
+ plugins: ['react'],
13
+ extends: ['plugin:react/recommended'],
14
+ rules: {
15
+ 'react/jsx-uses-react': 'error',
16
+ 'react/jsx-uses-vars': 'error',
17
+ },
18
+ };
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- var e=require("react"),t=require("@wiggindev/utils");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=/*#__PURE__*/n(e),r="undefined"!=typeof window?u.default.useLayoutEffect:u.default.useEffect,f=function(e){var t=u.default.useRef(e);return r(function(){t.current=e}),u.default.useMemo(function(){return t.current},[])};exports.useDocumentEventListener=function(e,n){var r=f(n);u.default.useEffect(function(){if(document&&document.addEventListener)return t.events.document.on(e,r),function(){return t.events.document.off(e,r)}},[e,r])},exports.useEvent=f,exports.useEventListener=function(e,n,r){var o=f(n);u.default.useEffect(function(){var n=r.current;if(n&&n.addEventListener)return t.events.element.on(n,e,o),function(){return t.events.element.off(n,e,o)}},[r,e,o])},exports.useIsomorphicLayoutEffect=r,exports.usePrevious=function(e){var t=u.default.useRef();return u.default.useEffect(function(){t.current=e},[e]),t.current},exports.useWindowEventListener=function(e,n){var r=f(n);u.default.useEffect(function(){if(window&&window.addEventListener)return t.events.window.on(e,r),function(){return t.events.window.off(e,r)}},[e,r])};
1
+ var e=require("react"),t=require("@wiggindev/utils");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=/*#__PURE__*/n(e),r="undefined"!=typeof window?u.default.useLayoutEffect:u.default.useEffect,f=function(e){var t=u.default.useRef(e);return r(function(){t.current=e}),u.default.useMemo(function(){return t.current},[])},i=function(e,n){var r=f(n);u.default.useEffect(function(){if(window&&window.addEventListener)return t.events.window.on(e,r),function(){return t.events.window.off(e,r)}},[e,r])};exports.useDocumentEventListener=function(e,n){var r=f(n);u.default.useEffect(function(){if(document&&document.addEventListener)return t.events.document.on(e,r),function(){return t.events.document.off(e,r)}},[e,r])},exports.useEvent=f,exports.useEventListener=function(e,n,r){var i=f(n);u.default.useEffect(function(){var n=r.current;if(n&&n.addEventListener)return t.events.element.on(n,e,i),function(){return t.events.element.off(n,e,i)}},[r,e,i])},exports.useIsomorphicLayoutEffect=r,exports.usePrevious=function(e){var t=u.default.useRef();return u.default.useEffect(function(){t.current=e},[e]),t.current},exports.useWindowDimensions=function(e){void 0===e&&(e=250);var n=u.default.useState({width:0,height:0}),o=n[0],s=n[1],c=function(){return s({width:(e=window).innerWidth,height:e.innerHeight});var e},d=f(t.throttle(c,e));return i("resize",d),r(function(){c()},[]),o},exports.useWindowEventListener=i;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/useIsomorphicLayoutEffect.ts","../src/useEvent.ts","../src/useDocumentEventListener.ts","../src/useEventListener.ts","../src/usePrevious.ts","../src/useWindowEventListener.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n","import React from 'react';\nimport { Callback } from '@wiggindev/utils';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\nexport const useEvent = <C extends Callback>(callback: C): C => {\n const callbackRef = React.useRef(callback);\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => callbackRef.current, []);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useDocumentEventListener = <K extends EventName<DocumentEventMap>>(\n eventName: K,\n listener: EventListener<DocumentEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!document || !document.addEventListener) {\n return;\n }\n events.document.on(eventName, stableListener);\n return () => events.document.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useEventListener = <\n K extends EventName<HTMLElementEventMap>,\n E extends HTMLElement\n>(\n eventName: K,\n listener: EventListener<HTMLElementEventMap, K>,\n element: React.RefObject<E>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n const node = element.current;\n if (!node || !node.addEventListener) {\n return;\n }\n events.element.on(node, eventName, stableListener);\n return () => events.element.off(node, eventName, stableListener);\n }, [element, eventName, stableListener]);\n};\n","import React from 'react';\n\nexport const usePrevious = <T>(value: T) => {\n const stateRef = React.useRef<T>();\n React.useEffect(() => {\n stateRef.current = value;\n }, [value]);\n return stateRef.current;\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useWindowEventListener = <K extends EventName<WindowEventMap>>(\n eventName: K,\n listener: EventListener<WindowEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!window || !window.addEventListener) {\n return;\n }\n events.window.on(eventName, stableListener);\n return () => events.window.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n"],"names":["useIsomorphicLayoutEffect","window","React","useLayoutEffect","useEffect","useEvent","callback","callbackRef","useRef","current","useMemo","eventName","listener","stableListener","document","addEventListener","events","on","off","element","node","value","stateRef"],"mappings":"qJAEaA,EACS,oBAAXC,OAAyBC,EAAAA,QAAMC,gBAAkBD,EAAAA,QAAME,UCCrDC,EAAW,SAAqBC,GACzC,IAAMC,EAAcL,EAAK,QAACM,OAAOF,GAIjC,OAHAN,EAA0B,WACtBO,EAAYE,QAAUH,IAEnBJ,UAAMQ,QAAQ,WAAA,OAAMH,EAAYE,SAAS,sCCLZ,SACpCE,EACAC,GAEA,IAAMC,EAAiBR,EAASO,GAChCV,EAAK,QAACE,UAAU,WACZ,GAAKU,UAAaA,SAASC,iBAI3B,OADAC,EAAMA,OAACF,SAASG,GAAGN,EAAWE,GACjBG,WAAAA,OAAAA,EAAAA,OAAOF,SAASI,IAAIP,EAAWE,KAC7C,CAACF,EAAWE,iDCXa,SAI5BF,EACAC,EACAO,GAEA,IAAMN,EAAiBR,EAASO,GAChCV,EAAK,QAACE,UAAU,WACZ,IAAMgB,EAAOD,EAAQV,QACrB,GAAKW,GAASA,EAAKL,iBAInB,OADAC,EAAMA,OAACG,QAAQF,GAAGG,EAAMT,EAAWE,qBACtBG,EAAMA,OAACG,QAAQD,IAAIE,EAAMT,EAAWE,KAClD,CAACM,EAASR,EAAWE,6DClBD,SAAIQ,GAC3B,IAAMC,EAAWpB,EAAK,QAACM,SAIvB,OAHAN,EAAK,QAACE,UAAU,WACZkB,EAASb,QAAUY,GACpB,CAACA,IACGC,EAASb,wCCHkB,SAClCE,EACAC,GAEA,IAAMC,EAAiBR,EAASO,GAChCV,EAAK,QAACE,UAAU,WACZ,GAAKH,QAAWA,OAAOc,iBAIvB,OADAC,EAAMA,OAACf,OAAOgB,GAAGN,EAAWE,GACfG,WAAAA,OAAAA,EAAAA,OAAOf,OAAOiB,IAAIP,EAAWE,KAC3C,CAACF,EAAWE"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/useIsomorphicLayoutEffect.ts","../src/useEvent.ts","../src/useWindowEventListener.ts","../src/useDocumentEventListener.ts","../src/useEventListener.ts","../src/usePrevious.ts","../src/useWindowDimensions.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n","import React from 'react';\nimport { Callback } from '@wiggindev/utils';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\nexport const useEvent = <C extends Callback>(callback: C): C => {\n const callbackRef = React.useRef(callback);\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => callbackRef.current, []);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useWindowEventListener = <K extends EventName<WindowEventMap>>(\n eventName: K,\n listener: EventListener<WindowEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!window || !window.addEventListener) {\n return;\n }\n events.window.on(eventName, stableListener);\n return () => events.window.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useDocumentEventListener = <K extends EventName<DocumentEventMap>>(\n eventName: K,\n listener: EventListener<DocumentEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!document || !document.addEventListener) {\n return;\n }\n events.document.on(eventName, stableListener);\n return () => events.document.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useEventListener = <\n K extends EventName<HTMLElementEventMap>,\n E extends HTMLElement\n>(\n eventName: K,\n listener: EventListener<HTMLElementEventMap, K>,\n element: React.RefObject<E>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n const node = element.current;\n if (!node || !node.addEventListener) {\n return;\n }\n events.element.on(node, eventName, stableListener);\n return () => events.element.off(node, eventName, stableListener);\n }, [element, eventName, stableListener]);\n};\n","import React from 'react';\n\nexport const usePrevious = <T>(value: T) => {\n const stateRef = React.useRef<T>();\n React.useEffect(() => {\n stateRef.current = value;\n }, [value]);\n return stateRef.current;\n};\n","import React from 'react';\nimport { throttle } from '@wiggindev/utils';\nimport { useWindowEventListener } from './useWindowEventListener';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useEvent } from './useEvent';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n};\n\nexport const useWindowDimensions = (throttleLimit = 250) => {\n const [windowDimensions, setWindowDimensions] = React.useState({\n width: 0,\n height: 0,\n });\n\n const updateWindowDimensions = () =>\n setWindowDimensions(getWindowDimensions());\n const handleResize = useEvent(\n throttle(updateWindowDimensions, throttleLimit)\n );\n\n useWindowEventListener('resize', handleResize);\n\n useIsomorphicLayoutEffect(() => {\n updateWindowDimensions();\n }, []);\n\n return windowDimensions;\n};\n"],"names":["useIsomorphicLayoutEffect","window","React","useLayoutEffect","useEffect","useEvent","callback","callbackRef","useRef","current","useMemo","useWindowEventListener","eventName","listener","stableListener","addEventListener","events","on","off","document","element","node","value","stateRef","throttleLimit","useState","width","height","windowDimensions","_React$useState","setWindowDimensions","updateWindowDimensions","_window","innerWidth","innerHeight","handleResize","throttle"],"mappings":"qJAEaA,EACS,oBAAXC,OAAyBC,EAAAA,QAAMC,gBAAkBD,EAAAA,QAAME,UCCrDC,EAAW,SAAqBC,GACzC,IAAMC,EAAcL,EAAK,QAACM,OAAOF,GAIjC,OAHAN,EAA0B,WACtBO,EAAYE,QAAUH,IAEnBJ,UAAMQ,QAAQ,WAAA,OAAMH,EAAYE,SAAS,KCLvCE,EAAyB,SAClCC,EACAC,GAEA,IAAMC,EAAiBT,EAASQ,GAChCX,EAAK,QAACE,UAAU,WACZ,GAAKH,QAAWA,OAAOc,iBAIvB,OADAC,EAAMA,OAACf,OAAOgB,GAAGL,EAAWE,GACfE,WAAAA,OAAAA,EAAAA,OAAOf,OAAOiB,IAAIN,EAAWE,KAC3C,CAACF,EAAWE,sCCXqB,SACpCF,EACAC,GAEA,IAAMC,EAAiBT,EAASQ,GAChCX,EAAK,QAACE,UAAU,WACZ,GAAKe,UAAaA,SAASJ,iBAI3B,OADAC,EAAMA,OAACG,SAASF,GAAGL,EAAWE,GACjBE,WAAAA,OAAAA,EAAAA,OAAOG,SAASD,IAAIN,EAAWE,KAC7C,CAACF,EAAWE,iDCXa,SAI5BF,EACAC,EACAO,GAEA,IAAMN,EAAiBT,EAASQ,GAChCX,EAAK,QAACE,UAAU,WACZ,IAAMiB,EAAOD,EAAQX,QACrB,GAAKY,GAASA,EAAKN,iBAInB,OADAC,EAAMA,OAACI,QAAQH,GAAGI,EAAMT,EAAWE,qBACtBE,EAAMA,OAACI,QAAQF,IAAIG,EAAMT,EAAWE,KAClD,CAACM,EAASR,EAAWE,6DClBD,SAAIQ,GAC3B,IAAMC,EAAWrB,EAAK,QAACM,SAIvB,OAHAN,EAAK,QAACE,UAAU,WACZmB,EAASd,QAAUa,GACpB,CAACA,IACGC,EAASd,qCCOe,SAACe,YAAAA,IAAAA,EAAgB,KAChD,IAAgDtB,EAAAA,EAAK,QAACuB,SAAS,CAC3DC,MAAO,EACPC,OAAQ,IAFLC,EAAPC,EAAA,GAAyBC,EAAzBD,EAAA,GAKME,EAAyB,kBAC3BD,EAbG,CACHJ,OAFJM,EAAmD/B,QAA3CgC,WAGJN,OAHuBO,EAAAA,cADH,IACxBF,GAeMG,EAAe9B,EACjB+B,EAAQA,SAACL,EAAwBP,IASrC,OANAb,EAAuB,SAAUwB,GAEjCnC,EAA0B,WACtB+B,KACD,IAEIH"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
- export * from './useIsomorphicLayoutEffect';
2
- export * from './useEvent';
3
- export * from './useEventListener';
4
- export * from './useDocumentEventListener';
5
- export * from './useWindowEventListener';
6
- export * from './usePrevious';
1
+ export * from './useIsomorphicLayoutEffect';
2
+ export * from './useEvent';
3
+ export * from './useEventListener';
4
+ export * from './useDocumentEventListener';
5
+ export * from './useWindowEventListener';
6
+ export * from './usePrevious';
7
+ export * from './useWindowDimensions';
@@ -1,52 +1,2 @@
1
- import e from 'react';
2
- import { events as t } from '@wiggindev/utils';
3
- const n = 'undefined' != typeof window ? e.useLayoutEffect : e.useEffect,
4
- o = t => {
5
- const o = e.useRef(t);
6
- return (
7
- n(() => {
8
- o.current = t;
9
- }),
10
- e.useMemo(() => o.current, [])
11
- );
12
- },
13
- r = (n, r, f) => {
14
- const u = o(r);
15
- e.useEffect(() => {
16
- const e = f.current;
17
- if (e && e.addEventListener)
18
- return t.element.on(e, n, u), () => t.element.off(e, n, u);
19
- }, [f, n, u]);
20
- },
21
- f = (n, r) => {
22
- const f = o(r);
23
- e.useEffect(() => {
24
- if (document && document.addEventListener)
25
- return t.document.on(n, f), () => t.document.off(n, f);
26
- }, [n, f]);
27
- },
28
- u = (n, r) => {
29
- const f = o(r);
30
- e.useEffect(() => {
31
- if (window && window.addEventListener)
32
- return t.window.on(n, f), () => t.window.off(n, f);
33
- }, [n, f]);
34
- },
35
- c = t => {
36
- const n = e.useRef();
37
- return (
38
- e.useEffect(() => {
39
- n.current = t;
40
- }, [t]),
41
- n.current
42
- );
43
- };
44
- export {
45
- f as useDocumentEventListener,
46
- o as useEvent,
47
- r as useEventListener,
48
- n as useIsomorphicLayoutEffect,
49
- c as usePrevious,
50
- u as useWindowEventListener,
51
- };
1
+ import e from"react";import{events as t,throttle as n}from"@wiggindev/utils";const r="undefined"!=typeof window?e.useLayoutEffect:e.useEffect,o=t=>{const n=e.useRef(t);return r(()=>{n.current=t}),e.useMemo(()=>n.current,[])},u=(n,r,u)=>{const f=o(r);e.useEffect(()=>{const e=u.current;if(e&&e.addEventListener)return t.element.on(e,n,f),()=>t.element.off(e,n,f)},[u,n,f])},f=(n,r)=>{const u=o(r);e.useEffect(()=>{if(document&&document.addEventListener)return t.document.on(n,u),()=>t.document.off(n,u)},[n,u])},i=(n,r)=>{const u=o(r);e.useEffect(()=>{if(window&&window.addEventListener)return t.window.on(n,u),()=>t.window.off(n,u)},[n,u])},c=t=>{const n=e.useRef();return e.useEffect(()=>{n.current=t},[t]),n.current},s=(t=250)=>{const[u,f]=e.useState({width:0,height:0}),c=()=>f((()=>{const{innerWidth:e,innerHeight:t}=window;return{width:e,height:t}})()),s=o(n(c,t));return i("resize",s),r(()=>{c()},[]),u};export{f as useDocumentEventListener,o as useEvent,u as useEventListener,r as useIsomorphicLayoutEffect,c as usePrevious,s as useWindowDimensions,i as useWindowEventListener};
52
2
  //# sourceMappingURL=index.modern.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.js","sources":["../src/useIsomorphicLayoutEffect.ts","../src/useEvent.ts","../src/useEventListener.ts","../src/useDocumentEventListener.ts","../src/useWindowEventListener.ts","../src/usePrevious.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n","import React from 'react';\nimport { Callback } from '@wiggindev/utils';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\nexport const useEvent = <C extends Callback>(callback: C): C => {\n const callbackRef = React.useRef(callback);\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => callbackRef.current, []);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useEventListener = <\n K extends EventName<HTMLElementEventMap>,\n E extends HTMLElement\n>(\n eventName: K,\n listener: EventListener<HTMLElementEventMap, K>,\n element: React.RefObject<E>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n const node = element.current;\n if (!node || !node.addEventListener) {\n return;\n }\n events.element.on(node, eventName, stableListener);\n return () => events.element.off(node, eventName, stableListener);\n }, [element, eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useDocumentEventListener = <K extends EventName<DocumentEventMap>>(\n eventName: K,\n listener: EventListener<DocumentEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!document || !document.addEventListener) {\n return;\n }\n events.document.on(eventName, stableListener);\n return () => events.document.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useWindowEventListener = <K extends EventName<WindowEventMap>>(\n eventName: K,\n listener: EventListener<WindowEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!window || !window.addEventListener) {\n return;\n }\n events.window.on(eventName, stableListener);\n return () => events.window.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\n\nexport const usePrevious = <T>(value: T) => {\n const stateRef = React.useRef<T>();\n React.useEffect(() => {\n stateRef.current = value;\n }, [value]);\n return stateRef.current;\n};\n"],"names":["useIsomorphicLayoutEffect","window","React","useLayoutEffect","useEffect","useEvent","callback","callbackRef","useRef","current","useMemo","useEventListener","eventName","listener","element","stableListener","node","addEventListener","events","on","off","useDocumentEventListener","document","useWindowEventListener","usePrevious","value","stateRef"],"mappings":"+DAEaA,MAAAA,EACS,oBAAXC,OAAyBC,EAAMC,gBAAkBD,EAAME,UCCrDC,EAAgCC,IACzC,MAAMC,EAAcL,EAAMM,OAAOF,GAIjC,OAHAN,EAA0B,KACtBO,EAAYE,QAAUH,IAEnBJ,EAAMQ,QAAQ,IAAMH,EAAYE,QAAS,KCLvCE,EAAmB,CAI5BC,EACAC,EACAC,KAEA,MAAMC,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,KACZ,MAAMY,EAAOF,EAAQL,QACrB,GAAKO,GAASA,EAAKC,iBAInB,OADAC,EAAOJ,QAAQK,GAAGH,EAAMJ,EAAWG,GAC5B,IAAMG,EAAOJ,QAAQM,IAAIJ,EAAMJ,EAAWG,IAClD,CAACD,EAASF,EAAWG,KChBfM,EAA2B,CACpCT,EACAC,KAEA,MAAME,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,KACZ,GAAKkB,UAAaA,SAASL,iBAI3B,OADAC,EAAOI,SAASH,GAAGP,EAAWG,GACvB,IAAMG,EAAOI,SAASF,IAAIR,EAAWG,IAC7C,CAACH,EAAWG,KCXNQ,EAAyB,CAClCX,EACAC,KAEA,MAAME,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,KACZ,GAAKH,QAAWA,OAAOgB,iBAIvB,OADAC,EAAOjB,OAAOkB,GAAGP,EAAWG,GACrB,IAAMG,EAAOjB,OAAOmB,IAAIR,EAAWG,IAC3C,CAACH,EAAWG,KCbNS,EAAkBC,IAC3B,MAAMC,EAAWxB,EAAMM,SAIvB,OAHAN,EAAME,UAAU,KACZsB,EAASjB,QAAUgB,GACpB,CAACA,IACGC,EAASjB"}
1
+ {"version":3,"file":"index.modern.js","sources":["../src/useIsomorphicLayoutEffect.ts","../src/useEvent.ts","../src/useEventListener.ts","../src/useDocumentEventListener.ts","../src/useWindowEventListener.ts","../src/usePrevious.ts","../src/useWindowDimensions.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n","import React from 'react';\nimport { Callback } from '@wiggindev/utils';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\nexport const useEvent = <C extends Callback>(callback: C): C => {\n const callbackRef = React.useRef(callback);\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => callbackRef.current, []);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useEventListener = <\n K extends EventName<HTMLElementEventMap>,\n E extends HTMLElement\n>(\n eventName: K,\n listener: EventListener<HTMLElementEventMap, K>,\n element: React.RefObject<E>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n const node = element.current;\n if (!node || !node.addEventListener) {\n return;\n }\n events.element.on(node, eventName, stableListener);\n return () => events.element.off(node, eventName, stableListener);\n }, [element, eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useDocumentEventListener = <K extends EventName<DocumentEventMap>>(\n eventName: K,\n listener: EventListener<DocumentEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!document || !document.addEventListener) {\n return;\n }\n events.document.on(eventName, stableListener);\n return () => events.document.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useWindowEventListener = <K extends EventName<WindowEventMap>>(\n eventName: K,\n listener: EventListener<WindowEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!window || !window.addEventListener) {\n return;\n }\n events.window.on(eventName, stableListener);\n return () => events.window.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\n\nexport const usePrevious = <T>(value: T) => {\n const stateRef = React.useRef<T>();\n React.useEffect(() => {\n stateRef.current = value;\n }, [value]);\n return stateRef.current;\n};\n","import React from 'react';\nimport { throttle } from '@wiggindev/utils';\nimport { useWindowEventListener } from './useWindowEventListener';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useEvent } from './useEvent';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n};\n\nexport const useWindowDimensions = (throttleLimit = 250) => {\n const [windowDimensions, setWindowDimensions] = React.useState({\n width: 0,\n height: 0,\n });\n\n const updateWindowDimensions = () =>\n setWindowDimensions(getWindowDimensions());\n const handleResize = useEvent(\n throttle(updateWindowDimensions, throttleLimit)\n );\n\n useWindowEventListener('resize', handleResize);\n\n useIsomorphicLayoutEffect(() => {\n updateWindowDimensions();\n }, []);\n\n return windowDimensions;\n};\n"],"names":["useIsomorphicLayoutEffect","window","React","useLayoutEffect","useEffect","useEvent","callback","callbackRef","useRef","current","useMemo","useEventListener","eventName","listener","element","stableListener","node","addEventListener","events","on","off","useDocumentEventListener","document","useWindowEventListener","usePrevious","value","stateRef","useWindowDimensions","throttleLimit","windowDimensions","setWindowDimensions","useState","width","height","updateWindowDimensions","innerWidth","innerHeight","getWindowDimensions","handleResize","throttle"],"mappings":"6EAEaA,MAAAA,EACS,oBAAXC,OAAyBC,EAAMC,gBAAkBD,EAAME,UCCrDC,EAAgCC,IACzC,MAAMC,EAAcL,EAAMM,OAAOF,GAIjC,OAHAN,EAA0B,KACtBO,EAAYE,QAAUH,IAEnBJ,EAAMQ,QAAQ,IAAMH,EAAYE,QAAS,KCLvCE,EAAmB,CAI5BC,EACAC,EACAC,KAEA,MAAMC,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,KACZ,MAAMY,EAAOF,EAAQL,QACrB,GAAKO,GAASA,EAAKC,iBAInB,OADAC,EAAOJ,QAAQK,GAAGH,EAAMJ,EAAWG,GAC5B,IAAMG,EAAOJ,QAAQM,IAAIJ,EAAMJ,EAAWG,IAClD,CAACD,EAASF,EAAWG,KChBfM,EAA2B,CACpCT,EACAC,KAEA,MAAME,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,KACZ,GAAKkB,UAAaA,SAASL,iBAI3B,OADAC,EAAOI,SAASH,GAAGP,EAAWG,GACvB,IAAMG,EAAOI,SAASF,IAAIR,EAAWG,IAC7C,CAACH,EAAWG,KCXNQ,EAAyB,CAClCX,EACAC,KAEA,MAAME,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,KACZ,GAAKH,QAAWA,OAAOgB,iBAIvB,OADAC,EAAOjB,OAAOkB,GAAGP,EAAWG,GACrB,IAAMG,EAAOjB,OAAOmB,IAAIR,EAAWG,IAC3C,CAACH,EAAWG,KCbNS,EAAkBC,IAC3B,MAAMC,EAAWxB,EAAMM,SAIvB,OAHAN,EAAME,UAAU,KACZsB,EAASjB,QAAUgB,GACpB,CAACA,IACGC,EAASjB,SCOPkB,EAAsB,CAACC,EAAgB,OAChD,MAAOC,EAAkBC,GAAuB5B,EAAM6B,SAAS,CAC3DC,MAAO,EACPC,OAAQ,IAGNC,EAAyB,IAC3BJ,EAfoB,MACxB,MAAQK,WAAYH,EAAOI,YAAaH,GAAWhC,OACnD,MAAO,CACH+B,MAAAA,EACAC,OAAAA,IAWoBI,IAClBC,EAAejC,EACjBkC,EAASL,EAAwBN,IASrC,OANAL,EAAuB,SAAUe,GAEjCtC,EAA0B,KACtBkC,KACD,IAEIL"}
@@ -1,81 +1,2 @@
1
- import n from 'react';
2
- import { events as e } from '@wiggindev/utils';
3
- var t = 'undefined' != typeof window ? n.useLayoutEffect : n.useEffect,
4
- r = function (e) {
5
- var r = n.useRef(e);
6
- return (
7
- t(function () {
8
- r.current = e;
9
- }),
10
- n.useMemo(function () {
11
- return r.current;
12
- }, [])
13
- );
14
- },
15
- u = function (t, u, f) {
16
- var o = r(u);
17
- n.useEffect(
18
- function () {
19
- var n = f.current;
20
- if (n && n.addEventListener)
21
- return (
22
- e.element.on(n, t, o),
23
- function () {
24
- return e.element.off(n, t, o);
25
- }
26
- );
27
- },
28
- [f, t, o]
29
- );
30
- },
31
- f = function (t, u) {
32
- var f = r(u);
33
- n.useEffect(
34
- function () {
35
- if (document && document.addEventListener)
36
- return (
37
- e.document.on(t, f),
38
- function () {
39
- return e.document.off(t, f);
40
- }
41
- );
42
- },
43
- [t, f]
44
- );
45
- },
46
- o = function (t, u) {
47
- var f = r(u);
48
- n.useEffect(
49
- function () {
50
- if (window && window.addEventListener)
51
- return (
52
- e.window.on(t, f),
53
- function () {
54
- return e.window.off(t, f);
55
- }
56
- );
57
- },
58
- [t, f]
59
- );
60
- },
61
- i = function (e) {
62
- var t = n.useRef();
63
- return (
64
- n.useEffect(
65
- function () {
66
- t.current = e;
67
- },
68
- [e]
69
- ),
70
- t.current
71
- );
72
- };
73
- export {
74
- f as useDocumentEventListener,
75
- r as useEvent,
76
- u as useEventListener,
77
- t as useIsomorphicLayoutEffect,
78
- i as usePrevious,
79
- o as useWindowEventListener,
80
- };
1
+ import n from"react";import{events as e,throttle as t}from"@wiggindev/utils";var r="undefined"!=typeof window?n.useLayoutEffect:n.useEffect,u=function(e){var t=n.useRef(e);return r(function(){t.current=e}),n.useMemo(function(){return t.current},[])},i=function(t,r,i){var f=u(r);n.useEffect(function(){var n=i.current;if(n&&n.addEventListener)return e.element.on(n,t,f),function(){return e.element.off(n,t,f)}},[i,t,f])},f=function(t,r){var i=u(r);n.useEffect(function(){if(document&&document.addEventListener)return e.document.on(t,i),function(){return e.document.off(t,i)}},[t,i])},o=function(t,r){var i=u(r);n.useEffect(function(){if(window&&window.addEventListener)return e.window.on(t,i),function(){return e.window.off(t,i)}},[t,i])},c=function(e){var t=n.useRef();return n.useEffect(function(){t.current=e},[e]),t.current},d=function(e){void 0===e&&(e=250);var i=n.useState({width:0,height:0}),f=i[0],c=i[1],d=function(){return c({width:(n=window).innerWidth,height:n.innerHeight});var n},a=u(t(d,e));return o("resize",a),r(function(){d()},[]),f};export{f as useDocumentEventListener,u as useEvent,i as useEventListener,r as useIsomorphicLayoutEffect,c as usePrevious,d as useWindowDimensions,o as useWindowEventListener};
81
2
  //# sourceMappingURL=index.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.module.js","sources":["../src/useIsomorphicLayoutEffect.ts","../src/useEvent.ts","../src/useEventListener.ts","../src/useDocumentEventListener.ts","../src/useWindowEventListener.ts","../src/usePrevious.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n","import React from 'react';\nimport { Callback } from '@wiggindev/utils';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\nexport const useEvent = <C extends Callback>(callback: C): C => {\n const callbackRef = React.useRef(callback);\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => callbackRef.current, []);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useEventListener = <\n K extends EventName<HTMLElementEventMap>,\n E extends HTMLElement\n>(\n eventName: K,\n listener: EventListener<HTMLElementEventMap, K>,\n element: React.RefObject<E>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n const node = element.current;\n if (!node || !node.addEventListener) {\n return;\n }\n events.element.on(node, eventName, stableListener);\n return () => events.element.off(node, eventName, stableListener);\n }, [element, eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useDocumentEventListener = <K extends EventName<DocumentEventMap>>(\n eventName: K,\n listener: EventListener<DocumentEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!document || !document.addEventListener) {\n return;\n }\n events.document.on(eventName, stableListener);\n return () => events.document.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useWindowEventListener = <K extends EventName<WindowEventMap>>(\n eventName: K,\n listener: EventListener<WindowEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!window || !window.addEventListener) {\n return;\n }\n events.window.on(eventName, stableListener);\n return () => events.window.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\n\nexport const usePrevious = <T>(value: T) => {\n const stateRef = React.useRef<T>();\n React.useEffect(() => {\n stateRef.current = value;\n }, [value]);\n return stateRef.current;\n};\n"],"names":["useIsomorphicLayoutEffect","window","React","useLayoutEffect","useEffect","useEvent","callback","callbackRef","useRef","current","useMemo","useEventListener","eventName","listener","element","stableListener","node","addEventListener","events","on","off","useDocumentEventListener","document","useWindowEventListener","usePrevious","value","stateRef"],"mappings":"+DAEaA,IAAAA,EACS,oBAAXC,OAAyBC,EAAMC,gBAAkBD,EAAME,UCCrDC,EAAW,SAAqBC,GACzC,IAAMC,EAAcL,EAAMM,OAAOF,GAIjC,OAHAN,EAA0B,WACtBO,EAAYE,QAAUH,IAEnBJ,EAAMQ,QAAQ,WAAA,OAAMH,EAAYE,SAAS,KCLvCE,EAAmB,SAI5BC,EACAC,EACAC,GAEA,IAAMC,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,WACZ,IAAMY,EAAOF,EAAQL,QACrB,GAAKO,GAASA,EAAKC,iBAInB,OADAC,EAAOJ,QAAQK,GAAGH,EAAMJ,EAAWG,qBACtBG,EAAOJ,QAAQM,IAAIJ,EAAMJ,EAAWG,KAClD,CAACD,EAASF,EAAWG,KChBfM,EAA2B,SACpCT,EACAC,GAEA,IAAME,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,WACZ,GAAKkB,UAAaA,SAASL,iBAI3B,OADAC,EAAOI,SAASH,GAAGP,EAAWG,GACjBG,WAAAA,OAAAA,EAAOI,SAASF,IAAIR,EAAWG,KAC7C,CAACH,EAAWG,KCXNQ,EAAyB,SAClCX,EACAC,GAEA,IAAME,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,WACZ,GAAKH,QAAWA,OAAOgB,iBAIvB,OADAC,EAAOjB,OAAOkB,GAAGP,EAAWG,GACfG,WAAAA,OAAAA,EAAOjB,OAAOmB,IAAIR,EAAWG,KAC3C,CAACH,EAAWG,KCbNS,EAAc,SAAIC,GAC3B,IAAMC,EAAWxB,EAAMM,SAIvB,OAHAN,EAAME,UAAU,WACZsB,EAASjB,QAAUgB,GACpB,CAACA,IACGC,EAASjB"}
1
+ {"version":3,"file":"index.module.js","sources":["../src/useIsomorphicLayoutEffect.ts","../src/useEvent.ts","../src/useEventListener.ts","../src/useDocumentEventListener.ts","../src/useWindowEventListener.ts","../src/usePrevious.ts","../src/useWindowDimensions.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n","import React from 'react';\nimport { Callback } from '@wiggindev/utils';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\nexport const useEvent = <C extends Callback>(callback: C): C => {\n const callbackRef = React.useRef(callback);\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => callbackRef.current, []);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useEventListener = <\n K extends EventName<HTMLElementEventMap>,\n E extends HTMLElement\n>(\n eventName: K,\n listener: EventListener<HTMLElementEventMap, K>,\n element: React.RefObject<E>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n const node = element.current;\n if (!node || !node.addEventListener) {\n return;\n }\n events.element.on(node, eventName, stableListener);\n return () => events.element.off(node, eventName, stableListener);\n }, [element, eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useDocumentEventListener = <K extends EventName<DocumentEventMap>>(\n eventName: K,\n listener: EventListener<DocumentEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!document || !document.addEventListener) {\n return;\n }\n events.document.on(eventName, stableListener);\n return () => events.document.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useWindowEventListener = <K extends EventName<WindowEventMap>>(\n eventName: K,\n listener: EventListener<WindowEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!window || !window.addEventListener) {\n return;\n }\n events.window.on(eventName, stableListener);\n return () => events.window.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\n\nexport const usePrevious = <T>(value: T) => {\n const stateRef = React.useRef<T>();\n React.useEffect(() => {\n stateRef.current = value;\n }, [value]);\n return stateRef.current;\n};\n","import React from 'react';\nimport { throttle } from '@wiggindev/utils';\nimport { useWindowEventListener } from './useWindowEventListener';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\nimport { useEvent } from './useEvent';\n\nconst getWindowDimensions = () => {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n};\n\nexport const useWindowDimensions = (throttleLimit = 250) => {\n const [windowDimensions, setWindowDimensions] = React.useState({\n width: 0,\n height: 0,\n });\n\n const updateWindowDimensions = () =>\n setWindowDimensions(getWindowDimensions());\n const handleResize = useEvent(\n throttle(updateWindowDimensions, throttleLimit)\n );\n\n useWindowEventListener('resize', handleResize);\n\n useIsomorphicLayoutEffect(() => {\n updateWindowDimensions();\n }, []);\n\n return windowDimensions;\n};\n"],"names":["useIsomorphicLayoutEffect","window","React","useLayoutEffect","useEffect","useEvent","callback","callbackRef","useRef","current","useMemo","useEventListener","eventName","listener","element","stableListener","node","addEventListener","events","on","off","useDocumentEventListener","document","useWindowEventListener","usePrevious","value","stateRef","useWindowDimensions","throttleLimit","useState","width","height","windowDimensions","_React$useState","setWindowDimensions","updateWindowDimensions","_window","innerWidth","innerHeight","handleResize","throttle"],"mappings":"6EAEaA,IAAAA,EACS,oBAAXC,OAAyBC,EAAMC,gBAAkBD,EAAME,UCCrDC,EAAW,SAAqBC,GACzC,IAAMC,EAAcL,EAAMM,OAAOF,GAIjC,OAHAN,EAA0B,WACtBO,EAAYE,QAAUH,IAEnBJ,EAAMQ,QAAQ,WAAA,OAAMH,EAAYE,SAAS,KCLvCE,EAAmB,SAI5BC,EACAC,EACAC,GAEA,IAAMC,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,WACZ,IAAMY,EAAOF,EAAQL,QACrB,GAAKO,GAASA,EAAKC,iBAInB,OADAC,EAAOJ,QAAQK,GAAGH,EAAMJ,EAAWG,qBACtBG,EAAOJ,QAAQM,IAAIJ,EAAMJ,EAAWG,KAClD,CAACD,EAASF,EAAWG,KChBfM,EAA2B,SACpCT,EACAC,GAEA,IAAME,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,WACZ,GAAKkB,UAAaA,SAASL,iBAI3B,OADAC,EAAOI,SAASH,GAAGP,EAAWG,GACjBG,WAAAA,OAAAA,EAAOI,SAASF,IAAIR,EAAWG,KAC7C,CAACH,EAAWG,KCXNQ,EAAyB,SAClCX,EACAC,GAEA,IAAME,EAAiBV,EAASQ,GAChCX,EAAME,UAAU,WACZ,GAAKH,QAAWA,OAAOgB,iBAIvB,OADAC,EAAOjB,OAAOkB,GAAGP,EAAWG,GACfG,WAAAA,OAAAA,EAAOjB,OAAOmB,IAAIR,EAAWG,KAC3C,CAACH,EAAWG,KCbNS,EAAc,SAAIC,GAC3B,IAAMC,EAAWxB,EAAMM,SAIvB,OAHAN,EAAME,UAAU,WACZsB,EAASjB,QAAUgB,GACpB,CAACA,IACGC,EAASjB,SCOPkB,EAAsB,SAACC,YAAAA,IAAAA,EAAgB,KAChD,IAAgD1B,EAAAA,EAAM2B,SAAS,CAC3DC,MAAO,EACPC,OAAQ,IAFLC,EAAPC,EAAA,GAAyBC,EAAzBD,EAAA,GAKME,EAAyB,kBAC3BD,EAbG,CACHJ,OAFJM,EAAmDnC,QAA3CoC,WAGJN,OAHuBO,EAAAA,cADH,IACxBF,GAeMG,EAAelC,EACjBmC,EAASL,EAAwBP,IASrC,OANAL,EAAuB,SAAUgB,GAEjCvC,EAA0B,WACtBmC,KACD,IAEIH"}
@@ -1,7 +1,2 @@
1
- import { EventName, EventListener } from '@wiggindev/utils';
2
- export declare const useDocumentEventListener: <
3
- K extends EventName<DocumentEventMap>
4
- >(
5
- eventName: K,
6
- listener: EventListener<DocumentEventMap, K>
7
- ) => void;
1
+ import { EventName, EventListener } from '@wiggindev/utils';
2
+ export declare const useDocumentEventListener: <K extends EventName<DocumentEventMap>>(eventName: K, listener: EventListener<DocumentEventMap, K>) => void;
@@ -1,2 +1,2 @@
1
- import { Callback } from '@wiggindev/utils';
2
- export declare const useEvent: <C extends Callback>(callback: C) => C;
1
+ import { Callback } from '@wiggindev/utils';
2
+ export declare const useEvent: <C extends Callback>(callback: C) => C;
@@ -1,10 +1,3 @@
1
- import React from 'react';
2
- import { EventName, EventListener } from '@wiggindev/utils';
3
- export declare const useEventListener: <
4
- K extends EventName<HTMLElementEventMap>,
5
- E extends HTMLElement
6
- >(
7
- eventName: K,
8
- listener: EventListener<HTMLElementEventMap, K>,
9
- element: React.RefObject<E>
10
- ) => void;
1
+ import React from 'react';
2
+ import { EventName, EventListener } from '@wiggindev/utils';
3
+ export declare const useEventListener: <K extends EventName<HTMLElementEventMap>, E extends HTMLElement>(eventName: K, listener: EventListener<HTMLElementEventMap, K>, element: React.RefObject<E>) => void;
@@ -1,2 +1,2 @@
1
- import React from 'react';
2
- export declare const useIsomorphicLayoutEffect: typeof React.useEffect;
1
+ import React from 'react';
2
+ export declare const useIsomorphicLayoutEffect: typeof React.useLayoutEffect;
@@ -1 +1 @@
1
- export declare const usePrevious: <T>(value: T) => T | undefined;
1
+ export declare const usePrevious: <T>(value: T) => T | undefined;
@@ -1,4 +1,4 @@
1
- export declare const useWindowDimensions: (throttleLimit?: number) => {
2
- width: number;
3
- height: number;
4
- };
1
+ export declare const useWindowDimensions: (throttleLimit?: number) => {
2
+ width: number;
3
+ height: number;
4
+ };
@@ -1,7 +1,2 @@
1
- import { EventName, EventListener } from '@wiggindev/utils';
2
- export declare const useWindowEventListener: <
3
- K extends EventName<WindowEventMap>
4
- >(
5
- eventName: K,
6
- listener: EventListener<WindowEventMap, K>
7
- ) => void;
1
+ import { EventName, EventListener } from '@wiggindev/utils';
2
+ export declare const useWindowEventListener: <K extends EventName<WindowEventMap>>(eventName: K, listener: EventListener<WindowEventMap, K>) => void;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@wiggindev/hooks",
3
3
  "description": "Various hooks that I use in my projects",
4
- "version": "0.2.1",
4
+ "version": "0.2.4",
5
5
  "author": {
6
6
  "name": "Andrew Wiggin",
7
7
  "email": "andrew@wiggin.dev",
@@ -19,8 +19,8 @@
19
19
  "unpkg": "dist/index.umd.js",
20
20
  "types": "dist/index.d.ts",
21
21
  "scripts": {
22
- "build": "rm -rf dist && microbundle",
23
- "dev": "rm -rf dist && microbundle watch"
22
+ "build": "rm -rf dist && microbundle -f modern,esm,cjs",
23
+ "dev": "rm -rf dist && microbundle -f modern,esm,cjs watch"
24
24
  },
25
25
  "dependencies": {
26
26
  "@wiggindev/utils": "*"
@@ -30,7 +30,9 @@
30
30
  },
31
31
  "devDependencies": {
32
32
  "@types/react": "^18.0.9",
33
- "microbundle": "^0.15.0"
33
+ "eslint-plugin-react": "^7.29.4",
34
+ "microbundle": "^0.15.0",
35
+ "react": "^18.1.0"
34
36
  },
35
37
  "packageManager": "yarn@3.2.1",
36
38
  "publishConfig": {
package/src/index.ts CHANGED
@@ -4,3 +4,4 @@ export * from './useEventListener';
4
4
  export * from './useDocumentEventListener';
5
5
  export * from './useWindowEventListener';
6
6
  export * from './usePrevious';
7
+ export * from './useWindowDimensions';
package/dist/index.umd.js DELETED
@@ -1,88 +0,0 @@
1
- !(function (e, n) {
2
- 'object' == typeof exports && 'undefined' != typeof module
3
- ? n(exports, require('react'), require('@wiggindev/utils'))
4
- : 'function' == typeof define && define.amd
5
- ? define(['exports', 'react', '@wiggindev/utils'], n)
6
- : n(((e || self).hooks = {}), e.react, e.utils);
7
- })(this, function (e, n, t) {
8
- function u(e) {
9
- return e && 'object' == typeof e && 'default' in e ? e : { default: e };
10
- }
11
- var f = /*#__PURE__*/ u(n),
12
- o =
13
- 'undefined' != typeof window
14
- ? f.default.useLayoutEffect
15
- : f.default.useEffect,
16
- r = function (e) {
17
- var n = f.default.useRef(e);
18
- return (
19
- o(function () {
20
- n.current = e;
21
- }),
22
- f.default.useMemo(function () {
23
- return n.current;
24
- }, [])
25
- );
26
- };
27
- (e.useDocumentEventListener = function (e, n) {
28
- var u = r(n);
29
- f.default.useEffect(
30
- function () {
31
- if (document && document.addEventListener)
32
- return (
33
- t.events.document.on(e, u),
34
- function () {
35
- return t.events.document.off(e, u);
36
- }
37
- );
38
- },
39
- [e, u]
40
- );
41
- }),
42
- (e.useEvent = r),
43
- (e.useEventListener = function (e, n, u) {
44
- var o = r(n);
45
- f.default.useEffect(
46
- function () {
47
- var n = u.current;
48
- if (n && n.addEventListener)
49
- return (
50
- t.events.element.on(n, e, o),
51
- function () {
52
- return t.events.element.off(n, e, o);
53
- }
54
- );
55
- },
56
- [u, e, o]
57
- );
58
- }),
59
- (e.useIsomorphicLayoutEffect = o),
60
- (e.usePrevious = function (e) {
61
- var n = f.default.useRef();
62
- return (
63
- f.default.useEffect(
64
- function () {
65
- n.current = e;
66
- },
67
- [e]
68
- ),
69
- n.current
70
- );
71
- }),
72
- (e.useWindowEventListener = function (e, n) {
73
- var u = r(n);
74
- f.default.useEffect(
75
- function () {
76
- if (window && window.addEventListener)
77
- return (
78
- t.events.window.on(e, u),
79
- function () {
80
- return t.events.window.off(e, u);
81
- }
82
- );
83
- },
84
- [e, u]
85
- );
86
- });
87
- });
88
- //# sourceMappingURL=index.umd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.umd.js","sources":["../src/useIsomorphicLayoutEffect.ts","../src/useEvent.ts","../src/useDocumentEventListener.ts","../src/useEventListener.ts","../src/usePrevious.ts","../src/useWindowEventListener.ts"],"sourcesContent":["import React from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? React.useLayoutEffect : React.useEffect;\n","import React from 'react';\nimport { Callback } from '@wiggindev/utils';\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\nexport const useEvent = <C extends Callback>(callback: C): C => {\n const callbackRef = React.useRef(callback);\n useIsomorphicLayoutEffect(() => {\n callbackRef.current = callback;\n });\n return React.useMemo(() => callbackRef.current, []);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useDocumentEventListener = <K extends EventName<DocumentEventMap>>(\n eventName: K,\n listener: EventListener<DocumentEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!document || !document.addEventListener) {\n return;\n }\n events.document.on(eventName, stableListener);\n return () => events.document.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useEventListener = <\n K extends EventName<HTMLElementEventMap>,\n E extends HTMLElement\n>(\n eventName: K,\n listener: EventListener<HTMLElementEventMap, K>,\n element: React.RefObject<E>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n const node = element.current;\n if (!node || !node.addEventListener) {\n return;\n }\n events.element.on(node, eventName, stableListener);\n return () => events.element.off(node, eventName, stableListener);\n }, [element, eventName, stableListener]);\n};\n","import React from 'react';\n\nexport const usePrevious = <T>(value: T) => {\n const stateRef = React.useRef<T>();\n React.useEffect(() => {\n stateRef.current = value;\n }, [value]);\n return stateRef.current;\n};\n","import React from 'react';\nimport { events, EventName, EventListener } from '@wiggindev/utils';\nimport { useEvent } from './useEvent';\n\nexport const useWindowEventListener = <K extends EventName<WindowEventMap>>(\n eventName: K,\n listener: EventListener<WindowEventMap, K>\n) => {\n const stableListener = useEvent(listener);\n React.useEffect(() => {\n if (!window || !window.addEventListener) {\n return;\n }\n events.window.on(eventName, stableListener);\n return () => events.window.off(eventName, stableListener);\n }, [eventName, stableListener]);\n};\n"],"names":["useIsomorphicLayoutEffect","window","React","useLayoutEffect","useEffect","useEvent","callback","callbackRef","useRef","current","useMemo","eventName","listener","stableListener","document","addEventListener","events","on","off","element","node","value","stateRef"],"mappings":"2ZAEaA,EACS,oBAAXC,OAAyBC,EAAAA,QAAMC,gBAAkBD,EAAAA,QAAME,UCCrDC,EAAW,SAAqBC,GACzC,IAAMC,EAAcL,EAAK,QAACM,OAAOF,GAIjC,OAHAN,EAA0B,WACtBO,EAAYE,QAAUH,IAEnBJ,UAAMQ,QAAQ,WAAA,OAAMH,EAAYE,SAAS,gCCLZ,SACpCE,EACAC,GAEA,IAAMC,EAAiBR,EAASO,GAChCV,EAAK,QAACE,UAAU,WACZ,GAAKU,UAAaA,SAASC,iBAI3B,OADAC,EAAMA,OAACF,SAASG,GAAGN,EAAWE,GACjBG,WAAAA,OAAAA,EAAAA,OAAOF,SAASI,IAAIP,EAAWE,KAC7C,CAACF,EAAWE,qCCXa,SAI5BF,EACAC,EACAO,GAEA,IAAMN,EAAiBR,EAASO,GAChCV,EAAK,QAACE,UAAU,WACZ,IAAMgB,EAAOD,EAAQV,QACrB,GAAKW,GAASA,EAAKL,iBAInB,OADAC,EAAMA,OAACG,QAAQF,GAAGG,EAAMT,EAAWE,qBACtBG,EAAMA,OAACG,QAAQD,IAAIE,EAAMT,EAAWE,KAClD,CAACM,EAASR,EAAWE,iDClBD,SAAIQ,GAC3B,IAAMC,EAAWpB,EAAK,QAACM,SAIvB,OAHAN,EAAK,QAACE,UAAU,WACZkB,EAASb,QAAUY,GACpB,CAACA,IACGC,EAASb,kCCHkB,SAClCE,EACAC,GAEA,IAAMC,EAAiBR,EAASO,GAChCV,EAAK,QAACE,UAAU,WACZ,GAAKH,QAAWA,OAAOc,iBAIvB,OADAC,EAAMA,OAACf,OAAOgB,GAAGN,EAAWE,GACfG,WAAAA,OAAAA,EAAAA,OAAOf,OAAOiB,IAAIP,EAAWE,KAC3C,CAACF,EAAWE"}