@yamada-ui/utils 0.1.1 → 0.1.2
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/dist/assertion.d.ts +1 -1
- package/dist/{chunk-HUEOJZVC.mjs → chunk-VPOQGCMS.mjs} +45 -0
- package/dist/color.mjs +1 -1
- package/dist/function.mjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +48 -0
- package/dist/index.mjs +7 -1
- package/dist/object.d.ts +9 -9
- package/dist/object.mjs +1 -1
- package/dist/react.d.ts +51 -1
- package/dist/react.js +48 -0
- package/dist/react.mjs +7 -1
- package/package.json +1 -1
package/dist/assertion.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ declare const isNumeric: (value: any) => boolean;
|
|
|
6
6
|
declare const isString: (value: any) => value is string;
|
|
7
7
|
declare const isUndefined: (value: any) => value is undefined;
|
|
8
8
|
declare const isNull: (value: any) => value is null;
|
|
9
|
-
declare const isObject: <T extends Dict
|
|
9
|
+
declare const isObject: <T extends Dict>(value: any) => value is T;
|
|
10
10
|
declare const isArray: <T extends any[]>(value: any) => value is T;
|
|
11
11
|
declare const isEmpty: (value: any) => boolean;
|
|
12
12
|
declare const isFunction: <T extends Function = Function>(value: any) => value is T;
|
|
@@ -118,6 +118,48 @@ var useUpdateEffect = (callback, deps) => {
|
|
|
118
118
|
};
|
|
119
119
|
}, []);
|
|
120
120
|
};
|
|
121
|
+
var useAsync = (func, deps = []) => {
|
|
122
|
+
const [state, callback] = useAsyncFunc(func, deps, { loading: true });
|
|
123
|
+
React.useEffect(() => {
|
|
124
|
+
callback();
|
|
125
|
+
}, [callback]);
|
|
126
|
+
return state;
|
|
127
|
+
};
|
|
128
|
+
var useAsyncFunc = (func, deps = [], initialState = { loading: false }) => {
|
|
129
|
+
const lastCallId = React.useRef(0);
|
|
130
|
+
const isMounted = useIsMounted();
|
|
131
|
+
const [state, setState] = React.useState(initialState);
|
|
132
|
+
const callback = React.useCallback((...args) => {
|
|
133
|
+
const callId = ++lastCallId.current;
|
|
134
|
+
if (!state.loading) {
|
|
135
|
+
setState((prevState) => ({ ...prevState, loading: true }));
|
|
136
|
+
}
|
|
137
|
+
return func(...args).then(
|
|
138
|
+
(value) => {
|
|
139
|
+
if (isMounted.current && callId === lastCallId.current)
|
|
140
|
+
setState({ value, loading: false });
|
|
141
|
+
return value;
|
|
142
|
+
},
|
|
143
|
+
(error) => {
|
|
144
|
+
if (isMounted.current && callId === lastCallId.current)
|
|
145
|
+
setState({ error, loading: false });
|
|
146
|
+
return error;
|
|
147
|
+
}
|
|
148
|
+
);
|
|
149
|
+
}, deps);
|
|
150
|
+
return [state, callback];
|
|
151
|
+
};
|
|
152
|
+
var useAsyncRetry = (func, deps = []) => {
|
|
153
|
+
const [attempt, setAttempt] = React.useState(0);
|
|
154
|
+
const state = useAsync(func, [...deps, attempt]);
|
|
155
|
+
const stateLoading = state.loading;
|
|
156
|
+
const retry = React.useCallback(() => {
|
|
157
|
+
if (stateLoading)
|
|
158
|
+
return;
|
|
159
|
+
setAttempt((currentAttempt) => currentAttempt + 1);
|
|
160
|
+
}, [...deps, stateLoading]);
|
|
161
|
+
return { ...state, retry };
|
|
162
|
+
};
|
|
121
163
|
|
|
122
164
|
// src/color.ts
|
|
123
165
|
import { toHex, parseToRgba, transparentize, mix, darken, lighten } from "color2k";
|
|
@@ -389,6 +431,9 @@ export {
|
|
|
389
431
|
useMergeRefs,
|
|
390
432
|
useCallbackRef,
|
|
391
433
|
useUpdateEffect,
|
|
434
|
+
useAsync,
|
|
435
|
+
useAsyncFunc,
|
|
436
|
+
useAsyncRetry,
|
|
392
437
|
getColor,
|
|
393
438
|
lightenColor,
|
|
394
439
|
darkenColor,
|
package/dist/color.mjs
CHANGED
package/dist/function.mjs
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export { Dict, DynamicRecord, Length, Path, StringLiteral, Union } from './index
|
|
|
2
2
|
export { cast, isArray, isEmpty, isFunction, isNotNumber, isNull, isNumber, isNumeric, isObject, isString, isUndefined, isUnit } from './assertion.js';
|
|
3
3
|
export { assignAfter, filterObject, filterUndefined, flattenObject, getMemoizedObject, getObject, keysFormObject, memoizeObject, merge, objectFromEntries, omitObject, pickObject, replaceObject, splitObject } from './object.js';
|
|
4
4
|
export { funcAll, handlerAll, noop, runIfFunc } from './function.js';
|
|
5
|
-
export { DOMAttributes, MaybeRenderProp, PropGetter, RequiredPropGetter, assignRef, createContext, cx, findChildren, getValidChildren, includesChildren, isRefObject, isValidElement, mergeRefs, omitChildren, pickChildren, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect } from './react.js';
|
|
5
|
+
export { AsyncFnReturn, AsyncState, AsyncStateRetry, DOMAttributes, FunctionReturningPromise, MaybeRenderProp, PromiseType, PropGetter, RequiredPropGetter, assignRef, createContext, cx, findChildren, getValidChildren, includesChildren, isRefObject, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect } from './react.js';
|
|
6
6
|
export { FocusableElement, ariaAttr, createdDom, dataAttr, getActiveElement, getAllFocusable, getEventRelatedTarget, getOwnerDocument, getOwnerWindow, getPlatform, hasNegativeTabIndex, hasTabIndex, isActiveElement, isApple, isContains, isContentEditable, isDisabled, isElement, isFocusable, isHTMLElement, isHidden, isMac, isSafari, isTabbable, platform, vendor } from './dom.js';
|
|
7
7
|
export { escape } from './string.js';
|
|
8
8
|
export { Operand, calc } from './calc.js';
|
package/dist/index.js
CHANGED
|
@@ -123,6 +123,9 @@ __export(src_exports, {
|
|
|
123
123
|
toPrecision: () => toPrecision,
|
|
124
124
|
toneColor: () => toneColor,
|
|
125
125
|
transparentizeColor: () => transparentizeColor,
|
|
126
|
+
useAsync: () => useAsync,
|
|
127
|
+
useAsyncFunc: () => useAsyncFunc,
|
|
128
|
+
useAsyncRetry: () => useAsyncRetry,
|
|
126
129
|
useCallbackRef: () => useCallbackRef,
|
|
127
130
|
useIsMounted: () => useIsMounted,
|
|
128
131
|
useMergeRefs: () => useMergeRefs,
|
|
@@ -392,6 +395,48 @@ var useUpdateEffect = (callback, deps) => {
|
|
|
392
395
|
};
|
|
393
396
|
}, []);
|
|
394
397
|
};
|
|
398
|
+
var useAsync = (func, deps = []) => {
|
|
399
|
+
const [state, callback] = useAsyncFunc(func, deps, { loading: true });
|
|
400
|
+
React.useEffect(() => {
|
|
401
|
+
callback();
|
|
402
|
+
}, [callback]);
|
|
403
|
+
return state;
|
|
404
|
+
};
|
|
405
|
+
var useAsyncFunc = (func, deps = [], initialState = { loading: false }) => {
|
|
406
|
+
const lastCallId = React.useRef(0);
|
|
407
|
+
const isMounted = useIsMounted();
|
|
408
|
+
const [state, setState] = React.useState(initialState);
|
|
409
|
+
const callback = React.useCallback((...args) => {
|
|
410
|
+
const callId = ++lastCallId.current;
|
|
411
|
+
if (!state.loading) {
|
|
412
|
+
setState((prevState) => ({ ...prevState, loading: true }));
|
|
413
|
+
}
|
|
414
|
+
return func(...args).then(
|
|
415
|
+
(value) => {
|
|
416
|
+
if (isMounted.current && callId === lastCallId.current)
|
|
417
|
+
setState({ value, loading: false });
|
|
418
|
+
return value;
|
|
419
|
+
},
|
|
420
|
+
(error) => {
|
|
421
|
+
if (isMounted.current && callId === lastCallId.current)
|
|
422
|
+
setState({ error, loading: false });
|
|
423
|
+
return error;
|
|
424
|
+
}
|
|
425
|
+
);
|
|
426
|
+
}, deps);
|
|
427
|
+
return [state, callback];
|
|
428
|
+
};
|
|
429
|
+
var useAsyncRetry = (func, deps = []) => {
|
|
430
|
+
const [attempt, setAttempt] = React.useState(0);
|
|
431
|
+
const state = useAsync(func, [...deps, attempt]);
|
|
432
|
+
const stateLoading = state.loading;
|
|
433
|
+
const retry = React.useCallback(() => {
|
|
434
|
+
if (stateLoading)
|
|
435
|
+
return;
|
|
436
|
+
setAttempt((currentAttempt) => currentAttempt + 1);
|
|
437
|
+
}, [...deps, stateLoading]);
|
|
438
|
+
return { ...state, retry };
|
|
439
|
+
};
|
|
395
440
|
|
|
396
441
|
// src/dom.ts
|
|
397
442
|
var createdDom = () => !!(typeof window !== "undefined" && window.document && window.document.createElement);
|
|
@@ -787,6 +832,9 @@ var addPointerEvent = (target, type, cb, options) => addDomEvent(target, type, w
|
|
|
787
832
|
toPrecision,
|
|
788
833
|
toneColor,
|
|
789
834
|
transparentizeColor,
|
|
835
|
+
useAsync,
|
|
836
|
+
useAsyncFunc,
|
|
837
|
+
useAsyncRetry,
|
|
790
838
|
useCallbackRef,
|
|
791
839
|
useIsMounted,
|
|
792
840
|
useMergeRefs,
|
package/dist/index.mjs
CHANGED
|
@@ -39,13 +39,16 @@ import {
|
|
|
39
39
|
tintColor,
|
|
40
40
|
toneColor,
|
|
41
41
|
transparentizeColor,
|
|
42
|
+
useAsync,
|
|
43
|
+
useAsyncFunc,
|
|
44
|
+
useAsyncRetry,
|
|
42
45
|
useCallbackRef,
|
|
43
46
|
useIsMounted,
|
|
44
47
|
useMergeRefs,
|
|
45
48
|
useSafeLayoutEffect,
|
|
46
49
|
useUnmountEffect,
|
|
47
50
|
useUpdateEffect
|
|
48
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-VPOQGCMS.mjs";
|
|
49
52
|
import "./chunk-SLJ4M7XC.mjs";
|
|
50
53
|
import {
|
|
51
54
|
clampNumber,
|
|
@@ -210,6 +213,9 @@ export {
|
|
|
210
213
|
toPrecision,
|
|
211
214
|
toneColor,
|
|
212
215
|
transparentizeColor,
|
|
216
|
+
useAsync,
|
|
217
|
+
useAsyncFunc,
|
|
218
|
+
useAsyncRetry,
|
|
213
219
|
useCallbackRef,
|
|
214
220
|
useIsMounted,
|
|
215
221
|
useMergeRefs,
|
package/dist/object.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Dict } from './index.types.js';
|
|
2
2
|
|
|
3
|
-
declare const omitObject: <T extends Dict
|
|
4
|
-
declare const pickObject: <T extends Dict
|
|
5
|
-
declare const splitObject: <T extends Dict
|
|
6
|
-
declare const filterObject: <T extends Dict
|
|
7
|
-
declare const filterUndefined: <T extends Dict
|
|
8
|
-
declare const merge: <T extends Dict
|
|
9
|
-
declare const flattenObject: <T extends Dict
|
|
10
|
-
declare const objectFromEntries: <T extends Dict
|
|
11
|
-
declare const keysFormObject: <T extends Dict
|
|
3
|
+
declare const omitObject: <T extends Dict, K extends keyof T>(obj: T, keys: K[]) => Omit<T, K>;
|
|
4
|
+
declare const pickObject: <T extends Dict, K extends keyof T>(obj: T, keys: K[]) => { [P in K]: T[P]; };
|
|
5
|
+
declare const splitObject: <T extends Dict, K extends keyof T>(obj: T, keys: K[]) => [{ [P in K]: T[P]; }, Omit<T, K>];
|
|
6
|
+
declare const filterObject: <T extends Dict, K extends Dict>(obj: T, func: (key: keyof T, value: T[keyof T], obj: T) => boolean) => K;
|
|
7
|
+
declare const filterUndefined: <T extends Dict>(obj: T) => T;
|
|
8
|
+
declare const merge: <T extends Dict>(target: any, source: any, overrideArray?: boolean) => T;
|
|
9
|
+
declare const flattenObject: <T extends Dict>(obj: any, maxDepth?: number) => T;
|
|
10
|
+
declare const objectFromEntries: <T extends Dict>(entries: any[][]) => T;
|
|
11
|
+
declare const keysFormObject: <T extends Dict>(obj: T) => (keyof T)[];
|
|
12
12
|
declare const replaceObject: <T extends unknown>(objOrArray: T, callBack: (value: any) => any) => T;
|
|
13
13
|
declare const getObject: (obj: Dict, path: string | number, fallback?: any, i?: number) => any;
|
|
14
14
|
declare const memoizeObject: (func: typeof getObject) => (obj: Dict, path: string | number, fallback?: any, i?: number) => any;
|
package/dist/object.mjs
CHANGED
package/dist/react.d.ts
CHANGED
|
@@ -40,5 +40,55 @@ declare const mergeRefs: <T extends unknown = any>(...refs: (ReactRef<T> | undef
|
|
|
40
40
|
declare const useMergeRefs: <T extends unknown = any>(...refs: (ReactRef<T> | undefined)[]) => (node: T | null) => void;
|
|
41
41
|
declare const useCallbackRef: <T extends (...args: any[]) => any>(callback: T | undefined, deps?: React.DependencyList) => T;
|
|
42
42
|
declare const useUpdateEffect: (callback: React.EffectCallback, deps: React.DependencyList) => void;
|
|
43
|
+
type FunctionReturningPromise = (...args: any[]) => Promise<any>;
|
|
44
|
+
declare const useAsync: <T extends FunctionReturningPromise>(func: T, deps?: React.DependencyList) => StateFromFunctionReturningPromise<T>;
|
|
45
|
+
type AsyncState<T> = {
|
|
46
|
+
loading: boolean;
|
|
47
|
+
error?: undefined;
|
|
48
|
+
value?: undefined;
|
|
49
|
+
} | {
|
|
50
|
+
loading: true;
|
|
51
|
+
error?: Error | undefined;
|
|
52
|
+
value?: T;
|
|
53
|
+
} | {
|
|
54
|
+
loading: false;
|
|
55
|
+
error: Error;
|
|
56
|
+
value?: undefined;
|
|
57
|
+
} | {
|
|
58
|
+
loading: false;
|
|
59
|
+
error?: undefined;
|
|
60
|
+
value: T;
|
|
61
|
+
};
|
|
62
|
+
type PromiseType<P extends Promise<any>> = P extends Promise<infer T> ? T : never;
|
|
63
|
+
type StateFromFunctionReturningPromise<T extends FunctionReturningPromise> = AsyncState<PromiseType<ReturnType<T>>>;
|
|
64
|
+
type AsyncFnReturn<T extends FunctionReturningPromise = FunctionReturningPromise> = [
|
|
65
|
+
StateFromFunctionReturningPromise<T>,
|
|
66
|
+
T
|
|
67
|
+
];
|
|
68
|
+
declare const useAsyncFunc: <T extends FunctionReturningPromise>(func: T, deps?: React.DependencyList, initialState?: StateFromFunctionReturningPromise<T>) => AsyncFnReturn<T>;
|
|
69
|
+
type AsyncStateRetry<T> = AsyncState<T> & {
|
|
70
|
+
retry(): void;
|
|
71
|
+
};
|
|
72
|
+
declare const useAsyncRetry: <T>(func: () => Promise<T>, deps?: React.DependencyList) => {
|
|
73
|
+
retry: () => void;
|
|
74
|
+
loading: boolean;
|
|
75
|
+
error?: undefined;
|
|
76
|
+
value?: undefined;
|
|
77
|
+
} | {
|
|
78
|
+
retry: () => void;
|
|
79
|
+
loading: false;
|
|
80
|
+
error: Error;
|
|
81
|
+
value?: undefined;
|
|
82
|
+
} | {
|
|
83
|
+
retry: () => void;
|
|
84
|
+
loading: true;
|
|
85
|
+
error?: Error | undefined;
|
|
86
|
+
value?: T | undefined;
|
|
87
|
+
} | {
|
|
88
|
+
retry: () => void;
|
|
89
|
+
loading: false;
|
|
90
|
+
error?: undefined;
|
|
91
|
+
value: T;
|
|
92
|
+
};
|
|
43
93
|
|
|
44
|
-
export { DOMAttributes, MaybeRenderProp, PropGetter, RequiredPropGetter, assignRef, createContext, cx, findChildren, getValidChildren, includesChildren, isRefObject, isValidElement, mergeRefs, omitChildren, pickChildren, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect };
|
|
94
|
+
export { AsyncFnReturn, AsyncState, AsyncStateRetry, DOMAttributes, FunctionReturningPromise, MaybeRenderProp, PromiseType, PropGetter, RequiredPropGetter, assignRef, createContext, cx, findChildren, getValidChildren, includesChildren, isRefObject, isValidElement, mergeRefs, omitChildren, pickChildren, useAsync, useAsyncFunc, useAsyncRetry, useCallbackRef, useIsMounted, useMergeRefs, useSafeLayoutEffect, useUnmountEffect, useUpdateEffect };
|
package/dist/react.js
CHANGED
|
@@ -41,6 +41,9 @@ __export(react_exports, {
|
|
|
41
41
|
mergeRefs: () => mergeRefs,
|
|
42
42
|
omitChildren: () => omitChildren,
|
|
43
43
|
pickChildren: () => pickChildren,
|
|
44
|
+
useAsync: () => useAsync,
|
|
45
|
+
useAsyncFunc: () => useAsyncFunc,
|
|
46
|
+
useAsyncRetry: () => useAsyncRetry,
|
|
44
47
|
useCallbackRef: () => useCallbackRef,
|
|
45
48
|
useIsMounted: () => useIsMounted,
|
|
46
49
|
useMergeRefs: () => useMergeRefs,
|
|
@@ -154,6 +157,48 @@ var useUpdateEffect = (callback, deps) => {
|
|
|
154
157
|
};
|
|
155
158
|
}, []);
|
|
156
159
|
};
|
|
160
|
+
var useAsync = (func, deps = []) => {
|
|
161
|
+
const [state, callback] = useAsyncFunc(func, deps, { loading: true });
|
|
162
|
+
React.useEffect(() => {
|
|
163
|
+
callback();
|
|
164
|
+
}, [callback]);
|
|
165
|
+
return state;
|
|
166
|
+
};
|
|
167
|
+
var useAsyncFunc = (func, deps = [], initialState = { loading: false }) => {
|
|
168
|
+
const lastCallId = React.useRef(0);
|
|
169
|
+
const isMounted = useIsMounted();
|
|
170
|
+
const [state, setState] = React.useState(initialState);
|
|
171
|
+
const callback = React.useCallback((...args) => {
|
|
172
|
+
const callId = ++lastCallId.current;
|
|
173
|
+
if (!state.loading) {
|
|
174
|
+
setState((prevState) => ({ ...prevState, loading: true }));
|
|
175
|
+
}
|
|
176
|
+
return func(...args).then(
|
|
177
|
+
(value) => {
|
|
178
|
+
if (isMounted.current && callId === lastCallId.current)
|
|
179
|
+
setState({ value, loading: false });
|
|
180
|
+
return value;
|
|
181
|
+
},
|
|
182
|
+
(error) => {
|
|
183
|
+
if (isMounted.current && callId === lastCallId.current)
|
|
184
|
+
setState({ error, loading: false });
|
|
185
|
+
return error;
|
|
186
|
+
}
|
|
187
|
+
);
|
|
188
|
+
}, deps);
|
|
189
|
+
return [state, callback];
|
|
190
|
+
};
|
|
191
|
+
var useAsyncRetry = (func, deps = []) => {
|
|
192
|
+
const [attempt, setAttempt] = React.useState(0);
|
|
193
|
+
const state = useAsync(func, [...deps, attempt]);
|
|
194
|
+
const stateLoading = state.loading;
|
|
195
|
+
const retry = React.useCallback(() => {
|
|
196
|
+
if (stateLoading)
|
|
197
|
+
return;
|
|
198
|
+
setAttempt((currentAttempt) => currentAttempt + 1);
|
|
199
|
+
}, [...deps, stateLoading]);
|
|
200
|
+
return { ...state, retry };
|
|
201
|
+
};
|
|
157
202
|
// Annotate the CommonJS export names for ESM import in node:
|
|
158
203
|
0 && (module.exports = {
|
|
159
204
|
assignRef,
|
|
@@ -167,6 +212,9 @@ var useUpdateEffect = (callback, deps) => {
|
|
|
167
212
|
mergeRefs,
|
|
168
213
|
omitChildren,
|
|
169
214
|
pickChildren,
|
|
215
|
+
useAsync,
|
|
216
|
+
useAsyncFunc,
|
|
217
|
+
useAsyncRetry,
|
|
170
218
|
useCallbackRef,
|
|
171
219
|
useIsMounted,
|
|
172
220
|
useMergeRefs,
|
package/dist/react.mjs
CHANGED
|
@@ -10,13 +10,16 @@ import {
|
|
|
10
10
|
mergeRefs,
|
|
11
11
|
omitChildren,
|
|
12
12
|
pickChildren,
|
|
13
|
+
useAsync,
|
|
14
|
+
useAsyncFunc,
|
|
15
|
+
useAsyncRetry,
|
|
13
16
|
useCallbackRef,
|
|
14
17
|
useIsMounted,
|
|
15
18
|
useMergeRefs,
|
|
16
19
|
useSafeLayoutEffect,
|
|
17
20
|
useUnmountEffect,
|
|
18
21
|
useUpdateEffect
|
|
19
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-VPOQGCMS.mjs";
|
|
20
23
|
import "./chunk-SLJ4M7XC.mjs";
|
|
21
24
|
import "./chunk-VYMGBE25.mjs";
|
|
22
25
|
import "./chunk-BZAW2D6U.mjs";
|
|
@@ -37,6 +40,9 @@ export {
|
|
|
37
40
|
mergeRefs,
|
|
38
41
|
omitChildren,
|
|
39
42
|
pickChildren,
|
|
43
|
+
useAsync,
|
|
44
|
+
useAsyncFunc,
|
|
45
|
+
useAsyncRetry,
|
|
40
46
|
useCallbackRef,
|
|
41
47
|
useIsMounted,
|
|
42
48
|
useMergeRefs,
|