@aiszlab/relax 2.1.2 → 2.1.3-beta.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.
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ var _regenerator = require('@babel/runtime/helpers/regenerator');
4
+ var _asyncToGenerator = require('@babel/runtime/helpers/asyncToGenerator');
5
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
6
+ var react = require('react');
7
+ var useEvent = require('./use-event.cjs');
8
+ var useMounted = require('./use-mounted.cjs');
9
+
10
+ /**
11
+ * @author murukal
12
+ *
13
+ * @description
14
+ * wraps an async request function, tracking loading / error / data state.
15
+ * when `auto` is true the request fires automatically on mount.
16
+ */
17
+ var useRequest = function useRequest(request) {
18
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
19
+ _ref$auto = _ref.auto,
20
+ auto = _ref$auto === void 0 ? false : _ref$auto;
21
+ var _useState = react.useState(null),
22
+ _useState2 = _slicedToArray(_useState, 2),
23
+ data = _useState2[0],
24
+ setData = _useState2[1];
25
+ var _useState3 = react.useState(null),
26
+ _useState4 = _slicedToArray(_useState3, 2),
27
+ error = _useState4[0],
28
+ setError = _useState4[1];
29
+ var _useState5 = react.useState(false),
30
+ _useState6 = _slicedToArray(_useState5, 2),
31
+ loading = _useState6[0],
32
+ setLoading = _useState6[1];
33
+ var isMountedRef = react.useRef(false);
34
+ var _request = useEvent.useEvent(request);
35
+ var run = react.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
36
+ var result,
37
+ _args = arguments;
38
+ return _regenerator().w(function (_context) {
39
+ while (1) switch (_context.n) {
40
+ case 0:
41
+ setLoading(true);
42
+ setError(null);
43
+ _context.n = 1;
44
+ return _request.apply(void 0, _args)["catch"](function (error) {
45
+ setError(error);
46
+ return null;
47
+ });
48
+ case 1:
49
+ result = _context.v;
50
+ setData(result);
51
+ setLoading(false);
52
+ case 2:
53
+ return _context.a(2);
54
+ }
55
+ }, _callee);
56
+ })), []);
57
+ useMounted.useMounted(function () {
58
+ if (isMountedRef.current) return;
59
+ if (!auto) return;
60
+ isMountedRef.current = true;
61
+ run();
62
+ });
63
+ return {
64
+ data: data,
65
+ error: error,
66
+ loading: loading,
67
+ run: run
68
+ };
69
+ };
70
+
71
+ exports.useRequest = useRequest;
@@ -0,0 +1,38 @@
1
+ type UsingRequest = {
2
+ /**
3
+ * @description
4
+ * auto request when component mounts
5
+ */
6
+ auto?: boolean;
7
+ };
8
+ type UsedRequest<T> = {
9
+ /**
10
+ * @description
11
+ * response data
12
+ */
13
+ data: T | null;
14
+ /**
15
+ * @description
16
+ * error caught from the request
17
+ */
18
+ error: Error | null;
19
+ /**
20
+ * @description
21
+ * whether the request is in progress
22
+ */
23
+ loading: boolean;
24
+ /**
25
+ * @description
26
+ * manually trigger the request with the same arguments as the source function
27
+ */
28
+ run: (...args: any[]) => Promise<void>;
29
+ };
30
+ /**
31
+ * @author murukal
32
+ *
33
+ * @description
34
+ * wraps an async request function, tracking loading / error / data state.
35
+ * when `auto` is true the request fires automatically on mount.
36
+ */
37
+ export declare const useRequest: <T>(request: (...args: any[]) => Promise<T>, { auto }?: UsingRequest) => UsedRequest<T>;
38
+ export {};
@@ -0,0 +1,69 @@
1
+ import _regenerator from '@babel/runtime/helpers/regenerator';
2
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
3
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
4
+ import { useState, useRef, useCallback } from 'react';
5
+ import { useEvent } from './use-event.mjs';
6
+ import { useMounted } from './use-mounted.mjs';
7
+
8
+ /**
9
+ * @author murukal
10
+ *
11
+ * @description
12
+ * wraps an async request function, tracking loading / error / data state.
13
+ * when `auto` is true the request fires automatically on mount.
14
+ */
15
+ var useRequest = function useRequest(request) {
16
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
17
+ _ref$auto = _ref.auto,
18
+ auto = _ref$auto === void 0 ? false : _ref$auto;
19
+ var _useState = useState(null),
20
+ _useState2 = _slicedToArray(_useState, 2),
21
+ data = _useState2[0],
22
+ setData = _useState2[1];
23
+ var _useState3 = useState(null),
24
+ _useState4 = _slicedToArray(_useState3, 2),
25
+ error = _useState4[0],
26
+ setError = _useState4[1];
27
+ var _useState5 = useState(false),
28
+ _useState6 = _slicedToArray(_useState5, 2),
29
+ loading = _useState6[0],
30
+ setLoading = _useState6[1];
31
+ var isMountedRef = useRef(false);
32
+ var _request = useEvent(request);
33
+ var run = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
34
+ var result,
35
+ _args = arguments;
36
+ return _regenerator().w(function (_context) {
37
+ while (1) switch (_context.n) {
38
+ case 0:
39
+ setLoading(true);
40
+ setError(null);
41
+ _context.n = 1;
42
+ return _request.apply(void 0, _args)["catch"](function (error) {
43
+ setError(error);
44
+ return null;
45
+ });
46
+ case 1:
47
+ result = _context.v;
48
+ setData(result);
49
+ setLoading(false);
50
+ case 2:
51
+ return _context.a(2);
52
+ }
53
+ }, _callee);
54
+ })), []);
55
+ useMounted(function () {
56
+ if (isMountedRef.current) return;
57
+ if (!auto) return;
58
+ isMountedRef.current = true;
59
+ run();
60
+ });
61
+ return {
62
+ data: data,
63
+ error: error,
64
+ loading: loading,
65
+ run: run
66
+ };
67
+ };
68
+
69
+ export { useRequest };
package/dist/index.cjs CHANGED
@@ -22,6 +22,7 @@ var useFocus = require('./hooks/use-focus.cjs');
22
22
  var useMemorized = require('./hooks/use-memorized.cjs');
