@jelper/hooks 1.1.1 → 1.2.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.
Files changed (82) hide show
  1. package/es/index.js +0 -1
  2. package/es/useAsync.js +28 -27
  3. package/es/useBoolState.js +0 -1
  4. package/es/useCreate.js +0 -1
  5. package/es/useDebounce.js +0 -1
  6. package/es/useIgnoreAbortErrCb.js +0 -1
  7. package/es/useInterval.js +0 -1
  8. package/es/useIsMounted.js +0 -1
  9. package/es/useIsUnmount.js +0 -1
  10. package/es/useMount.js +0 -1
  11. package/es/useOption.js +0 -1
  12. package/es/useResizeObserver.js +0 -1
  13. package/es/useRtCb.js +0 -1
  14. package/es/useRtRef.js +4 -3
  15. package/es/useSafeRunner.js +0 -1
  16. package/es/useThrottle.js +0 -1
  17. package/es/useTimeout.js +0 -1
  18. package/es/useUnmount.js +0 -1
  19. package/es/useUpdateEff.js +0 -1
  20. package/es/useValue.js +0 -1
  21. package/lib/index.js +0 -1
  22. package/lib/useAsync.js +28 -27
  23. package/lib/useBoolState.js +0 -1
  24. package/lib/useCreate.js +0 -1
  25. package/lib/useDebounce.js +0 -1
  26. package/lib/useIgnoreAbortErrCb.js +0 -1
  27. package/lib/useInterval.js +0 -1
  28. package/lib/useIsMounted.js +0 -1
  29. package/lib/useIsUnmount.js +0 -1
  30. package/lib/useMount.js +0 -1
  31. package/lib/useOption.js +0 -1
  32. package/lib/useResizeObserver.js +0 -1
  33. package/lib/useRtCb.js +0 -1
  34. package/lib/useRtRef.js +3 -2
  35. package/lib/useSafeRunner.js +0 -1
  36. package/lib/useThrottle.js +0 -1
  37. package/lib/useTimeout.js +0 -1
  38. package/lib/useUnmount.js +0 -1
  39. package/lib/useUpdateEff.js +0 -1
  40. package/lib/useValue.js +0 -1
  41. package/package.json +10 -5
  42. package/types/useAsync.d.ts +1 -7
  43. package/es/index.js.map +0 -1
  44. package/es/useAsync.js.map +0 -1
  45. package/es/useBoolState.js.map +0 -1
  46. package/es/useCreate.js.map +0 -1
  47. package/es/useDebounce.js.map +0 -1
  48. package/es/useIgnoreAbortErrCb.js.map +0 -1
  49. package/es/useInterval.js.map +0 -1
  50. package/es/useIsMounted.js.map +0 -1
  51. package/es/useIsUnmount.js.map +0 -1
  52. package/es/useMount.js.map +0 -1
  53. package/es/useOption.js.map +0 -1
  54. package/es/useResizeObserver.js.map +0 -1
  55. package/es/useRtCb.js.map +0 -1
  56. package/es/useRtRef.js.map +0 -1
  57. package/es/useSafeRunner.js.map +0 -1
  58. package/es/useThrottle.js.map +0 -1
  59. package/es/useTimeout.js.map +0 -1
  60. package/es/useUnmount.js.map +0 -1
  61. package/es/useUpdateEff.js.map +0 -1
  62. package/es/useValue.js.map +0 -1
  63. package/lib/index.js.map +0 -1
  64. package/lib/useAsync.js.map +0 -1
  65. package/lib/useBoolState.js.map +0 -1
  66. package/lib/useCreate.js.map +0 -1
  67. package/lib/useDebounce.js.map +0 -1
  68. package/lib/useIgnoreAbortErrCb.js.map +0 -1
  69. package/lib/useInterval.js.map +0 -1
  70. package/lib/useIsMounted.js.map +0 -1
  71. package/lib/useIsUnmount.js.map +0 -1
  72. package/lib/useMount.js.map +0 -1
  73. package/lib/useOption.js.map +0 -1
  74. package/lib/useResizeObserver.js.map +0 -1
  75. package/lib/useRtCb.js.map +0 -1
  76. package/lib/useRtRef.js.map +0 -1
  77. package/lib/useSafeRunner.js.map +0 -1
  78. package/lib/useThrottle.js.map +0 -1
  79. package/lib/useTimeout.js.map +0 -1
  80. package/lib/useUnmount.js.map +0 -1
  81. package/lib/useUpdateEff.js.map +0 -1
  82. package/lib/useValue.js.map +0 -1
package/es/index.js CHANGED
@@ -25,4 +25,3 @@ export { default as useAsync } from './useAsync';
25
25
  export { default as useTimeout, useTimeoutHandler } from './useTimeout';
26
26
  export { default as useInterval, useIntervalHandler } from './useInterval';
27
27
  export { default as useResizeObserver, useResizeObserverHandler } from './useResizeObserver';
28
- //# sourceMappingURL=index.js.map
package/es/useAsync.js CHANGED
@@ -1,16 +1,8 @@
1
- /**
2
- * @Author: apathyjade
3
- * @Date: 2025-03-18 23:44:38
4
- * @Last Modified by: apathyjade
5
- * @Last Modified time: 2025-05-29 17:58:54
6
- */
7
1
  import { useEffect, useState } from 'react';
8
2
  import useRtCb from './useRtCb';
