sculp-js 1.7.0 → 1.7.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 (61) hide show
  1. package/README.md +2 -1
  2. package/lib/cjs/array.js +1 -1
  3. package/lib/cjs/async.js +1 -1
  4. package/lib/cjs/base64.js +1 -1
  5. package/lib/cjs/clipboard.js +1 -1
  6. package/lib/cjs/cookie.js +1 -1
  7. package/lib/cjs/date.js +1 -1
  8. package/lib/cjs/dom.js +1 -1
  9. package/lib/cjs/download.js +1 -1
  10. package/lib/cjs/easing.js +1 -1
  11. package/lib/cjs/file.js +1 -1
  12. package/lib/cjs/func.js +1 -1
  13. package/lib/cjs/index.js +2 -2
  14. package/lib/cjs/math.js +1 -1
  15. package/lib/cjs/number.js +1 -1
  16. package/lib/cjs/object.js +104 -20
  17. package/lib/cjs/path.js +1 -1
  18. package/lib/cjs/qs.js +1 -1
  19. package/lib/cjs/random.js +1 -1
  20. package/lib/cjs/string.js +1 -1
  21. package/lib/cjs/tooltip.js +1 -1
  22. package/lib/cjs/tree.js +36 -14
  23. package/lib/cjs/type.js +1 -1
  24. package/lib/cjs/unique.js +1 -1
  25. package/lib/cjs/url.js +1 -1
  26. package/lib/cjs/validator.js +1 -1
  27. package/lib/cjs/variable.js +1 -1
  28. package/lib/cjs/watermark.js +1 -1
  29. package/lib/cjs/we-decode.js +1 -1
  30. package/lib/es/array.js +1 -1
  31. package/lib/es/async.js +1 -1
  32. package/lib/es/base64.js +1 -1
  33. package/lib/es/clipboard.js +1 -1
  34. package/lib/es/cookie.js +1 -1
  35. package/lib/es/date.js +1 -1
  36. package/lib/es/dom.js +1 -1
  37. package/lib/es/download.js +1 -1
  38. package/lib/es/easing.js +1 -1
  39. package/lib/es/file.js +1 -1
  40. package/lib/es/func.js +1 -1
  41. package/lib/es/index.js +2 -2
  42. package/lib/es/math.js +1 -1
  43. package/lib/es/number.js +1 -1
  44. package/lib/es/object.js +104 -20
  45. package/lib/es/path.js +1 -1
  46. package/lib/es/qs.js +1 -1
  47. package/lib/es/random.js +1 -1
  48. package/lib/es/string.js +1 -1
  49. package/lib/es/tooltip.js +1 -1
  50. package/lib/es/tree.js +36 -14
  51. package/lib/es/type.js +1 -1
  52. package/lib/es/unique.js +1 -1
  53. package/lib/es/url.js +1 -1
  54. package/lib/es/validator.js +1 -1
  55. package/lib/es/variable.js +1 -1
  56. package/lib/es/watermark.js +1 -1
  57. package/lib/es/we-decode.js +1 -1
  58. package/lib/index.d.ts +32 -12
  59. package/lib/umd/index.js +134 -31
  60. package/package.json +1 -1
  61. package/lib/tsdoc-metadata.json +0 -11
package/lib/es/object.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
@@ -81,7 +81,7 @@ function objectPick(obj, keys) {
81
81
  return obj2;
82
82
  }
83
83
  /**
84
- * 对象祛除
84
+ * 对象去除
85
85
  * @param {O} obj
86
86
  * @param {K} keys
87
87
  * @returns {Pick<O, ArrayElements<K>>}
@@ -196,26 +196,110 @@ function objectGet(obj, path, strict = false) {
196
196
  }
197
197
  /**
198
198
  * 深拷贝堪称完全体 即:任何类型的数据都会被深拷贝
199
- * @param {AnyObject | AnyArray} obj
199
+ *
200
+ * 包含对null、原始值、对象循环引用的处理
201
+ *
202
+ * 对Map、Set、ArrayBuffer、Date、RegExp、Array、Object及原型链属性方法执行深拷贝
203
+ * @param {T} source
200
204
  * @param {WeakMap} map
201
- * @returns {AnyObject | AnyArray}
205
+ * @returns {T}
202
206
  */
