@jelper/hooks 1.0.0 → 1.1.1
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/es/index.js +7 -5
- package/es/index.js.map +1 -0
- package/es/useAsync.js +11 -11
- package/es/useAsync.js.map +1 -0
- package/es/useBoolState.js +2 -1
- package/es/useBoolState.js.map +1 -0
- package/es/useCreate.js +1 -0
- package/es/useCreate.js.map +1 -0
- package/es/useDebounce.js +6 -5
- package/es/useDebounce.js.map +1 -0
- package/es/useIgnoreAbortErrCb.js +1 -0
- package/es/useIgnoreAbortErrCb.js.map +1 -0
- package/es/useInterval.js +13 -3
- package/es/useInterval.js.map +1 -0
- package/es/useIsMounted.js +1 -0
- package/es/useIsMounted.js.map +1 -0
- package/es/{useIsUnmounted.js → useIsUnmount.js} +6 -4
- package/es/useIsUnmount.js.map +1 -0
- package/es/useMount.js +1 -0
- package/es/useMount.js.map +1 -0
- package/es/useOption.js +2 -1
- package/es/useOption.js.map +1 -0
- package/es/useResizeObserver.js +37 -28
- package/es/useResizeObserver.js.map +1 -0
- package/es/useRtCb.js +3 -2
- package/es/useRtCb.js.map +1 -0
- package/es/useRtRef.js +2 -1
- package/es/useRtRef.js.map +1 -0
- package/es/useSafeRunner.js +2 -1
- package/es/useSafeRunner.js.map +1 -0
- package/es/useThrottle.js +7 -6
- package/es/useThrottle.js.map +1 -0
- package/es/useTimeout.js +13 -2
- package/es/useTimeout.js.map +1 -0
- package/es/useUnmount.js +1 -0
- package/es/useUnmount.js.map +1 -0
- package/es/useUpdateEff.js +4 -3
- package/es/useUpdateEff.js.map +1 -0
- package/es/useValue.js +12 -14
- package/es/useValue.js.map +1 -0
- package/lib/index.js +10 -4
- package/lib/index.js.map +1 -0
- package/lib/useAsync.js +12 -11
- package/lib/useAsync.js.map +1 -0
- package/lib/useBoolState.js +2 -1
- package/lib/useBoolState.js.map +1 -0
- package/lib/useCreate.js +1 -0
- package/lib/useCreate.js.map +1 -0
- package/lib/useDebounce.js +7 -5
- package/lib/useDebounce.js.map +1 -0
- package/lib/useIgnoreAbortErrCb.js +1 -0
- package/lib/useIgnoreAbortErrCb.js.map +1 -0
- package/lib/useInterval.js +33 -4
- package/lib/useInterval.js.map +1 -0
- package/lib/useIsMounted.js +1 -0
- package/lib/useIsMounted.js.map +1 -0
- package/lib/{useIsUnmounted.js → useIsUnmount.js} +6 -4
- package/lib/useIsUnmount.js.map +1 -0
- package/lib/useMount.js +1 -0
- package/lib/useMount.js.map +1 -0
- package/lib/useOption.js +2 -1
- package/lib/useOption.js.map +1 -0
- package/lib/useResizeObserver.js +41 -28
- package/lib/useResizeObserver.js.map +1 -0
- package/lib/useRtCb.js +3 -3
- package/lib/useRtCb.js.map +1 -0
- package/lib/useRtRef.js +2 -1
- package/lib/useRtRef.js.map +1 -0
- package/lib/useSafeRunner.js +3 -2
- package/lib/useSafeRunner.js.map +1 -0
- package/lib/useThrottle.js +9 -7
- package/lib/useThrottle.js.map +1 -0
- package/lib/useTimeout.js +33 -3
- package/lib/useTimeout.js.map +1 -0
- package/lib/useUnmount.js +1 -0
- package/lib/useUnmount.js.map +1 -0
- package/lib/useUpdateEff.js +4 -3
- package/lib/useUpdateEff.js.map +1 -0
- package/lib/useValue.js +11 -13
- package/lib/useValue.js.map +1 -0
- package/package.json +51 -47
- package/types/index.d.ts +6 -5
- package/types/useAsync.d.ts +3 -2
- package/types/useBoolState.d.ts +5 -2
- package/types/useDebounce.d.ts +3 -3
- package/types/useInterval.d.ts +2 -1
- package/types/useIsUnmount.d.ts +8 -0
- package/types/useResizeObserver.d.ts +8 -1
- package/types/useRtCb.d.ts +1 -2
- package/types/useRtRef.d.ts +1 -1
- package/types/useThrottle.d.ts +3 -3
- package/types/useTimeout.d.ts +3 -2
- package/types/useUpdateEff.d.ts +3 -3
- package/types/useIsUnmounted.d.ts +0 -8
package/es/index.js
CHANGED
|
@@ -6,10 +6,10 @@ export { default as useOption } from './useOption';
|
|
|
6
6
|
export { default as useRtRef } from './useRtRef';
|
|
7
7
|
export { default as useRtCb } from './useRtCb';
|
|
8
8
|
// 特殊 Effect
|
|
9
|
-
export { default as
|
|
9
|
+
export { default as useUpdateEff } from './useUpdateEff';
|
|
10
10
|
// 模拟生命周期
|
|
11
11
|
export { default as useIsMounted } from './useIsMounted';
|
|
12
|
-
export { default as useIsUnmount } from './
|
|
12
|
+
export { default as useIsUnmount } from './useIsUnmount';
|
|
13
13
|
export { default as useCreate } from './useCreate';
|
|
14
14
|
export { default as useMount } from './useMount';
|
|
15
15
|
export { default as useUnmount } from './useUnmount';
|
|
@@ -19,8 +19,10 @@ export { default as useIgnoreAbortErrCb } from './useIgnoreAbortErrCb';
|
|
|
19
19
|
export { default as useDebounce } from './useDebounce';
|
|
20
20
|
export { default as useThrottle } from './useThrottle';
|
|
21
21
|
// 使用异步
|
|
22
|
+
export { default as useSafeRunner } from './useSafeRunner';
|
|
22
23
|
export { default as useAsync } from './useAsync';
|
|
23
24
|
// 浏览器api
|
|
24
|
-
export { default as useTimeout } from './useTimeout';
|
|
25
|
-
export { default as useInterval } from './useInterval';
|
|
26
|
-
export { default as useResizeObserver } from './useResizeObserver';
|
|
25
|
+
export { default as useTimeout, useTimeoutHandler } from './useTimeout';
|
|
26
|
+
export { default as useInterval, useIntervalHandler } from './useInterval';
|
|
27
|
+
export { default as useResizeObserver, useResizeObserverHandler } from './useResizeObserver';
|
|
28
|
+
//# sourceMappingURL=index.js.map
|
package/es/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"/","sources":["index.tsx"],"names":[],"mappings":"AACA,UAAU;AACV,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AAEnD,oBAAoB;AACpB,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAE/C,YAAY;AACZ,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEzD,UAAU;AACV,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AAErD,WAAW;AACX,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEvE,OAAO;AACP,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO;AACP,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEjD,SAAS;AACT,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAC3E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC","sourcesContent":["\n// 特殊state\nexport { default as useBoolState } from './useBoolState';\nexport { default as useValue } from './useValue';\nexport { default as useOption } from './useOption';\n\n// 传入参数实时更新,保证内部最新数据\nexport { default as useRtRef } from './useRtRef';\nexport { default as useRtCb } from './useRtCb';\n\n// 特殊 Effect\nexport { default as useUpdateEff } from './useUpdateEff';\n\n// 模拟生命周期\nexport { default as useIsMounted } from './useIsMounted';\nexport { default as useIsUnmount } from './useIsUnmount';\nexport { default as useCreate } from './useCreate';\nexport { default as useMount } from './useMount';\nexport { default as useUnmount } from './useUnmount';\n\n// callback\nexport { default as useIgnoreAbortErrCb } from './useIgnoreAbortErrCb';\n\n// 防抖节流\nexport { default as useDebounce } from './useDebounce';\nexport { default as useThrottle } from './useThrottle';\n\n// 使用异步\nexport { default as useSafeRunner } from './useSafeRunner';\nexport { default as useAsync } from './useAsync';\n\n// 浏览器api\nexport { default as useTimeout, useTimeoutHandler } from './useTimeout';\nexport { default as useInterval, useIntervalHandler } from './useInterval';\nexport { default as useResizeObserver, useResizeObserverHandler } from './useResizeObserver';\n"]}
|
package/es/useAsync.js
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2025-03-18 23:44:38
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-29 17:58:54
|
|
6
6
|
*/
|
|
7
7
|
import { useEffect, useState } from 'react';
|
|
8
8
|
import useRtCb from './useRtCb';
|
|
9
9
|
import useCreate from './useCreate';
|
|
10
|
-
import useIsUnmounted from './
|
|
10
|
+
import useIsUnmounted from './useIsUnmount';
|
|
11
11
|
import useUnmount from './useUnmount';
|
|
12
12
|
const defOpt = {
|
|
13
13
|
immediate: false,
|
|
14
14
|
catchParam: false,
|
|
15
15
|
};
|
|
16
|
-
const useAsync = (asyncFn, opt = defOpt) => {
|
|
17
|
-
const [data, setData] = useState();
|
|
16
|
+
const useAsync = (asyncFn, opt = Object.assign({}, defOpt)) => {
|
|
17
|
+
const [data, setData] = useState(undefined);
|
|
18
18
|
const [param, setParam] = useState(opt.defParam || {});
|
|
19
19
|
const [loading, setLoading] = useState(false);
|
|
20
|
-
const [error, setError] = useState();
|
|
20
|
+
const [error, setError] = useState(undefined);
|
|
21
21
|
const [controller, setController] = useState();
|
|
22
22
|
const isUnmounted = useIsUnmounted();
|
|
23
23
|
useEffect(() => {
|
|
@@ -30,8 +30,8 @@ const useAsync = (asyncFn, opt = defOpt) => {
|
|
|
30
30
|
controller.signal.removeEventListener('abort', onAbort);
|
|
31
31
|
};
|
|
32
32
|
}, [controller]);
|
|
33
|
-
const run = useRtCb((runParam) => {
|
|
34
|
-
const currParam = opt.catchParam ? Object.assign(Object.assign({}, param),
|
|
33
|
+
const run = useRtCb((runParam = {}) => {
|
|
34
|
+
const currParam = opt.catchParam ? Object.assign(Object.assign({}, param), runParam) : runParam;
|
|
35
35
|
setLoading(true);
|
|
36
36
|
setError(undefined);
|
|
37
37
|
if (controller) {
|
|
@@ -45,15 +45,14 @@ const useAsync = (asyncFn, opt = defOpt) => {
|
|
|
45
45
|
return;
|
|
46
46
|
setData(opt.format ? opt.format(resData) : resData);
|
|
47
47
|
setParam(currParam);
|
|
48
|
-
setLoading(false);
|
|
49
48
|
}, (err) => {
|
|
50
49
|
if (isUnmounted() || abortController.signal.aborted)
|
|
51
|
-
return
|
|
50
|
+
return;
|
|
52
51
|
setError(err);
|
|
53
|
-
setLoading(false);
|
|
54
52
|
}).finally(() => {
|
|
55
53
|
if (isUnmounted())
|
|
56
54
|
return;
|
|
55
|
+
setLoading(false);
|
|
57
56
|
setController(undefined);
|
|
58
57
|
});
|
|
59
58
|
});
|
|
@@ -68,6 +67,7 @@ const useAsync = (asyncFn, opt = defOpt) => {
|
|
|
68
67
|
controller.abort();
|
|
69
68
|
}
|
|
70
69
|
});
|
|
71
|
-
return [data, { run, refresh, loading, error, param }];
|
|
70
|
+
return [data, { run, refresh, loading, error, param, controller }];
|
|
72
71
|
};
|
|
73
72
|
export default useAsync;
|
|
73
|
+
//# sourceMappingURL=useAsync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAsync.js","sourceRoot":"/","sources":["useAsync.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-18 23:44:38\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-29 17:58:54\n */\n\nimport { useEffect, useState } from 'react';\nimport useRtCb from './useRtCb';\nimport useCreate from './useCreate';\nimport useIsUnmounted from './useIsUnmount';\nimport useUnmount from './useUnmount';\n\ntype Parameter<T extends (p: any) => any> = Parameters<T>[0]\n\ninterface Opt<T extends (p: any) => any, R> {\n defParam?: Partial<Parameter<T>>;\n immediate?: boolean;\n format?: (p: ReturnType<T>) => R;\n catchParam?: boolean;\n onAbort?: (this: AbortSignal, ev: Event) => any;\n}\n\nconst defOpt = {\n immediate: false,\n catchParam: false,\n}\n\nconst useAsync = <T extends (p: any, opt?: { signal: AbortController['signal'] }) => Promise<any>, R = any>(\n asyncFn: T,\n opt: Opt<T, R> = { ...defOpt }\n): [\n R | undefined,\n {\n run: (runParam?: Partial<Parameter<T>>) => Promise<void>;\n refresh: () => Promise<void>;\n loading: boolean;\n error?: Error;\n param: Partial<Parameter<T>>;\n controller: AbortController|undefined;\n }\n] => {\n const [data, setData] = useState<R | undefined>(undefined);\n const [param, setParam] = useState<Partial<Parameter<T>>>(opt.defParam || {});\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<Error | undefined>(undefined);\n const [controller, setController] = useState<AbortController>();\n const isUnmounted = useIsUnmounted();\n\n useEffect(() => {\n if (!controller || !opt.onAbort) {\n return;\n }\n const onAbort = opt.onAbort\n controller.signal.addEventListener('abort', onAbort);\n return () => {\n controller.signal.removeEventListener('abort', onAbort);\n }\n }, [controller]);\n\n const run = useRtCb((runParam: Partial<Parameter<T>> = {}) => {\n const currParam = opt.catchParam ? {\n ...param,\n ...runParam,\n } : runParam;\n setLoading(true);\n setError(undefined);\n\n if (controller) {\n controller.abort();\n }\n\n const abortController = new AbortController();\n setController(abortController);\n\n return asyncFn(currParam, { signal: abortController.signal })\n .then((resData) => {\n if (isUnmounted() || abortController.signal.aborted) return;\n setData(opt.format ? opt.format(resData) : resData);\n setParam(currParam as any);\n }, (err) => {\n if (isUnmounted() || abortController.signal.aborted) return;\n setError(err);\n }).finally(() => {\n if (isUnmounted()) return;\n setLoading(false);\n setController(undefined);\n });\n });\n const refresh = useRtCb(() => run(param));\n useCreate(() => {\n if (opt.immediate) {\n run(param);\n }\n });\n useUnmount(() => {\n if (controller) {\n controller.abort();\n }\n });\n return [data, { run, refresh, loading, error, param, controller }];\n};\n\nexport default useAsync;\n"]}
|
package/es/useBoolState.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2025-03-16 11:16:34
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-29 18:08:43
|
|
6
6
|
*/
|
|
7
7
|
import { useState, useCallback } from 'react';
|
|
8
8
|
const useBoolState = (value) => {
|
|
@@ -21,3 +21,4 @@ const useBoolState = (value) => {
|
|
|
21
21
|
return [val, switchFn];
|
|
22
22
|
};
|
|
23
23
|
export default useBoolState;
|
|
24
|
+
//# sourceMappingURL=useBoolState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useBoolState.js","sourceRoot":"/","sources":["useBoolState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAE9C,MAAM,YAAY,GAAG,CAAC,KAAc,EAGlC,EAAE;IACF,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAU,KAAK,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,WAA2C,EAAE,EAAE;QAC3E,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;aAAM,IAAI,OAAO,WAAW,KAAK,SAAS,IAAI,OAAO,WAAW,KAAK,UAAU,EAAE,CAAC;YACjF,MAAM,CAAC,WAAW,CAAC,CAAC;QACtB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACxB,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-16 11:16:34\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-29 18:08:43\n */\n\nimport { useState, useCallback } from 'react';\n\nconst useBoolState = (value: boolean): [\n boolean,\n (switchValue?: React.SetStateAction<boolean>) => void\n] => {\n const [val, setVal] = useState<boolean>(value);\n const switchFn = useCallback((switchValue?: React.SetStateAction<boolean>) => {\n if (switchValue === undefined || switchValue === null) {\n setVal((oldVal) => !oldVal);\n } else if (typeof switchValue === 'boolean' || typeof switchValue === 'function') {\n setVal(switchValue);\n } else {\n setVal(!!switchValue);\n }\n }, []);\n return [val, switchFn];\n};\n\nexport default useBoolState;\n"]}
|
package/es/useCreate.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCreate.js","sourceRoot":"/","sources":["useCreate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,SAAS,GAAG,CAAC,EAAc,EAAE,EAAE;IACnC,QAAQ,CAAC,EAAE,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-16 11:34:59\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-03-19 22:53:33\n */\n\nimport { useState } from 'react';\n\nconst useCreate = (cb: () => void) => {\n useState(cb);\n};\n\nexport default useCreate;\n"]}
|
package/es/useDebounce.js
CHANGED
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2025-03-19 22:55:14
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-29 18:56:33
|
|
6
6
|
*/
|
|
7
|
-
import { debounce } from 'lodash
|
|
7
|
+
import { debounce } from 'lodash';
|
|
8
8
|
import { useMemo } from 'react';
|
|
9
9
|
import useRtCb from './useRtCb';
|
|
10
|
-
const useDebounce = (cb, wait, opts) => {
|
|
10
|
+
const useDebounce = (cb, wait = 200, opts) => {
|
|
11
11
|
const rtCb = useRtCb(cb);
|
|
12
12
|
return useMemo(() => {
|
|
13
13
|
return debounce((...arg) => {
|
|
14
|
-
rtCb(...arg);
|
|
14
|
+
return rtCb(...arg);
|
|
15
15
|
}, wait, opts);
|
|
16
|
-
}, []);
|
|
16
|
+
}, [wait, opts]);
|
|
17
17
|
};
|
|
18
18
|
export default useDebounce;
|
|
19
|
+
//# sourceMappingURL=useDebounce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDebounce.js","sourceRoot":"/","sources":["useDebounce.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAmC,MAAM,QAAQ,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,MAAM,WAAW,GAAG,CAClB,EAAK,EACL,OAAe,GAAG,EAClB,IAAuB,EACL,EAAE;IACpB,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,OAAO,QAAQ,CAAC,CAAC,GAAG,GAAkB,EAAE,EAAE;YACxC,OAAO,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACtB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-19 22:55:14\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-29 18:56:33\n */\n\nimport { debounce, DebounceSettings, DebouncedFunc } from 'lodash';\nimport { useMemo } from 'react';\nimport useRtCb from './useRtCb';\nconst useDebounce = <T extends (...args: any[]) => any>(\n cb: T,\n wait: number = 200,\n opts?: DebounceSettings\n): DebouncedFunc<T> => {\n const rtCb = useRtCb(cb);\n return useMemo(() => {\n return debounce((...arg: Parameters<T>) => {\n return rtCb(...arg);\n }, wait, opts);\n }, [wait, opts]);\n};\n\nexport default useDebounce;\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIgnoreAbortErrCb.js","sourceRoot":"/","sources":["useIgnoreAbortErrCb.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAKpC,MAAM,mBAAmB,GAAG,CAAU,EAAqB,EAAE,OAA6B,EAAE,EAAE,IAAc,EAAE,EAAE;IAC9G,OAAO,WAAW,CAAC,CAAC,GAAU,EAAE,EAAE;;QAChC,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY;YAAE,OAAO,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,qDAAG,GAAG,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC;AACF,eAAe,mBAAmB,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-19 22:28:14\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-03-19 22:57:23\n */\n\nimport { useCallback } from \"react\";\n\ninterface Opts<T> {\n onAbort: (err: Error) => T;\n}\nconst useIgnoreAbortErrCb = <T = any>(cb: (err: Error) => T, deps: React.DependencyList = [], opts?: Opts<T>) => {\n return useCallback((err: Error) => {\n if (err.name === 'AbortError') return opts?.onAbort?.(err);\n return cb(err);\n }, deps);\n};\nexport default useIgnoreAbortErrCb;\n"]}
|
package/es/useInterval.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2023-12-14 16:51:29
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-30 18:24:00
|
|
6
6
|
*/
|
|
7
7
|
import { useCallback, useEffect, useRef } from 'react';
|
|
8
|
-
|
|
8
|
+
import useRtCb from './useRtCb';
|
|
9
|
+
export const useIntervalHandler = () => {
|
|
9
10
|
const timerRef = useRef();
|
|
10
11
|
const clearTimer = useCallback(() => {
|
|
11
12
|
if (timerRef.current) {
|
|
@@ -16,7 +17,6 @@ const useInterval = () => {
|
|
|
16
17
|
const bindTimer = useCallback((callback, timeout, ...arg) => {
|
|
17
18
|
clearTimer();
|
|
18
19
|
timerRef.current = window.setInterval(() => {
|
|
19
|
-
timerRef.current = undefined;
|
|
20
20
|
callback(...arg);
|
|
21
21
|
}, timeout);
|
|
22
22
|
}, []);
|
|
@@ -26,4 +26,14 @@ const useInterval = () => {
|
|
|
26
26
|
clearTimer,
|
|
27
27
|
];
|
|
28
28
|
};
|
|
29
|
+
export const useInterval = (callback, timeout, ...arg) => {
|
|
30
|
+
const [bindTimer, clearTimer] = useIntervalHandler();
|
|
31
|
+
const cb = useRtCb(callback);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
bindTimer(cb, timeout, ...arg);
|
|
34
|
+
return clearTimer;
|
|
35
|
+
}, [cb, timeout, ...arg]);
|
|
36
|
+
return clearTimer;
|
|
37
|
+
};
|
|
29
38
|
export default useInterval;
|
|
39
|
+
//# sourceMappingURL=useInterval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInterval.js","sourceRoot":"/","sources":["useInterval.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAGhC,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,EAAU,CAAC;IAClC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,QAAkB,EAAE,OAAgB,EAAE,GAAG,GAAU,EAAE,EAAE;QACpF,UAAU,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE;YACzC,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;QACnB,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;IAC5B,OAAO;QACL,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,QAA8B,EAAE,OAAgB,EAAE,GAAG,GAAU,EAAgB,EAAE;IAC3G,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,kBAAkB,EAAE,CAAC;IACrD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7B,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAA;QAC9B,OAAO,UAAU,CAAA;IACnB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC","sourcesContent":["/*\n * @Author: apathyjade\n * @Date: 2023-12-14 16:51:29\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-30 18:24:00\n */\n\nimport { useCallback, useEffect, useRef } from 'react';\nimport useRtCb from './useRtCb';\n\nexport const useIntervalHandler = (): [\n (callback: Function, timeout?: number, ...arg: any[]) => void,\n () => void,\n] => {\n const timerRef = useRef<number>();\n const clearTimer = useCallback(() => {\n if (timerRef.current) {\n window.clearInterval(timerRef.current);\n timerRef.current = undefined;\n }\n }, []);\n const bindTimer = useCallback((callback: Function, timeout?: number, ...arg: any[]) => {\n clearTimer();\n timerRef.current = window.setInterval(() => {\n callback(...arg);\n }, timeout);\n }, []);\n useEffect(() => clearTimer);\n return [\n bindTimer,\n clearTimer,\n ];\n}\n\nexport const useInterval = (callback: (args: any[]) => any, timeout?: number, ...arg: any[]): (() => void) => {\n const [bindTimer, clearTimer] = useIntervalHandler();\n const cb = useRtCb(callback);\n useEffect(() => {\n bindTimer(cb, timeout, ...arg)\n return clearTimer\n }, [cb, timeout, ...arg]);\n return clearTimer;\n};\n\nexport default useInterval;\n"]}
|
package/es/useIsMounted.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsMounted.js","sourceRoot":"/","sources":["useIsMounted.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,YAAY,GAAG,GAAoB,EAAE;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-16 21:34:27\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-03-16 21:37:21\n */\n\nimport { useCallback, useEffect, useRef } from 'react';\n\nconst useIsMounted = (): (() => boolean) => {\n const ref = useRef(false);\n useEffect(() => {\n ref.current = true;\n return () => {\n ref.current = false;\n };\n }, []);\n return useCallback(() => ref.current, []);\n};\n\nexport default useIsMounted;\n"]}
|
|
@@ -2,16 +2,18 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2025-03-16 21:33:24
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-29 20:15:50
|
|
6
6
|
*/
|
|
7
7
|
import { useCallback, useEffect, useRef } from 'react';
|
|
8
|
-
const
|
|
9
|
-
const ref = useRef(
|
|
8
|
+
const useIsUnmount = () => {
|
|
9
|
+
const ref = useRef(true);
|
|
10
10
|
useEffect(() => {
|
|
11
|
+
ref.current = false;
|
|
11
12
|
return () => {
|
|
12
13
|
ref.current = true;
|
|
13
14
|
};
|
|
14
15
|
}, []);
|
|
15
16
|
return useCallback(() => ref.current, []);
|
|
16
17
|
};
|
|
17
|
-
export default
|
|
18
|
+
export default useIsUnmount;
|
|
19
|
+
//# sourceMappingURL=useIsUnmount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIsUnmount.js","sourceRoot":"/","sources":["useIsUnmount.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAEvD,MAAM,YAAY,GAAG,GAAoB,EAAE;IACzC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,SAAS,CAAC,GAAG,EAAE;QACb,GAAG,CAAC,OAAO,GAAG,KAAK,CAAA;QACnB,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-16 21:33:24\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-29 20:15:50\n */\n\nimport { useCallback, useEffect, useRef } from 'react';\n\nconst useIsUnmount = (): (() => boolean) => {\n const ref = useRef(true);\n useEffect(() => {\n ref.current = false\n return () => {\n ref.current = true;\n };\n }, []);\n return useCallback(() => ref.current, []);\n};\n\nexport default useIsUnmount;\n"]}
|
package/es/useMount.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMount.js","sourceRoot":"/","sources":["useMount.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAElC,MAAM,QAAQ,GAAG,CAAC,EAAc,EAAE,EAAE;IAClC,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-18 00:21:16\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-03-18 00:21:16\n */\n\nimport { useEffect } from 'react';\n\nconst useMount = (cb: () => void) => {\n useEffect(cb, []);\n};\n\nexport default useMount;\n"]}
|
package/es/useOption.js
CHANGED
|
@@ -12,8 +12,9 @@ const useOption = (defOpt = {}) => {
|
|
|
12
12
|
setOption(initOpt);
|
|
13
13
|
}, [initOpt]);
|
|
14
14
|
const update = useCallback((newOpts) => {
|
|
15
|
-
setOption((oldOpts) => (Object.assign(Object.assign({},
|
|
15
|
+
setOption((oldOpts) => (Object.assign(Object.assign({}, oldOpts), (typeof newOpts === 'function' ? newOpts(oldOpts) : newOpts))));
|
|
16
16
|
}, []);
|
|
17
17
|
return [option, { setOption, reset, update }];
|
|
18
18
|
};
|
|
19
19
|
export default useOption;
|
|
20
|
+
//# sourceMappingURL=useOption.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOption.js","sourceRoot":"/","sources":["useOption.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAE9C,MAAM,SAAS,GAAG,CAAe,SAAqB,EAAE,EAOrD,EAAE;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAa,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAa,OAAO,CAAC,CAAC;IAE1D,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,SAAS,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,MAAM,GAAqD,WAAW,CAAC,CAAC,OAAyC,EAAE,EAAE;QACzH,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,iCAClB,OAAO,GACP,CAAC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAC/D,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-16 11:35:37\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-03-16 21:31:54\n */\n\nimport { useCallback, useState } from 'react';\n\nconst useOption = <T extends {}>(defOpt: Partial<T> = {}): [\n Partial<T>,\n {\n reset: () => void;\n setOption: React.Dispatch<React.SetStateAction<Partial<T>>>;\n update: React.Dispatch<React.SetStateAction<Partial<T>>>;\n },\n ] => {\n const [initOpt] = useState<Partial<T>>(defOpt);\n const [option, setOption] = useState<Partial<T>>(initOpt);\n\n const reset = useCallback(() => {\n setOption(initOpt);\n }, [initOpt]);\n\n const update: React.Dispatch<React.SetStateAction<Partial<T>>> = useCallback((newOpts: React.SetStateAction<Partial<T>>) => {\n setOption((oldOpts) => ({\n ...oldOpts,\n ...(typeof newOpts === 'function' ? newOpts(oldOpts) : newOpts),\n }));\n }, []);\n\n return [option, { setOption, reset, update }];\n};\n\nexport default useOption;\n"]}
|
package/es/useResizeObserver.js
CHANGED
|
@@ -2,49 +2,58 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2023-11-24 10:52:51
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-30 14:35:56
|
|
6
6
|
*/
|
|
7
7
|
import { useCallback, useEffect } from 'react';
|
|
8
|
-
let resizeObserver
|
|
9
|
-
let observeCatch
|
|
10
|
-
|
|
11
|
-
if (resizeObserver) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
8
|
+
let resizeObserver;
|
|
9
|
+
let observeCatch;
|
|
10
|
+
let init = () => {
|
|
14
11
|
observeCatch = new Map();
|
|
15
|
-
resizeObserver = new window.ResizeObserver((targets) => {
|
|
16
|
-
targets
|
|
12
|
+
resizeObserver = new window.ResizeObserver((targets = []) => {
|
|
13
|
+
targets.forEach((item = {}) => {
|
|
17
14
|
var _a;
|
|
18
|
-
(_a = observeCatch
|
|
15
|
+
(_a = observeCatch.get(item.target)) === null || _a === void 0 ? void 0 : _a(item);
|
|
19
16
|
});
|
|
20
17
|
});
|
|
21
|
-
|
|
22
|
-
;
|
|
18
|
+
init = null;
|
|
19
|
+
};
|
|
23
20
|
const observe = (target, cb) => {
|
|
24
|
-
if (
|
|
21
|
+
if (init) {
|
|
25
22
|
init();
|
|
26
23
|
}
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
if (!target) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
observeCatch.set(target, cb);
|
|
28
|
+
resizeObserver.observe(target);
|
|
29
29
|
};
|
|
30
30
|
const unobserve = (target) => {
|
|
31
|
-
if (
|
|
31
|
+
if (init) {
|
|
32
32
|
init();
|
|
33
33
|
}
|
|
34
|
-
|
|
35
|
-
|
|
34
|
+
if (!target) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
resizeObserver.unobserve(target);
|
|
38
|
+
observeCatch.delete(target);
|
|
36
39
|
};
|
|
37
|
-
export
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
export const useResizeObserverHandler = () => {
|
|
41
|
+
return [observe, unobserve];
|
|
42
|
+
};
|
|
43
|
+
export const useResizeObserver = (domRef, cb) => {
|
|
41
44
|
const selfUnobserve = useCallback(() => {
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
if (domRef.current) {
|
|
46
|
+
unobserve(domRef.current);
|
|
47
|
+
}
|
|
48
|
+
}, [domRef.current]);
|
|
44
49
|
useEffect(() => {
|
|
50
|
+
if (!domRef.current)
|
|
51
|
+
return;
|
|
52
|
+
const dom = domRef.current;
|
|
45
53
|
observe(dom, cb);
|
|
46
54
|
return () => unobserve(dom);
|
|
47
|
-
}, [
|
|
48
|
-
return
|
|
49
|
-
}
|
|
50
|
-
;
|
|
55
|
+
}, [domRef.current, cb]);
|
|
56
|
+
return selfUnobserve;
|
|
57
|
+
};
|
|
58
|
+
export default useResizeObserver;
|
|
59
|
+
//# sourceMappingURL=useResizeObserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResizeObserver.js","sourceRoot":"/","sources":["useResizeObserver.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE/C,IAAI,cAA8B,CAAC;AACnC,IAAI,YAAwC,CAAC;AAG7C,IAAI,IAAI,GAAoB,GAAG,EAAE;IAC/B,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,cAAc,GAAG,IAAI,MAAM,CAAC,cAAc,CACxC,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE;QACf,OAAO,CAAC,OAAO,CAAC,CAAC,OAAY,EAAE,EAAE,EAAE;;YACjC,MAAA,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,0CAAG,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CACF,CAAC;IACF,IAAI,GAAG,IAAI,CAAA;AACb,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,MAAmB,EAAE,EAAsC,EAAE,EAAE;IAC9E,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;IACT,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IACD,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC7B,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC,CAAC;AACF,MAAM,SAAS,GAAG,CAAC,MAAmB,EAAE,EAAE;IACxC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,EAAE,CAAC;IACT,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;IACT,CAAC;IACD,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAGtC,EAAE;IACF,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAyB,MAA0B,EAAE,EAAwC,EAAE,EAAE;IAChI,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAA;QAC1B,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAEF,eAAe,iBAAiB,CAAC","sourcesContent":["/*\n * @Author: apathyjade\n * @Date: 2023-11-24 10:52:51\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-30 14:35:56\n */\n\nimport { useCallback, useEffect } from 'react';\n\nlet resizeObserver: ResizeObserver;\nlet observeCatch: Map<HTMLElement, Function>;\n\n\nlet init: Function | null = () => {\n observeCatch = new Map();\n resizeObserver = new window.ResizeObserver(\n (targets = []) => {\n targets.forEach((item: any = {}) => {\n observeCatch.get(item.target)?.(item);\n });\n },\n );\n init = null\n};\n\nconst observe = (target: HTMLElement, cb: (dom: ResizeObserverEntry) => void) => {\n if (init) {\n init();\n }\n if (!target) {\n return;\n }\n observeCatch.set(target, cb);\n resizeObserver.observe(target);\n};\nconst unobserve = (target: HTMLElement) => {\n if (init) {\n init();\n }\n if (!target) {\n return;\n }\n resizeObserver.unobserve(target);\n observeCatch.delete(target);\n};\n\nexport const useResizeObserverHandler = (): [\n typeof observe,\n typeof unobserve\n] => {\n return [observe, unobserve];\n};\n\nexport const useResizeObserver = <T extends HTMLElement >(domRef: React.RefObject<T>, cb: (entry: ResizeObserverEntry) => void) => {\n const selfUnobserve = useCallback(() => {\n if (domRef.current) {\n unobserve(domRef.current);\n }\n }, [domRef.current]);\n useEffect(() => {\n if (!domRef.current) return;\n const dom = domRef.current\n observe(dom, cb);\n return () => unobserve(dom);\n }, [domRef.current, cb]);\n return selfUnobserve;\n};\n\nexport default useResizeObserver;\n"]}
|
package/es/useRtCb.js
CHANGED
|
@@ -6,10 +6,11 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { useCallback } from 'react';
|
|
8
8
|
import useRtRef from './useRtRef';
|
|
9
|
-
const useRtCb = (cb
|
|
9
|
+
const useRtCb = (cb) => {
|
|
10
10
|
const ref = useRtRef(cb);
|
|
11
11
|
return useCallback((...args) => {
|
|
12
12
|
return ref.current(...args);
|
|
13
|
-
},
|
|
13
|
+
}, []);
|
|
14
14
|
};
|
|
15
15
|
export default useRtCb;
|
|
16
|
+
//# sourceMappingURL=useRtCb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRtCb.js","sourceRoot":"/","sources":["useRtCb.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,OAAO,GAAG,CAAoC,EAAK,EAAK,EAAE;IAC9D,MAAM,GAAG,GAAG,QAAQ,CAAI,EAAE,CAAC,CAAC;IAC5B,OAAO,WAAW,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE;QACpC,OAAQ,GAAG,CAAC,OAAa,CAAC,GAAG,IAAI,CAAC,CAAC;IACrC,CAAC,EAAE,EAAE,CAAM,CAAC;AACd,CAAC,CAAC;AAEF,eAAe,OAAO,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-17 00:22:11\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-03-17 00:22:56\n */\n\nimport { useCallback } from 'react';\nimport useRtRef from './useRtRef';\n\nconst useRtCb = <T extends (...args: any[]) => any>(cb: T): T => {\n const ref = useRtRef<T>(cb);\n return useCallback((...args: any[]) => {\n return (ref.current as T)(...args);\n }, []) as T;\n};\n\nexport default useRtCb;\n"]}
|
package/es/useRtRef.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2025-03-16 22:19:57
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-30 15:05:26
|
|
6
6
|
*/
|
|
7
7
|
import { useRef } from 'react';
|
|
8
8
|
const useRtRef = (val) => {
|
|
@@ -11,3 +11,4 @@ const useRtRef = (val) => {
|
|
|
11
11
|
return ref;
|
|
12
12
|
};
|
|
13
13
|
export default useRtRef;
|
|
14
|
+
//# sourceMappingURL=useRtRef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRtRef.js","sourceRoot":"/","sources":["useRtRef.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,MAAM,QAAQ,GAAG,CAAI,GAAM,EAAE,EAAE;IAC7B,MAAM,GAAG,GAAG,MAAM,CAAI,GAAG,CAAC,CAAA;IAC1B,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-16 22:19:57\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-30 15:05:26\n */\n\nimport { useRef } from 'react';\n\nconst useRtRef = <T>(val: T) => {\n const ref = useRef<T>(val)\n ref.current = val;\n return ref;\n};\n\nexport default useRtRef;\n"]}
|
package/es/useSafeRunner.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* @Last Modified time: 2025-03-19 22:41:39
|
|
6
6
|
*/
|
|
7
7
|
import { useCallback } from 'react';
|
|
8
|
-
import useIsUnmount from "./
|
|
8
|
+
import useIsUnmount from "./useIsUnmount";
|
|
9
9
|
const useSafeRunner = () => {
|
|
10
10
|
const isUnmount = useIsUnmount();
|
|
11
11
|
return useCallback((cb, unmountCb) => {
|
|
@@ -18,3 +18,4 @@ const useSafeRunner = () => {
|
|
|
18
18
|
}, []);
|
|
19
19
|
};
|
|
20
20
|
export default useSafeRunner;
|
|
21
|
+
//# sourceMappingURL=useSafeRunner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSafeRunner.js","sourceRoot":"/","sources":["useSafeRunner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,MAAM,aAAa,GAAG,GAAG,EAAE;IACzB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IACjC,OAAO,WAAW,CAAC,CAAC,EAAc,EAAE,SAAsB,EAAE,EAAE;QAC5D,IAAI,SAAS,EAAE,EAAE,CAAC;YAChB,SAAS,aAAT,SAAS,uBAAT,SAAS,EAAI,CAAC;QAChB,CAAC;aAAM,CAAC;YACN,EAAE,EAAE,CAAC;QACP,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-16 11:36:09\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-03-19 22:41:39\n */\n\nimport { useCallback } from 'react';\nimport useIsUnmount from \"./useIsUnmount\";\n\nconst useSafeRunner = () => {\n const isUnmount = useIsUnmount();\n return useCallback((cb: () => void, unmountCb?: () => void) => {\n if (isUnmount()) {\n unmountCb?.();\n } else {\n cb();\n }\n }, []);\n};\n\nexport default useSafeRunner;\n"]}
|
package/es/useThrottle.js
CHANGED
|
@@ -2,17 +2,18 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2025-03-19 22:55:28
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-30 15:31:34
|
|
6
6
|
*/
|
|
7
|
-
import { throttle } from 'lodash
|
|
7
|
+
import { throttle } from 'lodash';
|
|
8
8
|
import { useMemo } from 'react';
|
|
9
9
|
import useRtCb from './useRtCb';
|
|
10
|
-
const useThrottle = (cb, wait, opts) => {
|
|
10
|
+
const useThrottle = (cb, wait = 200, opts) => {
|
|
11
11
|
const rtCb = useRtCb(cb);
|
|
12
12
|
return useMemo(() => {
|
|
13
|
-
return throttle((...
|
|
14
|
-
rtCb(...
|
|
13
|
+
return throttle((...args) => {
|
|
14
|
+
rtCb(...args);
|
|
15
15
|
}, wait, opts);
|
|
16
|
-
}, []);
|
|
16
|
+
}, [wait, opts]);
|
|
17
17
|
};
|
|
18
18
|
export default useThrottle;
|
|
19
|
+
//# sourceMappingURL=useThrottle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useThrottle.js","sourceRoot":"/","sources":["useThrottle.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAA0C,MAAM,QAAQ,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,WAAW,GAAG,CAClB,EAAK,EACL,OAAe,GAAG,EAClB,IAAuB,EACE,EAAE;IAC3B,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;IACzB,OAAO,OAAO,CAAC,GAAG,EAAE;QAClB,OAAO,QAAQ,CAAC,CAAC,GAAG,IAAmB,EAAE,EAAE;YACzC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAA;QACf,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACnB,CAAC,CAAA;AAED,eAAe,WAAW,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-19 22:55:28\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-30 15:31:34\n */\n\nimport { throttle, ThrottleSettings, DebouncedFuncLeading } from 'lodash';\nimport { useMemo } from 'react';\nimport useRtCb from './useRtCb';\n\nconst useThrottle = <T extends (...args: any) => any >(\n cb: T,\n wait: number = 200,\n opts?: ThrottleSettings,\n): DebouncedFuncLeading<T> => {\n const rtCb = useRtCb(cb);\n return useMemo(() => {\n return throttle((...args: Parameters<T>) => {\n rtCb(...args)\n }, wait, opts);\n }, [wait, opts]);\n}\n\nexport default useThrottle;\n"]}
|
package/es/useTimeout.js
CHANGED
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2025-03-19 23:10:13
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-30 18:24:42
|
|
6
6
|
*/
|
|
7
7
|
import { useCallback, useEffect, useRef } from 'react';
|
|
8
|
-
|
|
8
|
+
import useRtCb from './useRtCb';
|
|
9
|
+
export const useTimeoutHandler = () => {
|
|
9
10
|
const timerRef = useRef();
|
|
10
11
|
const clearTimer = useCallback(() => {
|
|
11
12
|
if (timerRef.current) {
|
|
@@ -26,4 +27,14 @@ const useTimeout = () => {
|
|
|
26
27
|
clearTimer,
|
|
27
28
|
];
|
|
28
29
|
};
|
|
30
|
+
export const useTimeout = (callback, timeout, ...arg) => {
|
|
31
|
+
const [bindTimer, clearTimer] = useTimeoutHandler();
|
|
32
|
+
const cb = useRtCb(callback);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
bindTimer(cb, timeout, ...arg);
|
|
35
|
+
return clearTimer;
|
|
36
|
+
}, [cb, timeout, ...arg]);
|
|
37
|
+
return clearTimer;
|
|
38
|
+
};
|
|
29
39
|
export default useTimeout;
|
|
40
|
+
//# sourceMappingURL=useTimeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTimeout.js","sourceRoot":"/","sources":["useTimeout.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AACvD,OAAO,OAAO,MAAM,WAAW,CAAC;AAEhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAG/B,EAAE;IACF,MAAM,QAAQ,GAAG,MAAM,EAAU,CAAC;IAClC,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;QAClC,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACtC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;QAC/B,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,QAAkB,EAAE,OAAgB,EAAE,GAAG,GAAU,EAAE,EAAE;QACpF,UAAU,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACxC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;YAC7B,QAAQ,CAAC,GAAG,GAAG,CAAC,CAAC;QACnB,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;IAC5B,OAAO;QACL,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,QAAgC,EAAE,OAAgB,EAAE,GAAG,GAAU,EAAc,EAAE;IAC1G,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,iBAAiB,EAAE,CAAC;IAEpD,MAAM,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-19 23:10:13\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-30 18:24:42\n */\n\nimport { useCallback, useEffect, useRef } from 'react';\nimport useRtCb from './useRtCb';\n\nexport const useTimeoutHandler = (): [\n (callback: Function, timeout?: number, ...arg: any[]) => void,\n () => void,\n] => {\n const timerRef = useRef<number>();\n const clearTimer = useCallback(() => {\n if (timerRef.current) {\n window.clearTimeout(timerRef.current);\n timerRef.current = undefined;\n }\n }, []);\n\n const bindTimer = useCallback((callback: Function, timeout?: number, ...arg: any[]) => {\n clearTimer();\n timerRef.current = window.setTimeout(() => {\n timerRef.current = undefined;\n callback(...arg);\n }, timeout);\n }, []);\n useEffect(() => clearTimer);\n return [\n bindTimer,\n clearTimer,\n ];\n};\n\nexport const useTimeout = (callback: (...any: any[]) => any, timeout?: number, ...arg: any[]): () => void => {\n const [bindTimer, clearTimer] = useTimeoutHandler();\n\n const cb = useRtCb(callback);\n\n useEffect(() => {\n bindTimer(cb, timeout, ...arg);\n return clearTimer;\n }, [cb, timeout, ...arg]);\n return clearTimer;\n};\n\nexport default useTimeout;\n"]}
|
package/es/useUnmount.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUnmount.js","sourceRoot":"/","sources":["useUnmount.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,QAAQ,MAAM,YAAY,CAAC;AAElC,MAAM,UAAU,GAAG,CAAC,EAAc,EAAE,EAAE;IACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IACzB,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-16 11:35:20\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-03-18 00:17:09\n */\n\nimport { useEffect } from 'react';\nimport useRtRef from './useRtRef';\n\nconst useUnmount = (cb: () => void) => {\n const ref = useRtRef(cb);\n useEffect(() => {\n return () => {\n ref.current();\n };\n }, []);\n};\n\nexport default useUnmount;\n"]}
|
package/es/useUpdateEff.js
CHANGED
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
* @Author: apathyjade
|
|
3
3
|
* @Date: 2025-03-16 11:35:13
|
|
4
4
|
* @Last Modified by: apathyjade
|
|
5
|
-
* @Last Modified time: 2025-
|
|
5
|
+
* @Last Modified time: 2025-05-30 15:51:14
|
|
6
6
|
*/
|
|
7
7
|
import { useRef, useEffect } from 'react';
|
|
8
|
-
const
|
|
8
|
+
const useUpdateEff = (cb, deps) => {
|
|
9
9
|
const ref = useRef(false);
|
|
10
10
|
useEffect(() => {
|
|
11
11
|
if (ref.current) {
|
|
@@ -14,4 +14,5 @@ const useUpdateEffect = (cb, deps) => {
|
|
|
14
14
|
ref.current = true;
|
|
15
15
|
}, deps);
|
|
16
16
|
};
|
|
17
|
-
export default
|
|
17
|
+
export default useUpdateEff;
|
|
18
|
+
//# sourceMappingURL=useUpdateEff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUpdateEff.js","sourceRoot":"/","sources":["useUpdateEff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,YAAY,GAAG,CACnB,EAAwB,EACxB,IAA2B,EAC3B,EAAE;IACF,MAAM,GAAG,GAAG,MAAM,CAAU,KAAK,CAAC,CAAA;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;QACD,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;IACrB,CAAC,EAAE,IAAI,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["/**\n * @Author: apathyjade\n * @Date: 2025-03-16 11:35:13\n * @Last Modified by: apathyjade\n * @Last Modified time: 2025-05-30 15:51:14\n */\n\nimport { useRef, useEffect } from 'react';\n\nconst useUpdateEff = (\n cb: React.EffectCallback,\n deps?: React.DependencyList,\n) => {\n const ref = useRef<boolean>(false)\n useEffect(() => {\n if (ref.current) {\n return cb();\n }\n ref.current = true;\n }, deps);\n};\n\nexport default useUpdateEff;\n"]}
|
package/es/useValue.js
CHANGED
|
@@ -5,25 +5,23 @@
|
|
|
5
5
|
* @Last Modified by: jade
|
|
6
6
|
* @Last Modified Time: 2023-04-05 14:39:52
|
|
7
7
|
*/
|
|
8
|
-
import { useState
|
|
9
|
-
import
|
|
8
|
+
import { useState } from 'react';
|
|
9
|
+
import useUpdateEff from './useUpdateEff';
|
|
10
10
|
const defEqual = (a, b) => a === b;
|
|
11
11
|
const useValue = (value, onChange, opts) => {
|
|
12
12
|
const { isEqual = defEqual } = opts || {};
|
|
13
13
|
const [val, setVal] = useState(value);
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
}, []);
|
|
18
|
-
const [oldValue, setOldValue] = useState(value);
|
|
19
|
-
useEffect(() => {
|
|
20
|
-
if (!isEqual(value, oldValue)) {
|
|
21
|
-
setOldValue(value);
|
|
22
|
-
if (!isEqual(value, val)) {
|
|
23
|
-
updateValue(value);
|
|
24
|
-
}
|
|
14
|
+
useUpdateEff(() => {
|
|
15
|
+
if (!isEqual(value, val)) {
|
|
16
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(val);
|
|
25
17
|
}
|
|
26
|
-
}, [
|
|
18
|
+
}, [val]);
|
|
19
|
+
useUpdateEff(() => {
|
|
20
|
+
if (!isEqual(value, val)) {
|
|
21
|
+
setVal(value);
|
|
22
|
+
}
|
|
23
|
+
}, [value]);
|
|
27
24
|
return [val, setVal];
|
|
28
25
|
};
|
|
29
26
|
export default useValue;
|
|
27
|
+
//# sourceMappingURL=useValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useValue.js","sourceRoot":"/","sources":["useValue.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAM1C,MAAM,QAAQ,GAAG,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;AAE7C,MAAM,QAAQ,GAAG,CACf,KAAQ,EACR,QAA6B,EAC7B,IAAiB,EAIjB,EAAE;IACF,MAAM,EAAE,OAAO,GAAG,QAAQ,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;IAC1C,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,QAAQ,CAAI,KAAK,CAAC,CAAC;IAEzC,YAAY,CAAC,GAAG,EAAE;QAChB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACzB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAG,GAAG,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,YAAY,CAAC,GAAG,EAAE;QAChB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACZ,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC","sourcesContent":["/*\n * @Author: jade <apathyjade@outlook.com>\n * @Version: 0.0.1\n * @Date: 2023-04-05 14:39:52\n * @Last Modified by: jade\n * @Last Modified Time: 2023-04-05 14:39:52\n */\n\nimport { useState } from 'react';\nimport useUpdateEff from './useUpdateEff';\n\ninterface Options<T> {\n isEqual?: (a:T, b: T) => boolean\n}\n\nconst defEqual = (a: any, b: any) => a === b;\n\nconst useValue = <T = any>(\n value: T,\n onChange?: (value: T) => void,\n opts?: Options<T>\n): [\n T,\n React.Dispatch<React.SetStateAction<T>>,\n] => {\n const { isEqual = defEqual } = opts || {};\n const [val, setVal] = useState<T>(value);\n\n useUpdateEff(() => {\n if (!isEqual(value, val)) {\n onChange?.(val);\n }\n }, [val]);\n\n useUpdateEff(() => {\n if (!isEqual(value, val)) {\n setVal(value);\n }\n }, [value]);\n return [val, setVal];\n};\n\nexport default useValue;\n"]}
|