9
- import useCreate from './useCreate';
10
- import useIsUnmounted from './useIsUnmount';
11
3
  import useUnmount from './useUnmount';
4
+ import useSafeRunner from './useSafeRunner';
12
5
  const defOpt = {
13
- immediate: false,
14
6
  catchParam: false,
15
7
  };
16
8
  const useAsync = (asyncFn, opt = Object.assign({}, defOpt)) => {
@@ -19,7 +11,7 @@ const useAsync = (asyncFn, opt = Object.assign({}, defOpt)) => {
19
11
  const [loading, setLoading] = useState(false);
20
12
  const [error, setError] = useState(undefined);
21
13
  const [controller, setController] = useState();
22
- const isUnmounted = useIsUnmounted();
14
+ const safeRunner = useSafeRunner();
23
15
  useEffect(() => {
24
16
  if (!controller || !opt.onAbort) {
25
17
  return;
@@ -32,34 +24,44 @@ const useAsync = (asyncFn, opt = Object.assign({}, defOpt)) => {
32
24
  }, [controller]);
33
25
  const run = useRtCb((runParam = {}) => {
34
26
  const currParam = opt.catchParam ? Object.assign(Object.assign({}, param), runParam) : runParam;
35
- setLoading(true);
36
- setError(undefined);
37
27
  if (controller) {
38
28
  controller.abort();
39
29
  }
40
30
  const abortController = new AbortController();
41
- setController(abortController);
31
+ safeRunner(() => {
32
+ setLoading(true);
33
+ setError(undefined);
34
+ setController(abortController);
35
+ });
42
36
  return asyncFn(currParam, { signal: abortController.signal })
43
37
  .then((resData) => {
44
- if (isUnmounted() || abortController.signal.aborted)
38
+ if (abortController.signal.aborted)
45
39
  return;
46
- setData(opt.format ? opt.format(resData) : resData);
47
- setParam(currParam);
40
+ safeRunner(() => {
41
+ setData(opt.format ? opt.format(resData) : resData);
42
+ setParam(currParam);
43
+ });
48
44
  }, (err) => {
49
- if (isUnmounted() || abortController.signal.aborted)
45
+ if (abortController.signal.aborted)
50
46
  return;
51
- setError(err);
47
+ safeRunner(() => {
48
+ setError(err);
49
+ });
52
50
  }).finally(() => {
53
- if (isUnmounted())
54
- return;
55
- setLoading(false);
56
- setController(undefined);
51
+ safeRunner(() => {
52
+ setLoading(false);
53
+ setController(undefined);
54
+ });
57
55
  });
58
56
  });
59
57
  const refresh = useRtCb(() => run(param));
60
- useCreate(() => {
61
- if (opt.immediate) {
62
- run(param);
58
+ const cancel = useRtCb(() => {
59
+ if (controller) {
60
+ controller.abort();
61
+ safeRunner(() => {
62
+ setController(undefined);
63
+ setLoading(false);
64
+ });
63
65
  }
64
66
  });
65
67
  useUnmount(() => {
@@ -67,7 +69,6 @@ const useAsync = (asyncFn, opt = Object.assign({}, defOpt)) => {
67
69
  controller.abort();
68
70
  }
69
71
  });
70
- return [data, { run, refresh, loading, error, param, controller }];
72
+ return [data, { run, refresh, cancel, loading, error, param, controller }];
71
73
  };
72
74
  export default useAsync;
73
- //# sourceMappingURL=useAsync.js.map
@@ -21,4 +21,3 @@ const useBoolState = (value) => {
21
21
  return [val, switchFn];
22
22
  };
23
23
  export default useBoolState;
24
- //# sourceMappingURL=useBoolState.js.map
package/es/useCreate.js CHANGED
@@ -9,4 +9,3 @@ const useCreate = (cb) => {
9
9
  useState(cb);
10
10
  };
11
11
  export default useCreate;
12
- //# sourceMappingURL=useCreate.js.map
package/es/useDebounce.js CHANGED
@@ -16,4 +16,3 @@ const useDebounce = (cb, wait = 200, opts) => {
16
16
  }, [wait, opts]);
17
17
  };
18
18
  export default useDebounce;
19
- //# sourceMappingURL=useDebounce.js.map
@@ -14,4 +14,3 @@ const useIgnoreAbortErrCb = (cb, deps = [], opts) => {
14
14
  }, deps);
15
15
  };
16
16
  export default useIgnoreAbortErrCb;
17
- //# sourceMappingURL=useIgnoreAbortErrCb.js.map
package/es/useInterval.js CHANGED
@@ -36,4 +36,3 @@ export const useInterval = (callback, timeout, ...arg) => {
36
36
  return clearTimer;
37
37
  };
38
38
  export default useInterval;
39
- //# sourceMappingURL=useInterval.js.map
@@ -16,4 +16,3 @@ const useIsMounted = () => {
16
16
  return useCallback(() => ref.current, []);
17
17
  };
18
18
  export default useIsMounted;
19
- //# sourceMappingURL=useIsMounted.js.map
@@ -16,4 +16,3 @@ const useIsUnmount = () => {
16
16
  return useCallback(() => ref.current, []);
17
17
  };
18
18
  export default useIsUnmount;
19
- //# sourceMappingURL=useIsUnmount.js.map
package/es/useMount.js CHANGED
@@ -9,4 +9,3 @@ const useMount = (cb) => {
9
9
  useEffect(cb, []);
10
10
  };
11
11
  export default useMount;
12
- //# sourceMappingURL=useMount.js.map
package/es/useOption.js CHANGED
@@ -17,4 +17,3 @@ const useOption = (defOpt = {}) => {
17
17
  return [option, { setOption, reset, update }];
18
18
  };
19
19
  export default useOption;
20
- //# sourceMappingURL=useOption.js.map
@@ -56,4 +56,3 @@ export const useResizeObserver = (domRef, cb) => {
56
56
  return selfUnobserve;
57
57
  };
58
58
  export default useResizeObserver;
59
- //# sourceMappingURL=useResizeObserver.js.map
package/es/useRtCb.js CHANGED
@@ -13,4 +13,3 @@ const useRtCb = (cb) => {
13
13
  }, []);
14
14
  };
