@wiggindev/hooks 0.2.2 → 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.2",
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",
23
- "dev": "rm -rf dist && microbundle 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},[])};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])};
2
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
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"}
package/dist/index.d.ts DELETED
@@ -1,6 +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';
@@ -1,52 +0,0 @@
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
- };
52
- //# 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"],"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,81 +0,0 @@
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
- };
81
- //# 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"],"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"}
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"}
@@ -1,7 +0,0 @@
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,2 +0,0 @@
1
- import { Callback } from '@wiggindev/utils';
2
- export declare const useEvent: <C extends Callback>(callback: C) => C;
@@ -1,10 +0,0 @@
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,2 +0,0 @@
1
- import React from 'react';
2
- export declare const useIsomorphicLayoutEffect: typeof React.useEffect;
@@ -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,7 +0,0 @@
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;