23
23
  var useMutateObserver = require('./hooks/use-mutate-observer.cjs');
24
24
  var useRaf = require('./hooks/use-raf.cjs');
25
+ var useRequest = require('./hooks/use-request.cjs');
25
26
  var useDevicePixelRatio = require('./hooks/use-device-pixel-ratio.cjs');
26
27
  var useIdentity = require('./hooks/use-identity.cjs');
27
28
  var useMediaQuery = require('./hooks/use-media-query.cjs');
@@ -119,6 +120,7 @@ exports.useFocus = useFocus.useFocus;
119
120
  exports.useMemorized = useMemorized.useMemorized;
120
121
  exports.useMutateObserver = useMutateObserver.useMutateObserver;
121
122
  exports.useRaf = useRaf.useRaf;
123
+ exports.useRequest = useRequest.useRequest;
122
124
  exports.useDevicePixelRatio = useDevicePixelRatio.useDevicePixelRatio;
123
125
  exports.useIdentity = useIdentity.useIdentity;
124
126
  exports.useMediaQuery = useMediaQuery.useMediaQuery;
package/dist/index.d.ts CHANGED
@@ -24,6 +24,7 @@ export { useFocus } from "./hooks/use-focus";
24
24
  export { useMemorized } from "./hooks/use-memorized";
25
25
  export { useMutateObserver } from "./hooks/use-mutate-observer";
26
26
  export { useRaf } from "./hooks/use-raf";
27
+ export { useRequest } from "./hooks/use-request";
27
28
  export { useDevicePixelRatio } from "./hooks/use-device-pixel-ratio";
28
29
  export { useIdentity } from "./hooks/use-identity";
29
30
  export { useMediaQuery } from "./hooks/use-media-query";
package/dist/index.mjs CHANGED
@@ -20,6 +20,7 @@ export { useFocus } from './hooks/use-focus.mjs';
20
20
  export { useMemorized } from './hooks/use-memorized.mjs';
21
21
  export { useMutateObserver } from './hooks/use-mutate-observer.mjs';
22
22
  export { useRaf } from './hooks/use-raf.mjs';
23
+ export { useRequest } from './hooks/use-request.mjs';
23
24
  export { useDevicePixelRatio } from './hooks/use-device-pixel-ratio.mjs';
24
25
  export { useIdentity } from './hooks/use-identity.mjs';
25
26
  export { useMediaQuery } from './hooks/use-media-query.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aiszlab/relax",
3
- "version": "2.1.2",
3
+ "version": "2.1.3-beta.0",
4
4
  "description": "react utils collection",
5
5
  "exports": {
6
6
  ".": {