@jelper/hooks 0.3.0 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/index.js +12 -14
- package/es/useAsync.js +54 -14
- package/es/useBoolState.js +13 -5
- package/es/useCreate.js +6 -0
- package/es/useDebounce.js +6 -0
- package/es/useIgnoreAbortErrCb.js +16 -0
- package/es/useInterval.js +15 -11
- package/es/useIsMounted.js +18 -0
- package/es/useIsUnmounted.js +17 -0
- package/es/useMount.js +7 -6
- package/es/useOption.js +19 -0
- package/es/useResizeObserver.js +5 -5
- package/es/useRtCb.js +10 -5
- package/es/useRtRef.js +11 -5
- package/es/useSafeRunner.js +20 -0
- package/es/useThrottle.js +6 -7
- package/es/useTimeout.js +18 -23
- package/es/useUnmount.js +9 -3
- package/es/useUpdateEff.js +17 -0
- package/es/{useRtState.js → useValue.js} +3 -2
- package/lib/index.js +21 -25
- package/lib/useAsync.js +56 -16
- package/lib/useBoolState.js +12 -7
- package/lib/useCreate.js +6 -0
- package/lib/useDebounce.js +6 -0
- package/lib/useIgnoreAbortErrCb.js +19 -0
- package/lib/useInterval.js +19 -14
- package/lib/useIsMounted.js +20 -0
- package/lib/useIsUnmounted.js +19 -0
- package/lib/useMount.js +7 -9
- package/lib/useOption.js +33 -0
- package/lib/useResizeObserver.js +4 -7
- package/lib/useRtCb.js +12 -15
- package/lib/useRtRef.js +9 -4
- package/lib/useSafeRunner.js +25 -0
- package/lib/useThrottle.js +6 -7
- package/lib/useTimeout.js +22 -26
- package/lib/useUnmount.js +11 -2
- package/lib/useUpdateEff.js +19 -0
- package/lib/{useRtState.js → useValue.js} +3 -3
- package/package.json +10 -4
- package/types/index.d.ts +8 -10
- package/types/useAsync.d.ts +22 -8
- package/types/useBoolState.d.ts +7 -1
- package/types/useCreate.d.ts +7 -1
- package/types/useDebounce.d.ts +6 -0
- package/types/useIgnoreAbortErrCb.d.ts +12 -0
- package/types/useInterval.d.ts +4 -1
- package/types/useIsMounted.d.ts +8 -0
- package/types/useIsUnmounted.d.ts +8 -0
- package/types/useMount.d.ts +7 -1
- package/types/useOption.d.ts +15 -0
- package/types/useRtCb.d.ts +8 -1
- package/types/useRtRef.d.ts +8 -1
- package/types/useSafeRunner.d.ts +8 -0
- package/types/useThrottle.d.ts +5 -6
- package/types/useTimeout.d.ts +8 -5
- package/types/useUnmount.d.ts +7 -1
- package/types/useUpdateEff.d.ts +8 -0
- package/types/useValue.d.ts +8 -0
- package/es/useIsUnmount.js +0 -11
- package/es/useListener.js +0 -17
- package/es/useParamsState.js +0 -9
- package/es/useRtEffect.js +0 -7
- package/es/useSafeCb.js +0 -11
- package/es/useSafeState.js +0 -8
- package/es/useUpdateEffect.js +0 -12
- package/lib/useIsUnmount.js +0 -13
- package/lib/useListener.js +0 -22
- package/lib/useParamsState.js +0 -26
- package/lib/useRtEffect.js +0 -12
- package/lib/useSafeCb.js +0 -20
- package/lib/useSafeState.js +0 -13
- package/lib/useUpdateEffect.js +0 -15
- package/types/useIsUnmount.d.ts +0 -2
- package/types/useListener.d.ts +0 -2
- package/types/useParamsState.d.ts +0 -6
- package/types/useRtEffect.d.ts +0 -2
- package/types/useRtState.d.ts +0 -6
- package/types/useSafeCb.d.ts +0 -2
- package/types/useSafeState.d.ts +0 -5
- package/types/useUpdateEffect.d.ts +0 -1
package/lib/useAsync.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
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-03-19 22:53:22
|
|
7
|
+
*/
|
|
2
8
|
var __assign = (this && this.__assign) || function () {
|
|
3
9
|
__assign = Object.assign || function(t) {
|
|
4
10
|
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
@@ -14,37 +20,71 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
14
20
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
21
|
};
|
|
16
22
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
var
|
|
23
|
+
var react_1 = require("react");
|
|
18
24
|
var useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
19
25
|
var useCreate_1 = __importDefault(require("./useCreate"));
|
|
26
|
+
var useIsUnmounted_1 = __importDefault(require("./useIsUnmounted"));
|
|
27
|
+
var useUnmount_1 = __importDefault(require("./useUnmount"));
|
|
28
|
+
var defOpt = {
|
|
29
|
+
immediate: false,
|
|
30
|
+
catchParam: false,
|
|
31
|
+
};
|
|
20
32
|
var useAsync = function (asyncFn, opt) {
|
|
21
|
-
if (opt === void 0) { opt =
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
var
|
|
26
|
-
var
|
|
27
|
-
var
|
|
28
|
-
|
|
33
|
+
if (opt === void 0) { opt = defOpt; }
|
|
34
|
+
var _a = (0, react_1.useState)(), data = _a[0], setData = _a[1];
|
|
35
|
+
var _b = (0, react_1.useState)(opt.defParam || {}), param = _b[0], setParam = _b[1];
|
|
36
|
+
var _c = (0, react_1.useState)(false), loading = _c[0], setLoading = _c[1];
|
|
37
|
+
var _d = (0, react_1.useState)(), error = _d[0], setError = _d[1];
|
|
38
|
+
var _e = (0, react_1.useState)(), controller = _e[0], setController = _e[1];
|
|
39
|
+
var isUnmounted = (0, useIsUnmounted_1.default)();
|
|
40
|
+
(0, react_1.useEffect)(function () {
|
|
41
|
+
if (!controller || !opt.onAbort) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
var onAbort = opt.onAbort;
|
|
45
|
+
controller.signal.addEventListener('abort', onAbort);
|
|
46
|
+
return function () {
|
|
47
|
+
controller.signal.removeEventListener('abort', onAbort);
|
|
48
|
+
};
|
|
49
|
+
}, [controller]);
|
|
29
50
|
var run = (0, useRtCb_1.default)(function (runParam) {
|
|
30
51
|
var currParam = opt.catchParam ? __assign(__assign({}, param), (runParam || {})) : runParam;
|
|
31
52
|
setLoading(true);
|
|
32
|
-
setError(
|
|
33
|
-
|
|
34
|
-
.
|
|
53
|
+
setError(undefined);
|
|
54
|
+
if (controller) {
|
|
55
|
+
controller.abort();
|
|
56
|
+
}
|
|
57
|
+
var abortController = new AbortController();
|
|
58
|
+
setController(abortController);
|
|
59
|
+
return asyncFn(currParam, { signal: abortController.signal })
|
|
35
60
|
.then(function (resData) {
|
|
36
|
-
|
|
61
|
+
if (isUnmounted() || abortController.signal.aborted)
|
|
62
|
+
return;
|
|
63
|
+
setData(opt.format ? opt.format(resData) : resData);
|
|
37
64
|
setParam(currParam);
|
|
38
|
-
}, setError)
|
|
39
|
-
.finally(function () {
|
|
40
65
|
setLoading(false);
|
|
66
|
+
}, function (err) {
|
|
67
|
+
if (isUnmounted() || abortController.signal.aborted)
|
|
68
|
+
return Promise.reject(err);
|
|
69
|
+
setError(err);
|
|
70
|
+
setLoading(false);
|
|
71
|
+
}).finally(function () {
|
|
72
|
+
if (isUnmounted())
|
|
73
|
+
return;
|
|
74
|
+
setController(undefined);
|
|
41
75
|
});
|
|
42
76
|
});
|
|
77
|
+
var refresh = (0, useRtCb_1.default)(function () { return run(param); });
|
|
43
78
|
(0, useCreate_1.default)(function () {
|
|
44
79
|
if (opt.immediate) {
|
|
45
80
|
run(param);
|
|
46
81
|
}
|
|
47
82
|
});
|
|
48
|
-
|
|
83
|
+
(0, useUnmount_1.default)(function () {
|
|
84
|
+
if (controller) {
|
|
85
|
+
controller.abort();
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
return [data, { run: run, refresh: refresh, loading: loading, error: error, param: param }];
|
|
49
89
|
};
|
|
50
90
|
exports.default = useAsync;
|
package/lib/useBoolState.js
CHANGED
|
@@ -1,18 +1,23 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-16 11:16:34
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-16 11:21:54
|
|
7
|
+
*/
|
|
5
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
9
|
var react_1 = require("react");
|
|
7
|
-
var useSafeState_1 = __importDefault(require("./useSafeState"));
|
|
8
10
|
var useBoolState = function (value) {
|
|
9
|
-
var _a = (0,
|
|
11
|
+
var _a = (0, react_1.useState)(value), val = _a[0], setVal = _a[1];
|
|
10
12
|
var switchFn = (0, react_1.useCallback)(function (switchValue) {
|
|
11
|
-
if (
|
|
13
|
+
if (switchValue === undefined || switchValue === null) {
|
|
14
|
+
setVal(function (oldVal) { return !oldVal; });
|
|
15
|
+
}
|
|
16
|
+
else if (typeof switchValue === 'boolean' || typeof switchValue === 'function') {
|
|
12
17
|
setVal(switchValue);
|
|
13
18
|
}
|
|
14
19
|
else {
|
|
15
|
-
setVal(
|
|
20
|
+
setVal(!!switchValue);
|
|
16
21
|
}
|
|
17
22
|
}, []);
|
|
18
23
|
return [val, switchFn];
|
package/lib/useCreate.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-16 11:34:59
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-19 22:53:33
|
|
7
|
+
*/
|
|
2
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
9
|
var react_1 = require("react");
|
|
4
10
|
var useCreate = function (cb) {
|
package/lib/useDebounce.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-19 22:55:14
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-19 22:55:14
|
|
7
|
+
*/
|
|
2
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
10
|
};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-19 22:28:14
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-19 22:57:23
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
var react_1 = require("react");
|
|
10
|
+
var useIgnoreAbortErrCb = function (cb, deps, opts) {
|
|
11
|
+
if (deps === void 0) { deps = []; }
|
|
12
|
+
return (0, react_1.useCallback)(function (err) {
|
|
13
|
+
var _a;
|
|
14
|
+
if (err.name === 'AbortError')
|
|
15
|
+
return (_a = opts === null || opts === void 0 ? void 0 : opts.onAbort) === null || _a === void 0 ? void 0 : _a.call(opts, err);
|
|
16
|
+
return cb(err);
|
|
17
|
+
}, deps);
|
|
18
|
+
};
|
|
19
|
+
exports.default = useIgnoreAbortErrCb;
|
package/lib/useInterval.js
CHANGED
|
@@ -3,28 +3,33 @@
|
|
|
3
3
|
* @Author: apathyjade
|
|
4
4
|
* @Date: 2023-12-14 16:51:29
|
|
5
5
|
* @Last Modified by: apathyjade
|
|
6
|
-
* @Last Modified time:
|
|
6
|
+
* @Last Modified time: 2025-03-19 23:11:26
|
|
7
7
|
*/
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
9
|
var react_1 = require("react");
|
|
13
|
-
var
|
|
14
|
-
var useInterval = function (callback, delay) {
|
|
10
|
+
var useInterval = function () {
|
|
15
11
|
var timerRef = (0, react_1.useRef)();
|
|
16
12
|
var clearTimer = (0, react_1.useCallback)(function () {
|
|
17
13
|
if (timerRef.current) {
|
|
18
14
|
window.clearInterval(timerRef.current);
|
|
15
|
+
timerRef.current = undefined;
|
|
16
|
+
}
|
|
17
|
+
}, []);
|
|
18
|
+
var bindTimer = (0, react_1.useCallback)(function (callback, timeout) {
|
|
19
|
+
var arg = [];
|
|
20
|
+
for (var _i = 2; _i < arguments.length; _i++) {
|
|
21
|
+
arg[_i - 2] = arguments[_i];
|
|
19
22
|
}
|
|
23
|
+
clearTimer();
|
|
24
|
+
timerRef.current = window.setInterval(function () {
|
|
25
|
+
timerRef.current = undefined;
|
|
26
|
+
callback.apply(void 0, arg);
|
|
27
|
+
}, timeout);
|
|
20
28
|
}, []);
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
};
|
|
27
|
-
}, [delay]);
|
|
28
|
-
return clearTimer;
|
|
29
|
+
(0, react_1.useEffect)(function () { return clearTimer; });
|
|
30
|
+
return [
|
|
31
|
+
bindTimer,
|
|
32
|
+
clearTimer,
|
|
33
|
+
];
|
|
29
34
|
};
|
|
30
35
|
exports.default = useInterval;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-16 21:34:27
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-16 21:37:21
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
var react_1 = require("react");
|
|
10
|
+
var useIsMounted = function () {
|
|
11
|
+
var ref = (0, react_1.useRef)(false);
|
|
12
|
+
(0, react_1.useEffect)(function () {
|
|
13
|
+
ref.current = true;
|
|
14
|
+
return function () {
|
|
15
|
+
ref.current = false;
|
|
16
|
+
};
|
|
17
|
+
}, []);
|
|
18
|
+
return (0, react_1.useCallback)(function () { return ref.current; }, []);
|
|
19
|
+
};
|
|
20
|
+
exports.default = useIsMounted;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-16 21:33:24
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-16 21:35:46
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
var react_1 = require("react");
|
|
10
|
+
var useIsUnmounted = function () {
|
|
11
|
+
var ref = (0, react_1.useRef)(false);
|
|
12
|
+
(0, react_1.useEffect)(function () {
|
|
13
|
+
return function () {
|
|
14
|
+
ref.current = true;
|
|
15
|
+
};
|
|
16
|
+
}, []);
|
|
17
|
+
return (0, react_1.useCallback)(function () { return ref.current; }, []);
|
|
18
|
+
};
|
|
19
|
+
exports.default = useIsUnmounted;
|
package/lib/useMount.js
CHANGED
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-18 00:21:16
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-18 00:21:16
|
|
7
|
+
*/
|
|
5
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
9
|
var react_1 = require("react");
|
|
7
|
-
var useRtRef_1 = __importDefault(require("./useRtRef"));
|
|
8
10
|
var useMount = function (cb) {
|
|
9
|
-
|
|
10
|
-
(0, react_1.useEffect)(function () {
|
|
11
|
-
var _a;
|
|
12
|
-
(_a = ref.current) === null || _a === void 0 ? void 0 : _a.call(ref);
|
|
13
|
-
});
|
|
11
|
+
(0, react_1.useEffect)(cb, []);
|
|
14
12
|
};
|
|
15
13
|
exports.default = useMount;
|
package/lib/useOption.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-16 11:35:37
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-16 21:31:54
|
|
7
|
+
*/
|
|
8
|
+
var __assign = (this && this.__assign) || function () {
|
|
9
|
+
__assign = Object.assign || function(t) {
|
|
10
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
11
|
+
s = arguments[i];
|
|
12
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
13
|
+
t[p] = s[p];
|
|
14
|
+
}
|
|
15
|
+
return t;
|
|
16
|
+
};
|
|
17
|
+
return __assign.apply(this, arguments);
|
|
18
|
+
};
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
var react_1 = require("react");
|
|
21
|
+
var useOption = function (defOpt) {
|
|
22
|
+
if (defOpt === void 0) { defOpt = {}; }
|
|
23
|
+
var initOpt = (0, react_1.useState)(defOpt)[0];
|
|
24
|
+
var _a = (0, react_1.useState)(initOpt), option = _a[0], setOption = _a[1];
|
|
25
|
+
var reset = (0, react_1.useCallback)(function () {
|
|
26
|
+
setOption(initOpt);
|
|
27
|
+
}, [initOpt]);
|
|
28
|
+
var update = (0, react_1.useCallback)(function (newOpts) {
|
|
29
|
+
setOption(function (oldOpts) { return (__assign(__assign({}, (oldOpts || {})), (typeof newOpts === 'function' ? newOpts(oldOpts) : newOpts || {}))); });
|
|
30
|
+
}, []);
|
|
31
|
+
return [option, { setOption: setOption, reset: reset, update: update }];
|
|
32
|
+
};
|
|
33
|
+
exports.default = useOption;
|
package/lib/useResizeObserver.js
CHANGED
|
@@ -3,14 +3,10 @@
|
|
|
3
3
|
* @Author: apathyjade
|
|
4
4
|
* @Date: 2023-11-24 10:52:51
|
|
5
5
|
* @Last Modified by: apathyjade
|
|
6
|
-
* @Last Modified time:
|
|
6
|
+
* @Last Modified time: 2025-03-19 23:17:45
|
|
7
7
|
*/
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
9
|
var react_1 = require("react");
|
|
13
|
-
var useSafeCb_1 = __importDefault(require("./useSafeCb"));
|
|
14
10
|
var resizeObserver = null;
|
|
15
11
|
var observeCatch = null;
|
|
16
12
|
function init() {
|
|
@@ -25,6 +21,7 @@ function init() {
|
|
|
25
21
|
});
|
|
26
22
|
});
|
|
27
23
|
}
|
|
24
|
+
;
|
|
28
25
|
var observe = function (target, cb) {
|
|
29
26
|
if (!resizeObserver) {
|
|
30
27
|
init();
|
|
@@ -40,10 +37,10 @@ var unobserve = function (target) {
|
|
|
40
37
|
observeCatch === null || observeCatch === void 0 ? void 0 : observeCatch.delete(target);
|
|
41
38
|
};
|
|
42
39
|
function useResizeObserver(dom, cb) {
|
|
43
|
-
var selfObserve = (0,
|
|
40
|
+
var selfObserve = (0, react_1.useCallback)(function () {
|
|
44
41
|
observe(dom, cb);
|
|
45
42
|
}, [dom, cb]);
|
|
46
|
-
var selfUnobserve = (0,
|
|
43
|
+
var selfUnobserve = (0, react_1.useCallback)(function () {
|
|
47
44
|
unobserve(dom);
|
|
48
45
|
}, [dom]);
|
|
49
46
|
(0, react_1.useEffect)(function () {
|
package/lib/useRtCb.js
CHANGED
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
-
};
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-17 00:22:11
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-17 00:22:56
|
|
7
|
+
*/
|
|
11
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
10
|
};
|
|
14
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
var
|
|
12
|
+
var react_1 = require("react");
|
|
16
13
|
var useRtRef_1 = __importDefault(require("./useRtRef"));
|
|
17
14
|
var useRtCb = function (cb, deps) {
|
|
15
|
+
if (deps === void 0) { deps = []; }
|
|
18
16
|
var ref = (0, useRtRef_1.default)(cb);
|
|
19
|
-
return (0,
|
|
20
|
-
var
|
|
21
|
-
var arg = [];
|
|
17
|
+
return (0, react_1.useCallback)(function () {
|
|
18
|
+
var args = [];
|
|
22
19
|
for (var _i = 0; _i < arguments.length; _i++) {
|
|
23
|
-
|
|
20
|
+
args[_i] = arguments[_i];
|
|
24
21
|
}
|
|
25
|
-
return
|
|
22
|
+
return ref.current.apply(ref, args);
|
|
26
23
|
}, deps);
|
|
27
24
|
};
|
|
28
25
|
exports.default = useRtCb;
|
package/lib/useRtRef.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-16 22:19:57
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-17 00:10:45
|
|
7
|
+
*/
|
|
2
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
9
|
var react_1 = require("react");
|
|
4
|
-
function
|
|
5
|
-
var ref = (0, react_1.useRef)();
|
|
10
|
+
var useRtRef = function (val) {
|
|
11
|
+
var ref = (0, react_1.useRef)(val);
|
|
6
12
|
ref.current = val;
|
|
7
13
|
return ref;
|
|
8
|
-
}
|
|
14
|
+
};
|
|
9
15
|
exports.default = useRtRef;
|
|
10
|
-
;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-16 11:36:09
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-19 22:41:39
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
var react_1 = require("react");
|
|
13
|
+
var useIsUnmounted_1 = __importDefault(require("./useIsUnmounted"));
|
|
14
|
+
var useSafeRunner = function () {
|
|
15
|
+
var isUnmount = (0, useIsUnmounted_1.default)();
|
|
16
|
+
return (0, react_1.useCallback)(function (cb, unmountCb) {
|
|
17
|
+
if (isUnmount()) {
|
|
18
|
+
unmountCb === null || unmountCb === void 0 ? void 0 : unmountCb();
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
cb();
|
|
22
|
+
}
|
|
23
|
+
}, []);
|
|
24
|
+
};
|
|
25
|
+
exports.default = useSafeRunner;
|
package/lib/useThrottle.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-19 22:55:28
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-19 22:55:48
|
|
7
|
+
*/
|
|
2
8
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
9
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
10
|
};
|
|
@@ -6,13 +12,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
12
|
var lodash_es_1 = require("lodash-es");
|
|
7
13
|
var react_1 = require("react");
|
|
8
14
|
var useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
9
|
-
/**
|
|
10
|
-
* 用于节流函数的钩子函数
|
|
11
|
-
* @param cb - 要节流的函数
|
|
12
|
-
* @param wait - 节流延迟时间,默认为0
|
|
13
|
-
* @param opts - 节流选项对象,默认为{}
|
|
14
|
-
* @returns 节流函数
|
|
15
|
-
*/
|
|
16
15
|
var useThrottle = function (cb, wait, opts) {
|
|
17
16
|
var rtCb = (0, useRtCb_1.default)(cb);
|
|
18
17
|
return (0, react_1.useMemo)(function () {
|
package/lib/useTimeout.js
CHANGED
|
@@ -1,39 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
3
|
* @Author: apathyjade
|
|
4
|
-
* @Date:
|
|
4
|
+
* @Date: 2025-03-19 23:10:13
|
|
5
5
|
* @Last Modified by: apathyjade
|
|
6
|
-
* @Last Modified time:
|
|
6
|
+
* @Last Modified time: 2025-03-19 23:10:13
|
|
7
7
|
*/
|
|
8
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
-
};
|
|
11
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
9
|
var react_1 = require("react");
|
|
13
|
-
var
|
|
14
|
-
/**
|
|
15
|
-
* 使用定时器在指定延迟后执行回调函数
|
|
16
|
-
* @param callback - 回调函数
|
|
17
|
-
* @param delay - 延迟时间(毫秒)
|
|
18
|
-
* @returns clearTimer - 清除定时器的函数
|
|
19
|
-
*/
|
|
20
|
-
var useTimeout = function (callback, delay) {
|
|
10
|
+
var useTimeout = function () {
|
|
21
11
|
var timerRef = (0, react_1.useRef)();
|
|
22
|
-
/**
|
|
23
|
-
* 清除定时器
|
|
24
|
-
*/
|
|
25
12
|
var clearTimer = (0, react_1.useCallback)(function () {
|
|
26
13
|
if (timerRef.current) {
|
|
27
|
-
clearTimeout(timerRef.current);
|
|
14
|
+
window.clearTimeout(timerRef.current);
|
|
15
|
+
timerRef.current = undefined;
|
|
16
|
+
}
|
|
17
|
+
}, []);
|
|
18
|
+
var bindTimer = (0, react_1.useCallback)(function (callback, timeout) {
|
|
19
|
+
var arg = [];
|
|
20
|
+
for (var _i = 2; _i < arguments.length; _i++) {
|
|
21
|
+
arg[_i - 2] = arguments[_i];
|
|
28
22
|
}
|
|
23
|
+
clearTimer();
|
|
24
|
+
timerRef.current = window.setTimeout(function () {
|
|
25
|
+
timerRef.current = undefined;
|
|
26
|
+
callback.apply(void 0, arg);
|
|
27
|
+
}, timeout);
|
|
29
28
|
}, []);
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
};
|
|
36
|
-
}, [delay]);
|
|
37
|
-
return clearTimer;
|
|
29
|
+
(0, react_1.useEffect)(function () { return clearTimer; });
|
|
30
|
+
return [
|
|
31
|
+
bindTimer,
|
|
32
|
+
clearTimer,
|
|
33
|
+
];
|
|
38
34
|
};
|
|
39
35
|
exports.default = useTimeout;
|
package/lib/useUnmount.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-16 11:35:20
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-18 00:17:09
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
12
|
var react_1 = require("react");
|
|
13
|
+
var useRtRef_1 = __importDefault(require("./useRtRef"));
|
|
4
14
|
var useUnmount = function (cb) {
|
|
5
|
-
var ref = (0,
|
|
6
|
-
ref.current = cb;
|
|
15
|
+
var ref = (0, useRtRef_1.default)(cb);
|
|
7
16
|
(0, react_1.useEffect)(function () {
|
|
8
17
|
return function () {
|
|
9
18
|
ref.current();
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2025-03-16 11:35:13
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2025-03-16 11:35:13
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
var react_1 = require("react");
|
|
10
|
+
var useUpdateEffect = function (cb, deps) {
|
|
11
|
+
var ref = (0, react_1.useRef)(false);
|
|
12
|
+
(0, react_1.useEffect)(function () {
|
|
13
|
+
if (ref.current) {
|
|
14
|
+
return cb();
|
|
15
|
+
}
|
|
16
|
+
ref.current = true;
|
|
17
|
+
}, deps);
|
|
18
|
+
};
|
|
19
|
+
exports.default = useUpdateEffect;
|
|
@@ -13,7 +13,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
13
13
|
var react_1 = require("react");
|
|
14
14
|
var useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
15
15
|
var defEqual = function (a, b) { return a === b; };
|
|
16
|
-
function
|
|
16
|
+
var useValue = function (value, onChange, opts) {
|
|
17
17
|
var _a = (opts || {}).isEqual, isEqual = _a === void 0 ? defEqual : _a;
|
|
18
18
|
var _b = (0, react_1.useState)(value), val = _b[0], setVal = _b[1];
|
|
19
19
|
var updateValue = (0, useRtCb_1.default)(function (value) {
|
|
@@ -30,5 +30,5 @@ function useRtState(value, onChange, opts) {
|
|
|
30
30
|
}
|
|
31
31
|
}, [value, oldValue, val]);
|
|
32
32
|
return [val, setVal];
|
|
33
|
-
}
|
|
34
|
-
exports.default =
|
|
33
|
+
};
|
|
34
|
+
exports.default = useValue;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jelper/hooks",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "react hooks helper",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
@@ -23,7 +23,13 @@
|
|
|
23
23
|
"@jelper/builder": "0.2.0",
|
|
24
24
|
"@types/node": "~18.0.0",
|
|
25
25
|
"@types/react": "~18.2.17",
|
|
26
|
-
"@types/lodash-es": "~4.17.8"
|
|
26
|
+
"@types/lodash-es": "~4.17.8",
|
|
27
|
+
"@jest/globals": "~29.7.0",
|
|
28
|
+
"@testing-library/react": "~16.2.0",
|
|
29
|
+
"@testing-library/dom": "~10.4.0",
|
|
30
|
+
"@jest/environment": "~29.7.0",
|
|
31
|
+
"jest-environment-jsdom": "~29.7.0",
|
|
32
|
+
"jsdom": "~26.0.0"
|
|
27
33
|
},
|
|
28
34
|
"dependencies": {
|
|
29
35
|
"react": "~18.2.0",
|
|
@@ -32,10 +38,10 @@
|
|
|
32
38
|
"author": "apathyjade@outlook.com",
|
|
33
39
|
"license": "ISC",
|
|
34
40
|
"scripts": {
|
|
35
|
-
"
|
|
41
|
+
"serve": "jelper serve",
|
|
36
42
|
"build": "jelper build",
|
|
37
43
|
"build:debug": "jelper build --debug",
|
|
38
44
|
"build:help": "jelper build --help",
|
|
39
|
-
"
|
|
45
|
+
"test": "jelper test"
|
|
40
46
|
}
|
|
41
47
|
}
|
package/types/index.d.ts
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
export { default as
|
|
2
|
-
export { default as
|
|
1
|
+
export { default as useBoolState } from './useBoolState';
|
|
2
|
+
export { default as useValue } from './useValue';
|
|
3
|
+
export { default as useOption } from './useOption';
|
|
3
4
|
export { default as useRtRef } from './useRtRef';
|
|
4
|
-
export { default as useRtState } from './useRtState';
|
|
5
5
|
export { default as useRtCb } from './useRtCb';
|
|
6
|
-
export { default as
|
|
7
|
-
export { default as
|
|
8
|
-
export { default as
|
|
9
|
-
export { default as useUpdateEffect } from './useUpdateEffect';
|
|
10
|
-
export { default as useIsUnmount } from './useIsUnmount';
|
|
6
|
+
export { default as useUpdateEffect } from './useUpdateEff';
|
|
7
|
+
export { default as useIsMounted } from './useIsMounted';
|
|
8
|
+
export { default as useIsUnmount } from './useIsUnmounted';
|
|
11
9
|
export { default as useCreate } from './useCreate';
|
|
12
10
|
export { default as useMount } from './useMount';
|
|
13
11
|
export { default as useUnmount } from './useUnmount';
|
|
14
|
-
export { default as
|
|
12
|
+
export { default as useIgnoreAbortErrCb } from './useIgnoreAbortErrCb';
|
|
15
13
|
export { default as useDebounce } from './useDebounce';
|
|
14
|
+
export { default as useThrottle } from './useThrottle';
|
|
16
15
|
export { default as useAsync } from './useAsync';
|
|
17
16
|
export { default as useTimeout } from './useTimeout';
|
|
18
17
|
export { default as useInterval } from './useInterval';
|
|
19
|
-
export { default as useListener } from './useListener';
|
|
20
18
|
export { default as useResizeObserver } from './useResizeObserver';
|