15
15
  export default useRtCb;
16
- //# sourceMappingURL=useRtCb.js.map
package/es/useRtRef.js CHANGED
@@ -4,11 +4,12 @@
4
4
  * @Last Modified by: apathyjade
5
5
  * @Last Modified time: 2025-05-30 15:05:26
6
6
  */
7
- import { useRef } from 'react';
7
+ import { useEffect, useRef } from 'react';
8
8
  const useRtRef = (val) => {
9
9
  const ref = useRef(val);
10
- ref.current = val;
10
+ useEffect(() => {
11
+ ref.current = val;
12
+ });
11
13
  return ref;
12
14
  };
13
15
  export default useRtRef;
14
- //# sourceMappingURL=useRtRef.js.map
@@ -18,4 +18,3 @@ const useSafeRunner = () => {
18
18
  }, []);
19
19
  };
20
20
  export default useSafeRunner;
21
- //# sourceMappingURL=useSafeRunner.js.map
package/es/useThrottle.js CHANGED
@@ -16,4 +16,3 @@ const useThrottle = (cb, wait = 200, opts) => {
16
16
  }, [wait, opts]);
17
17
  };
18
18
  export default useThrottle;
19
- //# sourceMappingURL=useThrottle.js.map
package/es/useTimeout.js CHANGED
@@ -37,4 +37,3 @@ export const useTimeout = (callback, timeout, ...arg) => {
37
37
  return clearTimer;
38
38
  };
39
39
  export default useTimeout;
40
- //# sourceMappingURL=useTimeout.js.map
package/es/useUnmount.js CHANGED
@@ -15,4 +15,3 @@ const useUnmount = (cb) => {
15
15
  }, []);
16
16
  };
17
17
  export default useUnmount;
18
- //# sourceMappingURL=useUnmount.js.map
@@ -15,4 +15,3 @@ const useUpdateEff = (cb, deps) => {
15
15
  }, deps);
16
16
  };
17
17
  export default useUpdateEff;
18
- //# sourceMappingURL=useUpdateEff.js.map
package/es/useValue.js CHANGED
@@ -24,4 +24,3 @@ const useValue = (value, onChange, opts) => {
24
24
  return [val, setVal];
25
25
  };
26
26
  export default useValue;
