@ibiz-template/core 0.6.1-dev.2 → 0.6.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.
Files changed (29) hide show
  1. package/dist/index.esm.js +33 -35
  2. package/dist/index.system.min.js +1 -1
  3. package/out/interface/i-devtool-config/i-devtool-config.d.ts +15 -0
  4. package/out/interface/i-devtool-config/i-devtool-config.d.ts.map +1 -1
  5. package/out/interface/i-portal-message/i-portal-message.d.ts +8 -0
  6. package/out/interface/i-portal-message/i-portal-message.d.ts.map +1 -1
  7. package/out/utils/bit-mask/bit-mask.d.ts +27 -0
  8. package/out/utils/bit-mask/bit-mask.d.ts.map +1 -1
  9. package/out/utils/bit-mask/bit-mask.js +27 -0
  10. package/out/utils/color/color.d.ts.map +1 -1
  11. package/out/utils/color/color.js +8 -4
  12. package/out/utils/download-file/download-file.js +17 -17
  13. package/out/utils/history-list/history-item.d.ts.map +1 -1
  14. package/out/utils/history-list/history-item.js +10 -9
  15. package/out/utils/recursive/find-recursive-child.d.ts +42 -0
  16. package/out/utils/recursive/find-recursive-child.d.ts.map +1 -1
  17. package/out/utils/recursive/find-recursive-child.js +42 -0
  18. package/out/utils/string-util/string-util.d.ts +6 -0
  19. package/out/utils/string-util/string-util.d.ts.map +1 -1
  20. package/out/utils/string-util/string-util.js +6 -0
  21. package/out/utils/sync/await-timeout.d.ts +6 -0
  22. package/out/utils/sync/await-timeout.d.ts.map +1 -1
  23. package/out/utils/sync/await-timeout.js +6 -0
  24. package/out/utils/types/types.d.ts +3 -1
  25. package/out/utils/types/types.d.ts.map +1 -1
  26. package/out/utils/util/util.d.ts +137 -0
  27. package/out/utils/util/util.d.ts.map +1 -1
  28. package/out/utils/util/util.js +137 -0
  29. package/package.json +5 -4
@@ -5,6 +5,29 @@ declare const IterateOpts: {
5
5
  };