203
- function cloneDeep(obj, map = new WeakMap()) {
204
- if (obj instanceof Date)
205
- return new Date(obj);
206
- if (obj instanceof RegExp)
207
- return new RegExp(obj);
208
- if (map.has(obj)) {
209
- return map.get(obj);
210
- }
211
- const allDesc = Object.getOwnPropertyDescriptors(obj);
212
- const cloneObj = Object.create(Object.getPrototypeOf(obj), allDesc);
213
- map.set(obj, cloneObj);
214
- for (const key of Reflect.ownKeys(obj)) {
215
- const value = obj[key];
216
- cloneObj[key] = value instanceof Object && typeof value !== 'function' ? cloneDeep(value, map) : value;
217
- }
218
- return cloneObj;
207
+ function cloneDeep(source, map = new WeakMap()) {
208
+ // 处理原始类型和 null/undefined
209
+ if (source === null || typeof source !== 'object') {
210
+ return source;
211
+ }
212
+ // 处理循环引用
213
+ if (map.has(source)) {
214
+ return map.get(source);
215
+ }
216
+ // 处理 ArrayBuffer
217
+ if (source instanceof ArrayBuffer) {
218
+ const copy = new ArrayBuffer(source.byteLength);
219
+ new Uint8Array(copy).set(new Uint8Array(source));
220
+ map.set(source, copy);
221
+ return copy;
222
+ }
223
+ // 处理 DataView 和 TypedArray (Uint8Array 等)
224
+ if (ArrayBuffer.isView(source)) {
225
+ const constructor = source.constructor;
226
+ const bufferCopy = cloneDeep(source.buffer, map);
227
+ return new constructor(bufferCopy, source.byteOffset, source.length);
228
+ }
229
+ // 处理 Date 对象
230
+ if (source instanceof Date) {
231
+ const copy = new Date(source.getTime());
232
+ map.set(source, copy);
233
+ return copy;
234
+ }
235
+ // 处理 RegExp 对象
236
+ if (source instanceof RegExp) {
237
+ const copy = new RegExp(source.source, source.flags);
238
+ copy.lastIndex = source.lastIndex; // 保留匹配状态
239
+ map.set(source, copy);
240
+ return copy;
241
+ }
242
+ // 处理 Map
243
+ if (source instanceof Map) {
244
+ const copy = new Map();
245
+ map.set(source, copy);
246
+ source.forEach((value, key) => {
247
+ copy.set(cloneDeep(key, map), cloneDeep(value, map));
248
+ });
249
+ return copy;
250
+ }
251
+ // 处理 Set
252
+ if (source instanceof Set) {
253
+ const copy = new Set();
254
+ map.set(source, copy);
255
+ source.forEach(value => {
256
+ copy.add(cloneDeep(value, map));
257
+ });
258
+ return copy;
259
+ }
260
+ // 处理数组 (包含稀疏数组)
261
+ if (Array.isArray(source)) {
262
+ const copy = Array.from({ length: source.length });
263
+ map.set(source, copy);
264
+ // 克隆所有有效索引
265
+ for (let i = 0; i < source.length; i++) {
266
+ if (i in source) {
267
+ // 保留空位
268
+ copy[i] = cloneDeep(source[i], map);
269
+ }
270
+ }
271
+ // 克隆数组的自定义属性
272
+ const descriptors = Object.getOwnPropertyDescriptors(source);
273
+ for (const key of Reflect.ownKeys(descriptors)) {
274
+ Object.defineProperty(copy, key, {
275
+ ...descriptors[key],
276
+ value: cloneDeep(descriptors[key].value, map)
277
+ });
278
+ }
279
+ return copy;
280
+ }
281
+ // 处理普通对象和类实例
282
+ const copy = Object.create(Object.getPrototypeOf(source));
283
+ map.set(source, copy);
284
+ const descriptors = Object.getOwnPropertyDescriptors(source);
285
+ for (const key of Reflect.ownKeys(descriptors)) {
286
+ const descriptor = descriptors[key];
287
+ if ('value' in descriptor) {
288
+ // 克隆数据属性
289
+ descriptor.value = cloneDeep(descriptor.value, map);
290
+ }
291
+ else {
292
+ // 处理访问器属性 (getter/setter)
293
+ if (descriptor.get) {
294
+ descriptor.get = cloneDeep(descriptor.get, map);
295
+ }
296
+ if (descriptor.set) {
297
+ descriptor.set = cloneDeep(descriptor.set, map);
298
+ }
299
+ }
300
+ Object.defineProperty(copy, key, descriptor);
301
+ }
302
+ return copy;
219
303
  }
220
304
 
221
305
  export { cloneDeep, isPlainObject, objectAssign, objectEach, objectEachAsync, objectFill, objectGet, objectMap, objectAssign as objectMerge, objectOmit, objectPick };
package/lib/es/path.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/es/qs.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/es/random.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/es/string.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/es/tooltip.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/es/tree.js CHANGED
@@ -1,14 +1,18 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
+ import { objectOmit } from './object.js';
8
+ import { objectHas, isEmpty } from './type.js';
9
+
7
10
  const defaultFieldOptions = { keyField: 'key', childField: 'children', pidField: 'pid' };
8
11
  const defaultSearchTreeOptions = {
9
12
  childField: 'children',
10
13
  nameField: 'name',
11
- ignoreEmptyChild: false
14
+ removeEmptyChild: false,
15
+ ignoreCase: true
12
16
  };
13
17
  /**
14
18
  * 深度优先遍历函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
@@ -65,14 +69,16 @@ function forEachDeep(tree, iterator, children = 'children', isReverse = false) {
65
69
  walk(tree, null);
66
70
  }
67
71
  /**
68
- * 深度优先遍历的Map函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
72
+ * 创建一个新数组, 深度优先遍历的Map函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
73
+ *
74
+ * 可遍历任何带有 length 属性和数字键的类数组对象
69
75
  * @param {ArrayLike<V>} tree 树形数据
70
76
  * @param {Function} iterator 迭代函数, 返回值为true时continue, 返回值为false时break
71
77
  * @param {string} children 定制子元素的key
72
78
  * @param {boolean} isReverse 是否反向遍历
73
79
  * @returns {any[]} 新的一棵树
74
80
  */
75
- function forEachMap(tree, iterator, children = 'children', isReverse = false) {
81
+ function mapDeep(tree, iterator, children = 'children', isReverse = false) {
76
82
  let isBreak = false;
77
83
  const newTree = [];
78
84
  const walk = (arr, parent, newTree, level = 0) => {
@@ -89,7 +95,7 @@ function forEachMap(tree, iterator, children = 'children', isReverse = false) {
89
95
  else if (re === true) {
90
96
  continue;
91
97
  }
92
- newTree.push(re);
98
+ newTree.push(objectOmit(re, [children]));
93
99
  // @ts-ignore
94
100
  if (arr[i] && Array.isArray(arr[i][children])) {
95
101
  newTree[newTree.length - 1][children] = [];
@@ -115,7 +121,7 @@ function forEachMap(tree, iterator, children = 'children', isReverse = false) {
115
121
  else if (re === true) {
116
122
  continue;
117
123
  }
118
- newTree.push(re);
124
+ newTree.push(objectOmit(re, [children]));
119
125
  // @ts-ignore
120
126
  if (arr[i] && Array.isArray(arr[i][children])) {
121
127
  newTree[newTree.length - 1][children] = [];
@@ -301,20 +307,36 @@ function flatTree(treeList, options = defaultFieldOptions) {
301
307
  }
302
308
  /**
303
309
  * 模糊搜索函数,返回包含搜索字符的节点及其祖先节点, 适用于树型组件的字符过滤功能
304
- * @param {any[]} nodes
305
- * @param {string} query
310
+ * 以下搜索条件二选一,按先后优先级处理:
311
+ * 1. 过滤函数filter, 返回true/false
312
+ * 2. 匹配关键词,支持是否启用忽略大小写来判断
313
+ *
314
+ * 有以下特性:
315
+ * 1. 可配置removeEmptyChild字段,来决定是否移除搜索结果中的空children字段
316
+ * 2. 若无任何过滤条件或keyword模式匹配且keyword为空串,返回原对象;其他情况返回新数组
317
+ * @param {V[]} nodes
318
+ * @param {IFilterCondition} filterCondition
306
319
  * @param {ISearchTreeOpts} options
307
- * @returns {any[]}
320
+ * @returns {V[]}
308
321
  */
309
- function fuzzySearchTree(nodes, query, options = defaultSearchTreeOptions) {
322
+ function fuzzySearchTree(nodes, filterCondition, options = defaultSearchTreeOptions) {
323
+ if (!objectHas(filterCondition, 'filter') &&
324
+ (!objectHas(filterCondition, 'keyword') || isEmpty(filterCondition.keyword))) {
325
+ return nodes;
326
+ }
310
327
  const result = [];
311
328
  for (const node of nodes) {
312
329
  // 递归检查子节点是否匹配
313
330
  const matchedChildren = node[options.childField] && node[options.childField].length > 0
314
- ? fuzzySearchTree(node[options.childField] || [], query, options)
331
+ ? fuzzySearchTree(node[options.childField] || [], filterCondition, options)
315
332
  : [];
316
333
  // 检查当前节点是否匹配或者有匹配的子节点
317
- if (node[options.nameField].toLowerCase().includes(query.toLowerCase()) || matchedChildren.length > 0) {
334
+ if ((objectHas(filterCondition, 'filter')
335
+ ? filterCondition.filter(node)
336
+ : !options.ignoreCase
337
+ ? node[options.nameField].includes(filterCondition.keyword)
338
+ : node[options.nameField].toLowerCase().includes(filterCondition.keyword.toLowerCase())) ||
339
+ matchedChildren.length > 0) {
318
340
  // 将当前节点加入结果中
319
341
  if (node[options.childField]) {
320
342
  if (matchedChildren.length > 0) {
@@ -323,7 +345,7 @@ function fuzzySearchTree(nodes, query, options = defaultSearchTreeOptions) {
323
345
  [options.childField]: matchedChildren // 包含匹配的子节点
324
346
  });
325
347
  }
326
- else if (options.ignoreEmptyChild) {
348
+ else if (options.removeEmptyChild) {
327
349
  node[options.childField] && delete node[options.childField];
328
350
  result.push({
329
351
  ...node
@@ -347,4 +369,4 @@ function fuzzySearchTree(nodes, query, options = defaultSearchTreeOptions) {
347
369
  return result;
348
370
  }
349
371
 
350
- export { buildTree, flatTree, forEachDeep, forEachMap, formatTree, fuzzySearchTree, searchTreeById };
372
+ export { buildTree, flatTree, forEachDeep, formatTree, fuzzySearchTree, mapDeep, searchTreeById };
package/lib/es/type.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/es/unique.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/es/url.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.7.0
2
+ * sculp-js v1.7.2
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/index.d.ts CHANGED
@@ -380,7 +380,7 @@ declare function objectMap<O extends AnyObject, T>(obj: O, iterator: (val: O[key
380
380
  */
381
381
  declare function objectPick<O extends AnyObject, K extends Extract<keyof O, string>[]>(obj: O, keys: K): Pick<O, ArrayElements<K>>;
382
382
  /**
383
- * 对象祛除
383
+ * 对象去除
384
384
  * @param {O} obj
385
385
  * @param {K} keys
386
386
  * @returns {Pick<O, ArrayElements<K>>}
@@ -410,11 +410,15 @@ declare function objectGet(obj: AnyObject, path: string, strict?: boolean): {
410
410
  };
411
411
  /**
412
412
  * 深拷贝堪称完全体 即:任何类型的数据都会被深拷贝
413
- * @param {AnyObject | AnyArray} obj
413
+ *
414
+ * 包含对null、原始值、对象循环引用的处理
415
+ *
416
+ * 对Map、Set、ArrayBuffer、Date、RegExp、Array、Object及原型链属性方法执行深拷贝
417
+ * @param {T} source
414
418
  * @param {WeakMap} map
415
- * @returns {AnyObject | AnyArray}
419
+ * @returns {T}
416
420
  */
417
- declare function cloneDeep(obj: Object, map?: WeakMap<object, any>): AnyObject | AnyArray;
421
+ declare function cloneDeep<T>(source: T, map?: WeakMap<any, any>): T;
418
422
 
419
423
  /**
420
424
  * 标准化路径
@@ -762,7 +766,12 @@ interface IFieldOptions {
762
766
  interface ISearchTreeOpts {
763
767
  childField: string;
764
768
  nameField: string;
765
- ignoreEmptyChild: boolean;
769
+ removeEmptyChild: boolean;
770
+ ignoreCase: boolean;
771
+ }
772
+ interface IFilterCondition<V> {
773
+ keyword?: string;
774
+ filter?: (args: V) => boolean;
766
775
  }
767
776
  /**
768
777
  * 深度优先遍历函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
@@ -774,14 +783,18 @@ interface ISearchTreeOpts {
774
783
  */
775
784
  declare function forEachDeep<V>(tree: ArrayLike<V>, iterator: (val: V, i: number, currentArr: ArrayLike<V>, tree: ArrayLike<V>, parent: V | null, level: number) => boolean | void, children?: string, isReverse?: boolean): void;
776
785
  /**
777
- * 深度优先遍历的Map函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
786
+ * 创建一个新数组, 深度优先遍历的Map函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
787
+ *
788
+ * 可遍历任何带有 length 属性和数字键的类数组对象
778
789
  * @param {ArrayLike<V>} tree 树形数据
779
790
  * @param {Function} iterator 迭代函数, 返回值为true时continue, 返回值为false时break
780
791
  * @param {string} children 定制子元素的key
781
792
  * @param {boolean} isReverse 是否反向遍历
782
793
  * @returns {any[]} 新的一棵树
783
794
  */
784
- declare function forEachMap<V>(tree: ArrayLike<V>, iterator: (val: V, i: number, currentArr: ArrayLike<V>, tree: ArrayLike<V>, parent: V | null, level: number) => boolean | any, children?: string, isReverse?: boolean): any[];
795
+ declare function mapDeep<T>(tree: T[], iterator: (val: T, i: number, currentArr: T[], tree: T[], parent: T | null, level: number) => {
796
+ [k: string | number]: any;
797
+ } | boolean, children?: string, isReverse?: boolean): any[];
785
798
  type IdLike = number | string;
786
799
  interface ITreeConf {
787
800
  id: string | number;
@@ -851,12 +864,19 @@ declare function formatTree(list: any[], options?: IFieldOptions): any[];
851
864
  declare function flatTree(treeList: any[], options?: IFieldOptions): any[];
852
865
  /**
853
866
  * 模糊搜索函数,返回包含搜索字符的节点及其祖先节点, 适用于树型组件的字符过滤功能
854
- * @param {any[]} nodes
855
- * @param {string} query
867
+ * 以下搜索条件二选一,按先后优先级处理:
868
+ * 1. 过滤函数filter, 返回true/false
869
+ * 2. 匹配关键词,支持是否启用忽略大小写来判断
870
+ *
871
+ * 有以下特性:
872
+ * 1. 可配置removeEmptyChild字段,来决定是否移除搜索结果中的空children字段
873
+ * 2. 若无任何过滤条件或keyword模式匹配且keyword为空串,返回原对象;其他情况返回新数组
874
+ * @param {V[]} nodes
875
+ * @param {IFilterCondition} filterCondition
856
876
  * @param {ISearchTreeOpts} options
857
- * @returns {any[]}
877
+ * @returns {V[]}
858
878
  */
859
- declare function fuzzySearchTree(nodes: any[], query: string, options?: ISearchTreeOpts): any[];
879
+ declare function fuzzySearchTree<V>(nodes: V[], filterCondition: IFilterCondition<V>, options?: ISearchTreeOpts): V[];
860
880
 
861
881
  /**
862
882
  * 数值安全乘法
@@ -1057,4 +1077,4 @@ declare function replaceVarFromString(sourceStr: string, targetObj: Record<strin
1057
1077
  */
1058
1078
  declare function executeInScope(code: string, scope?: Record<string, any>): any;
1059
1079
 
1060
- export { type AnyArray, type AnyFunc, type AnyObject, type ArrayElements, type DateObj, type DateValue, type DebounceFunc, EMAIL_REGEX, type FileType, HEX_POOL, HTTP_URL_REGEX, type ICanvasWM, type ICompressOptions, type IFieldOptions, IPV4_REGEX, IPV6_REGEX, type ISearchTreeOpts, type ITreeConf, type IdLike, type LooseParamValue, type LooseParams, type ObjectAssignItem, type OnceFunc, PHONE_REGEX, type Params, type PartialDeep, type RandomString, type ReadyCallback, type Replacer, STRING_ARABIC_NUMERALS, STRING_LOWERCASE_ALPHA, STRING_POOL, STRING_UPPERCASE_ALPHA, type SetStyle, type SmoothScrollOptions, type Style, type ThrottleFunc, UNIQUE_NUMBER_SAFE_LENGTH, URL_REGEX, type UniqueString, type Url, type WithChildren, add, addClass, arrayEach, arrayEachAsync, arrayInsertBefore, arrayLike, arrayRemove, asyncMap, buildTree, calculateDate, calculateDateTime, chooseLocalFile, cloneDeep, compressImg, cookieDel, cookieGet, cookieSet, copyText, crossOriginDownload, dateParse, dateToEnd, dateToStart, debounce, decodeFromBase64, divide, downloadBlob, downloadData, downloadHref, downloadURL, encodeToBase64, escapeRegExp, executeInScope, flatTree, forEachDeep, forEachMap, formatDate, formatNumber, formatTree, fuzzySearchTree, genCanvasWM, getComputedCssVal, getGlobal, getStrWidthPx, getStyle, hasClass, isArray, isBigInt, isBoolean, isDate, isDigit, isDomReady, isEmail, isEmpty, isError, isFloat, isFunction, isIdNo, isInteger, isIpV4, isIpV6, isJsonString, isNaN, isNull, isNullOrUnDef, isNumber, isNumerical, isObject, isPhone, isPlainObject, isPrimitive, isRegExp, isString, isSymbol, isUndefined, isUrl, isValidDate, multiply, numberAbbr, numberToHex, objectAssign, objectEach, objectEachAsync, objectFill, objectGet, objectHas, objectMap, objectAssign as objectMerge, objectOmit, objectPick, onDomReady, once, parseQueryParams, parseVarFromString, pathJoin, pathNormalize, qsParse, qsStringify, randomNumber, randomString, randomUuid, removeClass, replaceVarFromString, searchTreeById, setGlobal, setStyle, smoothScroll, stringAssign, stringCamelCase, stringEscapeHtml, stringFill, stringFormat, stringKebabCase, strip, subtract, supportCanvas, throttle, tooltipEvent, typeIs, uniqueNumber, uniqueString, uniqueSymbol, urlDelParams, urlParse, urlSetParams, urlStringify, wait, weAtob, weBtoa };
1080
+ export { type AnyArray, type AnyFunc, type AnyObject, type ArrayElements, type DateObj, type DateValue, type DebounceFunc, EMAIL_REGEX, type FileType, HEX_POOL, HTTP_URL_REGEX, type ICanvasWM, type ICompressOptions, type IFieldOptions, type IFilterCondition, IPV4_REGEX, IPV6_REGEX, type ISearchTreeOpts, type ITreeConf, type IdLike, type LooseParamValue, type LooseParams, type ObjectAssignItem, type OnceFunc, PHONE_REGEX, type Params, type PartialDeep, type RandomString, type ReadyCallback, type Replacer, STRING_ARABIC_NUMERALS, STRING_LOWERCASE_ALPHA, STRING_POOL, STRING_UPPERCASE_ALPHA, type SetStyle, type SmoothScrollOptions, type Style, type ThrottleFunc, UNIQUE_NUMBER_SAFE_LENGTH, URL_REGEX, type UniqueString, type Url, type WithChildren, add, addClass, arrayEach, arrayEachAsync, arrayInsertBefore, arrayLike, arrayRemove, asyncMap, buildTree, calculateDate, calculateDateTime, chooseLocalFile, cloneDeep, compressImg, cookieDel, cookieGet, cookieSet, copyText, crossOriginDownload, dateParse, dateToEnd, dateToStart, debounce, decodeFromBase64, divide, downloadBlob, downloadData, downloadHref, downloadURL, encodeToBase64, escapeRegExp, executeInScope, flatTree, forEachDeep, formatDate, formatNumber, formatTree, fuzzySearchTree, genCanvasWM, getComputedCssVal, getGlobal, getStrWidthPx, getStyle, hasClass, isArray, isBigInt, isBoolean, isDate, isDigit, isDomReady, isEmail, isEmpty, isError, isFloat, isFunction, isIdNo, isInteger, isIpV4, isIpV6, isJsonString, isNaN, isNull, isNullOrUnDef, isNumber, isNumerical, isObject, isPhone, isPlainObject, isPrimitive, isRegExp, isString, isSymbol, isUndefined, isUrl, isValidDate, mapDeep, multiply, numberAbbr, numberToHex, objectAssign, objectEach, objectEachAsync, objectFill, objectGet, objectHas, objectMap, objectAssign as objectMerge, objectOmit, objectPick, onDomReady, once, parseQueryParams, parseVarFromString, pathJoin, pathNormalize, qsParse, qsStringify, randomNumber, randomString, randomUuid, removeClass, replaceVarFromString, searchTreeById, setGlobal, setStyle, smoothScroll, stringAssign, stringCamelCase, stringEscapeHtml, stringFill, stringFormat, stringKebabCase, strip, subtract, supportCanvas, throttle, tooltipEvent, typeIs, uniqueNumber, uniqueString, uniqueSymbol, urlDelParams, urlParse, urlSetParams, urlStringify, wait, weAtob, weBtoa };