@jelper/hooks 0.1.2 → 0.3.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/README.md +31 -31
- package/es/index.js +27 -1805
- package/es/useAsync.js +33 -0
- package/es/useBoolState.js +15 -0
- package/es/useCreate.js +5 -0
- package/es/useDebounce.js +12 -0
- package/es/useInterval.js +25 -0
- package/es/useIsUnmount.js +11 -0
- package/es/useListener.js +17 -0
- package/es/useMount.js +10 -0
- package/es/useParamsState.js +9 -0
- package/es/useResizeObserver.js +50 -0
- package/es/useRtCb.js +10 -0
- package/es/useRtEffect.js +7 -0
- package/es/useRtRef.js +7 -0
- package/es/useRtState.js +28 -0
- package/es/useSafeCb.js +11 -0
- package/es/useSafeState.js +8 -0
- package/es/useThrottle.js +19 -0
- package/es/useTimeout.js +34 -0
- package/es/useUnmount.js +11 -0
- package/es/useUpdateEffect.js +12 -0
- package/lib/index.js +52 -1798
- package/lib/useAsync.js +50 -0
- package/lib/useBoolState.js +20 -0
- package/lib/useCreate.js +7 -0
- package/lib/useDebounce.js +21 -0
- package/lib/useInterval.js +30 -0
- package/lib/useIsUnmount.js +13 -0
- package/lib/useListener.js +22 -0
- package/lib/useMount.js +15 -0
- package/lib/useParamsState.js +26 -0
- package/lib/useResizeObserver.js +56 -0
- package/lib/useRtCb.js +28 -0
- package/lib/useRtEffect.js +12 -0
- package/lib/useRtRef.js +10 -0
- package/lib/useRtState.js +34 -0
- package/lib/useSafeCb.js +20 -0
- package/lib/useSafeState.js +13 -0
- package/lib/useThrottle.js +28 -0
- package/lib/useTimeout.js +39 -0
- package/lib/useUnmount.js +13 -0
- package/lib/useUpdateEffect.js +15 -0
- package/package.json +7 -3
- package/types/index.d.ts +20 -0
- package/types/useAsync.d.ts +13 -0
- package/types/useBoolState.d.ts +2 -0
- package/types/useCreate.d.ts +2 -0
- package/types/useDebounce.d.ts +3 -0
- package/types/useInterval.d.ts +2 -0
- package/types/useIsUnmount.d.ts +2 -0
- package/types/useListener.d.ts +2 -0
- package/types/useMount.d.ts +2 -0
- package/types/useParamsState.d.ts +6 -0
- package/types/useResizeObserver.d.ts +1 -0
- package/types/useRtCb.d.ts +2 -0
- package/types/useRtEffect.d.ts +2 -0
- package/types/useRtRef.d.ts +2 -0
- package/types/useRtState.d.ts +6 -0
- package/types/useSafeCb.d.ts +2 -0
- package/types/useSafeState.d.ts +5 -0
- package/types/useThrottle.d.ts +10 -0
- package/types/useTimeout.d.ts +8 -0
- package/types/useUnmount.d.ts +2 -0
- package/types/useUpdateEffect.d.ts +1 -0
package/lib/useAsync.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var useSafeState_1 = __importDefault(require("./useSafeState"));
|
|
18
|
+
var useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
19
|
+
var useCreate_1 = __importDefault(require("./useCreate"));
|
|
20
|
+
var useAsync = function (asyncFn, opt) {
|
|
21
|
+
if (opt === void 0) { opt = {
|
|
22
|
+
immediate: false,
|
|
23
|
+
catchParam: false,
|
|
24
|
+
}; }
|
|
25
|
+
var _a = (0, useSafeState_1.default)(null), data = _a[0], setData = _a[1];
|
|
26
|
+
var _b = (0, useSafeState_1.default)(opt.defParam || {}), param = _b[0], setParam = _b[1];
|
|
27
|
+
var _c = (0, useSafeState_1.default)(false), loading = _c[0], setLoading = _c[1];
|
|
28
|
+
var _d = (0, useSafeState_1.default)(null), error = _d[0], setError = _d[1];
|
|
29
|
+
var run = (0, useRtCb_1.default)(function (runParam) {
|
|
30
|
+
var currParam = opt.catchParam ? __assign(__assign({}, param), (runParam || {})) : runParam;
|
|
31
|
+
setLoading(true);
|
|
32
|
+
setError(null);
|
|
33
|
+
return asyncFn(currParam)
|
|
34
|
+
.then(opt.format)
|
|
35
|
+
.then(function (resData) {
|
|
36
|
+
setData(resData);
|
|
37
|
+
setParam(currParam);
|
|
38
|
+
}, setError)
|
|
39
|
+
.finally(function () {
|
|
40
|
+
setLoading(false);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
(0, useCreate_1.default)(function () {
|
|
44
|
+
if (opt.immediate) {
|
|
45
|
+
run(param);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return { data: data, run: run, loading: loading, error: error };
|
|
49
|
+
};
|
|
50
|
+
exports.default = useAsync;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = require("react");
|
|
7
|
+
var useSafeState_1 = __importDefault(require("./useSafeState"));
|
|
8
|
+
var useBoolState = function (value) {
|
|
9
|
+
var _a = (0, useSafeState_1.default)(value), val = _a[0], setVal = _a[1];
|
|
10
|
+
var switchFn = (0, react_1.useCallback)(function (switchValue) {
|
|
11
|
+
if (typeof switchValue === 'boolean') {
|
|
12
|
+
setVal(switchValue);
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
setVal(function (oldVal) { return !oldVal; });
|
|
16
|
+
}
|
|
17
|
+
}, []);
|
|
18
|
+
return [val, switchFn];
|
|
19
|
+
};
|
|
20
|
+
exports.default = useBoolState;
|
package/lib/useCreate.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var lodash_es_1 = require("lodash-es");
|
|
7
|
+
var react_1 = require("react");
|
|
8
|
+
var useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
9
|
+
var useDebounce = function (cb, wait, opts) {
|
|
10
|
+
var rtCb = (0, useRtCb_1.default)(cb);
|
|
11
|
+
return (0, react_1.useMemo)(function () {
|
|
12
|
+
return (0, lodash_es_1.debounce)(function () {
|
|
13
|
+
var arg = [];
|
|
14
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
15
|
+
arg[_i] = arguments[_i];
|
|
16
|
+
}
|
|
17
|
+
rtCb.apply(void 0, arg);
|
|
18
|
+
}, wait, opts);
|
|
19
|
+
}, []);
|
|
20
|
+
};
|
|
21
|
+
exports.default = useDebounce;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2023-12-14 16:51:29
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2024-03-14 16:32:55
|
|
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 useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
14
|
+
var useInterval = function (callback, delay) {
|
|
15
|
+
var timerRef = (0, react_1.useRef)();
|
|
16
|
+
var clearTimer = (0, react_1.useCallback)(function () {
|
|
17
|
+
if (timerRef.current) {
|
|
18
|
+
window.clearInterval(timerRef.current);
|
|
19
|
+
}
|
|
20
|
+
}, []);
|
|
21
|
+
var cb = (0, useRtCb_1.default)(callback);
|
|
22
|
+
(0, react_1.useEffect)(function () {
|
|
23
|
+
timerRef.current = window.setInterval(cb, delay);
|
|
24
|
+
return function () {
|
|
25
|
+
clearTimer();
|
|
26
|
+
};
|
|
27
|
+
}, [delay]);
|
|
28
|
+
return clearTimer;
|
|
29
|
+
};
|
|
30
|
+
exports.default = useInterval;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var react_1 = require("react");
|
|
4
|
+
var useIsUnmount = function () {
|
|
5
|
+
var ref = (0, react_1.useRef)(true);
|
|
6
|
+
(0, react_1.useEffect)(function () {
|
|
7
|
+
return function () {
|
|
8
|
+
ref.current = false;
|
|
9
|
+
};
|
|
10
|
+
}, []);
|
|
11
|
+
return (0, react_1.useCallback)(function () { return !ref.current; }, []);
|
|
12
|
+
};
|
|
13
|
+
exports.default = useIsUnmount;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = require("react");
|
|
7
|
+
var useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
8
|
+
var useRtEffect_1 = __importDefault(require("./useRtEffect"));
|
|
9
|
+
var useListener = function (type, listener, options) {
|
|
10
|
+
var cb = (0, useRtCb_1.default)(listener);
|
|
11
|
+
var remove = (0, react_1.useCallback)(function () {
|
|
12
|
+
window.removeEventListener(type, cb);
|
|
13
|
+
}, []);
|
|
14
|
+
(0, useRtEffect_1.default)(function () {
|
|
15
|
+
window.addEventListener(type, cb, options);
|
|
16
|
+
return function () {
|
|
17
|
+
window.removeEventListener(type, cb);
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
return remove;
|
|
21
|
+
};
|
|
22
|
+
exports.default = useListener;
|
package/lib/useMount.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = require("react");
|
|
7
|
+
var useRtRef_1 = __importDefault(require("./useRtRef"));
|
|
8
|
+
var useMount = function (cb) {
|
|
9
|
+
var ref = (0, useRtRef_1.default)(cb);
|
|
10
|
+
(0, react_1.useEffect)(function () {
|
|
11
|
+
var _a;
|
|
12
|
+
(_a = ref.current) === null || _a === void 0 ? void 0 : _a.call(ref);
|
|
13
|
+
});
|
|
14
|
+
};
|
|
15
|
+
exports.default = useMount;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
var react_1 = require("react");
|
|
18
|
+
var useSafeState_1 = __importDefault(require("./useSafeState"));
|
|
19
|
+
function useParamsState(defData) {
|
|
20
|
+
var _a = (0, useSafeState_1.default)(defData), data = _a[0], setData = _a[1];
|
|
21
|
+
var update = (0, react_1.useCallback)(function (params) {
|
|
22
|
+
setData(function (oldVal) { return (__assign(__assign({}, (oldVal || {})), params)); });
|
|
23
|
+
}, []);
|
|
24
|
+
return [data, update, setData];
|
|
25
|
+
}
|
|
26
|
+
exports.default = useParamsState;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2023-11-24 10:52:51
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2024-03-14 16:34:42
|
|
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 useSafeCb_1 = __importDefault(require("./useSafeCb"));
|
|
14
|
+
var resizeObserver = null;
|
|
15
|
+
var observeCatch = null;
|
|
16
|
+
function init() {
|
|
17
|
+
if (resizeObserver) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
observeCatch = new Map();
|
|
21
|
+
resizeObserver = new window.ResizeObserver(function (targets) {
|
|
22
|
+
targets === null || targets === void 0 ? void 0 : targets.forEach(function (item) {
|
|
23
|
+
var _a;
|
|
24
|
+
(_a = observeCatch === null || observeCatch === void 0 ? void 0 : observeCatch.get(item === null || item === void 0 ? void 0 : item.target)) === null || _a === void 0 ? void 0 : _a(item);
|
|
25
|
+
});
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
var observe = function (target, cb) {
|
|
29
|
+
if (!resizeObserver) {
|
|
30
|
+
init();
|
|
31
|
+
}
|
|
32
|
+
observeCatch === null || observeCatch === void 0 ? void 0 : observeCatch.set(target, cb);
|
|
33
|
+
resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.observe(target);
|
|
34
|
+
};
|
|
35
|
+
var unobserve = function (target) {
|
|
36
|
+
if (!resizeObserver) {
|
|
37
|
+
init();
|
|
38
|
+
}
|
|
39
|
+
resizeObserver === null || resizeObserver === void 0 ? void 0 : resizeObserver.unobserve(target);
|
|
40
|
+
observeCatch === null || observeCatch === void 0 ? void 0 : observeCatch.delete(target);
|
|
41
|
+
};
|
|
42
|
+
function useResizeObserver(dom, cb) {
|
|
43
|
+
var selfObserve = (0, useSafeCb_1.default)(function () {
|
|
44
|
+
observe(dom, cb);
|
|
45
|
+
}, [dom, cb]);
|
|
46
|
+
var selfUnobserve = (0, useSafeCb_1.default)(function () {
|
|
47
|
+
unobserve(dom);
|
|
48
|
+
}, [dom]);
|
|
49
|
+
(0, react_1.useEffect)(function () {
|
|
50
|
+
observe(dom, cb);
|
|
51
|
+
return function () { return unobserve(dom); };
|
|
52
|
+
}, [dom, cb]);
|
|
53
|
+
return [selfObserve, selfUnobserve];
|
|
54
|
+
}
|
|
55
|
+
exports.default = useResizeObserver;
|
|
56
|
+
;
|
package/lib/useRtCb.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
3
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
4
|
+
if (ar || !(i in from)) {
|
|
5
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
6
|
+
ar[i] = from[i];
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
var useSafeCb_1 = __importDefault(require("./useSafeCb"));
|
|
16
|
+
var useRtRef_1 = __importDefault(require("./useRtRef"));
|
|
17
|
+
var useRtCb = function (cb, deps) {
|
|
18
|
+
var ref = (0, useRtRef_1.default)(cb);
|
|
19
|
+
return (0, useSafeCb_1.default)(function () {
|
|
20
|
+
var _a;
|
|
21
|
+
var arg = [];
|
|
22
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
23
|
+
arg[_i] = arguments[_i];
|
|
24
|
+
}
|
|
25
|
+
return (_a = ref.current) === null || _a === void 0 ? void 0 : _a.call.apply(_a, __spreadArray([ref], arg, false));
|
|
26
|
+
}, deps);
|
|
27
|
+
};
|
|
28
|
+
exports.default = useRtCb;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = require("react");
|
|
7
|
+
var useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
8
|
+
var useRtEffect = function (cb, deps) {
|
|
9
|
+
var rtCb = (0, useRtCb_1.default)(cb, deps);
|
|
10
|
+
(0, react_1.useEffect)(rtCb, [rtCb]);
|
|
11
|
+
};
|
|
12
|
+
exports.default = useRtEffect;
|
package/lib/useRtRef.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* @Author: jade <apathyjade@outlook.com>
|
|
4
|
+
* @Version: 0.0.1
|
|
5
|
+
* @Date: 2023-04-05 14:39:52
|
|
6
|
+
* @Last Modified by: jade
|
|
7
|
+
* @Last Modified Time: 2023-04-05 14:39:52
|
|
8
|
+
*/
|
|
9
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
10
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
var react_1 = require("react");
|
|
14
|
+
var useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
15
|
+
var defEqual = function (a, b) { return a === b; };
|
|
16
|
+
function useRtState(value, onChange, opts) {
|
|
17
|
+
var _a = (opts || {}).isEqual, isEqual = _a === void 0 ? defEqual : _a;
|
|
18
|
+
var _b = (0, react_1.useState)(value), val = _b[0], setVal = _b[1];
|
|
19
|
+
var updateValue = (0, useRtCb_1.default)(function (value) {
|
|
20
|
+
setVal(value);
|
|
21
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(value);
|
|
22
|
+
}, []);
|
|
23
|
+
var _c = (0, react_1.useState)(value), oldValue = _c[0], setOldValue = _c[1];
|
|
24
|
+
(0, react_1.useEffect)(function () {
|
|
25
|
+
if (!isEqual(value, oldValue)) {
|
|
26
|
+
setOldValue(value);
|
|
27
|
+
if (!isEqual(value, val)) {
|
|
28
|
+
updateValue(value);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}, [value, oldValue, val]);
|
|
32
|
+
return [val, setVal];
|
|
33
|
+
}
|
|
34
|
+
exports.default = useRtState;
|
package/lib/useSafeCb.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = require("react");
|
|
7
|
+
var useIsUnmount_1 = __importDefault(require("./useIsUnmount"));
|
|
8
|
+
var useSafeCb = function (cb, deps) {
|
|
9
|
+
var isUnmount = (0, useIsUnmount_1.default)();
|
|
10
|
+
return (0, react_1.useCallback)(function () {
|
|
11
|
+
var arg = [];
|
|
12
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
13
|
+
arg[_i] = arguments[_i];
|
|
14
|
+
}
|
|
15
|
+
if (!isUnmount()) {
|
|
16
|
+
return cb.apply(void 0, arg);
|
|
17
|
+
}
|
|
18
|
+
}, deps || []);
|
|
19
|
+
};
|
|
20
|
+
exports.default = useSafeCb;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = require("react");
|
|
7
|
+
var useSafeCb_1 = __importDefault(require("./useSafeCb"));
|
|
8
|
+
var useSafeState = function (value) {
|
|
9
|
+
var _a = (0, react_1.useState)(value), state = _a[0], setState = _a[1];
|
|
10
|
+
var setCb = (0, useSafeCb_1.default)(setState);
|
|
11
|
+
return [state, setCb];
|
|
12
|
+
};
|
|
13
|
+
exports.default = useSafeState;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var lodash_es_1 = require("lodash-es");
|
|
7
|
+
var react_1 = require("react");
|
|
8
|
+
var useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
9
|
+
/**
|
|
10
|
+
* 用于节流函数的钩子函数
|
|
11
|
+
* @param cb - 要节流的函数
|
|
12
|
+
* @param wait - 节流延迟时间,默认为0
|
|
13
|
+
* @param opts - 节流选项对象,默认为{}
|
|
14
|
+
* @returns 节流函数
|
|
15
|
+
*/
|
|
16
|
+
var useThrottle = function (cb, wait, opts) {
|
|
17
|
+
var rtCb = (0, useRtCb_1.default)(cb);
|
|
18
|
+
return (0, react_1.useMemo)(function () {
|
|
19
|
+
return (0, lodash_es_1.throttle)(function () {
|
|
20
|
+
var arg = [];
|
|
21
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
22
|
+
arg[_i] = arguments[_i];
|
|
23
|
+
}
|
|
24
|
+
rtCb.apply(void 0, arg);
|
|
25
|
+
}, wait, opts);
|
|
26
|
+
}, []);
|
|
27
|
+
};
|
|
28
|
+
exports.default = useThrottle;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
* @Author: apathyjade
|
|
4
|
+
* @Date: 2023-12-14 16:51:29
|
|
5
|
+
* @Last Modified by: apathyjade
|
|
6
|
+
* @Last Modified time: 2023-12-14 17:15:27
|
|
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 useRtCb_1 = __importDefault(require("./useRtCb"));
|
|
14
|
+
/**
|
|
15
|
+
* 使用定时器在指定延迟后执行回调函数
|
|
16
|
+
* @param callback - 回调函数
|
|
17
|
+
* @param delay - 延迟时间(毫秒)
|
|
18
|
+
* @returns clearTimer - 清除定时器的函数
|
|
19
|
+
*/
|
|
20
|
+
var useTimeout = function (callback, delay) {
|
|
21
|
+
var timerRef = (0, react_1.useRef)();
|
|
22
|
+
/**
|
|
23
|
+
* 清除定时器
|
|
24
|
+
*/
|
|
25
|
+
var clearTimer = (0, react_1.useCallback)(function () {
|
|
26
|
+
if (timerRef.current) {
|
|
27
|
+
clearTimeout(timerRef.current);
|
|
28
|
+
}
|
|
29
|
+
}, []);
|
|
30
|
+
var cb = (0, useRtCb_1.default)(callback);
|
|
31
|
+
(0, react_1.useEffect)(function () {
|
|
32
|
+
timerRef.current = window.setTimeout(cb, delay);
|
|
33
|
+
return function () {
|
|
34
|
+
clearTimer();
|
|
35
|
+
};
|
|
36
|
+
}, [delay]);
|
|
37
|
+
return clearTimer;
|
|
38
|
+
};
|
|
39
|
+
exports.default = useTimeout;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var react_1 = require("react");
|
|
4
|
+
var useUnmount = function (cb) {
|
|
5
|
+
var ref = (0, react_1.useRef)(cb);
|
|
6
|
+
ref.current = cb;
|
|
7
|
+
(0, react_1.useEffect)(function () {
|
|
8
|
+
return function () {
|
|
9
|
+
ref.current();
|
|
10
|
+
};
|
|
11
|
+
}, []);
|
|
12
|
+
};
|
|
13
|
+
exports.default = useUnmount;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var react_1 = require("react");
|
|
4
|
+
function useUpdateEffect(cb, deps) {
|
|
5
|
+
var ref = (0, react_1.useRef)(true);
|
|
6
|
+
(0, react_1.useEffect)(function () {
|
|
7
|
+
if (ref.current) {
|
|
8
|
+
ref.current = false;
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
return cb();
|
|
12
|
+
}, deps);
|
|
13
|
+
}
|
|
14
|
+
exports.default = useUpdateEffect;
|
|
15
|
+
;
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jelper/hooks",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "react hooks helper",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"module": "es/index.js",
|
|
7
|
+
"types": "types/index.d.ts",
|
|
7
8
|
"keywords": [
|
|
8
9
|
"store",
|
|
9
10
|
"helper"
|
|
@@ -12,13 +13,14 @@
|
|
|
12
13
|
"package.json",
|
|
13
14
|
"README.md",
|
|
14
15
|
"es/**",
|
|
15
|
-
"lib/**"
|
|
16
|
+
"lib/**",
|
|
17
|
+
"types/**"
|
|
16
18
|
],
|
|
17
19
|
"publishConfig": {
|
|
18
20
|
"access": "public"
|
|
19
21
|
},
|
|
20
22
|
"devDependencies": {
|
|
21
|
-
"@jelper/builder": "0.
|
|
23
|
+
"@jelper/builder": "0.2.0",
|
|
22
24
|
"@types/node": "~18.0.0",
|
|
23
25
|
"@types/react": "~18.2.17",
|
|
24
26
|
"@types/lodash-es": "~4.17.8"
|
|
@@ -32,6 +34,8 @@
|
|
|
32
34
|
"scripts": {
|
|
33
35
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
34
36
|
"build": "jelper build",
|
|
37
|
+
"build:debug": "jelper build --debug",
|
|
38
|
+
"build:help": "jelper build --help",
|
|
35
39
|
"serve": "jelper serve"
|
|
36
40
|
}
|
|
37
41
|
}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export { default as useSafeState } from './useSafeState';
|
|
2
|
+
export { default as useSafeCb } from './useSafeCb';
|
|
3
|
+
export { default as useRtRef } from './useRtRef';
|
|
4
|
+
export { default as useRtState } from './useRtState';
|
|
5
|
+
export { default as useRtCb } from './useRtCb';
|
|
6
|
+
export { default as useRtEffect } from './useRtEffect';
|
|
7
|
+
export { default as useBoolState } from './useBoolState';
|
|
8
|
+
export { default as useParamsState } from './useParamsState';
|
|
9
|
+
export { default as useUpdateEffect } from './useUpdateEffect';
|
|
10
|
+
export { default as useIsUnmount } from './useIsUnmount';
|
|
11
|
+
export { default as useCreate } from './useCreate';
|
|
12
|
+
export { default as useMount } from './useMount';
|
|
13
|
+
export { default as useUnmount } from './useUnmount';
|
|
14
|
+
export { default as useThrottle } from './useThrottle';
|
|
15
|
+
export { default as useDebounce } from './useDebounce';
|
|
16
|
+
export { default as useAsync } from './useAsync';
|
|
17
|
+
export { default as useTimeout } from './useTimeout';
|
|
18
|
+
export { default as useInterval } from './useInterval';
|
|
19
|
+
export { default as useListener } from './useListener';
|
|
20
|
+
export { default as useResizeObserver } from './useResizeObserver';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface Opt<T extends (...arg: any) => any, R> {
|
|
2
|
+
defParam?: Parameters<T>;
|
|
3
|
+
immediate?: boolean;
|
|
4
|
+
format?: (p: ReturnType<T>) => R;
|
|
5
|
+
catchParam?: boolean;
|
|
6
|
+
}
|
|
7
|
+
declare const useAsync: <T extends (...arg: any) => Promise<any>, R extends Object>(asyncFn: T, opt?: Opt<T, R>) => {
|
|
8
|
+
data: R | null | undefined;
|
|
9
|
+
run: ReturnFn<(runParam?: Partial<Parameters<T>>) => Promise<void>>;
|
|
10
|
+
loading: boolean | undefined;
|
|
11
|
+
error: null | undefined;
|
|
12
|
+
};
|
|
13
|
+
export default useAsync;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function useResizeObserver(dom: HTMLElement, cb: (dom: ResizeObserverEntry) => void): (() => void)[];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface Options<T> {
|
|
3
|
+
isEqual?: (a: T, b: T) => boolean;
|
|
4
|
+
}
|
|
5
|
+
export default function useRtState<T = any>(value: T, onChange?: (value: T) => void, opts?: Options<T>): (T | import("react").Dispatch<import("react").SetStateAction<T>>)[];
|
|
6
|
+
export {};
|