27
- //# sourceMappingURL=useValue.js.map
package/lib/index.js CHANGED
@@ -53,4 +53,3 @@ Object.defineProperty(exports, "useIntervalHandler", { enumerable: true, get: fu
53
53
  var useResizeObserver_1 = require("./useResizeObserver");
54
54
  Object.defineProperty(exports, "useResizeObserver", { enumerable: true, get: function () { return __importDefault(useResizeObserver_1).default; } });
55
55
  Object.defineProperty(exports, "useResizeObserverHandler", { enumerable: true, get: function () { return useResizeObserver_1.useResizeObserverHandler; } });
56
- //# sourceMappingURL=index.js.map
package/lib/useAsync.js CHANGED
@@ -1,10 +1,4 @@
1
1
  "use strict";
2
- /**
3
- * @Author: apathyjade
4
- * @Date: 2025-03-18 23:44:38
5
- * @Last Modified by: apathyjade
6
- * @Last Modified time: 2025-05-29 17:58:54
7
- */
8
2
  var __assign = (this && this.__assign) || function () {
9
3
  __assign = Object.assign || function(t) {
10
4
  for (var s, i = 1, n = arguments.length; i < n; i++) {
@@ -22,11 +16,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
22
16
  Object.defineProperty(exports, "__esModule", { value: true });
23
17
  var react_1 = require("react");
24
18
  var useRtCb_1 = __importDefault(require("./useRtCb"));
25
- var useCreate_1 = __importDefault(require("./useCreate"));
26
- var useIsUnmount_1 = __importDefault(require("./useIsUnmount"));
27
19
  var useUnmount_1 = __importDefault(require("./useUnmount"));
20
+ var useSafeRunner_1 = __importDefault(require("./useSafeRunner"));
28
21
  var defOpt = {
29
- immediate: false,
30
22
  catchParam: false,
31
23
  };
32
24
  var useAsync = function (asyncFn, opt) {
@@ -36,7 +28,7 @@ var useAsync = function (asyncFn, opt) {
36
28
  var _c = (0, react_1.useState)(false), loading = _c[0], setLoading = _c[1];
37
29
  var _d = (0, react_1.useState)(undefined), error = _d[0], setError = _d[1];
38
30
  var _e = (0, react_1.useState)(), controller = _e[0], setController = _e[1];
39
- var isUnmounted = (0, useIsUnmount_1.default)();
31
+ var safeRunner = (0, useSafeRunner_1.default)();
40
32
  (0, react_1.useEffect)(function () {
41
33
  if (!controller || !opt.onAbort) {
42
34
  return;
@@ -50,34 +42,44 @@ var useAsync = function (asyncFn, opt) {
50
42
  var run = (0, useRtCb_1.default)(function (runParam) {
51
43
  if (runParam === void 0) { runParam = {}; }
52
44
  var currParam = opt.catchParam ? __assign(__assign({}, param), runParam) : runParam;
53
- setLoading(true);
54
- setError(undefined);
55
45
  if (controller) {
56
46
  controller.abort();
57
47
  }
58
48
  var abortController = new AbortController();
59
- setController(abortController);
49
+ safeRunner(function () {
50
+ setLoading(true);
51
+ setError(undefined);
52
+ setController(abortController);
53
+ });
60
54
  return asyncFn(currParam, { signal: abortController.signal })
61
55
  .then(function (resData) {
62
- if (isUnmounted() || abortController.signal.aborted)
56
+ if (abortController.signal.aborted)
63
57
  return;
64
- setData(opt.format ? opt.format(resData) : resData);
65
- setParam(currParam);
58
+ safeRunner(function () {
59
+ setData(opt.format ? opt.format(resData) : resData);
60
+ setParam(currParam);
61
+ });
66
62
  }, function (err) {
67
- if (isUnmounted() || abortController.signal.aborted)
63
+ if (abortController.signal.aborted)
68
64
  return;
69
- setError(err);
65
+ safeRunner(function () {
66
+ setError(err);
67
+ });
70
68
  }).finally(function () {
71
- if (isUnmounted())
72
- return;
73
- setLoading(false);
74
- setController(undefined);
69
+ safeRunner(function () {
70
+ setLoading(false);
71
+ setController(undefined);
72
+ });
75
73
  });
76
74
  });
77
75
  var refresh = (0, useRtCb_1.default)(function () { return run(param); });
78
- (0, useCreate_1.default)(function () {
79
- if (opt.immediate) {
80
- run(param);
76
+ var cancel = (0, useRtCb_1.default)(function () {
77
+ if (controller) {
78
+ controller.abort();
79
+ safeRunner(function () {
80
+ setController(undefined);
81
+ setLoading(false);
82
+ });
81
83
  }
82
84
  });
83
85
  (0, useUnmount_1.default)(function () {
@@ -85,7 +87,6 @@ var useAsync = function (asyncFn, opt) {
85
87
  controller.abort();
86
88
  }
87
89
  });
88
- return [data, { run: run, refresh: refresh, loading: loading, error: error, param: param, controller: controller }];
90
+ return [data, { run: run, refresh: refresh, cancel: cancel, loading: loading, error: error, param: param, controller: controller }];
89
91
  };
90
92
  exports.default = useAsync;
91
- //# sourceMappingURL=useAsync.js.map
@@ -23,4 +23,3 @@ var useBoolState = function (value) {
23
23
  return [val, switchFn];
24
24
  };
25
25
  exports.default = useBoolState;
26
- //# sourceMappingURL=useBoolState.js.map
package/lib/useCreate.js CHANGED
@@ -11,4 +11,3 @@ var useCreate = function (cb) {
11
11
  (0, react_1.useState)(cb);
12
12
  };
13
13
  exports.default = useCreate;
14
- //# sourceMappingURL=useCreate.js.map
@@ -26,4 +26,3 @@ var useDebounce = function (cb, wait, opts) {
26
26
  }, [wait, opts]);
27
27
  };
28
28
  exports.default = useDebounce;
29
- //# sourceMappingURL=useDebounce.js.map
@@ -17,4 +17,3 @@ var useIgnoreAbortErrCb = function (cb, deps, opts) {
17
17
  }, deps);
18
18
  };
19
19
  exports.default = useIgnoreAbortErrCb;
20
- //# sourceMappingURL=useIgnoreAbortErrCb.js.map
@@ -61,4 +61,3 @@ var useInterval = function (callback, timeout) {
61
61
  };
62
62
  exports.useInterval = useInterval;
63
63
  exports.default = exports.useInterval;
64
- //# sourceMappingURL=useInterval.js.map
@@ -18,4 +18,3 @@ var useIsMounted = function () {
18
18
  return (0, react_1.useCallback)(function () { return ref.current; }, []);
19
19
  };
20
20
  exports.default = useIsMounted;
21
- //# sourceMappingURL=useIsMounted.js.map
@@ -18,4 +18,3 @@ var useIsUnmount = function () {
18
18
  return (0, react_1.useCallback)(function () { return ref.current; }, []);
19
19
  };
20
20
  exports.default = useIsUnmount;
21
- //# sourceMappingURL=useIsUnmount.js.map
package/lib/useMount.js CHANGED
@@ -11,4 +11,3 @@ var useMount = function (cb) {
11
11
  (0, react_1.useEffect)(cb, []);
12
12
  };
13
13
  exports.default = useMount;
14
- //# sourceMappingURL=useMount.js.map
package/lib/useOption.js CHANGED
@@ -31,4 +31,3 @@ var useOption = function (defOpt) {
31
31
  return [option, { setOption: setOption, reset: reset, update: update }];
32
32
  };
33
33
  exports.default = useOption;
34
- //# sourceMappingURL=useOption.js.map
@@ -63,4 +63,3 @@ var useResizeObserver = function (domRef, cb) {
63
63
  };
64
64
  exports.useResizeObserver = useResizeObserver;
65
65
  exports.default = exports.useResizeObserver;
66
- //# sourceMappingURL=useResizeObserver.js.map
package/lib/useRtCb.js CHANGED
@@ -22,4 +22,3 @@ var useRtCb = function (cb) {
22
22
  }, []);
23
23
  };
24
24
  exports.default = useRtCb;
25
- //# sourceMappingURL=useRtCb.js.map
package/lib/useRtRef.js CHANGED
@@ -9,8 +9,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
9
9
  var react_1 = require("react");
10
10
  var useRtRef = function (val) {
11
11
  var ref = (0, react_1.useRef)(val);
12
- ref.current = val;
12
+ (0, react_1.useEffect)(function () {
13
+ ref.current = val;
14
+ });
13
15
  return ref;
14
16
  };
15
17
  exports.default = useRtRef;
16
- //# sourceMappingURL=useRtRef.js.map
@@ -23,4 +23,3 @@ var useSafeRunner = function () {
23
23
  }, []);
24
24
  };
25
25
  exports.default = useSafeRunner;
26
- //# sourceMappingURL=useSafeRunner.js.map
@@ -26,4 +26,3 @@ var useThrottle = function (cb, wait, opts) {
26
26
  }, [wait, opts]);
27
27
  };
28
28
  exports.default = useThrottle;
29
- //# sourceMappingURL=useThrottle.js.map
package/lib/useTimeout.js CHANGED
@@ -62,4 +62,3 @@ var useTimeout = function (callback, timeout) {
62
62
  };
63
63
  exports.useTimeout = useTimeout;
64
64
  exports.default = exports.useTimeout;
65
- //# sourceMappingURL=useTimeout.js.map
package/lib/useUnmount.js CHANGED
@@ -20,4 +20,3 @@ var useUnmount = function (cb) {
20
20
  }, []);
21
21
  };
22
22
  exports.default = useUnmount;
23
- //# sourceMappingURL=useUnmount.js.map
@@ -17,4 +17,3 @@ var useUpdateEff = function (cb, deps) {
17
17
  }, deps);
