sculp-js 1.12.0 → 1.13.0

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 (63) hide show
  1. package/lib/cjs/array.js +1 -1
  2. package/lib/cjs/async.js +4 -4
  3. package/lib/cjs/base64.js +1 -1
  4. package/lib/cjs/clipboard.js +1 -1
  5. package/lib/cjs/cloneDeep.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 +1 -1
  14. package/lib/cjs/isEqual.js +1 -1
  15. package/lib/cjs/math.js +1 -1
  16. package/lib/cjs/number.js +1 -1
  17. package/lib/cjs/object.js +1 -1
  18. package/lib/cjs/path.js +1 -1
  19. package/lib/cjs/qs.js +1 -1
  20. package/lib/cjs/random.js +1 -1
  21. package/lib/cjs/string.js +1 -1
  22. package/lib/cjs/tooltip.js +1 -1
  23. package/lib/cjs/tree.js +109 -34
  24. package/lib/cjs/type.js +1 -1
  25. package/lib/cjs/unique.js +1 -1
  26. package/lib/cjs/url.js +1 -1
  27. package/lib/cjs/validator.js +1 -1
  28. package/lib/cjs/variable.js +1 -1
  29. package/lib/cjs/watermark.js +1 -1
  30. package/lib/cjs/we-decode.js +1 -1
  31. package/lib/es/array.js +1 -1
  32. package/lib/es/async.js +4 -4
  33. package/lib/es/base64.js +1 -1
  34. package/lib/es/clipboard.js +1 -1
  35. package/lib/es/cloneDeep.js +1 -1
  36. package/lib/es/cookie.js +1 -1
  37. package/lib/es/date.js +1 -1
  38. package/lib/es/dom.js +1 -1
  39. package/lib/es/download.js +1 -1
  40. package/lib/es/easing.js +1 -1
  41. package/lib/es/file.js +1 -1
  42. package/lib/es/func.js +1 -1
  43. package/lib/es/index.js +1 -1
  44. package/lib/es/isEqual.js +1 -1
  45. package/lib/es/math.js +1 -1
  46. package/lib/es/number.js +1 -1
  47. package/lib/es/object.js +1 -1
  48. package/lib/es/path.js +1 -1
  49. package/lib/es/qs.js +1 -1
  50. package/lib/es/random.js +1 -1
  51. package/lib/es/string.js +1 -1
  52. package/lib/es/tooltip.js +1 -1
  53. package/lib/es/tree.js +110 -35
  54. package/lib/es/type.js +1 -1
  55. package/lib/es/unique.js +1 -1
  56. package/lib/es/url.js +1 -1
  57. package/lib/es/validator.js +1 -1
  58. package/lib/es/variable.js +1 -1
  59. package/lib/es/watermark.js +1 -1
  60. package/lib/es/we-decode.js +1 -1
  61. package/lib/index.d.ts +26 -12
  62. package/lib/umd/index.js +2 -2
  63. package/package.json +1 -1
package/lib/es/tooltip.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.12.0
2
+ * sculp-js v1.13.0
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/es/tree.js CHANGED
@@ -1,11 +1,11 @@
1
1
  /*!
2
- * sculp-js v1.12.0
2
+ * sculp-js v1.13.0
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
6
6
 
7
7
  import { objectOmit } from './object.js';
8
- import { objectHas, isEmpty } from './type.js';
8
+ import { isObject, objectHas, isEmpty } from './type.js';
9
9
 
10
10
  const defaultFieldOptions = { keyField: 'key', childField: 'children', pidField: 'pid' };
11
11
  const defaultSearchTreeOptions = {
@@ -15,58 +15,126 @@ const defaultSearchTreeOptions = {
15
15
  ignoreCase: true
16
16
  };
17
17
  /**
18
- * 深度优先遍历函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
18
+ * 树遍历函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
19
19
  * @param {ArrayLike<V>} tree 树形数据
20
20
  * @param {Function} iterator 迭代函数, 返回值为true时continue, 返回值为false时break
21
- * @param {string} children 定制子元素的key
22
- * @param {boolean} isReverse 是否反向遍历
21
+ * @param {options} options 支持定制子元素名称、反向遍历、广度优先遍历,默认{
22
+ childField: 'children',
23
+ reverse: false,
24
+ breadthFirst: false
25
+ }
23
26
  * @returns {*}
24
27
  */
