@wiggindev/hooks 0.2.4 → 0.2.7

Sign up to get free protection for your applications and to get access to all the features.
package/package.json CHANGED
@@ -1,42 +1,45 @@
1
1
  {
2
- "name": "@wiggindev/hooks",
3
- "description": "Various hooks that I use in my projects",
4
- "version": "0.2.4",
5
- "author": {
6
- "name": "Andrew Wiggin",
7
- "email": "andrew@wiggin.dev",
8
- "url": "https://wiggin.dev"
9
- },
10
- "repository": "git://github.com/wiggindev/hooks",
11
- "type": "module",
12
- "source": "src/index.ts",
13
- "exports": {
14
- "require": "./dist/index.cjs",
15
- "default": "./dist/index.modern.js"
16
- },
17
- "main": "dist/index.cjs",
18
- "module": "dist/index.module.js",
19
- "unpkg": "dist/index.umd.js",
20
- "types": "dist/index.d.ts",
21
- "scripts": {
22
- "build": "rm -rf dist && microbundle -f modern,esm,cjs",
23
- "dev": "rm -rf dist && microbundle -f modern,esm,cjs watch"
24
- },
25
- "dependencies": {
26
- "@wiggindev/utils": "*"
27
- },
28
- "peerDependencies": {
29
- "react": ">= 18"
30
- },
31
- "devDependencies": {
32
- "@types/react": "^18.0.9",
33
- "eslint-plugin-react": "^7.29.4",
34
- "microbundle": "^0.15.0",
35
- "react": "^18.1.0"
36
- },
37
- "packageManager": "yarn@3.2.1",
38
- "publishConfig": {
39
- "access": "public",
40
- "registry": "https://registry.npmjs.org/"
41
- }
42
- }
2
+ "name": "@wiggindev/hooks",
3
+ "description": "Various hooks that I use in my projects",
4
+ "version": "0.2.7",
5
+ "author": {
6
+ "name": "Andrew Wiggin",
7
+ "email": "andrew@wiggin.dev",
8
+ "url": "https://wiggin.dev"
9
+ },
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/wiggindev/-wiggindev.git",
13
+ "directory": "packages/hooks"
14
+ },
15
+ "type": "module",
16
+ "source": "src/index.ts",
17
+ "exports": {
18
+ "require": "./dist/index.cjs",
19
+ "default": "./dist/index.modern.js"
20
+ },
21
+ "main": "dist/index.cjs",
22
+ "module": "dist/index.module.js",
23
+ "unpkg": "dist/index.umd.js",
24
+ "types": "dist/index.d.ts",
25
+ "scripts": {
26
+ "build": "rm -rf dist && microbundle -f modern,esm,cjs",
27
+ "dev": "rm -rf dist && microbundle -f modern,esm,cjs watch"
28
+ },
29
+ "dependencies": {
30
+ "@wiggindev/utils": "*"
31
+ },
32
+ "peerDependencies": {
33
+ "react": ">= 18"
34
+ },
35
+ "devDependencies": {
36
+ "@types/react": "^18.0.9",
37
+ "eslint-plugin-react": "^7.29.4",
38
+ "microbundle": "^0.15.0",
39
+ "react": "^18.1.0"
40
+ },
41
+ "packageManager": "yarn@3.2.1",
42
+ "publishConfig": {
43
+ "access": "public"
44
+ }
45
+ }
package/dist/index.cjs DELETED
@@ -1,2 +0,0 @@
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
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
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 DELETED
@@ -1,7 +0,0 @@
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,2 +0,0 @@
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};
2
- //# sourceMappingURL=index.modern.js.map
@@ -1 +0,0 @@
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,2 +0,0 @@
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};
2
- //# sourceMappingURL=index.module.js.map
@@ -1 +0,0 @@
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,2 +0,0 @@
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 +0,0 @@
1
- import { Callback } from '@wiggindev/utils';
2
- export declare const useEvent: <C extends Callback>(callback: C) => C;
@@ -1,3 +0,0 @@
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 +0,0 @@
1
- import React from 'react';
2
- export declare const useIsomorphicLayoutEffect: typeof React.useLayoutEffect;
@@ -1 +0,0 @@
1
- export declare const usePrevious: <T>(value: T) => T | undefined;
@@ -1,4 +0,0 @@
1
- export declare const useWindowDimensions: (throttleLimit?: number) => {
2
- width: number;
3
- height: number;
4
- };
@@ -1,2 +0,0 @@
1
- import { EventName, EventListener } from '@wiggindev/utils';
2
- export declare const useWindowEventListener: <K extends EventName<WindowEventMap>>(eventName: K, listener: EventListener<WindowEventMap, K>) => void;