matsuri-hooks 2.0.2 → 2.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/useClipboardCopy.js +2 -2
- package/esm/useClipboardCopy.js.map +1 -1
- package/esm/useIntersectionObserver.js +1 -1
- package/esm/useIntersectionObserver.js.map +1 -1
- package/package.json +12 -12
- package/useClipboardCopy.js +2 -2
- package/useClipboardCopy.js.map +1 -1
- package/useIntersectionObserver.js +1 -1
- package/useIntersectionObserver.js.map +1 -1
package/esm/useClipboardCopy.js
CHANGED
|
@@ -12,9 +12,9 @@ export var useClipboardCopy = options => {
|
|
|
12
12
|
}
|
|
13
13
|
var successed = yield (_navigator = navigator) == null || (_navigator = _navigator.clipboard) == null ? void 0 : _navigator.writeText(copyText).then(() => true).catch(() => false);
|
|
14
14
|
if (successed) {
|
|
15
|
-
options == null || options.onSuccess == null
|
|
15
|
+
options == null || options.onSuccess == null || options.onSuccess(copyText);
|
|
16
16
|
} else {
|
|
17
|
-
options == null || options.onFailure == null
|
|
17
|
+
options == null || options.onFailure == null || options.onFailure(copyText);
|
|
18
18
|
}
|
|
19
19
|
return successed;
|
|
20
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useClipboardCopy.js","names":["useCallback","useKeyboardShortcut","useClipboardCopy","options","copy","_ref","_asyncToGenerator","otherText","_navigator","copyText","text","undefined","successed","navigator","clipboard","writeText","then","catch","onSuccess","onFailure","_x","apply","arguments","key"],"sources":["../../src/useClipboardCopy.tsx"],"sourcesContent":["import { useCallback } from \"react\"\nimport { useKeyboardShortcut } from \"./useKeyboardShortcut\"\n\nexport const useClipboardCopy = (options?: {\n text?: string\n onSuccess?: (text: string) => void\n onFailure?: (text: string) => void\n key?: string\n}) => {\n const copy = useCallback(\n async (otherText?: string) => {\n const copyText = otherText || options?.text\n if (copyText === undefined) {\n return false\n }\n const successed = await navigator?.clipboard\n ?.writeText(copyText)\n .then(() => true)\n .catch(() => false)\n if (successed) {\n options?.onSuccess?.(copyText)\n } else {\n options?.onFailure?.(copyText)\n }\n return successed\n },\n [options]\n )\n\n useKeyboardShortcut(options?.key, copy)\n return copy\n}\n"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,mBAAmB,QAAQ,uBAAuB;AAE3D,OAAO,IAAMC,gBAAgB,GAAIC,OAKhC,IAAK;EACF,IAAMC,IAAI,GAAGJ,WAAW;IAAA,IAAAK,IAAA,GAAAC,iBAAA,CACpB,WAAOC,SAAkB,EAAK;MAAA,IAAAC,UAAA;MAC1B,IAAMC,QAAQ,GAAGF,SAAS,KAAIJ,OAAO,oBAAPA,OAAO,CAAEO,IAAI;MAC3C,IAAID,QAAQ,KAAKE,SAAS,EAAE;QACxB,OAAO,KAAK;MAChB;MACA,IAAMC,SAAS,UAAAJ,UAAA,GAASK,SAAS,cAAAL,UAAA,GAATA,UAAA,CAAWM,SAAS,qBAApBN,UAAA,CAClBO,SAAS,CAACN,QAAQ,CAAC,CACpBO,IAAI,CAAC,MAAM,IAAI,CAAC,CAChBC,KAAK,CAAC,MAAM,KAAK,CAAC;MACvB,IAAIL,SAAS,EAAE;QACXT,OAAO,YAAPA,OAAO,CAAEe,SAAS,
|
|
1
|
+
{"version":3,"file":"useClipboardCopy.js","names":["useCallback","useKeyboardShortcut","useClipboardCopy","options","copy","_ref","_asyncToGenerator","otherText","_navigator","copyText","text","undefined","successed","navigator","clipboard","writeText","then","catch","onSuccess","onFailure","_x","apply","arguments","key"],"sources":["../../src/useClipboardCopy.tsx"],"sourcesContent":["import { useCallback } from \"react\"\nimport { useKeyboardShortcut } from \"./useKeyboardShortcut\"\n\nexport const useClipboardCopy = (options?: {\n text?: string\n onSuccess?: (text: string) => void\n onFailure?: (text: string) => void\n key?: string\n}) => {\n const copy = useCallback(\n async (otherText?: string) => {\n const copyText = otherText || options?.text\n if (copyText === undefined) {\n return false\n }\n const successed = await navigator?.clipboard\n ?.writeText(copyText)\n .then(() => true)\n .catch(() => false)\n if (successed) {\n options?.onSuccess?.(copyText)\n } else {\n options?.onFailure?.(copyText)\n }\n return successed\n },\n [options]\n )\n\n useKeyboardShortcut(options?.key, copy)\n return copy\n}\n"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,mBAAmB,QAAQ,uBAAuB;AAE3D,OAAO,IAAMC,gBAAgB,GAAIC,OAKhC,IAAK;EACF,IAAMC,IAAI,GAAGJ,WAAW;IAAA,IAAAK,IAAA,GAAAC,iBAAA,CACpB,WAAOC,SAAkB,EAAK;MAAA,IAAAC,UAAA;MAC1B,IAAMC,QAAQ,GAAGF,SAAS,KAAIJ,OAAO,oBAAPA,OAAO,CAAEO,IAAI;MAC3C,IAAID,QAAQ,KAAKE,SAAS,EAAE;QACxB,OAAO,KAAK;MAChB;MACA,IAAMC,SAAS,UAAAJ,UAAA,GAASK,SAAS,cAAAL,UAAA,GAATA,UAAA,CAAWM,SAAS,qBAApBN,UAAA,CAClBO,SAAS,CAACN,QAAQ,CAAC,CACpBO,IAAI,CAAC,MAAM,IAAI,CAAC,CAChBC,KAAK,CAAC,MAAM,KAAK,CAAC;MACvB,IAAIL,SAAS,EAAE;QACXT,OAAO,YAAPA,OAAO,CAAEe,SAAS,YAAlBf,OAAO,CAAEe,SAAS,CAAGT,QAAQ,CAAC;MAClC,CAAC,MAAM;QACHN,OAAO,YAAPA,OAAO,CAAEgB,SAAS,YAAlBhB,OAAO,CAAEgB,SAAS,CAAGV,QAAQ,CAAC;MAClC;MACA,OAAOG,SAAS;IACpB,CAAC;IAAA,iBAAAQ,EAAA;MAAA,OAAAf,IAAA,CAAAgB,KAAA,OAAAC,SAAA;IAAA;EAAA,KACD,CAACnB,OAAO,CACZ,CAAC;EAEDF,mBAAmB,CAACE,OAAO,oBAAPA,OAAO,CAAEoB,GAAG,EAAEnB,IAAI,CAAC;EACvC,OAAOA,IAAI;AACf,CAAC"}
|
|
@@ -9,7 +9,7 @@ export var useIntersectionObserver = function useIntersectionObserver(ref, optio
|
|
|
9
9
|
var observer = useRef();
|
|
10
10
|
var disconnect = useCallback(() => {
|
|
11
11
|
var _observer$current;
|
|
12
|
-
observer == null || (_observer$current = observer.current) == null
|
|
12
|
+
observer == null || (_observer$current = observer.current) == null || _observer$current.disconnect();
|
|
13
13
|
}, []);
|
|
14
14
|
|
|
15
15
|
/* istanbul ignore next */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIntersectionObserver.js","names":["isBrowser","useCallback","useEffect","useRef","useState","useIntersectionObserver","ref","options","isIntersecting","setIsIntersecting","observer","disconnect","_observer$current","current","element","IntersectionObserver","entries","length","observe"],"sources":["../../src/useIntersectionObserver.ts"],"sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\nimport { isBrowser } from \"./utils/isBrowser\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nexport const useIntersectionObserver = <E extends Element = HTMLElement>(\n ref: React.RefObject<E>,\n options: IntersectionObserverInit = {}\n) => {\n const [isIntersecting, setIsIntersecting] = useState<boolean>(false);\n const observer = useRef<IntersectionObserver>()\n const disconnect = useCallback(() => {\n observer?.current?.disconnect()\n }, [])\n\n /* istanbul ignore next */\n if (!isBrowser) {\n return { isIntersecting, disconnect }\n }\n useEffect(() => {\n const element = ref.current\n if (!element) {\n return\n }\n observer.current = new IntersectionObserver((entries) => {\n /* istanbul ignore next */\n if (!entries.length) {\n return\n }\n setIsIntersecting(entries[0].isIntersecting)\n }, options)\n\n observer.current.observe(element)\n return () => {\n disconnect()\n }\n }, [disconnect, options, ref])\n \n return { isIntersecting, disconnect }\n}\n"],"mappings":"AAAA;AACA,SAASA,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEhE,OAAO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAChCC,GAAuB,EACvBC,OAAiC,EAChC;EAAA,IADDA,OAAiC;IAAjCA,OAAiC,GAAG,CAAC,CAAC;EAAA;EAEtC,IAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGL,QAAQ,CAAU,KAAK,CAAC;EACpE,IAAMM,QAAQ,GAAGP,MAAM,CAAuB,CAAC;EAC/C,IAAMQ,UAAU,GAAGV,WAAW,CAAC,MAAM;IAAA,IAAAW,iBAAA;IACjCF,QAAQ,aAAAE,iBAAA,GAARF,QAAQ,CAAEG,OAAO,
|
|
1
|
+
{"version":3,"file":"useIntersectionObserver.js","names":["isBrowser","useCallback","useEffect","useRef","useState","useIntersectionObserver","ref","options","isIntersecting","setIsIntersecting","observer","disconnect","_observer$current","current","element","IntersectionObserver","entries","length","observe"],"sources":["../../src/useIntersectionObserver.ts"],"sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\nimport { isBrowser } from \"./utils/isBrowser\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nexport const useIntersectionObserver = <E extends Element = HTMLElement>(\n ref: React.RefObject<E>,\n options: IntersectionObserverInit = {}\n) => {\n const [isIntersecting, setIsIntersecting] = useState<boolean>(false);\n const observer = useRef<IntersectionObserver>()\n const disconnect = useCallback(() => {\n observer?.current?.disconnect()\n }, [])\n\n /* istanbul ignore next */\n if (!isBrowser) {\n return { isIntersecting, disconnect }\n }\n useEffect(() => {\n const element = ref.current\n if (!element) {\n return\n }\n observer.current = new IntersectionObserver((entries) => {\n /* istanbul ignore next */\n if (!entries.length) {\n return\n }\n setIsIntersecting(entries[0].isIntersecting)\n }, options)\n\n observer.current.observe(element)\n return () => {\n disconnect()\n }\n }, [disconnect, options, ref])\n \n return { isIntersecting, disconnect }\n}\n"],"mappings":"AAAA;AACA,SAASA,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEhE,OAAO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAChCC,GAAuB,EACvBC,OAAiC,EAChC;EAAA,IADDA,OAAiC;IAAjCA,OAAiC,GAAG,CAAC,CAAC;EAAA;EAEtC,IAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGL,QAAQ,CAAU,KAAK,CAAC;EACpE,IAAMM,QAAQ,GAAGP,MAAM,CAAuB,CAAC;EAC/C,IAAMQ,UAAU,GAAGV,WAAW,CAAC,MAAM;IAAA,IAAAW,iBAAA;IACjCF,QAAQ,aAAAE,iBAAA,GAARF,QAAQ,CAAEG,OAAO,aAAjBD,iBAAA,CAAmBD,UAAU,CAAC,CAAC;EACnC,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,IAAI,CAACX,SAAS,EAAE;IACZ,OAAO;MAAEQ,cAAc;MAAEG;IAAW,CAAC;EACzC;EACAT,SAAS,CAAC,MAAM;IACZ,IAAMY,OAAO,GAAGR,GAAG,CAACO,OAAO;IAC3B,IAAI,CAACC,OAAO,EAAE;MACV;IACJ;IACAJ,QAAQ,CAACG,OAAO,GAAG,IAAIE,oBAAoB,CAAEC,OAAO,IAAK;MACrD;MACA,IAAI,CAACA,OAAO,CAACC,MAAM,EAAE;QACjB;MACJ;MACAR,iBAAiB,CAACO,OAAO,CAAC,CAAC,CAAC,CAACR,cAAc,CAAC;IAChD,CAAC,EAAED,OAAO,CAAC;IAEXG,QAAQ,CAACG,OAAO,CAACK,OAAO,CAACJ,OAAO,CAAC;IACjC,OAAO,MAAM;MACTH,UAAU,CAAC,CAAC;IAChB,CAAC;EACL,CAAC,EAAE,CAACA,UAAU,EAAEJ,OAAO,EAAED,GAAG,CAAC,CAAC;EAE9B,OAAO;IAAEE,cAAc;IAAEG;EAAW,CAAC;AACzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "matsuri-hooks",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"repository": "https://github.com/matsuri-tech/matsuri-hooks.git",
|
|
5
5
|
"license": "GPL-3.0",
|
|
6
6
|
"sideEffects": false,
|
|
@@ -22,24 +22,24 @@
|
|
|
22
22
|
"node_modules"
|
|
23
23
|
],
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"swr": "2.
|
|
25
|
+
"swr": "2.2.2"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
|
-
"@babel/cli": "7.22.
|
|
29
|
-
"@babel/preset-env": "7.22.
|
|
30
|
-
"@babel/preset-react": "7.22.
|
|
31
|
-
"@babel/preset-typescript": "7.22.
|
|
28
|
+
"@babel/cli": "7.22.15",
|
|
29
|
+
"@babel/preset-env": "7.22.15",
|
|
30
|
+
"@babel/preset-react": "7.22.15",
|
|
31
|
+
"@babel/preset-typescript": "7.22.15",
|
|
32
32
|
"@testing-library/react": "13.4.0",
|
|
33
33
|
"@testing-library/react-hooks": "8.0.1",
|
|
34
34
|
"@testing-library/user-event": "14.4.3",
|
|
35
35
|
"@types/jest": "28.1.8",
|
|
36
|
-
"@types/react": "18.
|
|
37
|
-
"@types/react-dom": "18.
|
|
36
|
+
"@types/react": "18.2.21",
|
|
37
|
+
"@types/react-dom": "18.2.7",
|
|
38
38
|
"clsx": "1.2.1",
|
|
39
|
-
"concurrently": "8.
|
|
40
|
-
"core-js": "3.
|
|
41
|
-
"eslint": "8.
|
|
42
|
-
"eslint-config-matsuri": "1.
|
|
39
|
+
"concurrently": "8.2.1",
|
|
40
|
+
"core-js": "3.32.2",
|
|
41
|
+
"eslint": "8.48.0",
|
|
42
|
+
"eslint-config-matsuri": "1.7.1",
|
|
43
43
|
"intersection-observer": "0.12.2",
|
|
44
44
|
"jest": "28.1.3",
|
|
45
45
|
"jest-environment-jsdom": "28.1.3",
|
package/useClipboardCopy.js
CHANGED
|
@@ -12,9 +12,9 @@ export var useClipboardCopy = options => {
|
|
|
12
12
|
}
|
|
13
13
|
var successed = yield (_navigator = navigator) == null || (_navigator = _navigator.clipboard) == null ? void 0 : _navigator.writeText(copyText).then(() => true).catch(() => false);
|
|
14
14
|
if (successed) {
|
|
15
|
-
options == null || options.onSuccess == null
|
|
15
|
+
options == null || options.onSuccess == null || options.onSuccess(copyText);
|
|
16
16
|
} else {
|
|
17
|
-
options == null || options.onFailure == null
|
|
17
|
+
options == null || options.onFailure == null || options.onFailure(copyText);
|
|
18
18
|
}
|
|
19
19
|
return successed;
|
|
20
20
|
});
|
package/useClipboardCopy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useClipboardCopy.js","names":["useCallback","useKeyboardShortcut","useClipboardCopy","options","copy","_ref","_asyncToGenerator","otherText","_navigator","copyText","text","undefined","successed","navigator","clipboard","writeText","then","catch","onSuccess","onFailure","_x","apply","arguments","key"],"sources":["../../src/useClipboardCopy.tsx"],"sourcesContent":["import { useCallback } from \"react\"\nimport { useKeyboardShortcut } from \"./useKeyboardShortcut\"\n\nexport const useClipboardCopy = (options?: {\n text?: string\n onSuccess?: (text: string) => void\n onFailure?: (text: string) => void\n key?: string\n}) => {\n const copy = useCallback(\n async (otherText?: string) => {\n const copyText = otherText || options?.text\n if (copyText === undefined) {\n return false\n }\n const successed = await navigator?.clipboard\n ?.writeText(copyText)\n .then(() => true)\n .catch(() => false)\n if (successed) {\n options?.onSuccess?.(copyText)\n } else {\n options?.onFailure?.(copyText)\n }\n return successed\n },\n [options]\n )\n\n useKeyboardShortcut(options?.key, copy)\n return copy\n}\n"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,mBAAmB,QAAQ,uBAAuB;AAE3D,OAAO,IAAMC,gBAAgB,GAAIC,OAKhC,IAAK;EACF,IAAMC,IAAI,GAAGJ,WAAW;IAAA,IAAAK,IAAA,GAAAC,iBAAA,CACpB,WAAOC,SAAkB,EAAK;MAAA,IAAAC,UAAA;MAC1B,IAAMC,QAAQ,GAAGF,SAAS,KAAIJ,OAAO,oBAAPA,OAAO,CAAEO,IAAI;MAC3C,IAAID,QAAQ,KAAKE,SAAS,EAAE;QACxB,OAAO,KAAK;MAChB;MACA,IAAMC,SAAS,UAAAJ,UAAA,GAASK,SAAS,cAAAL,UAAA,GAATA,UAAA,CAAWM,SAAS,qBAApBN,UAAA,CAClBO,SAAS,CAACN,QAAQ,CAAC,CACpBO,IAAI,CAAC,MAAM,IAAI,CAAC,CAChBC,KAAK,CAAC,MAAM,KAAK,CAAC;MACvB,IAAIL,SAAS,EAAE;QACXT,OAAO,YAAPA,OAAO,CAAEe,SAAS,
|
|
1
|
+
{"version":3,"file":"useClipboardCopy.js","names":["useCallback","useKeyboardShortcut","useClipboardCopy","options","copy","_ref","_asyncToGenerator","otherText","_navigator","copyText","text","undefined","successed","navigator","clipboard","writeText","then","catch","onSuccess","onFailure","_x","apply","arguments","key"],"sources":["../../src/useClipboardCopy.tsx"],"sourcesContent":["import { useCallback } from \"react\"\nimport { useKeyboardShortcut } from \"./useKeyboardShortcut\"\n\nexport const useClipboardCopy = (options?: {\n text?: string\n onSuccess?: (text: string) => void\n onFailure?: (text: string) => void\n key?: string\n}) => {\n const copy = useCallback(\n async (otherText?: string) => {\n const copyText = otherText || options?.text\n if (copyText === undefined) {\n return false\n }\n const successed = await navigator?.clipboard\n ?.writeText(copyText)\n .then(() => true)\n .catch(() => false)\n if (successed) {\n options?.onSuccess?.(copyText)\n } else {\n options?.onFailure?.(copyText)\n }\n return successed\n },\n [options]\n )\n\n useKeyboardShortcut(options?.key, copy)\n return copy\n}\n"],"mappings":";;AAAA,SAASA,WAAW,QAAQ,OAAO;AACnC,SAASC,mBAAmB,QAAQ,uBAAuB;AAE3D,OAAO,IAAMC,gBAAgB,GAAIC,OAKhC,IAAK;EACF,IAAMC,IAAI,GAAGJ,WAAW;IAAA,IAAAK,IAAA,GAAAC,iBAAA,CACpB,WAAOC,SAAkB,EAAK;MAAA,IAAAC,UAAA;MAC1B,IAAMC,QAAQ,GAAGF,SAAS,KAAIJ,OAAO,oBAAPA,OAAO,CAAEO,IAAI;MAC3C,IAAID,QAAQ,KAAKE,SAAS,EAAE;QACxB,OAAO,KAAK;MAChB;MACA,IAAMC,SAAS,UAAAJ,UAAA,GAASK,SAAS,cAAAL,UAAA,GAATA,UAAA,CAAWM,SAAS,qBAApBN,UAAA,CAClBO,SAAS,CAACN,QAAQ,CAAC,CACpBO,IAAI,CAAC,MAAM,IAAI,CAAC,CAChBC,KAAK,CAAC,MAAM,KAAK,CAAC;MACvB,IAAIL,SAAS,EAAE;QACXT,OAAO,YAAPA,OAAO,CAAEe,SAAS,YAAlBf,OAAO,CAAEe,SAAS,CAAGT,QAAQ,CAAC;MAClC,CAAC,MAAM;QACHN,OAAO,YAAPA,OAAO,CAAEgB,SAAS,YAAlBhB,OAAO,CAAEgB,SAAS,CAAGV,QAAQ,CAAC;MAClC;MACA,OAAOG,SAAS;IACpB,CAAC;IAAA,iBAAAQ,EAAA;MAAA,OAAAf,IAAA,CAAAgB,KAAA,OAAAC,SAAA;IAAA;EAAA,KACD,CAACnB,OAAO,CACZ,CAAC;EAEDF,mBAAmB,CAACE,OAAO,oBAAPA,OAAO,CAAEoB,GAAG,EAAEnB,IAAI,CAAC;EACvC,OAAOA,IAAI;AACf,CAAC"}
|
|
@@ -9,7 +9,7 @@ export var useIntersectionObserver = function useIntersectionObserver(ref, optio
|
|
|
9
9
|
var observer = useRef();
|
|
10
10
|
var disconnect = useCallback(() => {
|
|
11
11
|
var _observer$current;
|
|
12
|
-
observer == null || (_observer$current = observer.current) == null
|
|
12
|
+
observer == null || (_observer$current = observer.current) == null || _observer$current.disconnect();
|
|
13
13
|
}, []);
|
|
14
14
|
|
|
15
15
|
/* istanbul ignore next */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIntersectionObserver.js","names":["isBrowser","useCallback","useEffect","useRef","useState","useIntersectionObserver","ref","options","isIntersecting","setIsIntersecting","observer","disconnect","_observer$current","current","element","IntersectionObserver","entries","length","observe"],"sources":["../../src/useIntersectionObserver.ts"],"sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\nimport { isBrowser } from \"./utils/isBrowser\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nexport const useIntersectionObserver = <E extends Element = HTMLElement>(\n ref: React.RefObject<E>,\n options: IntersectionObserverInit = {}\n) => {\n const [isIntersecting, setIsIntersecting] = useState<boolean>(false);\n const observer = useRef<IntersectionObserver>()\n const disconnect = useCallback(() => {\n observer?.current?.disconnect()\n }, [])\n\n /* istanbul ignore next */\n if (!isBrowser) {\n return { isIntersecting, disconnect }\n }\n useEffect(() => {\n const element = ref.current\n if (!element) {\n return\n }\n observer.current = new IntersectionObserver((entries) => {\n /* istanbul ignore next */\n if (!entries.length) {\n return\n }\n setIsIntersecting(entries[0].isIntersecting)\n }, options)\n\n observer.current.observe(element)\n return () => {\n disconnect()\n }\n }, [disconnect, options, ref])\n \n return { isIntersecting, disconnect }\n}\n"],"mappings":"AAAA;AACA,SAASA,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEhE,OAAO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAChCC,GAAuB,EACvBC,OAAiC,EAChC;EAAA,IADDA,OAAiC;IAAjCA,OAAiC,GAAG,CAAC,CAAC;EAAA;EAEtC,IAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGL,QAAQ,CAAU,KAAK,CAAC;EACpE,IAAMM,QAAQ,GAAGP,MAAM,CAAuB,CAAC;EAC/C,IAAMQ,UAAU,GAAGV,WAAW,CAAC,MAAM;IAAA,IAAAW,iBAAA;IACjCF,QAAQ,aAAAE,iBAAA,GAARF,QAAQ,CAAEG,OAAO,
|
|
1
|
+
{"version":3,"file":"useIntersectionObserver.js","names":["isBrowser","useCallback","useEffect","useRef","useState","useIntersectionObserver","ref","options","isIntersecting","setIsIntersecting","observer","disconnect","_observer$current","current","element","IntersectionObserver","entries","length","observe"],"sources":["../../src/useIntersectionObserver.ts"],"sourcesContent":["/* eslint-disable react-hooks/rules-of-hooks */\nimport { isBrowser } from \"./utils/isBrowser\"\nimport { useCallback, useEffect, useRef, useState } from \"react\"\n\nexport const useIntersectionObserver = <E extends Element = HTMLElement>(\n ref: React.RefObject<E>,\n options: IntersectionObserverInit = {}\n) => {\n const [isIntersecting, setIsIntersecting] = useState<boolean>(false);\n const observer = useRef<IntersectionObserver>()\n const disconnect = useCallback(() => {\n observer?.current?.disconnect()\n }, [])\n\n /* istanbul ignore next */\n if (!isBrowser) {\n return { isIntersecting, disconnect }\n }\n useEffect(() => {\n const element = ref.current\n if (!element) {\n return\n }\n observer.current = new IntersectionObserver((entries) => {\n /* istanbul ignore next */\n if (!entries.length) {\n return\n }\n setIsIntersecting(entries[0].isIntersecting)\n }, options)\n\n observer.current.observe(element)\n return () => {\n disconnect()\n }\n }, [disconnect, options, ref])\n \n return { isIntersecting, disconnect }\n}\n"],"mappings":"AAAA;AACA,SAASA,SAAS,QAAQ,mBAAmB;AAC7C,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEhE,OAAO,IAAMC,uBAAuB,GAAG,SAA1BA,uBAAuBA,CAChCC,GAAuB,EACvBC,OAAiC,EAChC;EAAA,IADDA,OAAiC;IAAjCA,OAAiC,GAAG,CAAC,CAAC;EAAA;EAEtC,IAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGL,QAAQ,CAAU,KAAK,CAAC;EACpE,IAAMM,QAAQ,GAAGP,MAAM,CAAuB,CAAC;EAC/C,IAAMQ,UAAU,GAAGV,WAAW,CAAC,MAAM;IAAA,IAAAW,iBAAA;IACjCF,QAAQ,aAAAE,iBAAA,GAARF,QAAQ,CAAEG,OAAO,aAAjBD,iBAAA,CAAmBD,UAAU,CAAC,CAAC;EACnC,CAAC,EAAE,EAAE,CAAC;;EAEN;EACA,IAAI,CAACX,SAAS,EAAE;IACZ,OAAO;MAAEQ,cAAc;MAAEG;IAAW,CAAC;EACzC;EACAT,SAAS,CAAC,MAAM;IACZ,IAAMY,OAAO,GAAGR,GAAG,CAACO,OAAO;IAC3B,IAAI,CAACC,OAAO,EAAE;MACV;IACJ;IACAJ,QAAQ,CAACG,OAAO,GAAG,IAAIE,oBAAoB,CAAEC,OAAO,IAAK;MACrD;MACA,IAAI,CAACA,OAAO,CAACC,MAAM,EAAE;QACjB;MACJ;MACAR,iBAAiB,CAACO,OAAO,CAAC,CAAC,CAAC,CAACR,cAAc,CAAC;IAChD,CAAC,EAAED,OAAO,CAAC;IAEXG,QAAQ,CAACG,OAAO,CAACK,OAAO,CAACJ,OAAO,CAAC;IACjC,OAAO,MAAM;MACTH,UAAU,CAAC,CAAC;IAChB,CAAC;EACL,CAAC,EAAE,CAACA,UAAU,EAAEJ,OAAO,EAAED,GAAG,CAAC,CAAC;EAE9B,OAAO;IAAEE,cAAc;IAAEG;EAAW,CAAC;AACzC,CAAC"}
|