@siberiacancode/reactuse 0.0.118 → 0.1.0
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/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs +1 -1
- package/dist/cjs/hooks/useDoubleClick/useDoubleClick.cjs.map +1 -1
- package/dist/cjs/hooks/useInterval/useInterval.cjs +1 -1
- package/dist/cjs/hooks/useInterval/useInterval.cjs.map +1 -1
- package/dist/cjs/hooks/useLongPress/useLongPress.cjs +1 -1
- package/dist/cjs/hooks/useLongPress/useLongPress.cjs.map +1 -1
- package/dist/cjs/hooks/useOnce/useOnce.cjs +1 -1
- package/dist/cjs/hooks/useOnce/useOnce.cjs.map +1 -1
- package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs +1 -1
- package/dist/cjs/hooks/usePerformanceObserver/usePerformanceObserver.cjs.map +1 -1
- package/dist/cjs/hooks/usePrevious/usePrevious.cjs +1 -1
- package/dist/cjs/hooks/usePrevious/usePrevious.cjs.map +1 -1
- package/dist/cjs/hooks/useQuery/useQuery.cjs +1 -1
- package/dist/cjs/hooks/useQuery/useQuery.cjs.map +1 -1
- package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs +1 -1
- package/dist/cjs/hooks/useResizeObserver/useResizeObserver.cjs.map +1 -1
- package/dist/cjs/hooks/useTimeout/useTimeout.cjs +1 -1
- package/dist/cjs/hooks/useTimeout/useTimeout.cjs.map +1 -1
- package/dist/cjs/hooks/useTimer/useTimer.cjs +1 -1
- package/dist/cjs/hooks/useTimer/useTimer.cjs.map +1 -1
- package/dist/cjs/hooks/useVibrate/useVibrate.cjs +1 -1
- package/dist/cjs/hooks/useVibrate/useVibrate.cjs.map +1 -1
- package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs +1 -1
- package/dist/cjs/hooks/useWakeLock/useWakeLock.cjs.map +1 -1
- package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs +1 -1
- package/dist/cjs/hooks/useWebSocket/useWebSocket.cjs.map +1 -1
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs +4 -4
- package/dist/esm/hooks/useDoubleClick/useDoubleClick.mjs.map +1 -1
- package/dist/esm/hooks/useInterval/useInterval.mjs +6 -6
- package/dist/esm/hooks/useInterval/useInterval.mjs.map +1 -1
- package/dist/esm/hooks/useLongPress/useLongPress.mjs +1 -1
- package/dist/esm/hooks/useLongPress/useLongPress.mjs.map +1 -1
- package/dist/esm/hooks/useOnce/useOnce.mjs +3 -3
- package/dist/esm/hooks/useOnce/useOnce.mjs.map +1 -1
- package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs +14 -14
- package/dist/esm/hooks/usePerformanceObserver/usePerformanceObserver.mjs.map +1 -1
- package/dist/esm/hooks/usePrevious/usePrevious.mjs +3 -3
- package/dist/esm/hooks/usePrevious/usePrevious.mjs.map +1 -1
- package/dist/esm/hooks/useQuery/useQuery.mjs +9 -9
- package/dist/esm/hooks/useQuery/useQuery.mjs.map +1 -1
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs +17 -17
- package/dist/esm/hooks/useResizeObserver/useResizeObserver.mjs.map +1 -1
- package/dist/esm/hooks/useTimeout/useTimeout.mjs +1 -1
- package/dist/esm/hooks/useTimeout/useTimeout.mjs.map +1 -1
- package/dist/esm/hooks/useTimer/useTimer.mjs +15 -15
- package/dist/esm/hooks/useTimer/useTimer.mjs.map +1 -1
- package/dist/esm/hooks/useVibrate/useVibrate.mjs +9 -9
- package/dist/esm/hooks/useVibrate/useVibrate.mjs.map +1 -1
- package/dist/esm/hooks/useWakeLock/useWakeLock.mjs +3 -3
- package/dist/esm/hooks/useWakeLock/useWakeLock.mjs.map +1 -1
- package/dist/esm/hooks/useWebSocket/useWebSocket.mjs +5 -5
- package/dist/esm/hooks/useWebSocket/useWebSocket.mjs.map +1 -1
- package/dist/types/hooks/usePrevious/usePrevious.d.ts +1 -1
- package/package.json +13 -13
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { useRef as y, useState as k, useEffect as
|
|
2
|
-
import { useEvent as
|
|
1
|
+
import { useRef as y, useState as k, useEffect as v } from "react";
|
|
2
|
+
import { useEvent as w } from "../useEvent/useEvent.mjs";
|
|
3
3
|
import { getRetry as m } from "../../utils/helpers/getRetry.mjs";
|
|
4
4
|
const W = (t, e) => {
|
|
5
|
-
const u = y(), d = y(e != null && e.retry ? m(e.retry) : 0), a = y(!1), [S, n] = k("connecting"), g = (r) => {
|
|
5
|
+
const u = y(void 0), d = y(e != null && e.retry ? m(e.retry) : 0), a = y(!1), [S, n] = k("connecting"), g = (r) => {
|
|
6
6
|
var c;
|
|
7
7
|
return (c = u.current) == null ? void 0 : c.send(r);
|
|
8
8
|
}, R = () => {
|
|
9
9
|
var r;
|
|
10
10
|
a.current = !0, (r = u.current) == null || r.close();
|
|
11
|
-
}, l =
|
|
11
|
+
}, l = w(() => {
|
|
12
12
|
u.current = new WebSocket(
|
|
13
13
|
typeof t == "function" ? t() : t,
|
|
14
14
|
e == null ? void 0 : e.protocols
|
|
@@ -32,7 +32,7 @@ const W = (t, e) => {
|
|
|
32
32
|
}
|
|
33
33
|
});
|
|
34
34
|
});
|
|
35
|
-
|
|
35
|
+
v(() => (l(), () => {
|
|
36
36
|
u.current && (u.current.close(), u.current = void 0);
|
|
37
37
|
}), [t]);
|
|
38
38
|
const b = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWebSocket.mjs","sources":["../../../../src/hooks/useWebSocket/useWebSocket.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\nimport { useEvent } from '../useEvent/useEvent';\n\nexport type UseWebSocketUrl = (() => string) | string;\n\nexport interface UseWebSocketOptions {\n protocols?: Array<'soap' | 'wasm'>;\n retry?: boolean | number;\n onConnected?: (webSocket: WebSocket) => void;\n onDisconnected?: (event: CloseEvent, webSocket: WebSocket) => void;\n onError?: (event: Event, webSocket: WebSocket) => void;\n onMessage?: (event: MessageEvent, webSocket: WebSocket) => void;\n}\n\nexport type UseWebSocketStatus = 'connected' | 'connecting' | 'disconnected' | 'failed';\n\nexport interface UseWebSocketReturn {\n client?: WebSocket;\n close: WebSocket['close'];\n send: WebSocket['send'];\n status: UseWebSocketStatus;\n open: () => void;\n}\n\n/**\n * @name useWebSocket\n * @description - Hook that connects to a WebSocket server and handles incoming and outgoing messages\n * @category Browser\n *\n * @param {UseWebSocketUrl} url The URL of the WebSocket server\n * @param {(webSocket: WebSocket) => void} [options.onConnected] The callback function that is called when the WebSocket connection is established\n * @param {(event: CloseEvent, webSocket: WebSocket) => void} [options.onDisconnected] The callback function that is called when the WebSocket connection is closed\n * @param {(event: Event, webSocket: WebSocket) => void} [options.onError] The callback function that is called when an error occurs\n * @param {(event: MessageEvent, webSocket: WebSocket) => void} [options.onMessage] The callback function that is called when a message is received\n * @param {boolean | number} [options.retry] The number of times to retry the connection\n * @param {Array<'soap' | 'wasm'>} [options.protocols] The list of protocols to use\n * @returns {UseWebSocketReturn} An object with the status, close, send, open, and ws properties\n *\n * @example\n * const { status, close, send, open, client } = useWebSocket('url');\n */\nexport const useWebSocket = (\n url: UseWebSocketUrl,\n options?: UseWebSocketOptions\n): UseWebSocketReturn => {\n const webSocketRef = useRef<WebSocket>();\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const explicityCloseRef = useRef(false);\n\n const [status, setStatus] = useState<UseWebSocketStatus>('connecting');\n\n const send = (data: string | ArrayBufferLike | ArrayBufferView | Blob) =>\n webSocketRef.current?.send(data);\n\n const close = () => {\n explicityCloseRef.current = true;\n webSocketRef.current?.close();\n };\n\n const init = useEvent(() => {\n webSocketRef.current = new WebSocket(\n typeof url === 'function' ? url() : url,\n options?.protocols\n );\n setStatus('connecting');\n\n const webSocket = webSocketRef.current;\n if (!webSocket) return;\n\n webSocket.onopen = () => {\n setStatus('connected');\n options?.onConnected?.(webSocket);\n };\n\n webSocket.onerror = (event) => {\n setStatus('failed');\n options?.onError?.(event, webSocket);\n };\n\n webSocket.onmessage = (event) => options?.onMessage?.(event, webSocket);\n\n webSocket.onclose = (event) => {\n setStatus('disconnected');\n options?.onDisconnected?.(event, webSocket);\n if (explicityCloseRef.current) return;\n\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n return init();\n }\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n };\n });\n\n useEffect(() => {\n init();\n\n return () => {\n if (!webSocketRef.current) return;\n webSocketRef.current.close();\n webSocketRef.current = undefined;\n };\n }, [url]);\n\n const open = () => {\n explicityCloseRef.current = false;\n init();\n };\n\n return { client: webSocketRef.current, close, open, send, status };\n};\n"],"names":["useWebSocket","url","options","webSocketRef","useRef","retryCountRef","getRetry","explicityCloseRef","status","setStatus","useState","send","data","_a","close","init","useEvent","webSocket","event","useEffect","open"],"mappings":";;;AA4Ca,MAAAA,IAAe,CAC1BC,GACAC,MACuB;
|
|
1
|
+
{"version":3,"file":"useWebSocket.mjs","sources":["../../../../src/hooks/useWebSocket/useWebSocket.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport { getRetry } from '@/utils/helpers';\n\nimport { useEvent } from '../useEvent/useEvent';\n\nexport type UseWebSocketUrl = (() => string) | string;\n\nexport interface UseWebSocketOptions {\n protocols?: Array<'soap' | 'wasm'>;\n retry?: boolean | number;\n onConnected?: (webSocket: WebSocket) => void;\n onDisconnected?: (event: CloseEvent, webSocket: WebSocket) => void;\n onError?: (event: Event, webSocket: WebSocket) => void;\n onMessage?: (event: MessageEvent, webSocket: WebSocket) => void;\n}\n\nexport type UseWebSocketStatus = 'connected' | 'connecting' | 'disconnected' | 'failed';\n\nexport interface UseWebSocketReturn {\n client?: WebSocket;\n close: WebSocket['close'];\n send: WebSocket['send'];\n status: UseWebSocketStatus;\n open: () => void;\n}\n\n/**\n * @name useWebSocket\n * @description - Hook that connects to a WebSocket server and handles incoming and outgoing messages\n * @category Browser\n *\n * @param {UseWebSocketUrl} url The URL of the WebSocket server\n * @param {(webSocket: WebSocket) => void} [options.onConnected] The callback function that is called when the WebSocket connection is established\n * @param {(event: CloseEvent, webSocket: WebSocket) => void} [options.onDisconnected] The callback function that is called when the WebSocket connection is closed\n * @param {(event: Event, webSocket: WebSocket) => void} [options.onError] The callback function that is called when an error occurs\n * @param {(event: MessageEvent, webSocket: WebSocket) => void} [options.onMessage] The callback function that is called when a message is received\n * @param {boolean | number} [options.retry] The number of times to retry the connection\n * @param {Array<'soap' | 'wasm'>} [options.protocols] The list of protocols to use\n * @returns {UseWebSocketReturn} An object with the status, close, send, open, and ws properties\n *\n * @example\n * const { status, close, send, open, client } = useWebSocket('url');\n */\nexport const useWebSocket = (\n url: UseWebSocketUrl,\n options?: UseWebSocketOptions\n): UseWebSocketReturn => {\n const webSocketRef = useRef<WebSocket>(undefined);\n const retryCountRef = useRef(options?.retry ? getRetry(options.retry) : 0);\n const explicityCloseRef = useRef(false);\n\n const [status, setStatus] = useState<UseWebSocketStatus>('connecting');\n\n const send = (data: string | ArrayBufferLike | ArrayBufferView | Blob) =>\n webSocketRef.current?.send(data);\n\n const close = () => {\n explicityCloseRef.current = true;\n webSocketRef.current?.close();\n };\n\n const init = useEvent(() => {\n webSocketRef.current = new WebSocket(\n typeof url === 'function' ? url() : url,\n options?.protocols\n );\n setStatus('connecting');\n\n const webSocket = webSocketRef.current;\n if (!webSocket) return;\n\n webSocket.onopen = () => {\n setStatus('connected');\n options?.onConnected?.(webSocket);\n };\n\n webSocket.onerror = (event) => {\n setStatus('failed');\n options?.onError?.(event, webSocket);\n };\n\n webSocket.onmessage = (event) => options?.onMessage?.(event, webSocket);\n\n webSocket.onclose = (event) => {\n setStatus('disconnected');\n options?.onDisconnected?.(event, webSocket);\n if (explicityCloseRef.current) return;\n\n if (retryCountRef.current > 0) {\n retryCountRef.current -= 1;\n return init();\n }\n retryCountRef.current = options?.retry ? getRetry(options.retry) : 0;\n };\n });\n\n useEffect(() => {\n init();\n\n return () => {\n if (!webSocketRef.current) return;\n webSocketRef.current.close();\n webSocketRef.current = undefined;\n };\n }, [url]);\n\n const open = () => {\n explicityCloseRef.current = false;\n init();\n };\n\n return { client: webSocketRef.current, close, open, send, status };\n};\n"],"names":["useWebSocket","url","options","webSocketRef","useRef","retryCountRef","getRetry","explicityCloseRef","status","setStatus","useState","send","data","_a","close","init","useEvent","webSocket","event","useEffect","open"],"mappings":";;;AA4Ca,MAAAA,IAAe,CAC1BC,GACAC,MACuB;AACjB,QAAAC,IAAeC,EAAkB,MAAS,GAC1CC,IAAgBD,EAAOF,KAAA,QAAAA,EAAS,QAAQI,EAASJ,EAAQ,KAAK,IAAI,CAAC,GACnEK,IAAoBH,EAAO,EAAK,GAEhC,CAACI,GAAQC,CAAS,IAAIC,EAA6B,YAAY,GAE/DC,IAAO,CAACC,MAAA;;AACZ,YAAAC,IAAAV,EAAa,YAAb,gBAAAU,EAAsB,KAAKD;AAAA,KAEvBE,IAAQ,MAAM;;AAClB,IAAAP,EAAkB,UAAU,KAC5BM,IAAAV,EAAa,YAAb,QAAAU,EAAsB;AAAA,EACxB,GAEME,IAAOC,EAAS,MAAM;AAC1B,IAAAb,EAAa,UAAU,IAAI;AAAA,MACzB,OAAOF,KAAQ,aAAaA,EAAA,IAAQA;AAAA,MACpCC,KAAA,gBAAAA,EAAS;AAAA,IACX,GACAO,EAAU,YAAY;AAEtB,UAAMQ,IAAYd,EAAa;AAC/B,IAAKc,MAELA,EAAU,SAAS,MAAM;;AACvB,MAAAR,EAAU,WAAW,IACrBI,IAAAX,KAAA,gBAAAA,EAAS,gBAAT,QAAAW,EAAA,KAAAX,GAAuBe;AAAA,IACzB,GAEUA,EAAA,UAAU,CAACC,MAAU;;AAC7B,MAAAT,EAAU,QAAQ,IACTI,IAAAX,KAAA,gBAAAA,EAAA,YAAA,QAAAW,EAAA,KAAAX,GAAUgB,GAAOD;AAAA,IAC5B,GAEAA,EAAU,YAAY,CAACC,MAAA;;AAAU,cAAAL,IAAAX,KAAA,gBAAAA,EAAS,cAAT,gBAAAW,EAAA,KAAAX,GAAqBgB,GAAOD;AAAA,OAEnDA,EAAA,UAAU,CAACC,MAAU;;AAG7B,UAFAT,EAAU,cAAc,IACfI,IAAAX,KAAA,gBAAAA,EAAA,mBAAA,QAAAW,EAAA,KAAAX,GAAiBgB,GAAOD,IAC7B,CAAAV,EAAkB,SAElB;AAAA,YAAAF,EAAc,UAAU;AAC1B,iBAAAA,EAAc,WAAW,GAClBU,EAAK;AAEd,QAAAV,EAAc,UAAUH,KAAA,QAAAA,EAAS,QAAQI,EAASJ,EAAQ,KAAK,IAAI;AAAA;AAAA,IACrE;AAAA,EAAA,CACD;AAED,EAAAiB,EAAU,OACHJ,EAAA,GAEE,MAAM;AACP,IAACZ,EAAa,YAClBA,EAAa,QAAQ,MAAM,GAC3BA,EAAa,UAAU;AAAA,EACzB,IACC,CAACF,CAAG,CAAC;AAER,QAAMmB,IAAO,MAAM;AACjB,IAAAb,EAAkB,UAAU,IACvBQ,EAAA;AAAA,EACP;AAEA,SAAO,EAAE,QAAQZ,EAAa,SAAS,OAAAW,GAAO,MAAAM,GAAM,MAAAT,GAAM,QAAAH,EAAO;AACnE;"}
|
|
@@ -9,7 +9,7 @@ export interface UsePreviousOptions<Value> {
|
|
|
9
9
|
* @template Value The type of the value
|
|
10
10
|
* @param {Value} value The value to get the previous value
|
|
11
11
|
* @param {(a: Value, b: Value) => boolean} [options.equality] The custom equality function to determine if the value has changed
|
|
12
|
-
* @returns {Value} The previous value
|
|
12
|
+
* @returns {Value | undefined} The previous value
|
|
13
13
|
*
|
|
14
14
|
* @example
|
|
15
15
|
* const prevValue = usePrevious(value);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@siberiacancode/reactuse",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "The ultimate collection of react hooks",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "SIBERIA CAN CODE 🧊",
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
"lint-staged": "lint-staged"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@types/react": "^18
|
|
55
|
-
"react": "^17
|
|
56
|
-
"react-dom": "^17
|
|
54
|
+
"@types/react": "^18",
|
|
55
|
+
"react": "^17 || ^18 || ^19",
|
|
56
|
+
"react-dom": "^17 || ^18 || ^19"
|
|
57
57
|
},
|
|
58
58
|
"peerDependenciesMeta": {
|
|
59
59
|
"@types/react": {
|
|
@@ -66,19 +66,19 @@
|
|
|
66
66
|
"devDependencies": {
|
|
67
67
|
"@siberiacancode/vitest": "^2.1.0",
|
|
68
68
|
"@testing-library/dom": "^10.4.0",
|
|
69
|
-
"@testing-library/react": "^16.
|
|
70
|
-
"@types/dom-speech-recognition": "^0.0.
|
|
71
|
-
"@types/react": "^
|
|
72
|
-
"@types/react-dom": "^
|
|
69
|
+
"@testing-library/react": "^16.3.0",
|
|
70
|
+
"@types/dom-speech-recognition": "^0.0.6",
|
|
71
|
+
"@types/react": "^19.1.2",
|
|
72
|
+
"@types/react-dom": "^19.1.2",
|
|
73
73
|
"@types/web-bluetooth": "^0.0.21",
|
|
74
|
-
"@vitejs/plugin-react": "^4.
|
|
74
|
+
"@vitejs/plugin-react": "^4.4.1",
|
|
75
75
|
"core-js": "^3.41.0",
|
|
76
|
-
"react": "^
|
|
77
|
-
"react-dom": "^
|
|
76
|
+
"react": "^19.1.0",
|
|
77
|
+
"react-dom": "^19.1.0",
|
|
78
78
|
"shx": "^0.4.0",
|
|
79
|
-
"vite": "^6.2
|
|
79
|
+
"vite": "^6.3.2",
|
|
80
80
|
"vite-plugin-dts": "^4.5.3",
|
|
81
|
-
"vitest": "^3.
|
|
81
|
+
"vitest": "^3.1.2"
|
|
82
82
|
},
|
|
83
83
|
"lint-staged": {
|
|
84
84
|
"*.js": [
|