@cmtlyt/lingshu-toolkit 0.1.0 → 0.1.1
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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useEffect, useEffectEvent, useMemo, useRef, useState } from "react";
|
|
2
|
-
import { dataHandler, logger, $dt, $t } from "
|
|
2
|
+
import { dataHandler, logger, $dt, $t } from "../607.js";
|
|
3
3
|
function useValidData(data, verifyInfo, options) {
|
|
4
4
|
const verifyInfoRef = useRef(verifyInfo);
|
|
5
5
|
const optionsRef = useRef(options);
|
|
@@ -82,5 +82,5 @@ function useCounter(initialValue = 0, options = {}) {
|
|
|
82
82
|
actions
|
|
83
83
|
];
|
|
84
84
|
}
|
|
85
|
-
export { $dt, $t, defineTransform } from "
|
|
85
|
+
export { $dt, $t, defineTransform } from "../607.js";
|
|
86
86
|
export { useControllableValue, useCounter, useValidData };
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import type { NotUnion } from '../../shared/types';
|
|
2
1
|
interface UseControllableValueOptions<Ks extends PropertyKey = PropertyKey, P extends Ks | (string & {}) = 'value'> {
|
|
3
2
|
defaultValue: any;
|
|
4
3
|
defaultValuePropName: Ks;
|
|
@@ -6,9 +5,11 @@ interface UseControllableValueOptions<Ks extends PropertyKey = PropertyKey, P ex
|
|
|
6
5
|
trigger: Ks;
|
|
7
6
|
}
|
|
8
7
|
export type PublicUseControllableValueOptions<Ks extends PropertyKey = PropertyKey, P extends Ks | (string & {}) = 'value'> = Partial<UseControllableValueOptions<Ks, P>>;
|
|
9
|
-
type
|
|
8
|
+
type ParseDefaultValue<OT extends Record<PropertyKey, any>, O extends PublicUseControllableValueOptions> = O['defaultValuePropName'] extends keyof OT ? OT[O['defaultValuePropName']] : O['defaultValue'];
|
|
9
|
+
type Defaultize<OT extends Record<PropertyKey, any>, P extends keyof OT | (string & {}), O extends PublicUseControllableValueOptions> = P extends keyof OT ? undefined extends OT[P] ? OT[P] & ParseDefaultValue<OT, O> : OT[P] : ParseDefaultValue<OT, O>;
|
|
10
|
+
type ValueType<T extends Record<PropertyKey, any>, O extends PublicUseControllableValueOptions<PropertyKey, any>> = O['valuePropName'] extends keyof T ? Defaultize<T, O['valuePropName'], O> : Defaultize<T, 'value', O>;
|
|
10
11
|
/**
|
|
11
12
|
* 受控组件 value 逻辑切换, 如果传递了 value 则走受控逻辑, 否则走非受控逻辑
|
|
12
13
|
*/
|
|
13
|
-
export declare function useControllableValue<T extends Record<PropertyKey, any>, P extends keyof T | (string & {}) = PropertyKey
|
|
14
|
+
export declare function useControllableValue<T extends Record<PropertyKey, any>, P extends keyof T | (string & {}) = PropertyKey, O extends PublicUseControllableValueOptions<keyof T, P> = PublicUseControllableValueOptions<keyof T, P>>(props?: T, options?: O): [ValueType<T, O>, (value: ValueType<T, O>, ...args: any[]) => void];
|
|
14
15
|
export {};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { logger } from "../logger/index.js";
|
|
2
|
+
function getType(_v) {
|
|
3
|
+
return Object.prototype.toString.call(_v).slice(8, -1).toLowerCase();
|
|
4
|
+
}
|
|
5
|
+
function typeHandler(type, verifyFn) {
|
|
6
|
+
return (fullback)=>(_v, actions)=>{
|
|
7
|
+
if (verifyFn ? verifyFn(_v) : getType(_v) === type) return true;
|
|
8
|
+
if (null == fullback) return false;
|
|
9
|
+
let fullbackValue = fullback;
|
|
10
|
+
if ('function' == typeof fullback) fullbackValue = fullback(_v);
|
|
11
|
+
actions.transform(fullbackValue);
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
const $t = {
|
|
15
|
+
notNullable: typeHandler('notNullable', (_v)=>null != _v),
|
|
16
|
+
string: typeHandler('string'),
|
|
17
|
+
validString: typeHandler('validString', (_v)=>'string' == typeof _v && _v.length > 0),
|
|
18
|
+
number: typeHandler('number'),
|
|
19
|
+
validNumber: typeHandler('validNumber', (_v)=>'number' == typeof _v && !Number.isNaN(_v)),
|
|
20
|
+
boolean: typeHandler('boolean'),
|
|
21
|
+
object: typeHandler('object'),
|
|
22
|
+
array: typeHandler('array'),
|
|
23
|
+
function: typeHandler('function'),
|
|
24
|
+
symbol: typeHandler('symbol')
|
|
25
|
+
};
|
|
26
|
+
function defineTransform(dataInfo) {
|
|
27
|
+
const verifyInfo = {};
|
|
28
|
+
const keys = Reflect.ownKeys(dataInfo);
|
|
29
|
+
for(let i = 0, key = keys[i], item = dataInfo[key]; i < keys.length; key = keys[++i], item = dataInfo[key]){
|
|
30
|
+
if ('function' == typeof item) {
|
|
31
|
+
verifyInfo[key] = item;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
const handler = $t[item];
|
|
35
|
+
if (!handler) {
|
|
36
|
+
logger.warn(`${item} is not a valid type`);
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
verifyInfo[key] = handler();
|
|
40
|
+
}
|
|
41
|
+
return verifyInfo;
|
|
42
|
+
}
|
|
43
|
+
const $dt = defineTransform;
|
|
44
|
+
export { $dt, $t, defineTransform };
|
|
File without changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { $dt, $t, dataHandler, defineTransform, throwError, throwType } from "
|
|
1
|
+
export { $dt, $t, dataHandler, defineTransform, throwError, throwType } from "../607.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cmtlyt/lingshu-toolkit",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/shared.js",
|
|
6
6
|
"module": "./dist/shared.js",
|
|
@@ -8,20 +8,22 @@
|
|
|
8
8
|
"exports": {
|
|
9
9
|
".": {
|
|
10
10
|
"types": "./dist/shared/index.d.ts",
|
|
11
|
-
"import": "./dist/shared.js"
|
|
11
|
+
"import": "./dist/shared/index.js"
|
|
12
12
|
},
|
|
13
13
|
"./react": {
|
|
14
14
|
"types": "./dist/react/index.d.ts",
|
|
15
|
-
"import": "./dist/react.js"
|
|
15
|
+
"import": "./dist/react/index.js"
|
|
16
16
|
},
|
|
17
17
|
"./react/*": {
|
|
18
|
+
"types": "./dist/react/*/index.d.ts",
|
|
18
19
|
"import": "./dist/react/*"
|
|
19
20
|
},
|
|
20
21
|
"./shared": {
|
|
21
22
|
"types": "./dist/shared/index.d.ts",
|
|
22
|
-
"import": "./dist/shared.js"
|
|
23
|
+
"import": "./dist/shared/index.js"
|
|
23
24
|
},
|
|
24
25
|
"./shared/*": {
|
|
26
|
+
"types": "./dist/shared/*/index.d.ts",
|
|
25
27
|
"import": "./dist/shared/*"
|
|
26
28
|
}
|
|
27
29
|
},
|