18
18
  };
19
19
  exports.default = useUpdateEff;
20
- //# sourceMappingURL=useUpdateEff.js.map
package/lib/useValue.js CHANGED
@@ -29,4 +29,3 @@ var useValue = function (value, onChange, opts) {
29
29
  return [val, setVal];
30
30
  };
31
31
  exports.default = useValue;
32
- //# sourceMappingURL=useValue.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jelper/hooks",
3
- "version": "1.1.1",
3
+ "version": "1.2.0",
4
4
  "description": "react hooks helper",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
@@ -26,8 +26,17 @@
26
26
  "publishConfig": {
27
27
  "access": "public"
28
28
  },
29
+ "peerDependencies": {
30
+ "react": ">=19.2.3",
31
+ "react-dom": ">=19.2.3",
32
+ "lodash": ">=4.17.21"
33
+ },
29
34
  "devDependencies": {
30
35
  "@jelper/builder": "workspace:*",
36
+ "react": "~19.x.x",
37
+ "react-dom": "~19.x.x",
38
+ "lodash": "~4.17.21",
39
+ "typescript": "~5.9.3",
31
40
  "@types/node": "~18.0.0",
32
41
  "@types/lodash": "~4.17.21",
33
42
  "@types/react": "~18.2.17",
@@ -38,10 +47,6 @@
38
47
  "jest-environment-jsdom": "~29.7.0",
39
48
  "jsdom": "~26.0.0"
40
49
  },
41
- "dependencies": {
42
- "react": "~18.2.0",
43
- "lodash": "~4.17.21"
44
- },
45
50
  "author": "apathyjade@outlook.com",
46
51
  "license": "ISC",