6
6
  /**
7
7
  * 递归遍历子元素
8
+ *
9
+ * @description 递归遍历子元素 用法:传入数组和回调函数 无返回值
10
+ * @example
11
+ * ```
12
+ * const parent = {
13
+ * name: 'parent',
14
+ * children: [
15
+ * {
16
+ * name: 'child1',
17
+ * children: [{ name: 'grandchild1' }, { name: 'grandchild2' }],
18
+ * },
19
+ * { name: 'child2', children: [{ name: 'grandchild3' }] },
20
+ * ],
21
+ * };
22
+ *
23
+ * const result: string[] = [];
24
+ *
25
+ * recursiveIterate(parent, item => {
26
+ * result.push(item.name);
27
+ * });
28
+ *
29
+ * result // => ['child1', 'grandchild1', 'grandchild2', 'child2', 'grandchild3']
30
+ * ```
8
31
  * @author lxm
9
32
  * @date 2023-04-23 09:07:06
10
33
  * @export
@@ -30,6 +53,25 @@ type ICompareOpts = Partial<typeof CompareOpts> & {
30
53
  };
31
54
  /**
32
55
  * 递归查找子元素
56
+ *
57
+ * @description 递归查找子元素 用法:传入数组和查找条件 返回值匹配的子元素或undefined
58
+ * @example
59
+ * ```
60
+ * const parent = {
61
+ * name: 'parent',
62
+ * children: [
63
+ * {
64
+ * name: 'child1',
65
+ * children: [{ name: 'grandchild1' }, { name: 'grandchild2' }],
66
+ * },
67
+ * { name: 'child2', children: [{ name: 'grandchild3' }] },
68
+ * ],
69
+ * };
70
+ *
71
+ * const result = findRecursiveChild(parent, 'child1');
72
+ *
73
+ * result // => { name: 'child1', children: [{ name: 'grandchild1' }, { name: 'grandchild2' }] }
74
+ * ```
33
75
  * @author lxm
34
76
  * @date 2023-04-20 08:53:35
35
77
  * @export
@@ -1 +1 @@
1
- {"version":3,"file":"find-recursive-child.d.ts","sourceRoot":"","sources":["../../../src/utils/recursive/find-recursive-child.ts"],"names":[],"mappings":"AAGA,aAAa;AACb,QAAA,MAAM,WAAW;IACf,cAAc;;CAEf,CAAC;AA0CF;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,GAAG,IAAI,EACvC,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,GACjC,IAAI,CAQN;AAED,aAAa;AACb,QAAA,MAAM,WAAW;IAEf,YAAY;;IAtEZ,cAAc;;CAwEf,CAAC;AAEF,KAAK,YAAY,GAAG,OAAO,CAAC,OAAO,WAAW,CAAC,GAAG;IAChD;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAChB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC;CACd,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,YAAY,GAClB,KAAK,GAAG,SAAS,CA0BnB"}
1
+ {"version":3,"file":"find-recursive-child.d.ts","sourceRoot":"","sources":["../../../src/utils/recursive/find-recursive-child.ts"],"names":[],"mappings":"AAGA,aAAa;AACb,QAAA,MAAM,WAAW;IACf,cAAc;;CAEf,CAAC;AA0CF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,EACb,QAAQ,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,GAAG,IAAI,EACvC,IAAI,CAAC,EAAE,OAAO,CAAC,OAAO,WAAW,CAAC,GACjC,IAAI,CAQN;AAED,aAAa;AACb,QAAA,MAAM,WAAW;IAEf,YAAY;;IA7FZ,cAAc;;CA+Ff,CAAC;AAEF,KAAK,YAAY,GAAG,OAAO,CAAC,OAAO,WAAW,CAAC,GAAG;IAChD;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAChB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,MAAM,KACjB,OAAO,CAAC;CACd,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,EACb,GAAG,EAAE,MAAM,EACX,IAAI,CAAC,EAAE,YAAY,GAClB,KAAK,GAAG,SAAS,CA0BnB"}
@@ -40,6 +40,29 @@ function _recursiveIterate(parent, callback, opts) {
40
40
  }
41
41
  /**
42
42
  * 递归遍历子元素
43
+ *
44
+ * @description 递归遍历子元素 用法:传入数组和回调函数 无返回值
45
+ * @example
46
+ * ```
47
+ * const parent = {
48
+ * name: 'parent',
49
+ * children: [
50
+ * {
51
+ * name: 'child1',
52
+ * children: [{ name: 'grandchild1' }, { name: 'grandchild2' }],
53
+ * },
54
+ * { name: 'child2', children: [{ name: 'grandchild3' }] },
55
+ * ],
56
+ * };
57
+ *
58
+ * const result: string[] = [];
59
+ *
60
+ * recursiveIterate(parent, item => {
61
+ * result.push(item.name);
62
+ * });
63
+ *
64
+ * result // => ['child1', 'grandchild1', 'grandchild2', 'child2', 'grandchild3']
65
+ * ```
43
66
  * @author lxm
44
67
  * @date 2023-04-23 09:07:06
45
68
  * @export
@@ -63,6 +86,25 @@ const CompareOpts = Object.assign(Object.assign({}, IterateOpts), {
63
86
  compareField: 'name' });
64
87
  /**
65
88
  * 递归查找子元素
89
+ *
90
+ * @description 递归查找子元素 用法:传入数组和查找条件 返回值匹配的子元素或undefined
91
+ * @example
92
+ * ```
93
+ * const parent = {
94
+ * name: 'parent',
95
+ * children: [
96
+ * {
97
+ * name: 'child1',
98
+ * children: [{ name: 'grandchild1' }, { name: 'grandchild2' }],
99
+ * },
100
+ * { name: 'child2', children: [{ name: 'grandchild3' }] },
101
+ * ],
102
+ * };
103
+ *
104
+ * const result = findRecursiveChild(parent, 'child1');
105
+ *
106
+ * result // => { name: 'child1', children: [{ name: 'grandchild1' }, { name: 'grandchild2' }] }
107
+ * ```
66
108
  * @author lxm
67
109
  * @date 2023-04-20 08:53:35
68
110
  * @export
@@ -26,6 +26,12 @@ export declare class StringUtil {
26
26
  /**
27
27
  * 填充字符串中的数据
28
28
  *
29
+ * @description 填充字符串中的数据 用法:传入需要替换的字符串和对象 返回值是string类型
30
+ * @example
31
+ * ```
32
+ * StringUtil.fill('姓名:${context.name},年龄:${data.age}', { name: '张三', age: 10 }, { name: '李四', age: 25 }); // => '姓名:张三,年龄:25'
33
+ * StringUtil.fill('', { name: '张三', age: 10 }, { name: '李四', age: 25 }); // => ''
34
+ * ```
29
35
  * @author chitanda
30
36
  * @date 2021-04-23 20:04:17
31
37
  * @static
@@ -1 +1 @@
1
- {"version":3,"file":"string-util.d.ts","sourceRoot":"","sources":["../../../src/utils/string-util/string-util.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,SAAgD;IAEjE;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,SAA6C;IAE3D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM;CAmBnE"}
1
+ {"version":3,"file":"string-util.d.ts","sourceRoot":"","sources":["../../../src/utils/string-util/string-util.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,SAAgD;IAEjE;;;;;;OAMG;IACH,MAAM,CAAC,OAAO,SAA6C;IAE3D;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,MAAM;CAmBnE"}
@@ -11,6 +11,12 @@ export class StringUtil {
11
11
  /**
12
12
  * 填充字符串中的数据
13
13
  *
14
+ * @description 填充字符串中的数据 用法:传入需要替换的字符串和对象 返回值是string类型
15
+ * @example
16
+ * ```
17
+ * StringUtil.fill('姓名:${context.name},年龄:${data.age}', { name: '张三', age: 10 }, { name: '李四', age: 25 }); // => '姓名:张三,年龄:25'
18
+ * StringUtil.fill('', { name: '张三', age: 10 }, { name: '李四', age: 25 }); // => ''
19
+ * ```
14
20
  * @author chitanda
15
21
  * @date 2021-04-23 20:04:17
16
22
  * @static
@@ -1,6 +1,12 @@
1
1
  /**
2
2
  * 设置延迟wait毫米后执行fun方法,返回fun的返回值
3
3
  *
4
+ * @description 设置延迟wait毫米后执行fun方法 用法:传入等待时间,函数和参数 返回fun的返回值
5
+ * @example
6
+ * ```
7
+ * awaitTimeout(100, () => 'Hello, World!'); // => 'Hello, World!'
8
+ * awaitTimeout(100, (name: string) => `Hello, ${name}!`, ['John']); // => 'Hello, John!'
9
+ * ```
4
10
  * @author lxm
5
11
  * @date 2023-03-06 08:20:57
6
12
  * @export
@@ -1 +1 @@
1
- {"version":3,"file":"await-timeout.d.ts","sourceRoot":"","sources":["../../../src/utils/sync/await-timeout.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;GAWG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,EAChE,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CASpC"}
1
+ {"version":3,"file":"await-timeout.d.ts","sourceRoot":"","sources":["../../../src/utils/sync/await-timeout.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,EAChE,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,GAAG,EAAE,GACb,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CASpC"}
@@ -2,6 +2,12 @@
2
2
  /**
3
3
  * 设置延迟wait毫米后执行fun方法,返回fun的返回值
4
4
  *
5
+ * @description 设置延迟wait毫米后执行fun方法 用法:传入等待时间,函数和参数 返回fun的返回值
6
+ * @example
7
+ * ```
8
+ * awaitTimeout(100, () => 'Hello, World!'); // => 'Hello, World!'
9
+ * awaitTimeout(100, (name: string) => `Hello, ${name}!`, ['John']); // => 'Hello, John!'
10
+ * ```
5
11
  * @author lxm
6
12
  * @date 2023-03-06 08:20:57
7
13
  * @export
@@ -13,7 +13,9 @@ export type PartialWithObject<T, U> = {
13
13
  /**
14
14
  * 从T里面只获取索引类型为string的键
15
15
  */