25
- function forEachDeep(tree, iterator, children = 'children', isReverse = false) {
28
+ function forEachDeep(tree, iterator, options = {
29
+ childField: 'children',
30
+ reverse: false,
31
+ breadthFirst: false
32
+ }) {
33
+ const { childField = 'children', reverse = false, breadthFirst = false } = isObject(options) ? options : {};
26
34
  let isBreak = false;
35
+ const queue = [];
27
36
  const walk = (arr, parent, level = 0) => {
28
- if (isReverse) {
29
- for (let i = arr.length - 1; i >= 0; i--) {
37
+ if (reverse) {
38
+ for (let index = arr.length - 1; index >= 0; index--) {
30
39
  if (isBreak) {
31
40
  break;
32
41
  }
33
- const re = iterator(arr[i], i, arr, tree, parent, level);
34
- if (re === false) {
35
- isBreak = true;
36
- break;
42
+ const item = arr[index];
43
+ // 广度优先
44
+ if (breadthFirst) {
45
+ queue.push({ item, index, array: arr, tree, parent, level });
37
46
  }
38
- else if (re === true) {
39
- continue;
47
+ else {
48
+ const re = iterator(item, index, arr, tree, parent, level);
49
+ if (re === false) {
50
+ isBreak = true;
51
+ break;
52
+ }
53
+ else if (re === true) {
54
+ continue;
55
+ }
56
+ // @ts-ignore
57
+ if (item && Array.isArray(item[childField])) {
58
+ // @ts-ignore
59
+ walk(item[childField], item, level + 1);
60
+ }
40
61
  }
41
- // @ts-ignore
42
- if (arr[i] && Array.isArray(arr[i][children])) {
62
+ }
63
+ if (breadthFirst) {
64
+ // Process queue
65
+ while (!isBreak) {
66
+ const current = queue.shift();
67
+ // iterate(info);
43
68
  // @ts-ignore
44
- walk(arr[i][children], arr[i], level + 1);
69
+ const { item, index, array, tree, parent, level } = current;
70
+ const re = iterator(item, index, array, tree, parent, level);
71
+ if (re === false) {
72
+ isBreak = true;
73
+ break;
74
+ }
75
+ else if (re === true) {
76
+ continue;
77
+ }
78
+ // @ts-ignore
79
+ if (item && Array.isArray(item[childField])) {
80
+ // @ts-ignore
81
+ walk(item[childField], item, level + 1);
82
+ }
45
83
  }
46
84
  }
47
85
  }
48
86
  else {
49
- for (let i = 0, len = arr.length; i < len; i++) {
87
+ for (let index = 0, len = arr.length; index < len; index++) {
50
88
  if (isBreak) {
51
89
  break;
52
90
  }
53
- const re = iterator(arr[i], i, arr, tree, parent, level);
54
- if (re === false) {
55
- isBreak = true;
56
- break;
91
+ const item = arr[index];
92
+ if (breadthFirst) {
93
+ // 广度优先
94
+ queue.push({ item, index: index, array: arr, tree, parent, level });
57
95
  }
58
- else if (re === true) {
59
- continue;
96
+ else {
97
+ // 深度优先
98
+ const re = iterator(item, index, arr, tree, parent, level);
99
+ if (re === false) {
100
+ isBreak = true;
101
+ break;
102
+ }
103
+ else if (re === true) {
104
+ continue;
105
+ }
106
+ // @ts-ignore
107
+ if (item && Array.isArray(item[childField])) {
108
+ // @ts-ignore
109
+ walk(item[childField], item, level + 1);
110
+ }
60
111
  }
61
- // @ts-ignore
62
- if (arr[i] && Array.isArray(arr[i][children])) {
112
+ }
113
+ if (breadthFirst) {
114
+ while (!isBreak) {
115
+ const current = queue.shift();
116
+ if (!current)
117
+ break;
63
118
  // @ts-ignore
64
- walk(arr[i][children], arr[i], level + 1);
119
+ const { item, index, array, tree, parent, level } = current;
120
+ const re = iterator(item, index, array, tree, parent, level);
121
+ if (re === false) {
122
+ isBreak = true;
123
+ break;
124
+ }
125
+ else if (re === true) {
126
+ continue;
127
+ }
128
+ // @ts-ignore
129
+ if (item && Array.isArray(item[childField])) {
130
+ // @ts-ignore
131
+ walk(item[childField], item, level + 1);
132
+ }
65
133
  }
66
134
  }
67
135
  }
68
136
  };
69
- walk(tree, null);
137
+ walk(tree, null, 0);
70
138
  // @ts-ignore
71
139
  tree = null;
72
140
  }
@@ -178,11 +246,12 @@ function searchTreeById(tree, nodeId, config) {
178
246
  /**
179
247
  * 扁平化数组转换成树
180
248
  * @param {any[]} list
181
- * @param {IFieldOptions} options
249
+ * @param {IFieldOptions} options 定制id字段名,子元素字段名,父元素字段名,默认
250
+ * { keyField: 'key', childField: 'children', pidField: 'pid' }
182
251
  * @returns {any[]}
183
252
  */
184
253
  function formatTree(list, options = defaultFieldOptions) {
185
- const { keyField, childField, pidField } = options;
254
+ const { keyField = 'key', childField = 'children', pidField = 'pid' } = isObject(options) ? options : {};
186
255
  const treeArr = [];
187
256
  const sourceMap = {};
188
257
  for (let i = 0, len = list.length; i < len; i++) {
@@ -205,12 +274,13 @@ function formatTree(list, options = defaultFieldOptions) {
205
274
  }
206
275
  /**
207
276
  * 树形结构转扁平化
208
- * @param {any} treeList
209
- * @param {IFieldOptions} options
210
- * @returns {*}
277
+ * @param {any[]} treeList
278
+ * @param {IFieldOptions} options 定制id字段名,子元素字段名,父元素字段名,默认
279
+ * { keyField: 'key', childField: 'children', pidField: 'pid' }
280
+ * @returns {any[]}
211
281
  */
212
282
  function flatTree(treeList, options = defaultFieldOptions) {
213
- const { childField, keyField, pidField } = options;
283
+ const { keyField = 'key', childField = 'children', pidField = 'pid' } = isObject(options) ? options : {};
214
284
  let res = [];
215
285
  for (let i = 0, len = treeList.length; i < len; i++) {
216
286
  const node = treeList[i];
@@ -241,7 +311,12 @@ function flatTree(treeList, options = defaultFieldOptions) {
241
311
  * 2. 若无任何过滤条件或keyword模式匹配且keyword为空串,返回原对象;其他情况返回新数组
242
312
  * @param {V[]} nodes
243
313
  * @param {IFilterCondition} filterCondition
244
- * @param {ISearchTreeOpts} options
314
+ * @param {ISearchTreeOpts} options 默认配置项 {
315
+ childField: 'children',
316
+ nameField: 'name',
317
+ removeEmptyChild: false,
318
+ ignoreCase: true
319
+ }
245
320
  * @returns {V[]}
246
321
  */
247
322
  function fuzzySearchTree(nodes, filterCondition, options = defaultSearchTreeOptions) {
package/lib/es/type.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * sculp-js v1.12.0
2
+ * sculp-js v1.13.0
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.12.0
2
+ * sculp-js v1.13.0
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.12.0
2
+ * sculp-js v1.13.0
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.12.0
2
+ * sculp-js v1.13.0
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.12.0
2
+ * sculp-js v1.13.0
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.12.0
2
+ * sculp-js v1.13.0
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.12.0
2
+ * sculp-js v1.13.0
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
package/lib/index.d.ts CHANGED
@@ -634,16 +634,16 @@ declare function asyncMap<T, R>(list: Array<T>, mapper: (val: T, idx: number, li
634
634
  * Execute a promise safely
635
635
  *
636
636
  * @param { Promise } promise
637
- * @param { Object= } errorExt - Additional Information you can pass to the err object
637
+ * @param { Object= } errorExt - Additional Information you can pass safeAwait the err object
638
638
  * @return { Promise }
639
639
  * @example
640
640
  * async function asyncTaskWithCb(cb) {
641
641
  let err, user, savedTask, notification;
642
642
 
643
- [ err, user ] = await to(UserModel.findById(1));
643
+ [ err, user ] = await safeAwait(UserModel.findById(1));
644
644
  if(!user) return cb('No user found');
645
645
 
646
- [ err, savedTask ] = await to(TaskModel({userId: user.id, name: 'Demo Task'}));
646
+ [ err, savedTask ] = await safeAwait(TaskModel({userId: user.id, name: 'Demo Task'}));
647
647
  if(err) return cb('Error occurred while saving task')
648
648
 
649
649
  cb(null, savedTask);
@@ -909,14 +909,21 @@ interface IFilterCondition<V> {
909
909
  filter?: (args: V) => boolean;
910
910
  }
911
911
  /**
912
- * 深度优先遍历函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
912
+ * 树遍历函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
913
913
  * @param {ArrayLike<V>} tree 树形数据
914
914
  * @param {Function} iterator 迭代函数, 返回值为true时continue, 返回值为false时break
915
- * @param {string} children 定制子元素的key
916
- * @param {boolean} isReverse 是否反向遍历
915
+ * @param {options} options 支持定制子元素名称、反向遍历、广度优先遍历,默认{
916
+ childField: 'children',
917
+ reverse: false,
918
+ breadthFirst: false
919
+ }
917
920
  * @returns {*}
918
921
  */
919
- 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;
922
+ declare function forEachDeep<V>(tree: ArrayLike<V>, iterator: (val: V, index: number, currentArr: ArrayLike<V>, tree: ArrayLike<V>, parent: V | null, level: number) => boolean | void, options?: {
923
+ childField?: string;
924
+ reverse?: boolean;
925
+ breadthFirst?: boolean;
926
+ }): void;
920
927
  /**
921
928
  * 创建一个新数组, 深度优先遍历的Map函数(支持continue和break操作), 可用于insert tree item 和 remove tree item
922
929
  *
@@ -947,15 +954,17 @@ declare function searchTreeById<V>(tree: ArrayLike<V>, nodeId: IdLike, config?:
947
954
  /**
948
955
  * 扁平化数组转换成树
949
956
  * @param {any[]} list
950
- * @param {IFieldOptions} options
957
+ * @param {IFieldOptions} options 定制id字段名,子元素字段名,父元素字段名,默认
958
+ * { keyField: 'key', childField: 'children', pidField: 'pid' }
951
959
  * @returns {any[]}
952
960
  */
953
961
  declare function formatTree(list: any[], options?: IFieldOptions): any[];
954
962
  /**
955
963
  * 树形结构转扁平化
956
- * @param {any} treeList
957
- * @param {IFieldOptions} options
958
- * @returns {*}
964
+ * @param {any[]} treeList
965
+ * @param {IFieldOptions} options 定制id字段名,子元素字段名,父元素字段名,默认
966
+ * { keyField: 'key', childField: 'children', pidField: 'pid' }
967
+ * @returns {any[]}
959
968
  */
960
969
  declare function flatTree(treeList: any[], options?: IFieldOptions): any[];
961
970
  /**
@@ -969,7 +978,12 @@ declare function flatTree(treeList: any[], options?: IFieldOptions): any[];
969
978
  * 2. 若无任何过滤条件或keyword模式匹配且keyword为空串,返回原对象;其他情况返回新数组
970
979
  * @param {V[]} nodes
971
980
  * @param {IFilterCondition} filterCondition
972
- * @param {ISearchTreeOpts} options
981
+ * @param {ISearchTreeOpts} options 默认配置项 {
982
+ childField: 'children',
983
+ nameField: 'name',
984
+ removeEmptyChild: false,
985
+ ignoreCase: true
986
+ }
973
987
  * @returns {V[]}
974
988
  */
975
989
  declare function fuzzySearchTree<V>(nodes: V[], filterCondition: IFilterCondition<V>, options?: ISearchTreeOpts): V[];
package/lib/umd/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * sculp-js v1.12.0
2
+ * sculp-js v1.13.0
3
3
  * (c) 2023-present chandq
4
4
  * Released under the MIT License.
5
5
  */
6
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).sculpJs={})}(this,(function(e){"use strict";function t(e,t,n=!1){if(n)for(let n=e.length-1;n>=0;n--){const r=t(e[n],n,e);if(!1===r)break}else for(let n=0,r=e.length;n<r;n++){const r=t(e[n],n,e);if(!1===r)break}e=null}function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var r=.1,o="function"==typeof Float32Array;function i(e,t){return 1-3*t+3*e}function s(e,t){return 3*t-6*e}function a(e){return 3*e}function c(e,t,n){return((i(t,n)*e+s(t,n))*e+a(t))*e}function l(e,t,n){return 3*i(t,n)*e*e+2*s(t,n)*e+a(t)}function u(e){return e}var d=n((function(e,t,n,i){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===i)return u;for(var s=o?new Float32Array(11):new Array(11),a=0;a<11;++a)s[a]=c(a*r,e,n);function d(t){for(var o=0,i=1;10!==i&&s[i]<=t;++i)o+=r;--i;var a=o+(t-s[i])/(s[i+1]-s[i])*r,u=l(a,e,n);return u>=.001?function(e,t,n,r){for(var o=0;o<4;++o){var i=l(t,n,r);if(0===i)return t;t-=(c(t,n,r)-e)/i}return t}(t,a,e,n):0===u?a:function(e,t,n,r,o){var i,s,a=0;do{(i=c(s=t+(n-t)/2,r,o)-e)>0?n=s:t=s}while(Math.abs(i)>1e-7&&++a<10);return s}(t,o,o+r,e,n)}return function(e){return 0===e?0:1===e?1:c(d(e),t,i)}}));const{toString:f,hasOwnProperty:g,propertyIsEnumerable:h}=Object.prototype;function p(e,t){return g.call(e,t)}function m(e){return!!C(e)||(!!b(e)||!!v(e)&&p(e,"length"))}function y(e){return f.call(e).slice(8,-1)}const b=e=>"string"==typeof e,w=e=>"boolean"==typeof e,x=e=>"number"==typeof e&&!Number.isNaN(e),S=e=>void 0===e,A=e=>null===e;function E(e){return S(e)||A(e)}const v=e=>"Object"===y(e),C=e=>Array.isArray(e),F=e=>"function"==typeof e,j=e=>Number.isNaN(e),$=e=>"Date"===y(e);function T(e){if(E(e)||Number.isNaN(e))return!0;const t=y(e);return m(e)||"Arguments"===t?!e.length:"Set"===t||"Map"===t?!e.size:!Object.keys(e).length}const R={linear:[0,0,1,1],ease:[.25,.1,.25,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]};const I=e=>{if(!v(e))return!1;const t=Object.getPrototypeOf(e);return!t||t===Object.prototype};function O(e,t){for(const n in e)if(p(e,n)&&!1===t(e[n],n))break;e=null}function N(e,t){const n={};return O(e,((e,r)=>{t.includes(r)||(n[r]=e)})),e=null,n}const D=(e,t,n)=>{if(S(n))return t;if(y(t)!==y(n))return C(n)?D(e,[],n):v(n)?D(e,{},n):n;if(I(n)){const r=e.get(n);return r||(e.set(n,t),O(n,((n,r)=>{t[r]=D(e,t[r],n)})),t)}if(C(n)){const r=e.get(n);return r||(e.set(n,t),n.forEach(((n,r)=>{t[r]=D(e,t[r],n)})),t)}return n};function L(e,...t){const n=new Map;for(let r=0,o=t.length;r<o;r++){const o=t[r];e=D(n,e,o)}return n.clear(),e}function M(e,t="-"){return e.replace(/^./,(e=>e.toLowerCase())).replace(/[A-Z]/g,(e=>`${t}${e.toLowerCase()}`))}const P="0123456789",B="abcdefghijklmnopqrstuvwxyz",U="ABCDEFGHIJKLMNOPQRSTUVWXYZ",k=/%[%sdo]/g;const H=/\${(.*?)}/g;const z=(e,t)=>{e.split(/\s+/g).forEach(t)};const W=(e,t,n)=>{v(t)?O(t,((t,n)=>{W(e,n,t)})):e.style.setProperty(M(t),n)};function q(e,t=14,n=!0){let r=0;if(console.assert(b(e),`${e} 不是有效的字符串`),b(e)&&e.length>0){const o="getStrWidth1494304949567";let i=document.querySelector(`#${o}`);if(!i){const n=document.createElement("span");n.id=o,n.style.fontSize=t+"px",n.style.whiteSpace="nowrap",n.style.visibility="hidden",n.style.position="absolute",n.style.top="-9999px",n.style.left="-9999px",n.textContent=e,document.body.appendChild(n),i=n}i.textContent=e,r=i.offsetWidth,n&&i.remove()}return r}function _(e){let t;if("SELECT"===e.nodeName)e.focus(),t=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){const n=e.hasAttribute("readonly");n||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),n||e.removeAttribute("readonly"),t=e.value}else{e.hasAttribute("contenteditable")&&e.focus();const n=window.getSelection(),r=document.createRange();r.selectNodeContents(e),n.removeAllRanges(),n.addRange(r),t=n.toString()}return t}function G(e,t){const{successCallback:n,failCallback:r,container:o=document.body}=E(t)?{}:t,i=function(e){const t="rtl"===document.documentElement.getAttribute("dir"),n=document.createElement("textarea");n.style.fontSize="12pt",n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[t?"right":"left"]="-9999px";const r=window.pageYOffset||document.documentElement.scrollTop;return n.style.top=`${r}px`,n.setAttribute("readonly",""),n.value=e,n}(e);o.appendChild(i),_(i);try{document.execCommand("copy")&&F(n)&&n()}catch(e){F(r)&&r(e)}finally{o.removeChild(i),window.getSelection()?.removeAllRanges()}}function V(e,t,n){const r=[],o="expires";if(r.push([e,encodeURIComponent(t)]),x(n)){const e=new Date;e.setTime(e.getTime()+n),r.push([o,e.toUTCString()])}else $(n)&&r.push([o,n.toUTCString()]);r.push(["path","/"]),document.cookie=r.map((e=>{const[t,n]=e;return`${t}=${n}`})).join(";")}const Y=e=>$(e)&&!j(e.getTime()),X=e=>{if(!b(e))return;const t=e.replace(/-/g,"/");return new Date(t)},K=e=>{if(!b(e))return;const t=/([+-])(\d\d)(\d\d)$/,n=t.exec(e);if(!n)return;const r=e.replace(t,"Z"),o=new Date(r);if(!Y(o))return;const[,i,s,a]=n,c=parseInt(s,10),l=parseInt(a,10),u=(e,t)=>"+"===i?e-t:e+t;return o.setHours(u(o.getHours(),c)),o.setMinutes(u(o.getMinutes(),l)),o};function J(e){const t=new Date(e);if(Y(t))return t;const n=X(e);if(Y(n))return n;const r=K(e);if(Y(r))return r;throw new SyntaxError(`${e.toString()} 不是一个合法的日期描述`)}function Z(e){const t=J(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0)}const Q=e=>{const t=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/").replace(/\.{3,}/g,"..").replace(/\/\.\//g,"/").split("/").map((e=>e.trim())),n=e=>".."===e,r=[];let o=!1;const i=e=>{r.push(e)};return t.forEach((e=>{const t=(e=>"."===e)(e),s=n(e);return o?t?void 0:s?(()=>{if(0===r.length)return;const e=r[r.length-1];n(e)?r.push(".."):r.pop()})():void i(e):(i(e),void(o=!t&&!s))})),r.join("/")},ee=(e,...t)=>Q([e,...t].join("/"));function te(e){const t=new URLSearchParams(e),n={};for(const[e,r]of t.entries())S(n[e])?n[e]=r:C(n[e])||(n[e]=t.getAll(e));return n}const ne=e=>b(e)?e:x(e)?String(e):w(e)?e?"true":"false":$(e)?e.toISOString():null;function re(e,t=ne){const n=new URLSearchParams;return O(e,((e,r)=>{if(C(e))e.forEach((e=>{const o=t(e);null!==o&&n.append(r.toString(),o)}));else{const o=t(e);if(null===o)return;n.set(r.toString(),o)}})),n.toString()}const oe=(e,t=!0)=>{let n=null;F(URL)&&t?n=new URL(e):(n=document.createElement("a"),n.href=e);const{protocol:r,username:o,password:i,host:s,port:a,hostname:c,hash:l,search:u,pathname:d}=n,f=ee("/",d),g=o&&i?`${o}:${i}`:"",h=u.replace(/^\?/,"");return n=null,{protocol:r,auth:g,username:o,password:i,host:s,port:a,hostname:c,hash:l,search:u,searchParams:te(h),query:h,pathname:f,path:`${f}${u}`,href:e}},ie=e=>{const{protocol:t,auth:n,host:r,pathname:o,searchParams:i,hash:s}=e,a=n?`${n}@`:"",c=re(i),l=c?`?${c}`:"";let u=s.replace(/^#/,"");return u=u?"#"+u:"",`${t}//${a}${r}${o}${l}${u}`},se=(e,t)=>{const n=oe(e);return Object.assign(n.searchParams,t),ie(n)};function ae(e,t,n){const r=document.createElement("a");r.download=t,r.style.display="none",r.href=e,document.body.appendChild(r),r.click(),setTimeout((()=>{document.body.removeChild(r),F(n)&&n()}))}function ce(e,t,n){const r=URL.createObjectURL(e);ae(r,t),setTimeout((()=>{URL.revokeObjectURL(r),F(n)&&n()}))}function le(){return!!document.createElement("canvas").getContext}function ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r}){let o=n,i=r;return(n>e||r>t)&&(n/r>e/t?(o=e,i=Math.round(e*(r/n))):(i=t,o=Math.round(t*(n/r)))),{width:o,height:i}}function de(e){return"undefined"!=typeof globalThis?globalThis[e]:"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:"undefined"!=typeof self?self[e]:void 0}const fe=(e,t)=>Math.floor(Math.random()*(t-e+1)+e),ge=`${P}${U}${B}`;const he=`${P}${U}${B}`,pe="undefined"!=typeof BigInt,me=()=>de("JSBI"),ye=e=>pe?BigInt(e):me().BigInt(e);function be(e,t=he){if(t.length<2)throw new Error("进制池长度不能少于 2");if(!pe)throw new Error('需要安装 jsbi 模块并将 JSBI 设置为全局变量:\nimport JSBI from "jsbi"; window.JSBI = JSBI;');let n=ye(e);const r=[],{length:o}=t,i=ye(o),s=()=>{const e=Number(((e,t)=>pe?e%t:me().remainder(e,t))(n,i));n=((e,t)=>pe?e/t:me().divide(e,t))(n,i),r.unshift(t[e]),n>0&&s()};return s(),r.join("")}const we=(e,t,n={ratio:1e3,decimals:0,separator:" "})=>{const{ratio:r=1e3,decimals:o=0,separator:i=" "}=n,{length:s}=t;if(0===s)throw new Error("At least one unit is required");let a=Number(e),c=0;for(;a>=r&&c<s-1;)a/=r,c++;const l=a.toFixed(o),u=t[c];return String(l)+i+u};function xe(e,t){if(E(t))return parseInt(String(e)).toLocaleString();let n=0;if(!x(t))throw new Error("Decimals must be a positive number not less than zero");return t>0&&(n=t),Number(Number(e).toFixed(n)).toLocaleString("en-US")}let Se=0,Ae=0;const Ee=(e=18)=>{const t=Date.now();e=Math.max(e,18),t!==Ae&&(Ae=t,Se=0);const n=`${t}`;let r="";const o=e-5-13;if(o>0){r=`${fe(10**(o-1),10**o-1)}`}const i=((e,t=2)=>String(e).padStart(t,"0"))(Se,5);return Se++,`${n}${r}${i}`},ve=e=>e[fe(0,e.length-1)];function Ce(e,t,n){let r=250,o=13;const i=e.children[0];q(t,12)<230?(i.style.maxWidth=q(t,12)+20+50+"px",r=n.clientX+(q(t,12)+50)-document.body.offsetWidth):(i.style.maxWidth="250px",r=n.clientX+230-document.body.offsetWidth),i.innerHTML=t,r>0&&(o-=r),e.style.top=n.clientY+23+"px",e.style.left=n.clientX+o+"px",e.style.maxWidth="250px";const s=e.getBoundingClientRect().top+i.offsetHeight-document.body.offsetHeight;s>0&&(e.style.top=n.clientY-s+"px")}const Fe={handleMouseEnter:function({rootContainer:e="#root",title:t,event:n,bgColor:r="#000",color:o="#fff"}){try{const i=b(e)?document.querySelector(e):e;if(!i)throw new Error(`${e} is not valid Html Element or element selector`);let s=null;const a="style-tooltip-inner1494304949567";if(!document.querySelector(`#${a}`)){const e=document.createElement("style");e.type="text/css",e.id=a,e.innerHTML=`\n .tooltip-inner1494304949567 {\n max-width: 250px;\n padding: 3px 8px;\n color: ${o};\n text-decoration: none;\n border-radius: 4px;\n text-align: left;\n background-color: ${r};\n }\n `,document.querySelector("head").appendChild(e)}if(s=document.querySelector("#customTitle1494304949567"),s)Ce(s,t,n);else{const e=document.createElement("div");e.id="customTitle1494304949567",e.style.cssText="z-index: 99999999; visibility: hidden; position: absolute;",e.innerHTML='<div class="tooltip-inner1494304949567" style="word-wrap: break-word; max-width: 44px;">皮肤</div>',i.appendChild(e),s=document.querySelector("#customTitle1494304949567"),t&&(Ce(s,t,n),s.style.visibility="visible")}}catch(e){console.error(e.message)}},handleMouseLeave:function(e="#root"){const t=b(e)?document.querySelector(e):e,n=document.querySelector("#customTitle1494304949567");t&&n&&t.removeChild(n)}},je={keyField:"key",childField:"children",pidField:"pid"},$e={childField:"children",nameField:"name",removeEmptyChild:!1,ignoreCase:!0};const Te=(e,t)=>{let n=0;const r=e.toString(),o=t.toString();return void 0!==r.split(".")[1]&&(n+=r.split(".")[1].length),void 0!==o.split(".")[1]&&(n+=o.split(".")[1].length),Number(r.replace(".",""))*Number(o.replace(".",""))/Math.pow(10,n)},Re=(e,t)=>{let n=0,r=0,o=0;try{n=e.toString().split(".")[1].length}catch(e){n=0}try{r=t.toString().split(".")[1].length}catch(e){r=0}return o=10**Math.max(n,r),(Te(e,o)+Te(t,o))/o};const Ie="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Oe=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;function Ne(e){let t,n,r,o,i="",s=0;const a=(e=String(e)).length,c=a%3;for(;s<a;){if((n=e.charCodeAt(s++))>255||(r=e.charCodeAt(s++))>255||(o=e.charCodeAt(s++))>255)throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");t=n<<16|r<<8|o,i+=Ie.charAt(t>>18&63)+Ie.charAt(t>>12&63)+Ie.charAt(t>>6&63)+Ie.charAt(63&t)}return c?i.slice(0,c-3)+"===".substring(c):i}function De(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!Oe.test(e))throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");let t,n,r,o="",i=0;for(const s=(e+="==".slice(2-(3&e.length))).length;i<s;)t=Ie.indexOf(e.charAt(i++))<<18|Ie.indexOf(e.charAt(i++))<<12|(n=Ie.indexOf(e.charAt(i++)))<<6|(r=Ie.indexOf(e.charAt(i++))),o+=64===n?String.fromCharCode(t>>16&255):64===r?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return o}const Le=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,Me=/^(?:(?:\+|00)86)?1\d{10}$/,Pe=/^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\d{4}(18|19|20)\d{2}[01]\d[0123]\d{4}[\dxX]$/,Be=/^(https?|ftp):\/\/([^\s/$.?#].[^\s]*)$/i,Ue=/^https?:\/\/([^\s/$.?#].[^\s]*)$/i,ke=/^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/,He=/^(([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}|([\da-fA-F]{1,4}:){1,7}:|([\da-fA-F]{1,4}:){1,6}:[\da-fA-F]{1,4}|([\da-fA-F]{1,4}:){1,5}(:[\da-fA-F]{1,4}){1,2}|([\da-fA-F]{1,4}:){1,4}(:[\da-fA-F]{1,4}){1,3}|([\da-fA-F]{1,4}:){1,3}(:[\da-fA-F]{1,4}){1,4}|([\da-fA-F]{1,4}:){1,2}(:[\da-fA-F]{1,4}){1,5}|[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,6})|:((:[\da-fA-F]{1,4}){1,7}|:)|fe80:(:[\da-fA-F]{0,4}){0,4}%[\da-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\d)?\d)\.){3}(25[0-5]|(2[0-4]|1?\d)?\d)|([\da-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\d)?\d)\.){3}(25[0-5]|(2[0-4]|1?\d)?\d))$/i,ze=/^(-?[1-9]\d*|0)$/,We=e=>ze.test(e),qe=/^-?([1-9]\d*|0)\.\d*[1-9]$/,_e=e=>qe.test(e),Ge=/^\d+$/;function Ve(e){return[...new Set(e.trim().split(""))].join("")}function Ye(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Xe(e,t){return new RegExp(`${Ye(e.trim())}\\s*([^${Ye(Ve(e))}${Ye(Ve(t))}\\s]*)\\s*${t.trim()}`,"g")}function Ke(e,t,n=new WeakMap){if(Object.is(e,t))return!0;const r=Object.prototype.toString.call(e);if(r!==Object.prototype.toString.call(t))return!1;if(v(e)&&v(t)){if(n.has(e))return n.get(e)===t;n.set(e,t),n.set(t,e)}switch(r){case"[object Date]":return e.getTime()===t.getTime();case"[object RegExp]":return e.toString()===t.toString();case"[object Map]":return function(e,t,n){if(e.size!==t.size)return!1;for(const[r,o]of e)if(!t.has(r)||!Ke(o,t.get(r),n))return!1;return!0}(e,t,n);case"[object Set]":return function(e,t,n){if(e.size!==t.size)return!1;for(const r of e){let e=!1;for(const o of t)if(Ke(r,o,n)){e=!0;break}if(!e)return!1}return!0}(e,t,n);case"[object ArrayBuffer]":return function(e,t){return e.byteLength===t.byteLength&&new DataView(e).getInt32(0)===new DataView(t).getInt32(0)}(e,t);case"[object DataView]":return function(e,t,n){return e.byteLength===t.byteLength&&Ke(new Uint8Array(e.buffer),new Uint8Array(t.buffer),n)}(e,t,n);case"[object Int8Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Int16Array]":case"[object Uint16Array]":case"[object Int32Array]":case"[object Uint32Array]":case"[object Float32Array]":case"[object Float64Array]":return function(e,t,n){return e.byteLength===t.byteLength&&Ke(Array.from(e),Array.from(t),n)}(e,t,n);case"[object Object]":return Je(e,t,n);case"[object Array]":return function(e,t,n){const r=Object.keys(e).map(Number),o=Object.keys(t).map(Number);if(r.length!==o.length)return!1;for(let r=0,o=e.length;r<o;r++)if(!Ke(e[r],t[r],n))return!1;return Je(e,t,n)}(e,t,n)}return!1}function Je(e,t,n){const r=Reflect.ownKeys(e),o=Reflect.ownKeys(t);if(r.length!==o.length)return!1;for(const i of r){if(!o.includes(i))return!1;if(!Ke(e[i],t[i],n))return!1}return Object.getPrototypeOf(e)===Object.getPrototypeOf(t)}e.EMAIL_REGEX=Le,e.HEX_POOL=he,e.HTTP_URL_REGEX=Ue,e.IPV4_REGEX=ke,e.IPV6_REGEX=He,e.PHONE_REGEX=Me,e.STRING_ARABIC_NUMERALS=P,e.STRING_LOWERCASE_ALPHA=B,e.STRING_POOL=ge,e.STRING_UPPERCASE_ALPHA=U,e.UNIQUE_NUMBER_SAFE_LENGTH=18,e.URL_REGEX=Be,e.add=Re,e.addClass=function(e,t){z(t,(t=>e.classList.add(t)))},e.arrayEach=t,e.arrayEachAsync=async function(e,t,n=!1){if(n)for(let n=e.length-1;n>=0&&!1!==await t(e[n],n);n--);else for(let n=0,r=e.length;n<r&&!1!==await t(e[n],n);n++);},e.arrayInsertBefore=function(e,t,n){if(t===n||t+1===n)return;const[r]=e.splice(t,1),o=n<t?n:n-1;e.splice(o,0,r)},e.arrayLike=m,e.arrayRemove=function(e,n){const r=[],o=n;return t(e,((e,t)=>{o(e,t)&&r.push(t)})),r.forEach(((t,n)=>{e.splice(t-n,1)})),e},e.asyncMap=function(e,t,n=1/0){return new Promise(((r,o)=>{const i=e[Symbol.iterator](),s=Math.min(e.length,n),a=[];let c,l=0,u=0;const d=()=>{if(c)return o(c);const n=i.next();if(n.done)return void(l===e.length&&r(a));const s=u++;t(n.value,s,e).then((e=>{l++,a[s]=e,d()})).catch((e=>{c=e,d()}))};for(let e=0;e<s;e++)d()}))},e.calculateDate=function(e,t,n="-"){const r=new Date(e),o=new Date(r.getFullYear(),r.getMonth(),r.getDate()).getTime()+864e5*parseInt(String(t)),i=new Date(o);return i.getFullYear()+n+String(i.getMonth()+1).padStart(2,"0")+"-"+String(i.getDate()).padStart(2,"0")},e.calculateDateTime=function(e,t,n="-",r=":"){const o=new Date(e),i=n,s=r,a=new Date(o.getFullYear(),o.getMonth(),o.getDate(),o.getHours(),o.getMinutes(),o.getSeconds()).getTime()+864e5*parseInt(String(t)),c=new Date(a);return c.getFullYear()+i+String(c.getMonth()+1).padStart(2,"0")+i+String(c.getDate()).padStart(2,"0")+" "+String(c.getHours()).padStart(2,"0")+s+String(c.getMinutes()).padStart(2,"0")+s+String(c.getSeconds()).padStart(2,"0")},e.chooseLocalFile=function(e,t){const n=document.createElement("input");n.setAttribute("id",String(Date.now())),n.setAttribute("type","file"),n.setAttribute("style","visibility:hidden"),n.setAttribute("accept",e),document.body.appendChild(n),n.click(),n.onchange=e=>{t(e.target.files),setTimeout((()=>document.body.removeChild(n)))}},e.cloneDeep=function e(t,n=new WeakMap){if(null===t||"object"!=typeof t)return t;if(n.has(t))return n.get(t);if(t instanceof ArrayBuffer){const e=new ArrayBuffer(t.byteLength);return new Uint8Array(e).set(new Uint8Array(t)),n.set(t,e),e}if(ArrayBuffer.isView(t)){return new(0,t.constructor)(e(t.buffer,n),t.byteOffset,t.length)}if(t instanceof Date){const e=new Date(t.getTime());return n.set(t,e),e}if(t instanceof RegExp){const e=new RegExp(t.source,t.flags);return e.lastIndex=t.lastIndex,n.set(t,e),e}if(t instanceof Map){const r=new Map;return n.set(t,r),t.forEach(((t,o)=>{r.set(e(o,n),e(t,n))})),r}if(t instanceof Set){const r=new Set;return n.set(t,r),t.forEach((t=>{r.add(e(t,n))})),r}if(Array.isArray(t)){const r=new Array(t.length);n.set(t,r);for(let o=0,i=t.length;o<i;o++)o in t&&(r[o]=e(t[o],n));const o=Object.getOwnPropertyDescriptors(t);for(const t of Reflect.ownKeys(o))Object.defineProperty(r,t,{...o[t],value:e(o[t].value,n)});return r}const r=Object.create(Object.getPrototypeOf(t));n.set(t,r);const o=Object.getOwnPropertyDescriptors(t);for(const t of Reflect.ownKeys(o)){const i=o[t];"value"in i?i.value=e(i.value,n):(i.get&&(i.get=e(i.get,n)),i.set&&(i.set=e(i.set,n))),Object.defineProperty(r,t,i)}return r},e.compressImg=function e(t,n={mime:"image/jpeg",minFileSizeKB:50}){if(!(t instanceof File||t instanceof FileList))throw new Error(`${t} require be File or FileList`);if(!le())throw new Error("Current runtime environment not support Canvas");const{quality:r,mime:o="image/jpeg",maxSize:i,minFileSizeKB:s=50}=v(n)?n:{};let a,c=r;if(r)c=r;else if(t instanceof File){const e=+parseInt((t.size/1024).toFixed(2));c=e<s?1:e<1024?.85:e<5120?.8:.75}return x(i)&&(a=i>=1200?i:1200),t instanceof FileList?Promise.all(Array.from(t).map((t=>e(t,{maxSize:a,mime:o,quality:c})))):t instanceof File?new Promise((e=>{const n=[...t.name.split(".").slice(0,-1),{"image/webp":"webp","image/jpeg":"jpg","image/png":"png"}[o]].join("."),r=+parseInt((t.size/1024).toFixed(2));if(r<s)e({file:t});else{const i=new FileReader;i.onload=({target:{result:i}})=>{const s=new Image;s.onload=()=>{const l=document.createElement("canvas"),u=l.getContext("2d"),d=s.width,f=s.height,{width:g,height:h}=function({sizeKB:e,maxSize:t,originWidth:n,originHeight:r}){let o=n,i=r;if(x(t)){const{width:e,height:s}=ue({maxWidth:t,maxHeight:t,originWidth:n,originHeight:r});o=e,i=s}else if(e<500){const e=1200,t=1200,{width:s,height:a}=ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r});o=s,i=a}else if(e<5120){const e=1400,t=1400,{width:s,height:a}=ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r});o=s,i=a}else if(e<10240){const e=1600,t=1600,{width:s,height:a}=ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r});o=s,i=a}else if(10240<=e){const e=n>15e3?8192:n>1e4?4096:2048,t=r>15e3?8192:r>1e4?4096:2048,{width:s,height:a}=ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r});o=s,i=a}return{width:o,height:i}}({sizeKB:r,maxSize:a,originWidth:d,originHeight:f});l.width=g,l.height=h,u.clearRect(0,0,g,h),u.drawImage(s,0,0,g,h);const p=l.toDataURL(o,c),m=atob(p.split(",")[1]);let y=m.length;const b=new Uint8Array(new ArrayBuffer(y));for(;y--;)b[y]=m.charCodeAt(y);const w=new File([b],n,{type:o});e({file:w,bufferArray:b,origin:t,beforeSrc:i,afterSrc:p,beforeKB:r,afterKB:Number((w.size/1024).toFixed(2))})},s.src=i},i.readAsDataURL(t)}})):Promise.resolve(null)},e.cookieDel=e=>V(e,"",-1),e.cookieGet=function(e){const{cookie:t}=document;if(!t)return"";const n=t.split(";");for(let t=0;t<n.length;t++){const r=n[t],[o,i=""]=r.split("=");if(o===e)return decodeURIComponent(i)}return""},e.cookieSet=V,e.copyText=function(e,t){const{successCallback:n,failCallback:r}=E(t)?{}:t;navigator.clipboard?navigator.clipboard.writeText(e).then((()=>{F(n)&&n()})).catch((n=>{G(e,t)})):G(e,t)},e.crossOriginDownload=function(e,t,n){const{successCode:r=200,successCallback:o,failCallback:i}=E(n)?{successCode:200,successCallback:void 0,failCallback:void 0}:n,s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="blob",s.onload=function(){if(s.status===r)ce(s.response,t,o);else if(F(i)){const e=s.status,t=s.getResponseHeader("Content-Type");if(b(t)&&t.includes("application/json")){const t=new FileReader;t.onload=()=>{i({status:e,response:t.result})},t.readAsText(s.response)}else i(s)}},s.onerror=e=>{F(i)&&i({status:0,code:"ERROR_CONNECTION_REFUSED"})},s.send()},e.dateParse=J,e.dateToEnd=function(e){const t=Z(e);return t.setDate(t.getDate()+1),J(t.getTime()-1)},e.dateToStart=Z,e.debounce=(e,t)=>{let n,r=!1;const o=function(...o){r||(clearTimeout(n),n=setTimeout((()=>{e.call(this,...o)}),t))};return o.cancel=()=>{clearTimeout(n),r=!0},o},e.decodeFromBase64=function(e){const t=E(de("atob"))?De(e):de("atob")(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return E(de("TextDecoder"))?function(e){const t=String.fromCharCode.apply(null,e);return decodeURIComponent(t)}(r):new(de("TextDecoder"))("utf-8").decode(r)},e.divide=(e,t)=>{let n=0,r=0,o=0,i=0;return void 0!==e.toString().split(".")[1]&&(n=e.toString().split(".")[1].length),void 0!==t.toString().split(".")[1]&&(r=t.toString().split(".")[1].length),o=Number(e.toString().replace(".","")),i=Number(t.toString().replace(".","")),o/i*Math.pow(10,r-n)},e.downloadBlob=ce,e.downloadData=function(e,t,n,r){if(n=n.replace(`.${t}`,"")+`.${t}`,"json"===t){ce(new Blob([JSON.stringify(e,null,4)]),n)}else{if(!r||!r.length)throw new Error("未传入表头数据");if(!Array.isArray(e))throw new Error("data error! expected array!");const o=r.join(",")+"\n";let i="";e.forEach((e=>{i+=Object.values(e).join(",\t")+",\n"}));ae("data:"+{csv:"text/csv",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}[t]+";charset=utf-8,\ufeff"+encodeURIComponent(o+i),n)}},e.downloadHref=ae,e.downloadURL=function(e,t){window.open(t?se(e,t):e)},e.encodeToBase64=function(e){const t=E(de("TextEncoder"))?function(e){const t=encodeURIComponent(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}(e):(new(de("TextEncoder"))).encode(e);let n="";const r=t.length;for(let e=0;e<r;e++)n+=String.fromCharCode(t[e]);return E(de("btoa"))?Ne(n):de("btoa")(n)},e.escapeRegExp=Ye,e.executeInScope=function(e,t={}){const n=Object.keys(t),r=n.map((e=>t[e]));try{return new Function(...n,`return (() => { ${e} })()`)(...r)}catch(e){throw new Error(`代码执行失败: ${e.message}`)}},e.fallbackCopyText=G,e.flatTree=function e(t,n=je){const{childField:r,keyField:o,pidField:i}=n;let s=[];for(let a=0,c=t.length;a<c;a++){const c=t[a],l={...c,[r]:[]};if(p(l,r)&&delete l[r],s.push(l),c[r]){const t=c[r].map((e=>({...e,[i]:c[o]||e.pid})));s=s.concat(e(t,n))}}return s},e.forEachDeep=function(e,t,n="children",r=!1){let o=!1;const i=(s,a,c=0)=>{if(r)for(let r=s.length-1;r>=0&&!o;r--){const l=t(s[r],r,s,e,a,c);if(!1===l){o=!0;break}!0!==l&&s[r]&&Array.isArray(s[r][n])&&i(s[r][n],s[r],c+1)}else for(let r=0,l=s.length;r<l&&!o;r++){const l=t(s[r],r,s,e,a,c);if(!1===l){o=!0;break}!0!==l&&s[r]&&Array.isArray(s[r][n])&&i(s[r][n],s[r],c+1)}};i(e,null),e=null},e.formatDate=function(e,t="YYYY-MM-DD HH:mm:ss"){const n=J(e);let r,o=t;const i={"Y+":`${n.getFullYear()}`,"y+":`${n.getFullYear()}`,"M+":`${n.getMonth()+1}`,"D+":`${n.getDate()}`,"d+":`${n.getDate()}`,"H+":`${n.getHours()}`,"m+":`${n.getMinutes()}`,"s+":`${n.getSeconds()}`,"S+":`${n.getMilliseconds()}`,"w+":["周日","周一","周二","周三","周四","周五","周六"][n.getDay()]};for(const e in i)r=new RegExp("("+e+")").exec(o),r&&(o=o.replace(r[1],1===r[1].length?i[e]:i[e].padStart(r[1].length,"0")));return o},e.formatMoney=xe,e.formatNumber=xe,e.formatTree=function(e,t=je){const{keyField:n,childField:r,pidField:o}=t,i=[],s={};for(let t=0,r=e.length;t<r;t++){const r=e[t];s[r[n]]=r}for(let t=0,n=e.length;t<n;t++){const n=e[t],a=s[n[o]];a?(a[r]||(a[r]=[])).push(n):i.push(n)}return e=null,i},e.fuzzySearchTree=function e(t,n,r=$e){if(!p(n,"filter")&&(!p(n,"keyword")||T(n.keyword)))return t;const o=[];for(let i=0,s=t.length;i<s;i++){const s=t[i],a=s[r.childField]&&s[r.childField].length>0?e(s[r.childField]||[],n,r):[];if((p(n,"filter")?n.filter(s):r.ignoreCase?s[r.nameField].toLowerCase().includes(n.keyword.toLowerCase()):s[r.nameField].includes(n.keyword))||a.length>0)if(s[r.childField])if(a.length>0)o.push({...s,[r.childField]:a});else if(r.removeEmptyChild){const{[r.childField]:e,...t}=s;o.push(t)}else o.push({...s,[r.childField]:[]});else{const{[r.childField]:e,...t}=s;o.push(t)}}return o},e.genCanvasWM=function e(t="请勿外传",n){const{rootContainer:r=document.body,width:o="300px",height:i="150px",textAlign:s="center",textBaseline:a="middle",font:c="20px PingFangSC-Medium,PingFang SC",fillStyle:l="rgba(189, 177, 167, .3)",rotate:u=-20,zIndex:d=2147483647,watermarkId:f="__wm"}=E(n)?{}:n,g=b(r)?document.querySelector(r):r;if(!g)throw new Error(`${r} is not valid Html Element or element selector`);const h=document.createElement("canvas");h.setAttribute("width",o),h.setAttribute("height",i);const p=h.getContext("2d");p.textAlign=s,p.textBaseline=a,p.font=c,p.fillStyle=l,p.rotate(Math.PI/180*u),p.fillText(t,parseFloat(o)/4,parseFloat(i)/2);const m=h.toDataURL(),y=document.querySelector(`#${f}`),w=y||document.createElement("div"),x=`opacity: 1 !important; display: block !important; visibility: visible !important; position:absolute; left:0; top:0; width:100%; height:100%; z-index:${d}; pointer-events:none; background-repeat:repeat; background-image:url('${m}')`;w.setAttribute("style",x),w.setAttribute("id",f),w.classList.add("nav-height"),y||(g.style.position="relative",g.appendChild(w));const S=window.MutationObserver||window.WebKitMutationObserver;if(S){let r=new S((function(){const o=document.querySelector(`#${f}`);if(o){const{opacity:i,zIndex:s,display:a,visibility:c}=(e=>{const t=getComputedStyle(e);return{opacity:t.getPropertyValue("opacity"),zIndex:t.getPropertyValue("z-index"),display:t.getPropertyValue("display"),visibility:t.getPropertyValue("visibility")}})(o);(o&&o.getAttribute("style")!==x||!o||"1"!==i||"2147483647"!==s||"block"!==a||"visible"!==c)&&(r.disconnect(),r=null,g.removeChild(o),e(t,n))}else r.disconnect(),r=null,e(t,n)}));r.observe(g,{attributes:!0,subtree:!0,childList:!0})}},e.getComputedCssVal=function(e,t,n=!0){const r=getComputedStyle(e).getPropertyValue(t)??"";return n?Number(r.replace(/([0-9]*)(.*)/g,"$1")):r},e.getGlobal=de,e.getStrWidthPx=q,e.getStyle=function(e,t){return getComputedStyle(e).getPropertyValue(t)},e.hasClass=function(e,t){if(-1!==t.indexOf(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},e.humanFileSize=function(e,t={decimals:0,si:!1,separator:" "}){const{decimals:n=0,si:r=!1,separator:o=" ",baseUnit:i,maxUnit:s}=t;let a=r?["B","kB","MB","GB","TB","PB","EB","ZB","YB"]:["Byte","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"];if(!E(i)){const e=a.findIndex((e=>e===i));-1!==e&&(a=a.slice(e))}if(!E(s)){const e=a.findIndex((e=>e===s));-1!==e&&a.splice(e+1)}return we(e,a,{ratio:r?1e3:1024,decimals:n,separator:o})},e.isArray=C,e.isBigInt=e=>"bigint"==typeof e,e.isBoolean=w,e.isDate=$,e.isDigit=e=>Ge.test(e),e.isEmail=e=>Le.test(e),e.isEmpty=T,e.isEqual=function(e,t){return Ke(e,t)},e.isError=e=>"Error"===y(e),e.isFloat=_e,e.isFunction=F,e.isIdNo=e=>{if(!Pe.test(e))return!1;const t=Number(e.slice(6,10)),n=Number(e.slice(10,12)),r=Number(e.slice(12,14)),o=new Date(t,n-1,r);if(!(o.getFullYear()===t&&o.getMonth()+1===n&&o.getDate()===r))return!1;const i=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];let s=0;for(let t=0;t<17;t++)s+=Number(e.slice(t,t+1))*i[t];return["1","0","X","9","8","7","6","5","4","3","2"][s%11]===e.slice(-1)},e.isInteger=We,e.isIpV4=e=>ke.test(e),e.isIpV6=e=>He.test(e),e.isJsonString=function(e){try{const t=JSON.parse(e);return"object"==typeof t&&null!==t&&t}catch(e){return!1}},e.isNaN=j,e.isNull=A,e.isNullOrUnDef=E,e.isNullish=E,e.isNumber=x,e.isNumerical=e=>We(e)||_e(e),e.isObject=v,e.isPhone=e=>Me.test(e),e.isPlainObject=I,e.isPrimitive=e=>null===e||"object"!=typeof e,e.isRegExp=e=>"RegExp"===y(e),e.isString=b,e.isSymbol=e=>"symbol"==typeof e,e.isUndefined=S,e.isUrl=(e,t=!1)=>(t?Be:Ue).test(e),e.isValidDate=Y,e.mapDeep=function(e,t,n="children",r=!1){let o=!1;const i=[],s=(i,a,c,l=0)=>{if(r)for(let r=i.length-1;r>=0&&!o;r--){const u=t(i[r],r,i,e,a,l);if(!1===u){o=!0;break}!0!==u&&(c.push(N(u,[n])),i[r]&&Array.isArray(i[r][n])?(c[c.length-1][n]=[],s(i[r][n],i[r],c[c.length-1][n],l+1)):delete u[n])}else for(let r=0;r<i.length&&!o;r++){const u=t(i[r],r,i,e,a,l);if(!1===u){o=!0;break}!0!==u&&(c.push(N(u,[n])),i[r]&&Array.isArray(i[r][n])?(c[c.length-1][n]=[],s(i[r][n],i[r],c[c.length-1][n],l+1)):delete u[n])}};return s(e,null,i),e=null,i},e.multiply=Te,e.numberAbbr=we,e.numberToHex=be,e.objectAssign=L,e.objectEach=O,e.objectEachAsync=async function(e,t){for(const n in e)if(p(e,n)&&!1===await t(e[n],n))break},e.objectFill=function(e,t,n){const r=n||((e,t,n)=>void 0===e[n]);return O(t,((n,o)=>{r(e,t,o)&&(e[o]=n)})),e},e.objectGet=function(e,t,n=!1){const r=(t=(t=t.replace(/\[(\w+)\]/g,".$1")).replace(/^\./,"")).split(".");let o=e,i=0;for(let e=r.length;i<e-1;++i){const e=r[i];if(x(Number(e))&&Array.isArray(o))o=o[e];else{if(!v(o)||!p(o,e)){if(o=void 0,n)throw new Error("[Object] objectGet path 路径不正确");break}o=o[e]}}return{p:o,k:o?r[i]:void 0,v:o?o[r[i]]:void 0}},e.objectHas=p,e.objectMap=function(e,t){const n={};for(const r in e)p(e,r)&&(n[r]=t(e[r],r));return e=null,n},e.objectMerge=L,e.objectOmit=N,e.objectPick=function(e,t){const n={};return O(e,((e,r)=>{t.includes(r)&&(n[r]=e)})),e=null,n},e.once=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.call(this,...r)),t}},e.parseQueryParams=function(e=location.search){const t={};return Array.from(e.matchAll(/[&?]?([^=&]+)=?([^=&]*)/g)).forEach(((e,n)=>{t[e[1]]?"string"==typeof t[e[1]]?t[e[1]]=[t[e[1]],e[2]]:t[e[1]].push(e[2]):t[e[1]]=e[2]})),t},e.parseVarFromString=function(e,t="{",n="}"){return Array.from(e.matchAll(Xe(t,n))).map((e=>E(e)?void 0:e[1]))},e.pathJoin=ee,e.pathNormalize=Q,e.qsParse=te,e.qsStringify=re,e.randomNumber=fe,e.randomString=(e,t)=>{let n=0,r=ge;b(t)?(n=e,r=t):x(e)?n=e:b(e)&&(r=e);let o=Math.max(n,1),i="";const s=r.length-1;if(s<2)throw new Error("字符串池长度不能少于 2");for(;o--;){i+=r[fe(0,s)]}return i},e.randomUuid=function(){if("undefined"==typeof URL||!URL.createObjectURL||"undefined"==typeof Blob){const e="0123456789abcdef",t="xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx";let n="";for(let r=0;r<t.length;r++){const o=fe(0,15);n+="-"==t[r]||"4"==t[r]?t[r]:e[o]}return n}return/[^/]+$/.exec(URL.createObjectURL(new Blob).slice())[0]},e.removeClass=function(e,t){z(t,(t=>e.classList.remove(t)))},e.replaceVarFromString=function(e,t,n="{",r="}"){return e.replace(new RegExp(Xe(n,r)),(function(e,n){return p(t,n)?t[n]:e}))},e.safeAwait=function(e,t){return e.then((e=>[null,e])).catch((e=>{if(t){return[Object.assign({},e,t),void 0]}return[e,void 0]}))},e.searchTreeById=function(e,t,n){const{children:r="children",id:o="id"}=n||{},i=(e,t,n)=>e.reduce(((e,s)=>{const a=s[r];return[...e,t?{...s,parentId:t,parent:n}:s,...a&&a.length?i(a,s[o],s):[]]}),[]);return(e=>{let n=e.find((e=>e[o]===t));const{parent:r,parentId:i,...s}=n;let a=[t],c=[s];for(;n&&n.parentId;)a=[n.parentId,...a],c=[n.parent,...c],n=e.find((e=>e[o]===n.parentId));return[a,c]})(i(e))},e.select=_,e.setGlobal=function(e,t){if("undefined"!=typeof globalThis)globalThis[e]=t;else if("undefined"!=typeof window)window[e]=t;else if("undefined"!=typeof global)global[e]=t;else{if("undefined"==typeof self)throw new SyntaxError("当前环境下无法设置全局属性");self[e]=t}},e.setStyle=W,e.smoothScroll=function(e){return new Promise((n=>{const r={el:document,to:0,duration:567,easing:"ease"},{el:o,to:i,duration:s,easing:a}=L(r,e),c=document.documentElement,l=document.body,u=o===window||o===document||o===c||o===l?[c,l]:[o];let f;const g=(()=>{let e=0;return t(u,(t=>{if("scrollTop"in t)return e=t.scrollTop,!1})),e})(),h=i-g,p=function(e){let t;if(C(e))t=d(...e);else{const n=R[e];if(!n)throw new Error(`${e} 缓冲函数未定义`);t=d(...n)}return e=>t(Math.max(0,Math.min(e,1)))}(a),m=()=>{const e=performance.now(),t=(f?e-f:0)/s,r=p(t);var o;f||(f=e),o=g+h*r,u.forEach((e=>{"scrollTop"in e&&(e.scrollTop=o)})),t>=1?n():requestAnimationFrame(m)};m()}))},e.stringAssign=(e,t)=>e.replace(H,((e,n)=>((e,t)=>{try{return new Function(`with(arguments[0]){if(arguments[0].${e} === undefined)throw "";return String(arguments[0].${e})}`)(t)}catch(t){throw new SyntaxError(`无法执行表达式:${e}`)}})(n,t))),e.stringCamelCase=function(e,t){let n=e;return t&&(n=e.replace(/^./,(e=>e.toUpperCase()))),n.replace(/[\s_-](.)/g,((e,t)=>t.toUpperCase()))},e.stringEscapeHtml=e=>{const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return e.replace(/[&<>"]/g,(e=>t[e]))},e.stringFill=(e,t=" ")=>new Array(e).fill(t).join(""),e.stringFormat=function(e,...t){let n=0;return[e.replace(k,(e=>{const r=t[n++];switch(e){case"%%":return n--,"%";default:case"%s":return String(r);case"%d":return String(Number(r));case"%o":return JSON.stringify(r)}})),...t.splice(n).map(String)].join(" ")},e.stringKebabCase=M,e.strip=function(e,t=15){return+parseFloat(Number(e).toPrecision(t))},e.subtract=(e,t)=>Re(e,-t),e.supportCanvas=le,e.throttle=(e,t,n)=>{let r,o=!1,i=0;const s=function(...s){if(o)return;const a=Date.now(),c=()=>{i=a,e.call(this,...s)};if(0===i)return n?c():void(i=a);i+t-a>0?(clearTimeout(r),r=setTimeout((()=>c()),t)):c()};return s.cancel=()=>{clearTimeout(r),o=!0},s},e.tooltipEvent=Fe,e.typeIs=y,e.uniqueNumber=Ee,e.uniqueString=(e,t)=>{let n=0,r=he;b(t)?(n=e,r=t):x(e)?n=e:b(e)&&(r=e);let o=be(Ee(),r),i=n-o.length;if(i<=0)return o;for(;i--;)o+=ve(r);return o},e.uniqueSymbol=Ve,e.urlDelParams=(e,t)=>{const n=oe(e);return t.forEach((e=>delete n.searchParams[e])),ie(n)},e.urlParse=oe,e.urlSetParams=se,e.urlStringify=ie,e.wait=function(e=1){return new Promise((t=>setTimeout(t,e)))},e.weAtob=De,e.weBtoa=Ne}));
6
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).sculpJs={})}(this,(function(e){"use strict";function t(e,t,n=!1){if(n)for(let n=e.length-1;n>=0;n--){const r=t(e[n],n,e);if(!1===r)break}else for(let n=0,r=e.length;n<r;n++){const r=t(e[n],n,e);if(!1===r)break}e=null}function n(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var r=.1,o="function"==typeof Float32Array;function i(e,t){return 1-3*t+3*e}function s(e,t){return 3*t-6*e}function a(e){return 3*e}function c(e,t,n){return((i(t,n)*e+s(t,n))*e+a(t))*e}function l(e,t,n){return 3*i(t,n)*e*e+2*s(t,n)*e+a(t)}function u(e){return e}var d=n((function(e,t,n,i){if(!(0<=e&&e<=1&&0<=n&&n<=1))throw new Error("bezier x values must be in [0, 1] range");if(e===t&&n===i)return u;for(var s=o?new Float32Array(11):new Array(11),a=0;a<11;++a)s[a]=c(a*r,e,n);function d(t){for(var o=0,i=1;10!==i&&s[i]<=t;++i)o+=r;--i;var a=o+(t-s[i])/(s[i+1]-s[i])*r,u=l(a,e,n);return u>=.001?function(e,t,n,r){for(var o=0;o<4;++o){var i=l(t,n,r);if(0===i)return t;t-=(c(t,n,r)-e)/i}return t}(t,a,e,n):0===u?a:function(e,t,n,r,o){var i,s,a=0;do{(i=c(s=t+(n-t)/2,r,o)-e)>0?n=s:t=s}while(Math.abs(i)>1e-7&&++a<10);return s}(t,o,o+r,e,n)}return function(e){return 0===e?0:1===e?1:c(d(e),t,i)}}));const{toString:f,hasOwnProperty:h,propertyIsEnumerable:p}=Object.prototype;function g(e,t){return h.call(e,t)}function m(e){return!!F(e)||(!!b(e)||!!v(e)&&g(e,"length"))}function y(e){return f.call(e).slice(8,-1)}const b=e=>"string"==typeof e,w=e=>"boolean"==typeof e,x=e=>"number"==typeof e&&!Number.isNaN(e),S=e=>void 0===e,A=e=>null===e;function E(e){return S(e)||A(e)}const v=e=>"Object"===y(e),F=e=>Array.isArray(e),C=e=>"function"==typeof e,j=e=>Number.isNaN(e),$=e=>"Date"===y(e);function T(e){if(E(e)||Number.isNaN(e))return!0;const t=y(e);return m(e)||"Arguments"===t?!e.length:"Set"===t||"Map"===t?!e.size:!Object.keys(e).length}const R={linear:[0,0,1,1],ease:[.25,.1,.25,1],"ease-in":[.42,0,1,1],"ease-out":[0,0,.58,1],"ease-in-out":[.42,0,.58,1]};const I=e=>{if(!v(e))return!1;const t=Object.getPrototypeOf(e);return!t||t===Object.prototype};function O(e,t){for(const n in e)if(g(e,n)&&!1===t(e[n],n))break;e=null}function N(e,t){const n={};return O(e,((e,r)=>{t.includes(r)||(n[r]=e)})),e=null,n}const D=(e,t,n)=>{if(S(n))return t;if(y(t)!==y(n))return F(n)?D(e,[],n):v(n)?D(e,{},n):n;if(I(n)){const r=e.get(n);return r||(e.set(n,t),O(n,((n,r)=>{t[r]=D(e,t[r],n)})),t)}if(F(n)){const r=e.get(n);return r||(e.set(n,t),n.forEach(((n,r)=>{t[r]=D(e,t[r],n)})),t)}return n};function k(e,...t){const n=new Map;for(let r=0,o=t.length;r<o;r++){const o=t[r];e=D(n,e,o)}return n.clear(),e}function L(e,t="-"){return e.replace(/^./,(e=>e.toLowerCase())).replace(/[A-Z]/g,(e=>`${t}${e.toLowerCase()}`))}const M="0123456789",P="abcdefghijklmnopqrstuvwxyz",B="ABCDEFGHIJKLMNOPQRSTUVWXYZ",U=/%[%sdo]/g;const H=/\${(.*?)}/g;const z=(e,t)=>{e.split(/\s+/g).forEach(t)};const W=(e,t,n)=>{v(t)?O(t,((t,n)=>{W(e,n,t)})):e.style.setProperty(L(t),n)};function q(e,t=14,n=!0){let r=0;if(console.assert(b(e),`${e} 不是有效的字符串`),b(e)&&e.length>0){const o="getStrWidth1494304949567";let i=document.querySelector(`#${o}`);if(!i){const n=document.createElement("span");n.id=o,n.style.fontSize=t+"px",n.style.whiteSpace="nowrap",n.style.visibility="hidden",n.style.position="absolute",n.style.top="-9999px",n.style.left="-9999px",n.textContent=e,document.body.appendChild(n),i=n}i.textContent=e,r=i.offsetWidth,n&&i.remove()}return r}function _(e){let t;if("SELECT"===e.nodeName)e.focus(),t=e.value;else if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName){const n=e.hasAttribute("readonly");n||e.setAttribute("readonly",""),e.select(),e.setSelectionRange(0,e.value.length),n||e.removeAttribute("readonly"),t=e.value}else{e.hasAttribute("contenteditable")&&e.focus();const n=window.getSelection(),r=document.createRange();r.selectNodeContents(e),n.removeAllRanges(),n.addRange(r),t=n.toString()}return t}function G(e,t){const{successCallback:n,failCallback:r,container:o=document.body}=E(t)?{}:t,i=function(e){const t="rtl"===document.documentElement.getAttribute("dir"),n=document.createElement("textarea");n.style.fontSize="12pt",n.style.border="0",n.style.padding="0",n.style.margin="0",n.style.position="absolute",n.style[t?"right":"left"]="-9999px";const r=window.pageYOffset||document.documentElement.scrollTop;return n.style.top=`${r}px`,n.setAttribute("readonly",""),n.value=e,n}(e);o.appendChild(i),_(i);try{document.execCommand("copy")&&C(n)&&n()}catch(e){C(r)&&r(e)}finally{o.removeChild(i),window.getSelection()?.removeAllRanges()}}function V(e,t,n){const r=[],o="expires";if(r.push([e,encodeURIComponent(t)]),x(n)){const e=new Date;e.setTime(e.getTime()+n),r.push([o,e.toUTCString()])}else $(n)&&r.push([o,n.toUTCString()]);r.push(["path","/"]),document.cookie=r.map((e=>{const[t,n]=e;return`${t}=${n}`})).join(";")}const Y=e=>$(e)&&!j(e.getTime()),X=e=>{if(!b(e))return;const t=e.replace(/-/g,"/");return new Date(t)},K=e=>{if(!b(e))return;const t=/([+-])(\d\d)(\d\d)$/,n=t.exec(e);if(!n)return;const r=e.replace(t,"Z"),o=new Date(r);if(!Y(o))return;const[,i,s,a]=n,c=parseInt(s,10),l=parseInt(a,10),u=(e,t)=>"+"===i?e-t:e+t;return o.setHours(u(o.getHours(),c)),o.setMinutes(u(o.getMinutes(),l)),o};function J(e){const t=new Date(e);if(Y(t))return t;const n=X(e);if(Y(n))return n;const r=K(e);if(Y(r))return r;throw new SyntaxError(`${e.toString()} 不是一个合法的日期描述`)}function Z(e){const t=J(e);return new Date(t.getFullYear(),t.getMonth(),t.getDate(),0,0,0,0)}const Q=e=>{const t=e.replace(/\\/g,"/").replace(/\/{2,}/g,"/").replace(/\.{3,}/g,"..").replace(/\/\.\//g,"/").split("/").map((e=>e.trim())),n=e=>".."===e,r=[];let o=!1;const i=e=>{r.push(e)};return t.forEach((e=>{const t=(e=>"."===e)(e),s=n(e);return o?t?void 0:s?(()=>{if(0===r.length)return;const e=r[r.length-1];n(e)?r.push(".."):r.pop()})():void i(e):(i(e),void(o=!t&&!s))})),r.join("/")},ee=(e,...t)=>Q([e,...t].join("/"));function te(e){const t=new URLSearchParams(e),n={};for(const[e,r]of t.entries())S(n[e])?n[e]=r:F(n[e])||(n[e]=t.getAll(e));return n}const ne=e=>b(e)?e:x(e)?String(e):w(e)?e?"true":"false":$(e)?e.toISOString():null;function re(e,t=ne){const n=new URLSearchParams;return O(e,((e,r)=>{if(F(e))e.forEach((e=>{const o=t(e);null!==o&&n.append(r.toString(),o)}));else{const o=t(e);if(null===o)return;n.set(r.toString(),o)}})),n.toString()}const oe=(e,t=!0)=>{let n=null;C(URL)&&t?n=new URL(e):(n=document.createElement("a"),n.href=e);const{protocol:r,username:o,password:i,host:s,port:a,hostname:c,hash:l,search:u,pathname:d}=n,f=ee("/",d),h=o&&i?`${o}:${i}`:"",p=u.replace(/^\?/,"");return n=null,{protocol:r,auth:h,username:o,password:i,host:s,port:a,hostname:c,hash:l,search:u,searchParams:te(p),query:p,pathname:f,path:`${f}${u}`,href:e}},ie=e=>{const{protocol:t,auth:n,host:r,pathname:o,searchParams:i,hash:s}=e,a=n?`${n}@`:"",c=re(i),l=c?`?${c}`:"";let u=s.replace(/^#/,"");return u=u?"#"+u:"",`${t}//${a}${r}${o}${l}${u}`},se=(e,t)=>{const n=oe(e);return Object.assign(n.searchParams,t),ie(n)};function ae(e,t,n){const r=document.createElement("a");r.download=t,r.style.display="none",r.href=e,document.body.appendChild(r),r.click(),setTimeout((()=>{document.body.removeChild(r),C(n)&&n()}))}function ce(e,t,n){const r=URL.createObjectURL(e);ae(r,t),setTimeout((()=>{URL.revokeObjectURL(r),C(n)&&n()}))}function le(){return!!document.createElement("canvas").getContext}function ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r}){let o=n,i=r;return(n>e||r>t)&&(n/r>e/t?(o=e,i=Math.round(e*(r/n))):(i=t,o=Math.round(t*(n/r)))),{width:o,height:i}}function de(e){return"undefined"!=typeof globalThis?globalThis[e]:"undefined"!=typeof window?window[e]:"undefined"!=typeof global?global[e]:"undefined"!=typeof self?self[e]:void 0}const fe=(e,t)=>Math.floor(Math.random()*(t-e+1)+e),he=`${M}${B}${P}`;const pe=`${M}${B}${P}`,ge="undefined"!=typeof BigInt,me=()=>de("JSBI"),ye=e=>ge?BigInt(e):me().BigInt(e);function be(e,t=pe){if(t.length<2)throw new Error("进制池长度不能少于 2");if(!ge)throw new Error('需要安装 jsbi 模块并将 JSBI 设置为全局变量:\nimport JSBI from "jsbi"; window.JSBI = JSBI;');let n=ye(e);const r=[],{length:o}=t,i=ye(o),s=()=>{const e=Number(((e,t)=>ge?e%t:me().remainder(e,t))(n,i));n=((e,t)=>ge?e/t:me().divide(e,t))(n,i),r.unshift(t[e]),n>0&&s()};return s(),r.join("")}const we=(e,t,n={ratio:1e3,decimals:0,separator:" "})=>{const{ratio:r=1e3,decimals:o=0,separator:i=" "}=n,{length:s}=t;if(0===s)throw new Error("At least one unit is required");let a=Number(e),c=0;for(;a>=r&&c<s-1;)a/=r,c++;const l=a.toFixed(o),u=t[c];return String(l)+i+u};function xe(e,t){if(E(t))return parseInt(String(e)).toLocaleString();let n=0;if(!x(t))throw new Error("Decimals must be a positive number not less than zero");return t>0&&(n=t),Number(Number(e).toFixed(n)).toLocaleString("en-US")}let Se=0,Ae=0;const Ee=(e=18)=>{const t=Date.now();e=Math.max(e,18),t!==Ae&&(Ae=t,Se=0);const n=`${t}`;let r="";const o=e-5-13;if(o>0){r=`${fe(10**(o-1),10**o-1)}`}const i=((e,t=2)=>String(e).padStart(t,"0"))(Se,5);return Se++,`${n}${r}${i}`},ve=e=>e[fe(0,e.length-1)];function Fe(e,t,n){let r=250,o=13;const i=e.children[0];q(t,12)<230?(i.style.maxWidth=q(t,12)+20+50+"px",r=n.clientX+(q(t,12)+50)-document.body.offsetWidth):(i.style.maxWidth="250px",r=n.clientX+230-document.body.offsetWidth),i.innerHTML=t,r>0&&(o-=r),e.style.top=n.clientY+23+"px",e.style.left=n.clientX+o+"px",e.style.maxWidth="250px";const s=e.getBoundingClientRect().top+i.offsetHeight-document.body.offsetHeight;s>0&&(e.style.top=n.clientY-s+"px")}const Ce={handleMouseEnter:function({rootContainer:e="#root",title:t,event:n,bgColor:r="#000",color:o="#fff"}){try{const i=b(e)?document.querySelector(e):e;if(!i)throw new Error(`${e} is not valid Html Element or element selector`);let s=null;const a="style-tooltip-inner1494304949567";if(!document.querySelector(`#${a}`)){const e=document.createElement("style");e.type="text/css",e.id=a,e.innerHTML=`\n .tooltip-inner1494304949567 {\n max-width: 250px;\n padding: 3px 8px;\n color: ${o};\n text-decoration: none;\n border-radius: 4px;\n text-align: left;\n background-color: ${r};\n }\n `,document.querySelector("head").appendChild(e)}if(s=document.querySelector("#customTitle1494304949567"),s)Fe(s,t,n);else{const e=document.createElement("div");e.id="customTitle1494304949567",e.style.cssText="z-index: 99999999; visibility: hidden; position: absolute;",e.innerHTML='<div class="tooltip-inner1494304949567" style="word-wrap: break-word; max-width: 44px;">皮肤</div>',i.appendChild(e),s=document.querySelector("#customTitle1494304949567"),t&&(Fe(s,t,n),s.style.visibility="visible")}}catch(e){console.error(e.message)}},handleMouseLeave:function(e="#root"){const t=b(e)?document.querySelector(e):e,n=document.querySelector("#customTitle1494304949567");t&&n&&t.removeChild(n)}},je={keyField:"key",childField:"children",pidField:"pid"},$e={childField:"children",nameField:"name",removeEmptyChild:!1,ignoreCase:!0};const Te=(e,t)=>{let n=0;const r=e.toString(),o=t.toString();return void 0!==r.split(".")[1]&&(n+=r.split(".")[1].length),void 0!==o.split(".")[1]&&(n+=o.split(".")[1].length),Number(r.replace(".",""))*Number(o.replace(".",""))/Math.pow(10,n)},Re=(e,t)=>{let n=0,r=0,o=0;try{n=e.toString().split(".")[1].length}catch(e){n=0}try{r=t.toString().split(".")[1].length}catch(e){r=0}return o=10**Math.max(n,r),(Te(e,o)+Te(t,o))/o};const Ie="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",Oe=/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/;function Ne(e){let t,n,r,o,i="",s=0;const a=(e=String(e)).length,c=a%3;for(;s<a;){if((n=e.charCodeAt(s++))>255||(r=e.charCodeAt(s++))>255||(o=e.charCodeAt(s++))>255)throw new TypeError("Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.");t=n<<16|r<<8|o,i+=Ie.charAt(t>>18&63)+Ie.charAt(t>>12&63)+Ie.charAt(t>>6&63)+Ie.charAt(63&t)}return c?i.slice(0,c-3)+"===".substring(c):i}function De(e){if(e=String(e).replace(/[\t\n\f\r ]+/g,""),!Oe.test(e))throw new TypeError("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");let t,n,r,o="",i=0;for(const s=(e+="==".slice(2-(3&e.length))).length;i<s;)t=Ie.indexOf(e.charAt(i++))<<18|Ie.indexOf(e.charAt(i++))<<12|(n=Ie.indexOf(e.charAt(i++)))<<6|(r=Ie.indexOf(e.charAt(i++))),o+=64===n?String.fromCharCode(t>>16&255):64===r?String.fromCharCode(t>>16&255,t>>8&255):String.fromCharCode(t>>16&255,t>>8&255,255&t);return o}const ke=/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,Le=/^(?:(?:\+|00)86)?1\d{10}$/,Me=/^(1[1-5]|2[1-3]|3[1-7]|4[1-6]|5[0-4]|6[1-5]|7[1]|8[1-2]|9[1])\d{4}(18|19|20)\d{2}[01]\d[0123]\d{4}[\dxX]$/,Pe=/^(https?|ftp):\/\/([^\s/$.?#].[^\s]*)$/i,Be=/^https?:\/\/([^\s/$.?#].[^\s]*)$/i,Ue=/^(?:(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/,He=/^(([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}|([\da-fA-F]{1,4}:){1,7}:|([\da-fA-F]{1,4}:){1,6}:[\da-fA-F]{1,4}|([\da-fA-F]{1,4}:){1,5}(:[\da-fA-F]{1,4}){1,2}|([\da-fA-F]{1,4}:){1,4}(:[\da-fA-F]{1,4}){1,3}|([\da-fA-F]{1,4}:){1,3}(:[\da-fA-F]{1,4}){1,4}|([\da-fA-F]{1,4}:){1,2}(:[\da-fA-F]{1,4}){1,5}|[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,6})|:((:[\da-fA-F]{1,4}){1,7}|:)|fe80:(:[\da-fA-F]{0,4}){0,4}%[\da-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?\d)?\d)\.){3}(25[0-5]|(2[0-4]|1?\d)?\d)|([\da-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?\d)?\d)\.){3}(25[0-5]|(2[0-4]|1?\d)?\d))$/i,ze=/^(-?[1-9]\d*|0)$/,We=e=>ze.test(e),qe=/^-?([1-9]\d*|0)\.\d*[1-9]$/,_e=e=>qe.test(e),Ge=/^\d+$/;function Ve(e){return[...new Set(e.trim().split(""))].join("")}function Ye(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function Xe(e,t){return new RegExp(`${Ye(e.trim())}\\s*([^${Ye(Ve(e))}${Ye(Ve(t))}\\s]*)\\s*${t.trim()}`,"g")}function Ke(e,t,n=new WeakMap){if(Object.is(e,t))return!0;const r=Object.prototype.toString.call(e);if(r!==Object.prototype.toString.call(t))return!1;if(v(e)&&v(t)){if(n.has(e))return n.get(e)===t;n.set(e,t),n.set(t,e)}switch(r){case"[object Date]":return e.getTime()===t.getTime();case"[object RegExp]":return e.toString()===t.toString();case"[object Map]":return function(e,t,n){if(e.size!==t.size)return!1;for(const[r,o]of e)if(!t.has(r)||!Ke(o,t.get(r),n))return!1;return!0}(e,t,n);case"[object Set]":return function(e,t,n){if(e.size!==t.size)return!1;for(const r of e){let e=!1;for(const o of t)if(Ke(r,o,n)){e=!0;break}if(!e)return!1}return!0}(e,t,n);case"[object ArrayBuffer]":return function(e,t){return e.byteLength===t.byteLength&&new DataView(e).getInt32(0)===new DataView(t).getInt32(0)}(e,t);case"[object DataView]":return function(e,t,n){return e.byteLength===t.byteLength&&Ke(new Uint8Array(e.buffer),new Uint8Array(t.buffer),n)}(e,t,n);case"[object Int8Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Int16Array]":case"[object Uint16Array]":case"[object Int32Array]":case"[object Uint32Array]":case"[object Float32Array]":case"[object Float64Array]":return function(e,t,n){return e.byteLength===t.byteLength&&Ke(Array.from(e),Array.from(t),n)}(e,t,n);case"[object Object]":return Je(e,t,n);case"[object Array]":return function(e,t,n){const r=Object.keys(e).map(Number),o=Object.keys(t).map(Number);if(r.length!==o.length)return!1;for(let r=0,o=e.length;r<o;r++)if(!Ke(e[r],t[r],n))return!1;return Je(e,t,n)}(e,t,n)}return!1}function Je(e,t,n){const r=Reflect.ownKeys(e),o=Reflect.ownKeys(t);if(r.length!==o.length)return!1;for(const i of r){if(!o.includes(i))return!1;if(!Ke(e[i],t[i],n))return!1}return Object.getPrototypeOf(e)===Object.getPrototypeOf(t)}e.EMAIL_REGEX=ke,e.HEX_POOL=pe,e.HTTP_URL_REGEX=Be,e.IPV4_REGEX=Ue,e.IPV6_REGEX=He,e.PHONE_REGEX=Le,e.STRING_ARABIC_NUMERALS=M,e.STRING_LOWERCASE_ALPHA=P,e.STRING_POOL=he,e.STRING_UPPERCASE_ALPHA=B,e.UNIQUE_NUMBER_SAFE_LENGTH=18,e.URL_REGEX=Pe,e.add=Re,e.addClass=function(e,t){z(t,(t=>e.classList.add(t)))},e.arrayEach=t,e.arrayEachAsync=async function(e,t,n=!1){if(n)for(let n=e.length-1;n>=0&&!1!==await t(e[n],n);n--);else for(let n=0,r=e.length;n<r&&!1!==await t(e[n],n);n++);},e.arrayInsertBefore=function(e,t,n){if(t===n||t+1===n)return;const[r]=e.splice(t,1),o=n<t?n:n-1;e.splice(o,0,r)},e.arrayLike=m,e.arrayRemove=function(e,n){const r=[],o=n;return t(e,((e,t)=>{o(e,t)&&r.push(t)})),r.forEach(((t,n)=>{e.splice(t-n,1)})),e},e.asyncMap=function(e,t,n=1/0){return new Promise(((r,o)=>{const i=e[Symbol.iterator](),s=Math.min(e.length,n),a=[];let c,l=0,u=0;const d=()=>{if(c)return o(c);const n=i.next();if(n.done)return void(l===e.length&&r(a));const s=u++;t(n.value,s,e).then((e=>{l++,a[s]=e,d()})).catch((e=>{c=e,d()}))};for(let e=0;e<s;e++)d()}))},e.calculateDate=function(e,t,n="-"){const r=new Date(e),o=new Date(r.getFullYear(),r.getMonth(),r.getDate()).getTime()+864e5*parseInt(String(t)),i=new Date(o);return i.getFullYear()+n+String(i.getMonth()+1).padStart(2,"0")+"-"+String(i.getDate()).padStart(2,"0")},e.calculateDateTime=function(e,t,n="-",r=":"){const o=new Date(e),i=n,s=r,a=new Date(o.getFullYear(),o.getMonth(),o.getDate(),o.getHours(),o.getMinutes(),o.getSeconds()).getTime()+864e5*parseInt(String(t)),c=new Date(a);return c.getFullYear()+i+String(c.getMonth()+1).padStart(2,"0")+i+String(c.getDate()).padStart(2,"0")+" "+String(c.getHours()).padStart(2,"0")+s+String(c.getMinutes()).padStart(2,"0")+s+String(c.getSeconds()).padStart(2,"0")},e.chooseLocalFile=function(e,t){const n=document.createElement("input");n.setAttribute("id",String(Date.now())),n.setAttribute("type","file"),n.setAttribute("style","visibility:hidden"),n.setAttribute("accept",e),document.body.appendChild(n),n.click(),n.onchange=e=>{t(e.target.files),setTimeout((()=>document.body.removeChild(n)))}},e.cloneDeep=function e(t,n=new WeakMap){if(null===t||"object"!=typeof t)return t;if(n.has(t))return n.get(t);if(t instanceof ArrayBuffer){const e=new ArrayBuffer(t.byteLength);return new Uint8Array(e).set(new Uint8Array(t)),n.set(t,e),e}if(ArrayBuffer.isView(t)){return new(0,t.constructor)(e(t.buffer,n),t.byteOffset,t.length)}if(t instanceof Date){const e=new Date(t.getTime());return n.set(t,e),e}if(t instanceof RegExp){const e=new RegExp(t.source,t.flags);return e.lastIndex=t.lastIndex,n.set(t,e),e}if(t instanceof Map){const r=new Map;return n.set(t,r),t.forEach(((t,o)=>{r.set(e(o,n),e(t,n))})),r}if(t instanceof Set){const r=new Set;return n.set(t,r),t.forEach((t=>{r.add(e(t,n))})),r}if(Array.isArray(t)){const r=new Array(t.length);n.set(t,r);for(let o=0,i=t.length;o<i;o++)o in t&&(r[o]=e(t[o],n));const o=Object.getOwnPropertyDescriptors(t);for(const t of Reflect.ownKeys(o))Object.defineProperty(r,t,{...o[t],value:e(o[t].value,n)});return r}const r=Object.create(Object.getPrototypeOf(t));n.set(t,r);const o=Object.getOwnPropertyDescriptors(t);for(const t of Reflect.ownKeys(o)){const i=o[t];"value"in i?i.value=e(i.value,n):(i.get&&(i.get=e(i.get,n)),i.set&&(i.set=e(i.set,n))),Object.defineProperty(r,t,i)}return r},e.compressImg=function e(t,n={mime:"image/jpeg",minFileSizeKB:50}){if(!(t instanceof File||t instanceof FileList))throw new Error(`${t} require be File or FileList`);if(!le())throw new Error("Current runtime environment not support Canvas");const{quality:r,mime:o="image/jpeg",maxSize:i,minFileSizeKB:s=50}=v(n)?n:{};let a,c=r;if(r)c=r;else if(t instanceof File){const e=+parseInt((t.size/1024).toFixed(2));c=e<s?1:e<1024?.85:e<5120?.8:.75}return x(i)&&(a=i>=1200?i:1200),t instanceof FileList?Promise.all(Array.from(t).map((t=>e(t,{maxSize:a,mime:o,quality:c})))):t instanceof File?new Promise((e=>{const n=[...t.name.split(".").slice(0,-1),{"image/webp":"webp","image/jpeg":"jpg","image/png":"png"}[o]].join("."),r=+parseInt((t.size/1024).toFixed(2));if(r<s)e({file:t});else{const i=new FileReader;i.onload=({target:{result:i}})=>{const s=new Image;s.onload=()=>{const l=document.createElement("canvas"),u=l.getContext("2d"),d=s.width,f=s.height,{width:h,height:p}=function({sizeKB:e,maxSize:t,originWidth:n,originHeight:r}){let o=n,i=r;if(x(t)){const{width:e,height:s}=ue({maxWidth:t,maxHeight:t,originWidth:n,originHeight:r});o=e,i=s}else if(e<500){const e=1200,t=1200,{width:s,height:a}=ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r});o=s,i=a}else if(e<5120){const e=1400,t=1400,{width:s,height:a}=ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r});o=s,i=a}else if(e<10240){const e=1600,t=1600,{width:s,height:a}=ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r});o=s,i=a}else if(10240<=e){const e=n>15e3?8192:n>1e4?4096:2048,t=r>15e3?8192:r>1e4?4096:2048,{width:s,height:a}=ue({maxWidth:e,maxHeight:t,originWidth:n,originHeight:r});o=s,i=a}return{width:o,height:i}}({sizeKB:r,maxSize:a,originWidth:d,originHeight:f});l.width=h,l.height=p,u.clearRect(0,0,h,p),u.drawImage(s,0,0,h,p);const g=l.toDataURL(o,c),m=atob(g.split(",")[1]);let y=m.length;const b=new Uint8Array(new ArrayBuffer(y));for(;y--;)b[y]=m.charCodeAt(y);const w=new File([b],n,{type:o});e({file:w,bufferArray:b,origin:t,beforeSrc:i,afterSrc:g,beforeKB:r,afterKB:Number((w.size/1024).toFixed(2))})},s.src=i},i.readAsDataURL(t)}})):Promise.resolve(null)},e.cookieDel=e=>V(e,"",-1),e.cookieGet=function(e){const{cookie:t}=document;if(!t)return"";const n=t.split(";");for(let t=0;t<n.length;t++){const r=n[t],[o,i=""]=r.split("=");if(o===e)return decodeURIComponent(i)}return""},e.cookieSet=V,e.copyText=function(e,t){const{successCallback:n,failCallback:r}=E(t)?{}:t;navigator.clipboard?navigator.clipboard.writeText(e).then((()=>{C(n)&&n()})).catch((n=>{G(e,t)})):G(e,t)},e.crossOriginDownload=function(e,t,n){const{successCode:r=200,successCallback:o,failCallback:i}=E(n)?{successCode:200,successCallback:void 0,failCallback:void 0}:n,s=new XMLHttpRequest;s.open("GET",e,!0),s.responseType="blob",s.onload=function(){if(s.status===r)ce(s.response,t,o);else if(C(i)){const e=s.status,t=s.getResponseHeader("Content-Type");if(b(t)&&t.includes("application/json")){const t=new FileReader;t.onload=()=>{i({status:e,response:t.result})},t.readAsText(s.response)}else i(s)}},s.onerror=e=>{C(i)&&i({status:0,code:"ERROR_CONNECTION_REFUSED"})},s.send()},e.dateParse=J,e.dateToEnd=function(e){const t=Z(e);return t.setDate(t.getDate()+1),J(t.getTime()-1)},e.dateToStart=Z,e.debounce=(e,t)=>{let n,r=!1;const o=function(...o){r||(clearTimeout(n),n=setTimeout((()=>{e.call(this,...o)}),t))};return o.cancel=()=>{clearTimeout(n),r=!0},o},e.decodeFromBase64=function(e){const t=E(de("atob"))?De(e):de("atob")(e),n=t.length,r=new Uint8Array(n);for(let e=0;e<n;e++)r[e]=t.charCodeAt(e);return E(de("TextDecoder"))?function(e){const t=String.fromCharCode.apply(null,e);return decodeURIComponent(t)}(r):new(de("TextDecoder"))("utf-8").decode(r)},e.divide=(e,t)=>{let n=0,r=0,o=0,i=0;return void 0!==e.toString().split(".")[1]&&(n=e.toString().split(".")[1].length),void 0!==t.toString().split(".")[1]&&(r=t.toString().split(".")[1].length),o=Number(e.toString().replace(".","")),i=Number(t.toString().replace(".","")),o/i*Math.pow(10,r-n)},e.downloadBlob=ce,e.downloadData=function(e,t,n,r){if(n=n.replace(`.${t}`,"")+`.${t}`,"json"===t){ce(new Blob([JSON.stringify(e,null,4)]),n)}else{if(!r||!r.length)throw new Error("未传入表头数据");if(!Array.isArray(e))throw new Error("data error! expected array!");const o=r.join(",")+"\n";let i="";e.forEach((e=>{i+=Object.values(e).join(",\t")+",\n"}));ae("data:"+{csv:"text/csv",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}[t]+";charset=utf-8,\ufeff"+encodeURIComponent(o+i),n)}},e.downloadHref=ae,e.downloadURL=function(e,t){window.open(t?se(e,t):e)},e.encodeToBase64=function(e){const t=E(de("TextEncoder"))?function(e){const t=encodeURIComponent(e),n=new Uint8Array(t.length);for(let e=0;e<t.length;e++)n[e]=t.charCodeAt(e);return n}(e):(new(de("TextEncoder"))).encode(e);let n="";const r=t.length;for(let e=0;e<r;e++)n+=String.fromCharCode(t[e]);return E(de("btoa"))?Ne(n):de("btoa")(n)},e.escapeRegExp=Ye,e.executeInScope=function(e,t={}){const n=Object.keys(t),r=n.map((e=>t[e]));try{return new Function(...n,`return (() => { ${e} })()`)(...r)}catch(e){throw new Error(`代码执行失败: ${e.message}`)}},e.fallbackCopyText=G,e.flatTree=function e(t,n=je){const{keyField:r="key",childField:o="children",pidField:i="pid"}=v(n)?n:{};let s=[];for(let a=0,c=t.length;a<c;a++){const c=t[a],l={...c,[o]:[]};if(g(l,o)&&delete l[o],s.push(l),c[o]){const t=c[o].map((e=>({...e,[i]:c[r]||e.pid})));s=s.concat(e(t,n))}}return s},e.forEachDeep=function(e,t,n={childField:"children",reverse:!1,breadthFirst:!1}){const{childField:r="children",reverse:o=!1,breadthFirst:i=!1}=v(n)?n:{};let s=!1;const a=[],c=(n,l,u=0)=>{if(o){for(let o=n.length-1;o>=0&&!s;o--){const d=n[o];if(i)a.push({item:d,index:o,array:n,tree:e,parent:l,level:u});else{const i=t(d,o,n,e,l,u);if(!1===i){s=!0;break}if(!0===i)continue;d&&Array.isArray(d[r])&&c(d[r],d,u+1)}}if(i)for(;!s;){const e=a.shift(),{item:n,index:o,array:i,tree:l,parent:u,level:d}=e,f=t(n,o,i,l,u,d);if(!1===f){s=!0;break}!0!==f&&(n&&Array.isArray(n[r])&&c(n[r],n,d+1))}}else{for(let o=0,d=n.length;o<d&&!s;o++){const d=n[o];if(i)a.push({item:d,index:o,array:n,tree:e,parent:l,level:u});else{const i=t(d,o,n,e,l,u);if(!1===i){s=!0;break}if(!0===i)continue;d&&Array.isArray(d[r])&&c(d[r],d,u+1)}}if(i)for(;!s;){const e=a.shift();if(!e)break;const{item:n,index:o,array:i,tree:l,parent:u,level:d}=e,f=t(n,o,i,l,u,d);if(!1===f){s=!0;break}!0!==f&&(n&&Array.isArray(n[r])&&c(n[r],n,d+1))}}};c(e,null,0),e=null},e.formatDate=function(e,t="YYYY-MM-DD HH:mm:ss"){const n=J(e);let r,o=t;const i={"Y+":`${n.getFullYear()}`,"y+":`${n.getFullYear()}`,"M+":`${n.getMonth()+1}`,"D+":`${n.getDate()}`,"d+":`${n.getDate()}`,"H+":`${n.getHours()}`,"m+":`${n.getMinutes()}`,"s+":`${n.getSeconds()}`,"S+":`${n.getMilliseconds()}`,"w+":["周日","周一","周二","周三","周四","周五","周六"][n.getDay()]};for(const e in i)r=new RegExp("("+e+")").exec(o),r&&(o=o.replace(r[1],1===r[1].length?i[e]:i[e].padStart(r[1].length,"0")));return o},e.formatMoney=xe,e.formatNumber=xe,e.formatTree=function(e,t=je){const{keyField:n="key",childField:r="children",pidField:o="pid"}=v(t)?t:{},i=[],s={};for(let t=0,r=e.length;t<r;t++){const r=e[t];s[r[n]]=r}for(let t=0,n=e.length;t<n;t++){const n=e[t],a=s[n[o]];a?(a[r]||(a[r]=[])).push(n):i.push(n)}return e=null,i},e.fuzzySearchTree=function e(t,n,r=$e){if(!g(n,"filter")&&(!g(n,"keyword")||T(n.keyword)))return t;const o=[];for(let i=0,s=t.length;i<s;i++){const s=t[i],a=s[r.childField]&&s[r.childField].length>0?e(s[r.childField]||[],n,r):[];if((g(n,"filter")?n.filter(s):r.ignoreCase?s[r.nameField].toLowerCase().includes(n.keyword.toLowerCase()):s[r.nameField].includes(n.keyword))||a.length>0)if(s[r.childField])if(a.length>0)o.push({...s,[r.childField]:a});else if(r.removeEmptyChild){const{[r.childField]:e,...t}=s;o.push(t)}else o.push({...s,[r.childField]:[]});else{const{[r.childField]:e,...t}=s;o.push(t)}}return o},e.genCanvasWM=function e(t="请勿外传",n){const{rootContainer:r=document.body,width:o="300px",height:i="150px",textAlign:s="center",textBaseline:a="middle",font:c="20px PingFangSC-Medium,PingFang SC",fillStyle:l="rgba(189, 177, 167, .3)",rotate:u=-20,zIndex:d=2147483647,watermarkId:f="__wm"}=E(n)?{}:n,h=b(r)?document.querySelector(r):r;if(!h)throw new Error(`${r} is not valid Html Element or element selector`);const p=document.createElement("canvas");p.setAttribute("width",o),p.setAttribute("height",i);const g=p.getContext("2d");g.textAlign=s,g.textBaseline=a,g.font=c,g.fillStyle=l,g.rotate(Math.PI/180*u),g.fillText(t,parseFloat(o)/4,parseFloat(i)/2);const m=p.toDataURL(),y=document.querySelector(`#${f}`),w=y||document.createElement("div"),x=`opacity: 1 !important; display: block !important; visibility: visible !important; position:absolute; left:0; top:0; width:100%; height:100%; z-index:${d}; pointer-events:none; background-repeat:repeat; background-image:url('${m}')`;w.setAttribute("style",x),w.setAttribute("id",f),w.classList.add("nav-height"),y||(h.style.position="relative",h.appendChild(w));const S=window.MutationObserver||window.WebKitMutationObserver;if(S){let r=new S((function(){const o=document.querySelector(`#${f}`);if(o){const{opacity:i,zIndex:s,display:a,visibility:c}=(e=>{const t=getComputedStyle(e);return{opacity:t.getPropertyValue("opacity"),zIndex:t.getPropertyValue("z-index"),display:t.getPropertyValue("display"),visibility:t.getPropertyValue("visibility")}})(o);(o&&o.getAttribute("style")!==x||!o||"1"!==i||"2147483647"!==s||"block"!==a||"visible"!==c)&&(r.disconnect(),r=null,h.removeChild(o),e(t,n))}else r.disconnect(),r=null,e(t,n)}));r.observe(h,{attributes:!0,subtree:!0,childList:!0})}},e.getComputedCssVal=function(e,t,n=!0){const r=getComputedStyle(e).getPropertyValue(t)??"";return n?Number(r.replace(/([0-9]*)(.*)/g,"$1")):r},e.getGlobal=de,e.getStrWidthPx=q,e.getStyle=function(e,t){return getComputedStyle(e).getPropertyValue(t)},e.hasClass=function(e,t){if(-1!==t.indexOf(" "))throw new Error("className should not contain space.");return e.classList.contains(t)},e.humanFileSize=function(e,t={decimals:0,si:!1,separator:" "}){const{decimals:n=0,si:r=!1,separator:o=" ",baseUnit:i,maxUnit:s}=t;let a=r?["B","kB","MB","GB","TB","PB","EB","ZB","YB"]:["Byte","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"];if(!E(i)){const e=a.findIndex((e=>e===i));-1!==e&&(a=a.slice(e))}if(!E(s)){const e=a.findIndex((e=>e===s));-1!==e&&a.splice(e+1)}return we(e,a,{ratio:r?1e3:1024,decimals:n,separator:o})},e.isArray=F,e.isBigInt=e=>"bigint"==typeof e,e.isBoolean=w,e.isDate=$,e.isDigit=e=>Ge.test(e),e.isEmail=e=>ke.test(e),e.isEmpty=T,e.isEqual=function(e,t){return Ke(e,t)},e.isError=e=>"Error"===y(e),e.isFloat=_e,e.isFunction=C,e.isIdNo=e=>{if(!Me.test(e))return!1;const t=Number(e.slice(6,10)),n=Number(e.slice(10,12)),r=Number(e.slice(12,14)),o=new Date(t,n-1,r);if(!(o.getFullYear()===t&&o.getMonth()+1===n&&o.getDate()===r))return!1;const i=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];let s=0;for(let t=0;t<17;t++)s+=Number(e.slice(t,t+1))*i[t];return["1","0","X","9","8","7","6","5","4","3","2"][s%11]===e.slice(-1)},e.isInteger=We,e.isIpV4=e=>Ue.test(e),e.isIpV6=e=>He.test(e),e.isJsonString=function(e){try{const t=JSON.parse(e);return"object"==typeof t&&null!==t&&t}catch(e){return!1}},e.isNaN=j,e.isNull=A,e.isNullOrUnDef=E,e.isNullish=E,e.isNumber=x,e.isNumerical=e=>We(e)||_e(e),e.isObject=v,e.isPhone=e=>Le.test(e),e.isPlainObject=I,e.isPrimitive=e=>null===e||"object"!=typeof e,e.isRegExp=e=>"RegExp"===y(e),e.isString=b,e.isSymbol=e=>"symbol"==typeof e,e.isUndefined=S,e.isUrl=(e,t=!1)=>(t?Pe:Be).test(e),e.isValidDate=Y,e.mapDeep=function(e,t,n="children",r=!1){let o=!1;const i=[],s=(i,a,c,l=0)=>{if(r)for(let r=i.length-1;r>=0&&!o;r--){const u=t(i[r],r,i,e,a,l);if(!1===u){o=!0;break}!0!==u&&(c.push(N(u,[n])),i[r]&&Array.isArray(i[r][n])?(c[c.length-1][n]=[],s(i[r][n],i[r],c[c.length-1][n],l+1)):delete u[n])}else for(let r=0;r<i.length&&!o;r++){const u=t(i[r],r,i,e,a,l);if(!1===u){o=!0;break}!0!==u&&(c.push(N(u,[n])),i[r]&&Array.isArray(i[r][n])?(c[c.length-1][n]=[],s(i[r][n],i[r],c[c.length-1][n],l+1)):delete u[n])}};return s(e,null,i),e=null,i},e.multiply=Te,e.numberAbbr=we,e.numberToHex=be,e.objectAssign=k,e.objectEach=O,e.objectEachAsync=async function(e,t){for(const n in e)if(g(e,n)&&!1===await t(e[n],n))break},e.objectFill=function(e,t,n){const r=n||((e,t,n)=>void 0===e[n]);return O(t,((n,o)=>{r(e,t,o)&&(e[o]=n)})),e},e.objectGet=function(e,t,n=!1){const r=(t=(t=t.replace(/\[(\w+)\]/g,".$1")).replace(/^\./,"")).split(".");let o=e,i=0;for(let e=r.length;i<e-1;++i){const e=r[i];if(x(Number(e))&&Array.isArray(o))o=o[e];else{if(!v(o)||!g(o,e)){if(o=void 0,n)throw new Error("[Object] objectGet path 路径不正确");break}o=o[e]}}return{p:o,k:o?r[i]:void 0,v:o?o[r[i]]:void 0}},e.objectHas=g,e.objectMap=function(e,t){const n={};for(const r in e)g(e,r)&&(n[r]=t(e[r],r));return e=null,n},e.objectMerge=k,e.objectOmit=N,e.objectPick=function(e,t){const n={};return O(e,((e,r)=>{t.includes(r)&&(n[r]=e)})),e=null,n},e.once=e=>{let t,n=!1;return function(...r){return n||(n=!0,t=e.call(this,...r)),t}},e.parseQueryParams=function(e=location.search){const t={};return Array.from(e.matchAll(/[&?]?([^=&]+)=?([^=&]*)/g)).forEach(((e,n)=>{t[e[1]]?"string"==typeof t[e[1]]?t[e[1]]=[t[e[1]],e[2]]:t[e[1]].push(e[2]):t[e[1]]=e[2]})),t},e.parseVarFromString=function(e,t="{",n="}"){return Array.from(e.matchAll(Xe(t,n))).map((e=>E(e)?void 0:e[1]))},e.pathJoin=ee,e.pathNormalize=Q,e.qsParse=te,e.qsStringify=re,e.randomNumber=fe,e.randomString=(e,t)=>{let n=0,r=he;b(t)?(n=e,r=t):x(e)?n=e:b(e)&&(r=e);let o=Math.max(n,1),i="";const s=r.length-1;if(s<2)throw new Error("字符串池长度不能少于 2");for(;o--;){i+=r[fe(0,s)]}return i},e.randomUuid=function(){if("undefined"==typeof URL||!URL.createObjectURL||"undefined"==typeof Blob){const e="0123456789abcdef",t="xxxxxxxx-xxxx-4xxx-xxxx-xxxxxxxxxxxx";let n="";for(let r=0;r<t.length;r++){const o=fe(0,15);n+="-"==t[r]||"4"==t[r]?t[r]:e[o]}return n}return/[^/]+$/.exec(URL.createObjectURL(new Blob).slice())[0]},e.removeClass=function(e,t){z(t,(t=>e.classList.remove(t)))},e.replaceVarFromString=function(e,t,n="{",r="}"){return e.replace(new RegExp(Xe(n,r)),(function(e,n){return g(t,n)?t[n]:e}))},e.safeAwait=function(e,t){return e.then((e=>[null,e])).catch((e=>{if(t){return[Object.assign({},e,t),void 0]}return[e,void 0]}))},e.searchTreeById=function(e,t,n){const{children:r="children",id:o="id"}=n||{},i=(e,t,n)=>e.reduce(((e,s)=>{const a=s[r];return[...e,t?{...s,parentId:t,parent:n}:s,...a&&a.length?i(a,s[o],s):[]]}),[]);return(e=>{let n=e.find((e=>e[o]===t));const{parent:r,parentId:i,...s}=n;let a=[t],c=[s];for(;n&&n.parentId;)a=[n.parentId,...a],c=[n.parent,...c],n=e.find((e=>e[o]===n.parentId));return[a,c]})(i(e))},e.select=_,e.setGlobal=function(e,t){if("undefined"!=typeof globalThis)globalThis[e]=t;else if("undefined"!=typeof window)window[e]=t;else if("undefined"!=typeof global)global[e]=t;else{if("undefined"==typeof self)throw new SyntaxError("当前环境下无法设置全局属性");self[e]=t}},e.setStyle=W,e.smoothScroll=function(e){return new Promise((n=>{const r={el:document,to:0,duration:567,easing:"ease"},{el:o,to:i,duration:s,easing:a}=k(r,e),c=document.documentElement,l=document.body,u=o===window||o===document||o===c||o===l?[c,l]:[o];let f;const h=(()=>{let e=0;return t(u,(t=>{if("scrollTop"in t)return e=t.scrollTop,!1})),e})(),p=i-h,g=function(e){let t;if(F(e))t=d(...e);else{const n=R[e];if(!n)throw new Error(`${e} 缓冲函数未定义`);t=d(...n)}return e=>t(Math.max(0,Math.min(e,1)))}(a),m=()=>{const e=performance.now(),t=(f?e-f:0)/s,r=g(t);var o;f||(f=e),o=h+p*r,u.forEach((e=>{"scrollTop"in e&&(e.scrollTop=o)})),t>=1?n():requestAnimationFrame(m)};m()}))},e.stringAssign=(e,t)=>e.replace(H,((e,n)=>((e,t)=>{try{return new Function(`with(arguments[0]){if(arguments[0].${e} === undefined)throw "";return String(arguments[0].${e})}`)(t)}catch(t){throw new SyntaxError(`无法执行表达式:${e}`)}})(n,t))),e.stringCamelCase=function(e,t){let n=e;return t&&(n=e.replace(/^./,(e=>e.toUpperCase()))),n.replace(/[\s_-](.)/g,((e,t)=>t.toUpperCase()))},e.stringEscapeHtml=e=>{const t={"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"};return e.replace(/[&<>"]/g,(e=>t[e]))},e.stringFill=(e,t=" ")=>new Array(e).fill(t).join(""),e.stringFormat=function(e,...t){let n=0;return[e.replace(U,(e=>{const r=t[n++];switch(e){case"%%":return n--,"%";default:case"%s":return String(r);case"%d":return String(Number(r));case"%o":return JSON.stringify(r)}})),...t.splice(n).map(String)].join(" ")},e.stringKebabCase=L,e.strip=function(e,t=15){return+parseFloat(Number(e).toPrecision(t))},e.subtract=(e,t)=>Re(e,-t),e.supportCanvas=le,e.throttle=(e,t,n)=>{let r,o=!1,i=0;const s=function(...s){if(o)return;const a=Date.now(),c=()=>{i=a,e.call(this,...s)};if(0===i)return n?c():void(i=a);i+t-a>0?(clearTimeout(r),r=setTimeout((()=>c()),t)):c()};return s.cancel=()=>{clearTimeout(r),o=!0},s},e.tooltipEvent=Ce,e.typeIs=y,e.uniqueNumber=Ee,e.uniqueString=(e,t)=>{let n=0,r=pe;b(t)?(n=e,r=t):x(e)?n=e:b(e)&&(r=e);let o=be(Ee(),r),i=n-o.length;if(i<=0)return o;for(;i--;)o+=ve(r);return o},e.uniqueSymbol=Ve,e.urlDelParams=(e,t)=>{const n=oe(e);return t.forEach((e=>delete n.searchParams[e])),ie(n)},e.urlParse=oe,e.urlSetParams=se,e.urlStringify=ie,e.wait=function(e=1){return new Promise((t=>setTimeout(t,e)))},e.weAtob=De,e.weBtoa=Ne}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sculp-js",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "description": "js utils library, includes function library、class library",
5
5
  "scripts": {
6
6
  "prepare": "husky install",