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.
- package/README.md +2 -1
- package/lib/cjs/array.js +1 -1
- package/lib/cjs/async.js +1 -1
- package/lib/cjs/base64.js +1 -1
- package/lib/cjs/clipboard.js +1 -1
- package/lib/cjs/cookie.js +1 -1
- package/lib/cjs/date.js +1 -1
- package/lib/cjs/dom.js +1 -1
- package/lib/cjs/download.js +1 -1
- package/lib/cjs/easing.js +1 -1
- package/lib/cjs/file.js +1 -1
- package/lib/cjs/func.js +1 -1
- package/lib/cjs/index.js +2 -2
- package/lib/cjs/math.js +1 -1
- package/lib/cjs/number.js +1 -1
- package/lib/cjs/object.js +104 -20
- package/lib/cjs/path.js +1 -1
- package/lib/cjs/qs.js +1 -1
- package/lib/cjs/random.js +1 -1
- package/lib/cjs/string.js +1 -1
- package/lib/cjs/tooltip.js +1 -1
- package/lib/cjs/tree.js +36 -14
- package/lib/cjs/type.js +1 -1
- package/lib/cjs/unique.js +1 -1
- package/lib/cjs/url.js +1 -1
- package/lib/cjs/validator.js +1 -1
- package/lib/cjs/variable.js +1 -1
- package/lib/cjs/watermark.js +1 -1
- package/lib/cjs/we-decode.js +1 -1
- package/lib/es/array.js +1 -1
- package/lib/es/async.js +1 -1
- package/lib/es/base64.js +1 -1
- package/lib/es/clipboard.js +1 -1
- package/lib/es/cookie.js +1 -1
- package/lib/es/date.js +1 -1
- package/lib/es/dom.js +1 -1
- package/lib/es/download.js +1 -1
- package/lib/es/easing.js +1 -1
- package/lib/es/file.js +1 -1
- package/lib/es/func.js +1 -1
- package/lib/es/index.js +2 -2
- package/lib/es/math.js +1 -1
- package/lib/es/number.js +1 -1
- package/lib/es/object.js +104 -20
- package/lib/es/path.js +1 -1
- package/lib/es/qs.js +1 -1
- package/lib/es/random.js +1 -1
- package/lib/es/string.js +1 -1
- package/lib/es/tooltip.js +1 -1
- package/lib/es/tree.js +36 -14
- package/lib/es/type.js +1 -1
- package/lib/es/unique.js +1 -1
- package/lib/es/url.js +1 -1
- package/lib/es/validator.js +1 -1
- package/lib/es/variable.js +1 -1
- package/lib/es/watermark.js +1 -1
- package/lib/es/we-decode.js +1 -1
- package/lib/index.d.ts +32 -12
- package/lib/umd/index.js +134 -31
- package/package.json +1 -1
- package/lib/tsdoc-metadata.json +0 -11
package/lib/es/object.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* sculp-js v1.7.
|
|
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
|
-
*
|
|
199
|
+
*
|
|
200
|
+
* 包含对null、原始值、对象循环引用的处理
|
|
201
|
+
*
|
|
202
|
+
* 对Map、Set、ArrayBuffer、Date、RegExp、Array、Object及原型链属性方法执行深拷贝
|
|
203
|
+
* @param {T} source
|
|
200
204
|
* @param {WeakMap} map
|
|
201
|
-
* @returns {
|
|
205
|
+
* @returns {T}
|
|
202
206
|
*/
|
|
203
|
-
function cloneDeep(
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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
package/lib/es/qs.js
CHANGED
package/lib/es/random.js
CHANGED
package/lib/es/string.js
CHANGED
package/lib/es/tooltip.js
CHANGED
package/lib/es/tree.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* sculp-js v1.7.
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
305
|
-
*
|
|
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 {
|
|
320
|
+
* @returns {V[]}
|
|
308
321
|
*/
|
|
309
|
-
function fuzzySearchTree(nodes,
|
|
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] || [],
|
|
331
|
+
? fuzzySearchTree(node[options.childField] || [], filterCondition, options)
|
|
315
332
|
: [];
|
|
316
333
|
// 检查当前节点是否匹配或者有匹配的子节点
|
|
317
|
-
if (
|
|
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.
|
|
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,
|
|
372
|
+
export { buildTree, flatTree, forEachDeep, formatTree, fuzzySearchTree, mapDeep, searchTreeById };
|
package/lib/es/type.js
CHANGED
package/lib/es/unique.js
CHANGED
package/lib/es/url.js
CHANGED
package/lib/es/validator.js
CHANGED
package/lib/es/variable.js
CHANGED
package/lib/es/watermark.js
CHANGED
package/lib/es/we-decode.js
CHANGED
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
|
-
*
|
|
413
|
+
*
|
|
414
|
+
* 包含对null、原始值、对象循环引用的处理
|
|
415
|
+
*
|
|
416
|
+
* 对Map、Set、ArrayBuffer、Date、RegExp、Array、Object及原型链属性方法执行深拷贝
|
|
417
|
+
* @param {T} source
|
|
414
418
|
* @param {WeakMap} map
|
|
415
|
-
* @returns {
|
|
419
|
+
* @returns {T}
|
|
416
420
|
*/
|
|
417
|
-
declare function cloneDeep(
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
855
|
-
*
|
|
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 {
|
|
877
|
+
* @returns {V[]}
|
|
858
878
|
*/
|
|
859
|
-
declare function fuzzySearchTree(nodes:
|
|
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,
|
|
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 };
|