16
- export type StrKeyOf<T> = Extract<keyof T, string>;
16
+ export type StrKeyOf<T> = {
17
+ [K in keyof T]: T[K] extends string ? K : never;
18
+ }[keyof T];
17
19
  /**
18
20
  * 构造函数接口,声明一个返回对象是T的构造函数,不传则返回类型是any
19
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types/types.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI;KACnC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/utils/types/types.ts"],"names":[],"mappings":"AACA;;GAEG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,EAAE,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,CAAC;AAEvE;;GAEG;AACH,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,IAAI;KACnC,CAAC,IAAI,MAAM,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACpC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAEf;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KACvB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,KAAK;CAChD,CAAC,MAAM,CAAC,CAAC,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
@@ -10,6 +10,12 @@ export declare function getToken(): string | null;
10
10
  /**
11
11
  * 判断两个数组是否有相同的元素
12
12
  *
13
+ * @description 判断两个数组是否有相同的元素, 用法: 传入两个数组 返回值为boolean类型
14
+ * @example
15
+ * ```
16
+ * isOverlap([1, 2, 3], [3, 4, 5]) // => true
17
+ * isOverlap([1, 2, 3], [4, 5, 6]) // => false
18
+ * ```
13
19
  * @author lxm
14
20
  * @date 2022-09-20 19:09:29
15
21
  * @export
@@ -20,6 +26,11 @@ export declare function getToken(): string | null;
20
26
  export declare function isOverlap(arr1: any[], arr2: any[]): boolean;
21
27
  /**
22
28
  * 是否元素相同
29
+ *
30
+ * @description 判断两个数组是否元素相同, 用法:传入需要判断的数组 返回值是boolean类型
31
+ * @example
32
+ * isOverlap([1, 2, 3], [1, 2, 3]) // => true
33
+ * isOverlap([{ test1: 1, test2: 2, test3: 3 }, { test1: 2, test2: 2, test3: 3 }], [{ test1: 1, test2: 2, test3: 3 }, { test1: 2, test2: 2, test3: 3 }], 'test1') // => true
23
34
  * @author lxm
24
35
  * @date 2023-05-22 12:50:53
25
36
  * @export
@@ -33,6 +44,30 @@ export declare function isElementSame(arr1: any[], arr2: any[], field?: string):
33
44
  * 防抖并合并每次的参数,
34
45
  * 最后一次才会执行
35
46
  *
47
+ * @description 防抖并合并每次的参数,最后一次才会执行 用法:传入要防抖的函数和合并参数函数 有需要又可以传入时间 返回防抖函数执行值
48
+ * @example
49
+ * ```
50
+ * // 定义测试函数
51
+ * function testFunc(a, b) {
52
+ * console.log(`testFunc called with (${a}, ${b})`);
53
+ * }
54
+ *
55
+ * function testMerge(oldParams, newParams) {
56
+ * // 将相邻的重复函数调用合并为一个函数调用,只取第一个参数 a,第二个参数 b 取最后一次调用时的值
57
+ * const [a] = oldParams;
58
+ * const [, b] = newParams;
59
+ * return [a, b];
60
+ * }
61
+ *
62
+ * // 创建一个节流后的函数
63
+ * const debouncedTestFunc = debounceAndMerge(testFunc, testMerge, 1000);
64
+ *
65
+ * // 连续调用多次,但只会在最后一次调用时输出
66
+ * debouncedTestFunc(1, 2);
67
+ * debouncedTestFunc(2, 3);
68
+ * debouncedTestFunc(3, 4);
69
+ * debouncedTestFunc(4, 5); // testFunc called with (1, 5)
70
+ * ```
36
71
  * @author lxm
37
72
  * @date 2022-09-20 21:09:53
38
73
  * @export
@@ -50,6 +85,44 @@ export declare function debounceAndMerge<T extends (...args: any[]) => any>(func
50
85
  * 防抖并合并每次的参数,最后一次才会执行
51
86
  * 绑定方法为异步方法,给每次调用返回最终执行那次的结果
52
87
  *
88
+ * @description 防抖并合并每次的参数,最后一次才会执行,绑定方法为异步方法,给每次调用返回最终执行那次的结果 用法:传入要防抖的函数和合并参数函数 返回Promise
89
+ * @example
90
+ * ```
91
+ * // 定义一个异步函数
92
+ * async function logData(params) {
93
+ * return new Promise(resolve => {
94
+ * setTimeout(() => {
95
+ * resolve(params);
96
+ * }, 1000);
97
+ * });
98
+ * }
99
+ *
100
+ * // 定义合并参数的函数,每次只保留最后一次的参数
101
+ * function mergeParams(oldParams, newParams) {
102
+ * return newParams;
103
+ * }
104
+ *
105
+ * // 创建防抖函数
106
+ * const debouncedLogData = debounceAndAsyncMerge(logData, mergeParams, 500);
107
+ *
108
+ * // 模拟连续3次调用
109
+ * debouncedLogData('a').then(result => {
110
+ * console.log('Result of first call:', result); // => Result of first call: c
111
+ * });
112
+ * debouncedLogData('b').then(result => {
113
+ * console.log('Result of second call:', result); // => Result of first call: c
114
+ * });
115
+ * debouncedLogData('c').then(result => {
116
+ * console.log('Result of third call:', result); // => Result of first call: c
117
+ * });
118
+ *
119
+ * // 等待 2000 毫秒后再次调用,会再次输出
120
+ * setTimeout(() => {
121
+ * debouncedLogData('d').then(result => {
122
+ * console.log('Result of fourth call:', result); // => Result of fourth call: d
123
+ * });
124
+ * }, 2000);
125
+ * ```
53
126
  * @author lxm
54
127
  * @date 2022-09-20 21:09:53
55
128
  * @export
@@ -65,6 +138,13 @@ export declare function debounceAndMerge<T extends (...args: any[]) => any>(func
65
138
  export declare function debounceAndAsyncMerge<T extends (...args: any[]) => Promise<any>>(func: T, mergeFunc: (oldParams: Parameters<T>, newParams: Parameters<T>) => Parameters<T>, wait?: number): T;
66
139
  /**
67
140
  * 把右侧的对象里非空的属性合并到左侧对象里
141
+ *
142
+ * @description 把右侧的对象里非空的属性合并到左侧对象里, 用法:传入需要合并的数组 无返回值
143
+ * @example
144
+ * ```
145
+ * obj1 = { a: 1, b: 2 }; obj2 = { c: null, d: false, e: undefined, f: 0, g: {} }; mergeInLeft(obj1, obj2); // => obj1 修改为 { a: 1, b: 2, d: false, f: 0, g: {} }
146
+ * obj1 = { a: 1, b: 2 }; obj2 = { a: 2, b: 3, c: null, d: false, e: undefined, f: 0, g: {} }; // => obj1 修改为 { a: 2, b: 3, d: false, f: 0, g: {} }
147
+ * ```
68
148
  * @author lxm
69
149
  * @date 2023-05-16 02:23:39
70
150
  * @param {IData} l
@@ -74,6 +154,12 @@ export declare function mergeInLeft(l: IData, r: IData): void;
74
154
  /**
75
155
  * 把右侧的对象里非空的属性合并到左侧对象属性为空里
76
156
  *
157
+ * @description 把右侧的对象里非空的属性合并到左侧对象属性为空里, 用法:传入需要合并的数组 无返回值
158
+ * @example
159
+ * ```
160
+ * obj1 = { a: 1, b: 2 }; obj2 = { c: null, d: false, e: undefined, f: 0, g: {} }; mergeInLeft(obj1, obj2); // => obj1 修改为 { a: 1, b: 2, d: false, f: 0, g: {} }
161
+ * obj1 = { a: 1, b: 2 }; obj2 = { a: 2, b: 3, c: null, d: false, e: undefined, f: 0, g: {} }; // => obj1 修改为 { a: 1, b: 2, d: false, f: 0, g: {} }
162
+ * ```
77
163
  * @author zk
78
164
  * @date 2023-06-01 02:06:36
79
165
  * @export
@@ -83,6 +169,15 @@ export declare function mergeInLeft(l: IData, r: IData): void;
83
169
  export declare function mergeDefaultInLeft(l: IData, r: IData): void;
84
170
  /**
85
171
  * 比较两个数组集合,找出相同和不同的元素
172
+ *
173
+ * @description 比较两个数组集合,找出相同和不同的元素 用法:传入需要比较的两个数组 返回值是{more: IData[], less: IData[], same: IData[]}
174
+ * @example
175
+ * ```
176
+ * 数组中没有引用对象
177
+ * compareArr([1, 2, false, true, undefined, null], [1, false, undefined]); // => {more: [2, true, null], less: [], same: [1, false, undefined]}
178
+ * 数组中有引用对象
179
+ * compareArr([{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }], [{ id: 2, name: 'Jane' }, { id: 3, name: 'Bob' }], 'id') // => {more: [{ id: 1, name: 'John' }], less: [{ id: 3, name: 'Bob' }], same: [{ id: 2, name: 'Jane' }, { id: 2, name: 'Jane' }]}
180
+ * ```
86
181
  * @author lxm
87
182
  * @date 2023-05-29 12:33:55
88
183
  * @export
@@ -104,6 +199,13 @@ export declare function compareArr(arr1: IData[], arr2: IData[], keyField?: stri
104
199
  * 转换为数字或undefined
105
200
  * - 如果是undefined或null 返回undefined
106
201
  * - 其他情况转成数字,能转成数字的返回数字,NaN的返回undefined
202
+ *
203
+ * @description 转换为数字或undefined,如果是undefined或null 返回undefined,其他情况转成数字,能转成数字的返回数字,NaN的返回undefined 用法:传入任意值 返回值为number或undefined类型
204
+ * @example
205
+ * ```
206
+ * toNumberOrNil(5); // => 5
207
+ * toNumberOrNil(undefined); // => undefined
208
+ * ```
107
209
  * @author lxm
108
210
  * @date 2023-06-08 06:30:57
109
211
  * @param {unknown} value 值
@@ -112,6 +214,13 @@ export declare function compareArr(arr1: IData[], arr2: IData[], keyField?: stri
112
214
  export declare function toNumberOrNil(value: unknown): number | undefined;
113
215
  /**
114
216
  * 判断字符串是否是svg的格式
217
+ *
218
+ * @description 判断字符串是否是svg的格式 用法:传入svg字符串 返回值为Boolean类型
219
+ * @example
220
+ * ```
221
+ * isSvg('<svg xmlns="http://www.w3.org/2000/svg"><rect x="10" y="10" width="100" height="100" fill="red" /></svg>'); // => true
222
+ * isSvg('<svg1 xmlns="http://www.w3.org/2000/svg"><rect x="10" y="10" width="100" height="100" fill="red" /></svg1>'); // => false
223
+ * ```
115
224
  * @author lxm
116
225
  * @date 2023-10-17 02:04:28
117
226
  * @export
@@ -121,6 +230,13 @@ export declare function toNumberOrNil(value: unknown): number | undefined;
121
230
  export declare function isSvg(str: string): boolean;
122
231
  /**
123
232
  * 处理浮点数相加
233
+ *
234
+ * @description 处理浮点数相加 用法:传入需要相加的数值 返回值为number类型
235
+ * @example
236
+ * ```
237
+ * plus(10, 10); // => 20
238
+ * plus(99.99, -99.999); // => -0.009
239
+ * ```
124
240
  * @param {number} a
125
241
  * @param {number} b
126
242
  * @return {*}
@@ -131,6 +247,13 @@ export declare function plus(a: number, b: number): number;
131
247
  /**
132
248
  * 根据给定的属性名称集合,
133
249
  * 查看目标对象是否具有该属性,如果没有设置undefined的定义
250
+ *
251
+ * @description 根据给定的属性名称集合,查看目标对象是否具有该属性,如果没有设置undefined的定义 ,用法:传入对象和字符串 无返回值
252
+ * @example
253
+ * ```
254
+ * obj = { a: '' }; updateKeyDefine(obj, ['b']); // => obj 修改为 {a: '', b: undefined}
255
+ * obj = { a: '' }; updateKeyDefine(obj, ['a', 'b']) // => obj 修改为 {a: '', b: undefined}
256
+ * ```
134
257
  * @author lxm
135
258
  * @date 2023-12-20 05:21:47
136
259
  * @export
@@ -140,6 +263,13 @@ export declare function plus(a: number, b: number): number;
140
263
  export declare function updateKeyDefine(target: IParams, keys: (string | symbol)[]): void;
141
264
  /**
142
265
  * 判断字符串是否为Base64图片格式
266
+ *
267
+ * @description 判断字符串是否为Base64图片格式, 用法传入字符串 返回值为boolean类型
268
+ * @example
269
+ * ```
270
+ * isBase64Image('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAmklEQVQ4T2NkoBAwUqifYt4q8ogcCQ3NjY2BgYGBgZmBgY9oRk5Ojy8vLz8+PjQ2NjYGBgYGBhZmBggcCQ3NjY2BgYGhnb4FlDyECYAw6fQGp7QUhYGAQ0AC8Dtdu4AxsAAAAAElFTkSuQmCC'); // => true
271
+ * isBase64Image('data:image/png;,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAmklEQVQ4T2NkoBAwUqifYt4q8ogcCQ3NjY2BgYGBgZmBgY9oRk5Ojy8vLz8+PjQ2NjYGBgYGBhZmBggcCQ3NjY2BgYGhnb4FlDyECYAw6fQGp7QUhYGAQ0AC8Dtdu4AxsAAAAAElFTkSuQmCC'); // => false
272
+ * ```
143
273
  * @param {string} str
144
274
  * @return {*}
145
275
  * @author: zhujiamin
@@ -148,6 +278,13 @@ export declare function updateKeyDefine(target: IParams, keys: (string | symbol)
148
278
  export declare function isBase64Image(str: string): boolean;
149
279
  /**
150
280
  * 计算各种视图打开方式的样式
281
+ *
282
+ * @description 用于计算各种视图打开方式的样式, 用法:传入数值和视图类型 返回值为number或string类型
283
+ * @example
284
+ * ```
285
+ * calcOpenModeStyle(0, 'drawer'); // => '0%'
286
+ * calcOpenModeStyle(150, 'drawer'); // => 150
287
+ * ```
151
288
  * @param {number} value
152
289
  * @return {*}
153
290
  * @author: zhujiamin
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/utils/util/util.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAExC;AAED;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAG3D;AAED;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,EAAE,GAAG,EAAE,EACX,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAUT;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAChE,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,CACT,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EACxB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KACrB,UAAU,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAiBjC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAE1C,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,CACT,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EACxB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KACrB,UAAU,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,CAAC,CAoCH;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAMpD;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAM3D;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,KAAK,EAAE,EACb,IAAI,EAAE,KAAK,EAAE,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB;IACD,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,IAAI,EAAE,KAAK,EAAE,CAAC;CACf,CAuCA;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAShE;AAID;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1C;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAejD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACxB,IAAI,CAWN;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGlD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GACnC,MAAM,GAAG,MAAM,CAUjB"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/utils/util/util.ts"],"names":[],"mappings":"AAMA;;;;;;;GAOG;AACH,wBAAgB,QAAQ,IAAI,MAAM,GAAG,IAAI,CAExC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAG3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,GAAG,EAAE,EACX,IAAI,EAAE,GAAG,EAAE,EACX,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAUT;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,EAChE,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,CACT,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EACxB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KACrB,UAAU,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAiBjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC,EAE1C,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,CACT,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EACxB,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,KACrB,UAAU,CAAC,CAAC,CAAC,EAClB,IAAI,CAAC,EAAE,MAAM,GACZ,CAAC,CAoCH;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAMpD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAG,IAAI,CAM3D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,KAAK,EAAE,EACb,IAAI,EAAE,KAAK,EAAE,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB;IACD,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,IAAI,EAAE,KAAK,EAAE,CAAC;CACf,CAuCA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAShE;AAID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE1C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAejD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,OAAO,EACf,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,GACxB,IAAI,CAWN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAGlD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,SAAS,GACnC,MAAM,GAAG,MAAM,CAUjB"}
@@ -17,6 +17,12 @@ export function getToken() {
17
17
  /**
18
18
  * 判断两个数组是否有相同的元素
19
19
  *
20
+ * @description 判断两个数组是否有相同的元素, 用法: 传入两个数组 返回值为boolean类型
21
+ * @example
22
+ * ```
23
+ * isOverlap([1, 2, 3], [3, 4, 5]) // => true
24
+ * isOverlap([1, 2, 3], [4, 5, 6]) // => false
25
+ * ```
20
26
  * @author lxm
21
27
  * @date 2022-09-20 19:09:29
22
28
  * @export
@@ -30,6 +36,11 @@ export function isOverlap(arr1, arr2) {
30
36
  }
31
37
  /**
32
38
  * 是否元素相同
39
+ *
40
+ * @description 判断两个数组是否元素相同, 用法:传入需要判断的数组 返回值是boolean类型
41
+ * @example
42
+ * isOverlap([1, 2, 3], [1, 2, 3]) // => true
43
+ * isOverlap([{ test1: 1, test2: 2, test3: 3 }, { test1: 2, test2: 2, test3: 3 }], [{ test1: 1, test2: 2, test3: 3 }, { test1: 2, test2: 2, test3: 3 }], 'test1') // => true
33
44
  * @author lxm
34
45
  * @date 2023-05-22 12:50:53
35
46
  * @export
@@ -52,6 +63,30 @@ export function isElementSame(arr1, arr2, field) {
52
63
  * 防抖并合并每次的参数,
53
64
  * 最后一次才会执行
54
65
  *
66
+ * @description 防抖并合并每次的参数,最后一次才会执行 用法:传入要防抖的函数和合并参数函数 有需要又可以传入时间 返回防抖函数执行值
67
+ * @example
68
+ * ```
69
+ * // 定义测试函数
70
+ * function testFunc(a, b) {
71
+ * console.log(`testFunc called with (${a}, ${b})`);
72
+ * }
73
+ *
74
+ * function testMerge(oldParams, newParams) {
75
+ * // 将相邻的重复函数调用合并为一个函数调用,只取第一个参数 a,第二个参数 b 取最后一次调用时的值
76
+ * const [a] = oldParams;
77
+ * const [, b] = newParams;
78
+ * return [a, b];
79
+ * }
80
+ *
81
+ * // 创建一个节流后的函数
82
+ * const debouncedTestFunc = debounceAndMerge(testFunc, testMerge, 1000);
83
+ *
84
+ * // 连续调用多次,但只会在最后一次调用时输出
85
+ * debouncedTestFunc(1, 2);
86
+ * debouncedTestFunc(2, 3);
87
+ * debouncedTestFunc(3, 4);
88
+ * debouncedTestFunc(4, 5); // testFunc called with (1, 5)
89
+ * ```
55
90
  * @author lxm
56
91
  * @date 2022-09-20 21:09:53
57
92
  * @export
@@ -86,6 +121,44 @@ export function debounceAndMerge(func, mergeFunc, wait) {
86
121
  * 防抖并合并每次的参数,最后一次才会执行
87
122
  * 绑定方法为异步方法,给每次调用返回最终执行那次的结果
88
123
  *
124
+ * @description 防抖并合并每次的参数,最后一次才会执行,绑定方法为异步方法,给每次调用返回最终执行那次的结果 用法:传入要防抖的函数和合并参数函数 返回Promise
125
+ * @example
126
+ * ```
127
+ * // 定义一个异步函数
128
+ * async function logData(params) {
129
+ * return new Promise(resolve => {
130
+ * setTimeout(() => {
131
+ * resolve(params);
132
+ * }, 1000);
133
+ * });
134
+ * }
135
+ *
136
+ * // 定义合并参数的函数,每次只保留最后一次的参数
137
+ * function mergeParams(oldParams, newParams) {
138
+ * return newParams;
139
+ * }
140
+ *
141
+ * // 创建防抖函数
142
+ * const debouncedLogData = debounceAndAsyncMerge(logData, mergeParams, 500);
143
+ *
144
+ * // 模拟连续3次调用
145
+ * debouncedLogData('a').then(result => {
146
+ * console.log('Result of first call:', result); // => Result of first call: c
147
+ * });
148
+ * debouncedLogData('b').then(result => {
149
+ * console.log('Result of second call:', result); // => Result of first call: c
150
+ * });
151
+ * debouncedLogData('c').then(result => {
152
+ * console.log('Result of third call:', result); // => Result of first call: c
153
+ * });
154
+ *
155
+ * // 等待 2000 毫秒后再次调用,会再次输出
156
+ * setTimeout(() => {
157
+ * debouncedLogData('d').then(result => {
158
+ * console.log('Result of fourth call:', result); // => Result of fourth call: d
159
+ * });
160
+ * }, 2000);
161
+ * ```
89
162
  * @author lxm
90
163
  * @date 2022-09-20 21:09:53
91
164
  * @export
@@ -138,6 +211,13 @@ export function debounceAndAsyncMerge(func, mergeFunc, wait) {
138
211
  }
139
212
  /**
140
213
  * 把右侧的对象里非空的属性合并到左侧对象里
214
+ *
215
+ * @description 把右侧的对象里非空的属性合并到左侧对象里, 用法:传入需要合并的数组 无返回值
216
+ * @example
217
+ * ```
218
+ * obj1 = { a: 1, b: 2 }; obj2 = { c: null, d: false, e: undefined, f: 0, g: {} }; mergeInLeft(obj1, obj2); // => obj1 修改为 { a: 1, b: 2, d: false, f: 0, g: {} }
219
+ * obj1 = { a: 1, b: 2 }; obj2 = { a: 2, b: 3, c: null, d: false, e: undefined, f: 0, g: {} }; // => obj1 修改为 { a: 2, b: 3, d: false, f: 0, g: {} }
220
+ * ```
141
221
  * @author lxm
142
222
  * @date 2023-05-16 02:23:39
143
223
  * @param {IData} l
@@ -153,6 +233,12 @@ export function mergeInLeft(l, r) {
153
233
  /**
154
234
  * 把右侧的对象里非空的属性合并到左侧对象属性为空里
155
235
  *
236
+ * @description 把右侧的对象里非空的属性合并到左侧对象属性为空里, 用法:传入需要合并的数组 无返回值
237
+ * @example
238
+ * ```
239
+ * obj1 = { a: 1, b: 2 }; obj2 = { c: null, d: false, e: undefined, f: 0, g: {} }; mergeInLeft(obj1, obj2); // => obj1 修改为 { a: 1, b: 2, d: false, f: 0, g: {} }
240
+ * obj1 = { a: 1, b: 2 }; obj2 = { a: 2, b: 3, c: null, d: false, e: undefined, f: 0, g: {} }; // => obj1 修改为 { a: 1, b: 2, d: false, f: 0, g: {} }
241
+ * ```
156
242
  * @author zk
157
243
  * @date 2023-06-01 02:06:36
158
244
  * @export
@@ -168,6 +254,15 @@ export function mergeDefaultInLeft(l, r) {
168
254
  }
169
255
  /**
170
256
  * 比较两个数组集合,找出相同和不同的元素
257
+ *
258
+ * @description 比较两个数组集合,找出相同和不同的元素 用法:传入需要比较的两个数组 返回值是{more: IData[], less: IData[], same: IData[]}
259
+ * @example
260
+ * ```
261
+ * 数组中没有引用对象
262
+ * compareArr([1, 2, false, true, undefined, null], [1, false, undefined]); // => {more: [2, true, null], less: [], same: [1, false, undefined]}
263
+ * 数组中有引用对象
264
+ * compareArr([{ id: 1, name: 'John' }, { id: 2, name: 'Jane' }], [{ id: 2, name: 'Jane' }, { id: 3, name: 'Bob' }], 'id') // => {more: [{ id: 1, name: 'John' }], less: [{ id: 3, name: 'Bob' }], same: [{ id: 2, name: 'Jane' }, { id: 2, name: 'Jane' }]}
265
+ * ```
171
266
  * @author lxm
172
267
  * @date 2023-05-29 12:33:55
173
268
  * @export
@@ -223,6 +318,13 @@ export function compareArr(arr1, arr2, keyField) {
223
318
  * 转换为数字或undefined
224
319
  * - 如果是undefined或null 返回undefined
225
320
  * - 其他情况转成数字,能转成数字的返回数字,NaN的返回undefined
321
+ *
322
+ * @description 转换为数字或undefined,如果是undefined或null 返回undefined,其他情况转成数字,能转成数字的返回数字,NaN的返回undefined 用法:传入任意值 返回值为number或undefined类型
323
+ * @example
324
+ * ```
325
+ * toNumberOrNil(5); // => 5
326
+ * toNumberOrNil(undefined); // => undefined
327
+ * ```
226
328
  * @author lxm
227
329
  * @date 2023-06-08 06:30:57
228
330
  * @param {unknown} value 值
@@ -241,6 +343,13 @@ export function toNumberOrNil(value) {
241
343
  const SvgPattern = /<svg\b[^>]*>[\s\S]*?<\/svg>/;
242
344
  /**
243
345
  * 判断字符串是否是svg的格式
346
+ *
347
+ * @description 判断字符串是否是svg的格式 用法:传入svg字符串 返回值为Boolean类型
348
+ * @example
349
+ * ```
350
+ * isSvg('<svg xmlns="http://www.w3.org/2000/svg"><rect x="10" y="10" width="100" height="100" fill="red" /></svg>'); // => true
351
+ * isSvg('<svg1 xmlns="http://www.w3.org/2000/svg"><rect x="10" y="10" width="100" height="100" fill="red" /></svg1>'); // => false
352
+ * ```
244
353
  * @author lxm
245
354
  * @date 2023-10-17 02:04:28
246
355
  * @export
@@ -252,6 +361,13 @@ export function isSvg(str) {
252
361
  }
253
362
  /**
254
363
  * 处理浮点数相加
364
+ *
365
+ * @description 处理浮点数相加 用法:传入需要相加的数值 返回值为number类型
366
+ * @example
367
+ * ```
368
+ * plus(10, 10); // => 20
369
+ * plus(99.99, -99.999); // => -0.009
370
+ * ```
255
371
  * @param {number} a
256
372
  * @param {number} b
257
373
  * @return {*}
@@ -279,6 +395,13 @@ export function plus(a, b) {
279
395
  /**
280
396
  * 根据给定的属性名称集合,
281
397
  * 查看目标对象是否具有该属性,如果没有设置undefined的定义
398
+ *
399
+ * @description 根据给定的属性名称集合,查看目标对象是否具有该属性,如果没有设置undefined的定义 ,用法:传入对象和字符串 无返回值
400
+ * @example
401
+ * ```
402
+ * obj = { a: '' }; updateKeyDefine(obj, ['b']); // => obj 修改为 {a: '', b: undefined}
403
+ * obj = { a: '' }; updateKeyDefine(obj, ['a', 'b']) // => obj 修改为 {a: '', b: undefined}
404
+ * ```
282
405
  * @author lxm
283
406
  * @date 2023-12-20 05:21:47
284
407
  * @export
@@ -299,6 +422,13 @@ export function updateKeyDefine(target, keys) {
299
422
  }
300
423
  /**
301
424
  * 判断字符串是否为Base64图片格式
425
+ *
426
+ * @description 判断字符串是否为Base64图片格式, 用法传入字符串 返回值为boolean类型
427
+ * @example
428
+ * ```
429
+ * isBase64Image('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAmklEQVQ4T2NkoBAwUqifYt4q8ogcCQ3NjY2BgYGBgZmBgY9oRk5Ojy8vLz8+PjQ2NjYGBgYGBhZmBggcCQ3NjY2BgYGhnb4FlDyECYAw6fQGp7QUhYGAQ0AC8Dtdu4AxsAAAAAElFTkSuQmCC'); // => true
430
+ * isBase64Image('data:image/png;,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAmklEQVQ4T2NkoBAwUqifYt4q8ogcCQ3NjY2BgYGBgZmBgY9oRk5Ojy8vLz8+PjQ2NjYGBgYGBhZmBggcCQ3NjY2BgYGhnb4FlDyECYAw6fQGp7QUhYGAQ0AC8Dtdu4AxsAAAAAElFTkSuQmCC'); // => false
431
+ * ```
302
432
  * @param {string} str
303
433
  * @return {*}
304
434
  * @author: zhujiamin
@@ -310,6 +440,13 @@ export function isBase64Image(str) {
310
440
  }
311
441
  /**
312
442
  * 计算各种视图打开方式的样式
443
+ *
444
+ * @description 用于计算各种视图打开方式的样式, 用法:传入数值和视图类型 返回值为number或string类型
445
+ * @example
446
+ * ```
447
+ * calcOpenModeStyle(0, 'drawer'); // => '0%'
448
+ * calcOpenModeStyle(150, 'drawer'); // => 150
449
+ * ```
313
450
  * @param {number} value
314
451
  * @return {*}
315
452
  * @author: zhujiamin