47
52
  "repository": {
@@ -1,13 +1,6 @@
1
- /**
2
- * @Author: apathyjade
3
- * @Date: 2025-03-18 23:44:38
4
- * @Last Modified by: apathyjade
5
- * @Last Modified time: 2025-05-29 17:58:54
6
- */
7
1
  type Parameter<T extends (p: any) => any> = Parameters<T>[0];
8
2
  interface Opt<T extends (p: any) => any, R> {
9
3
  defParam?: Partial<Parameter<T>>;
10
- immediate?: boolean;
11
4
  format?: (p: ReturnType<T>) => R;
12
5
  catchParam?: boolean;
13
6
  onAbort?: (this: AbortSignal, ev: Event) => any;
@@ -19,6 +12,7 @@ declare const useAsync: <T extends (p: any, opt?: {
19
12
  {
20
13
  run: (runParam?: Partial<Parameter<T>>) => Promise<void>;
21
14
  refresh: () => Promise<void>;
15
+ cancel: () => void;
22
16
  loading: boolean;
23
17
  error?: Error;
24
18
  param: Partial<Parameter<T>>;
package/es/index.js.map DELETED
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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.map DELETED
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
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"]}
package/lib/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"/","sources":["index.tsx"],"names":[],"mappings":";;;;;;AACA,UAAU;AACV,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAE7B,oBAAoB;AACpB,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,qCAA+C;AAAtC,mHAAA,OAAO,OAAW;AAE3B,YAAY;AACZ,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAEhC,UAAU;AACV,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,+CAAyD;AAAhD,6HAAA,OAAO,OAAgB;AAChC,yCAAmD;AAA1C,uHAAA,OAAO,OAAa;AAC7B,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAC5B,2CAAqD;AAA5C,yHAAA,OAAO,OAAc;AAE9B,WAAW;AACX,6DAAuE;AAA9D,2IAAA,OAAO,OAAuB;AAEvC,OAAO;AACP,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAC/B,6CAAuD;AAA9C,2HAAA,OAAO,OAAe;AAE/B,OAAO;AACP,iDAA2D;AAAlD,+HAAA,OAAO,OAAiB;AACjC,uCAAiD;AAAxC,qHAAA,OAAO,OAAY;AAE5B,SAAS;AACT,2CAAwE;AAA/D,yHAAA,OAAO,OAAc;AAAE,+GAAA,iBAAiB,OAAA;AACjD,6CAA2E;AAAlE,2HAAA,OAAO,OAAe;AAAE,iHAAA,kBAAkB,OAAA;AACnD,yDAA6F;AAApF,uIAAA,OAAO,OAAqB;AAAE,6HAAA,wBAAwB,OAAA","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"]}
@@ -1 +0,0 @@
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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useBoolState.js","sourceRoot":"/","sources":["useBoolState.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,+BAA8C;AAE9C,IAAM,YAAY,GAAG,UAAC,KAAc;IAI5B,IAAA,KAAgB,IAAA,gBAAQ,EAAU,KAAK,CAAC,EAAvC,GAAG,QAAA,EAAE,MAAM,QAA4B,CAAC;IAC/C,IAAM,QAAQ,GAAG,IAAA,mBAAW,EAAC,UAAC,WAA2C;QACvE,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,CAAC,MAAM,EAAP,CAAO,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,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useCreate.js","sourceRoot":"/","sources":["useCreate.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,+BAAiC;AAEjC,IAAM,SAAS,GAAG,UAAC,EAAc;IAC/B,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;AACf,CAAC,CAAC;AAEF,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useDebounce.js","sourceRoot":"/","sources":["useDebounce.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,iCAAmE;AACnE,+BAAgC;AAChC,sDAAgC;AAChC,IAAM,WAAW,GAAG,UAClB,EAAK,EACL,IAAkB,EAClB,IAAuB;IADvB,qBAAA,EAAA,UAAkB;IAGlB,IAAM,IAAI,GAAG,IAAA,iBAAO,EAAC,EAAE,CAAC,CAAC;IACzB,OAAO,IAAA,eAAO,EAAC;QACb,OAAO,IAAA,iBAAQ,EAAC;YAAC,aAAqB;iBAArB,UAAqB,EAArB,qBAAqB,EAArB,IAAqB;gBAArB,wBAAqB;;YACpC,OAAO,IAAI,eAAI,GAAG,EAAE;QACtB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIgnoreAbortErrCb.js","sourceRoot":"/","sources":["useIgnoreAbortErrCb.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,+BAAoC;AAKpC,IAAM,mBAAmB,GAAG,UAAU,EAAqB,EAAE,IAA+B,EAAE,IAAc;IAA/C,qBAAA,EAAA,SAA+B;IAC1F,OAAO,IAAA,mBAAW,EAAC,UAAC,GAAU;;QAC5B,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,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useInterval.js","sourceRoot":"/","sources":["useInterval.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;AAEH,+BAAuD;AACvD,sDAAgC;AAEzB,IAAM,kBAAkB,GAAG;IAIhC,IAAM,QAAQ,GAAG,IAAA,cAAM,GAAU,CAAC;IAClC,IAAM,UAAU,GAAG,IAAA,mBAAW,EAAC;QAC7B,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,IAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,UAAC,QAAkB,EAAE,OAAgB;QAAE,aAAa;aAAb,UAAa,EAAb,qBAAa,EAAb,IAAa;YAAb,4BAAa;;QAChF,UAAU,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC;YACpC,QAAQ,eAAI,GAAG,EAAE;QACnB,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,IAAA,iBAAS,EAAC,cAAM,OAAA,UAAU,EAAV,CAAU,CAAC,CAAC;IAC5B,OAAO;QACL,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC,CAAA;AAtBY,QAAA,kBAAkB,sBAsB9B;AAEM,IAAM,WAAW,GAAG,UAAC,QAA8B,EAAE,OAAgB;IAAE,aAAa;SAAb,UAAa,EAAb,qBAAa,EAAb,IAAa;QAAb,4BAAa;;IACnF,IAAA,KAA0B,IAAA,0BAAkB,GAAE,EAA7C,SAAS,QAAA,EAAE,UAAU,QAAwB,CAAC;IACrD,IAAM,EAAE,GAAG,IAAA,iBAAO,EAAC,QAAQ,CAAC,CAAC;IAC7B,IAAA,iBAAS,EAAC;QACR,SAAS,8BAAC,EAAE,EAAE,OAAO,GAAK,GAAG,UAAC;QAC9B,OAAO,UAAU,CAAA;IACnB,CAAC,iBAAG,EAAE,EAAE,OAAO,GAAK,GAAG,QAAE,CAAC;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AARW,QAAA,WAAW,eAQtB;AAEF,kBAAe,mBAAW,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsMounted.js","sourceRoot":"/","sources":["useIsMounted.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,+BAAuD;AAEvD,IAAM,YAAY,GAAG;IACnB,IAAM,GAAG,GAAG,IAAA,cAAM,EAAC,KAAK,CAAC,CAAC;IAC1B,IAAA,iBAAS,EAAC;QACR,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACnB,OAAO;YACL,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,IAAA,mBAAW,EAAC,cAAM,OAAA,GAAG,CAAC,OAAO,EAAX,CAAW,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useIsUnmount.js","sourceRoot":"/","sources":["useIsUnmount.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,+BAAuD;AAEvD,IAAM,YAAY,GAAG;IACnB,IAAM,GAAG,GAAG,IAAA,cAAM,EAAC,IAAI,CAAC,CAAC;IACzB,IAAA,iBAAS,EAAC;QACR,GAAG,CAAC,OAAO,GAAG,KAAK,CAAA;QACnB,OAAO;YACL,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,OAAO,IAAA,mBAAW,EAAC,cAAM,OAAA,GAAG,CAAC,OAAO,EAAX,CAAW,EAAE,EAAE,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useMount.js","sourceRoot":"/","sources":["useMount.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,+BAAkC;AAElC,IAAM,QAAQ,GAAG,UAAC,EAAc;IAC9B,IAAA,iBAAS,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACpB,CAAC,CAAC;AAEF,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useOption.js","sourceRoot":"/","sources":["useOption.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;AAEH,+BAA8C;AAE9C,IAAM,SAAS,GAAG,UAAe,MAAuB;IAAvB,uBAAA,EAAA,WAAuB;IAQ/C,IAAA,OAAO,GAAI,IAAA,gBAAQ,EAAa,MAAM,CAAC,GAAhC,CAAiC;IACzC,IAAA,KAAsB,IAAA,gBAAQ,EAAa,OAAO,CAAC,EAAlD,MAAM,QAAA,EAAE,SAAS,QAAiC,CAAC;IAE1D,IAAM,KAAK,GAAG,IAAA,mBAAW,EAAC;QACxB,SAAS,CAAC,OAAO,CAAC,CAAC;IACrB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,IAAM,MAAM,GAAqD,IAAA,mBAAW,EAAC,UAAC,OAAyC;QACrH,SAAS,CAAC,UAAC,OAAO,IAAK,OAAA,uBAClB,OAAO,GACP,CAAC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAC/D,EAHqB,CAGrB,CAAC,CAAC;IACN,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,WAAA,EAAE,KAAK,OAAA,EAAE,MAAM,QAAA,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useResizeObserver.js","sourceRoot":"/","sources":["useResizeObserver.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,+BAA+C;AAE/C,IAAI,cAA8B,CAAC;AACnC,IAAI,YAAwC,CAAC;AAG7C,IAAI,IAAI,GAAoB;IAC1B,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;IACzB,cAAc,GAAG,IAAI,MAAM,CAAC,cAAc,CACxC,UAAC,OAAY;QAAZ,wBAAA,EAAA,YAAY;QACX,OAAO,CAAC,OAAO,CAAC,UAAC,IAAc;;YAAd,qBAAA,EAAA,SAAc;YAC7B,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,IAAM,OAAO,GAAG,UAAC,MAAmB,EAAE,EAAsC;IAC1E,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,IAAM,SAAS,GAAG,UAAC,MAAmB;IACpC,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;AAEK,IAAM,wBAAwB,GAAG;IAItC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;AAC9B,CAAC,CAAC;AALW,QAAA,wBAAwB,4BAKnC;AAEK,IAAM,iBAAiB,GAAG,UAAyB,MAA0B,EAAE,EAAwC;IAC5H,IAAM,aAAa,GAAG,IAAA,mBAAW,EAAC;QAChC,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,IAAA,iBAAS,EAAC;QACR,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QAC5B,IAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAA;QAC1B,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACjB,OAAO,cAAM,OAAA,SAAS,CAAC,GAAG,CAAC,EAAd,CAAc,CAAC;IAC9B,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzB,OAAO,aAAa,CAAC;AACvB,CAAC,CAAC;AAbW,QAAA,iBAAiB,qBAa5B;AAEF,kBAAe,yBAAiB,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRtCb.js","sourceRoot":"/","sources":["useRtCb.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,+BAAoC;AACpC,wDAAkC;AAElC,IAAM,OAAO,GAAG,UAAoC,EAAK;IACvD,IAAM,GAAG,GAAG,IAAA,kBAAQ,EAAI,EAAE,CAAC,CAAC;IAC5B,OAAO,IAAA,mBAAW,EAAC;QAAC,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAChC,OAAQ,GAAG,CAAC,OAAO,OAAX,GAAG,EAAkB,IAAI,EAAE;IACrC,CAAC,EAAE,EAAE,CAAM,CAAC;AACd,CAAC,CAAC;AAEF,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useRtRef.js","sourceRoot":"/","sources":["useRtRef.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,+BAA+B;AAE/B,IAAM,QAAQ,GAAG,UAAI,GAAM;IACzB,IAAM,GAAG,GAAG,IAAA,cAAM,EAAI,GAAG,CAAC,CAAA;IAC1B,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC;IAClB,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useSafeRunner.js","sourceRoot":"/","sources":["useSafeRunner.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,+BAAoC;AACpC,gEAA0C;AAE1C,IAAM,aAAa,GAAG;IACpB,IAAM,SAAS,GAAG,IAAA,sBAAY,GAAE,CAAC;IACjC,OAAO,IAAA,mBAAW,EAAC,UAAC,EAAc,EAAE,SAAsB;QACxD,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,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useThrottle.js","sourceRoot":"/","sources":["useThrottle.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,iCAA0E;AAC1E,+BAAgC;AAChC,sDAAgC;AAEhC,IAAM,WAAW,GAAG,UAClB,EAAK,EACL,IAAkB,EAClB,IAAuB;IADvB,qBAAA,EAAA,UAAkB;IAGlB,IAAM,IAAI,GAAG,IAAA,iBAAO,EAAC,EAAE,CAAC,CAAC;IACzB,OAAO,IAAA,eAAO,EAAC;QACb,OAAO,IAAA,iBAAQ,EAAC;YAAC,cAAsB;iBAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;gBAAtB,yBAAsB;;YACrC,IAAI,eAAI,IAAI,EAAC;QACf,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjB,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACnB,CAAC,CAAA;AAED,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useTimeout.js","sourceRoot":"/","sources":["useTimeout.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;AAEH,+BAAuD;AACvD,sDAAgC;AAEzB,IAAM,iBAAiB,GAAG;IAI/B,IAAM,QAAQ,GAAG,IAAA,cAAM,GAAU,CAAC;IAClC,IAAM,UAAU,GAAG,IAAA,mBAAW,EAAC;QAC7B,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,IAAM,SAAS,GAAG,IAAA,mBAAW,EAAC,UAAC,QAAkB,EAAE,OAAgB;QAAE,aAAa;aAAb,UAAa,EAAb,qBAAa,EAAb,IAAa;YAAb,4BAAa;;QAChF,UAAU,EAAE,CAAC;QACb,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;YACnC,QAAQ,CAAC,OAAO,GAAG,SAAS,CAAC;YAC7B,QAAQ,eAAI,GAAG,EAAE;QACnB,CAAC,EAAE,OAAO,CAAC,CAAC;IACd,CAAC,EAAE,EAAE,CAAC,CAAC;IACP,IAAA,iBAAS,EAAC,cAAM,OAAA,UAAU,EAAV,CAAU,CAAC,CAAC;IAC5B,OAAO;QACL,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AAxBW,QAAA,iBAAiB,qBAwB5B;AAEK,IAAM,UAAU,GAAG,UAAC,QAAgC,EAAE,OAAgB;IAAE,aAAa;SAAb,UAAa,EAAb,qBAAa,EAAb,IAAa;QAAb,4BAAa;;IACpF,IAAA,KAA0B,IAAA,yBAAiB,GAAE,EAA5C,SAAS,QAAA,EAAE,UAAU,QAAuB,CAAC;IAEpD,IAAM,EAAE,GAAG,IAAA,iBAAO,EAAC,QAAQ,CAAC,CAAC;IAE7B,IAAA,iBAAS,EAAC;QACR,SAAS,8BAAC,EAAE,EAAE,OAAO,GAAK,GAAG,UAAE;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC,iBAAG,EAAE,EAAE,OAAO,GAAK,GAAG,QAAE,CAAC;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAVW,QAAA,UAAU,cAUrB;AAEF,kBAAe,kBAAU,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUnmount.js","sourceRoot":"/","sources":["useUnmount.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAEH,+BAAkC;AAClC,wDAAkC;AAElC,IAAM,UAAU,GAAG,UAAC,EAAc;IAChC,IAAM,GAAG,GAAG,IAAA,kBAAQ,EAAC,EAAE,CAAC,CAAC;IACzB,IAAA,iBAAS,EAAC;QACR,OAAO;YACL,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC,CAAC;AAEF,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useUpdateEff.js","sourceRoot":"/","sources":["useUpdateEff.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAEH,+BAA0C;AAE1C,IAAM,YAAY,GAAG,UACnB,EAAwB,EACxB,IAA2B;IAE3B,IAAM,GAAG,GAAG,IAAA,cAAM,EAAU,KAAK,CAAC,CAAA;IAClC,IAAA,iBAAS,EAAC;QACR,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,kBAAe,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"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"useValue.js","sourceRoot":"/","sources":["useValue.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;AAEH,+BAAiC;AACjC,gEAA0C;AAM1C,IAAM,QAAQ,GAAG,UAAC,CAAM,EAAE,CAAM,IAAK,OAAA,CAAC,KAAK,CAAC,EAAP,CAAO,CAAC;AAE7C,IAAM,QAAQ,GAAG,UACf,KAAQ,EACR,QAA6B,EAC7B,IAAiB;IAKT,IAAA,KAAuB,CAAA,IAAI,IAAI,EAAE,CAAA,QAAf,EAAlB,OAAO,mBAAG,QAAQ,KAAA,CAAgB;IACpC,IAAA,KAAgB,IAAA,gBAAQ,EAAI,KAAK,CAAC,EAAjC,GAAG,QAAA,EAAE,MAAM,QAAsB,CAAC;IAEzC,IAAA,sBAAY,EAAC;QACX,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,IAAA,sBAAY,EAAC;QACX,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,kBAAe,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"]}