@zcrkey/js-utils 0.0.7 → 0.0.9
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/dist/cjs/color.d.ts +4 -4
- package/dist/cjs/color.js +9 -5
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/tree.d.ts +6 -2
- package/dist/cjs/tree.js +42 -8
- package/dist/cjs/util.d.ts +14 -2
- package/dist/cjs/util.js +36 -1
- package/dist/esm/color.d.ts +4 -4
- package/dist/esm/color.js +129 -129
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/obj.js +6 -6
- package/dist/esm/tree.d.ts +6 -2
- package/dist/esm/tree.js +39 -10
- package/dist/esm/util.d.ts +14 -2
- package/dist/esm/util.js +178 -129
- package/dist/umd/index.umd.js +1 -1
- package/package.json +1 -1
package/dist/esm/util.js
CHANGED
|
@@ -27,19 +27,19 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
27
27
|
_createClass(CrUtil, null, [{
|
|
28
28
|
key: "isArray",
|
|
29
29
|
value:
|
|
30
|
-
/**
|
|
31
|
-
* 判断是否为数组
|
|
32
|
-
* @param value
|
|
33
|
-
* @returns boolean
|
|
30
|
+
/**
|
|
31
|
+
* 判断是否为数组
|
|
32
|
+
* @param value
|
|
33
|
+
* @returns boolean
|
|
34
34
|
*/
|
|
35
35
|
function isArray(value) {
|
|
36
36
|
return Array.isArray(value);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
/**
|
|
40
|
-
* 判断是否为对象
|
|
41
|
-
* @param value
|
|
42
|
-
* @returns boolean
|
|
39
|
+
/**
|
|
40
|
+
* 判断是否为对象
|
|
41
|
+
* @param value
|
|
42
|
+
* @returns boolean
|
|
43
43
|
*/
|
|
44
44
|
}, {
|
|
45
45
|
key: "isObject",
|
|
@@ -47,10 +47,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
47
47
|
return _typeof(value) === 'object' && value !== null && !CrUtil.isArray(value);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
-
/**
|
|
51
|
-
* 判断是否为空对象
|
|
52
|
-
* @param value
|
|
53
|
-
* @returns boolean
|
|
50
|
+
/**
|
|
51
|
+
* 判断是否为空对象
|
|
52
|
+
* @param value
|
|
53
|
+
* @returns boolean
|
|
54
54
|
*/
|
|
55
55
|
}, {
|
|
56
56
|
key: "isEmptyObject",
|
|
@@ -58,10 +58,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
58
58
|
return Object.keys(value).length === 0 && value.constructor === Object;
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
/**
|
|
62
|
-
* 判断是否对象的属性是否全部为空
|
|
63
|
-
* @param value
|
|
64
|
-
* @returns boolean
|
|
61
|
+
/**
|
|
62
|
+
* 判断是否对象的属性是否全部为空
|
|
63
|
+
* @param value
|
|
64
|
+
* @returns boolean
|
|
65
65
|
*/
|
|
66
66
|
}, {
|
|
67
67
|
key: "isObjectPropertiesAllEmpty",
|
|
@@ -72,10 +72,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
/**
|
|
76
|
-
* 判断是否为日期
|
|
77
|
-
* @param value
|
|
78
|
-
* @returns boolean
|
|
75
|
+
/**
|
|
76
|
+
* 判断是否为日期
|
|
77
|
+
* @param value
|
|
78
|
+
* @returns boolean
|
|
79
79
|
*/
|
|
80
80
|
}, {
|
|
81
81
|
key: "isDate",
|
|
@@ -83,10 +83,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
83
83
|
return Object.prototype.toString.call(value) === '[object Date]';
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
/**
|
|
87
|
-
* 判断是否为字符串
|
|
88
|
-
* @param value
|
|
89
|
-
* @returns boolean
|
|
86
|
+
/**
|
|
87
|
+
* 判断是否为字符串
|
|
88
|
+
* @param value
|
|
89
|
+
* @returns boolean
|
|
90
90
|
*/
|
|
91
91
|
}, {
|
|
92
92
|
key: "isString",
|
|
@@ -94,10 +94,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
94
94
|
return Object.prototype.toString.call(value) === '[object String]';
|
|
95
95
|
}
|
|
96
96
|
|
|
97
|
-
/**
|
|
98
|
-
* 判断是否为数字
|
|
99
|
-
* @param value
|
|
100
|
-
* @returns boolean
|
|
97
|
+
/**
|
|
98
|
+
* 判断是否为数字
|
|
99
|
+
* @param value
|
|
100
|
+
* @returns boolean
|
|
101
101
|
*/
|
|
102
102
|
}, {
|
|
103
103
|
key: "isNumber",
|
|
@@ -105,10 +105,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
105
105
|
return typeof value === 'number' && !isNaN(value);
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
/**
|
|
109
|
-
* 判断是否为文件 File
|
|
110
|
-
* @param value
|
|
111
|
-
* @returns boolean
|
|
108
|
+
/**
|
|
109
|
+
* 判断是否为文件 File
|
|
110
|
+
* @param value
|
|
111
|
+
* @returns boolean
|
|
112
112
|
*/
|
|
113
113
|
}, {
|
|
114
114
|
key: "isFile",
|
|
@@ -116,10 +116,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
116
116
|
return Object.prototype.toString.call(value) === '[object File]';
|
|
117
117
|
}
|
|
118
118
|
|
|
119
|
-
/**
|
|
120
|
-
* 判断是否为 Boolean
|
|
121
|
-
* @param value
|
|
122
|
-
* @returns boolean
|
|
119
|
+
/**
|
|
120
|
+
* 判断是否为 Boolean
|
|
121
|
+
* @param value
|
|
122
|
+
* @returns boolean
|
|
123
123
|
*/
|
|
124
124
|
}, {
|
|
125
125
|
key: "isBoolean",
|
|
@@ -127,10 +127,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
127
127
|
return Object.prototype.toString.call(value) === '[object Boolean]';
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
-
/**
|
|
131
|
-
* 判断是否为 Function
|
|
132
|
-
* @param value
|
|
133
|
-
* @returns boolean
|
|
130
|
+
/**
|
|
131
|
+
* 判断是否为 Function
|
|
132
|
+
* @param value
|
|
133
|
+
* @returns boolean
|
|
134
134
|
*/
|
|
135
135
|
}, {
|
|
136
136
|
key: "isFunction",
|
|
@@ -138,10 +138,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
138
138
|
return typeof value === 'function';
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
/**
|
|
142
|
-
* 去掉字符串前后所有空格
|
|
143
|
-
* @param str
|
|
144
|
-
* @returns string
|
|
141
|
+
/**
|
|
142
|
+
* 去掉字符串前后所有空格
|
|
143
|
+
* @param str
|
|
144
|
+
* @returns string
|
|
145
145
|
*/
|
|
146
146
|
}, {
|
|
147
147
|
key: "trim",
|
|
@@ -149,10 +149,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
149
149
|
return (str + '').replace(/(^[\s\n\t]+|[\s\n\t]+$)/g, '');
|
|
150
150
|
}
|
|
151
151
|
|
|
152
|
-
/**
|
|
153
|
-
* 获取数组为几维数组
|
|
154
|
-
* @param arr
|
|
155
|
-
* @returns number
|
|
152
|
+
/**
|
|
153
|
+
* 获取数组为几维数组
|
|
154
|
+
* @param arr
|
|
155
|
+
* @returns number
|
|
156
156
|
*/
|
|
157
157
|
}, {
|
|
158
158
|
key: "getArrayDimension",
|
|
@@ -170,10 +170,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
170
170
|
return maxDimension + 1;
|
|
171
171
|
}
|
|
172
172
|
|
|
173
|
-
/**
|
|
174
|
-
* 深拷贝
|
|
175
|
-
* @param value
|
|
176
|
-
* @returns
|
|
173
|
+
/**
|
|
174
|
+
* 深拷贝
|
|
175
|
+
* @param value
|
|
176
|
+
* @returns
|
|
177
177
|
*/
|
|
178
178
|
}, {
|
|
179
179
|
key: "cloneDeep",
|
|
@@ -181,11 +181,11 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
181
181
|
return _cloneDeep(value);
|
|
182
182
|
}
|
|
183
183
|
|
|
184
|
-
/**
|
|
185
|
-
* 深拷贝
|
|
186
|
-
* @param target
|
|
187
|
-
* @deprecated 即将移除,使用 {@link CrUtil.cloneDeep} 替代
|
|
188
|
-
* @returns
|
|
184
|
+
/**
|
|
185
|
+
* 深拷贝
|
|
186
|
+
* @param target
|
|
187
|
+
* @deprecated 即将移除,使用 {@link CrUtil.cloneDeep} 替代
|
|
188
|
+
* @returns
|
|
189
189
|
*/
|
|
190
190
|
}, {
|
|
191
191
|
key: "deepCopy",
|
|
@@ -215,15 +215,15 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
215
215
|
return _target;
|
|
216
216
|
}
|
|
217
217
|
|
|
218
|
-
/**
|
|
219
|
-
* 列表数据转树型数据
|
|
220
|
-
* @param listData
|
|
221
|
-
* @param settings
|
|
222
|
-
* @param settings.idField 默认值 id
|
|
223
|
-
* @param settings.pidField 默认值 parentId
|
|
224
|
-
* @param settings.childrenField 默认值 children
|
|
225
|
-
* @deprecated 即将移除,使用 {@link CrTreeUtil.listToTree} 替代
|
|
226
|
-
* @returns
|
|
218
|
+
/**
|
|
219
|
+
* 列表数据转树型数据
|
|
220
|
+
* @param listData
|
|
221
|
+
* @param settings
|
|
222
|
+
* @param settings.idField 默认值 id
|
|
223
|
+
* @param settings.pidField 默认值 parentId
|
|
224
|
+
* @param settings.childrenField 默认值 children
|
|
225
|
+
* @deprecated 即将移除,使用 {@link CrTreeUtil.listToTree} 替代
|
|
226
|
+
* @returns
|
|
227
227
|
*/
|
|
228
228
|
}, {
|
|
229
229
|
key: "listToTreeData",
|
|
@@ -325,15 +325,15 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
325
325
|
return tree;
|
|
326
326
|
}
|
|
327
327
|
|
|
328
|
-
/**
|
|
329
|
-
* 树型数据转列表数据
|
|
330
|
-
* @param treeData
|
|
331
|
-
* @param settings
|
|
332
|
-
* @param settings.idField 默认值 id
|
|
333
|
-
* @param settings.pidField 默认值 parentId
|
|
334
|
-
* @param settings.childrenField 默认值 children
|
|
335
|
-
* @deprecated 即将移除,使用 {@link CrTreeUtil.treeToList} 替代
|
|
336
|
-
* @returns
|
|
328
|
+
/**
|
|
329
|
+
* 树型数据转列表数据
|
|
330
|
+
* @param treeData
|
|
331
|
+
* @param settings
|
|
332
|
+
* @param settings.idField 默认值 id
|
|
333
|
+
* @param settings.pidField 默认值 parentId
|
|
334
|
+
* @param settings.childrenField 默认值 children
|
|
335
|
+
* @deprecated 即将移除,使用 {@link CrTreeUtil.treeToList} 替代
|
|
336
|
+
* @returns
|
|
337
337
|
*/
|
|
338
338
|
}, {
|
|
339
339
|
key: "treeDataToListData",
|
|
@@ -365,16 +365,16 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
365
365
|
return listData;
|
|
366
366
|
}
|
|
367
367
|
|
|
368
|
-
/**
|
|
369
|
-
* 获取所有父级数据(包含自身)
|
|
370
|
-
* @param listData
|
|
371
|
-
* @param value
|
|
372
|
-
* @param settings
|
|
373
|
-
* @param settings.valueField 默认值 value
|
|
374
|
-
* @param settings.idField 默认值 id
|
|
375
|
-
* @param settings.pidField 默认值 parentId
|
|
376
|
-
* @deprecated 即将移除,使用 {@link CrTreeUtil.getFlatParentDatas} 替代
|
|
377
|
-
* @returns
|
|
368
|
+
/**
|
|
369
|
+
* 获取所有父级数据(包含自身)
|
|
370
|
+
* @param listData
|
|
371
|
+
* @param value
|
|
372
|
+
* @param settings
|
|
373
|
+
* @param settings.valueField 默认值 value
|
|
374
|
+
* @param settings.idField 默认值 id
|
|
375
|
+
* @param settings.pidField 默认值 parentId
|
|
376
|
+
* @deprecated 即将移除,使用 {@link CrTreeUtil.getFlatParentDatas} 替代
|
|
377
|
+
* @returns
|
|
378
378
|
*/
|
|
379
379
|
}, {
|
|
380
380
|
key: "getParentNodes",
|
|
@@ -415,10 +415,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
415
415
|
return nodes;
|
|
416
416
|
}
|
|
417
417
|
|
|
418
|
-
/**
|
|
419
|
-
* 参数序列化
|
|
420
|
-
* @param params {a:'1',b:{},c:[]}
|
|
421
|
-
* @returns
|
|
418
|
+
/**
|
|
419
|
+
* 参数序列化
|
|
420
|
+
* @param params {a:'1',b:{},c:[]}
|
|
421
|
+
* @returns
|
|
422
422
|
*/
|
|
423
423
|
}, {
|
|
424
424
|
key: "paramsSerializer",
|
|
@@ -436,11 +436,11 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
436
436
|
return Qs.stringify(params);
|
|
437
437
|
}
|
|
438
438
|
|
|
439
|
-
/**
|
|
440
|
-
* 参数解析
|
|
441
|
-
* @param {*} str
|
|
442
|
-
* @param {*} settings
|
|
443
|
-
* @returns
|
|
439
|
+
/**
|
|
440
|
+
* 参数解析
|
|
441
|
+
* @param {*} str
|
|
442
|
+
* @param {*} settings
|
|
443
|
+
* @returns
|
|
444
444
|
*/
|
|
445
445
|
}, {
|
|
446
446
|
key: "paramsParse",
|
|
@@ -455,13 +455,13 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
455
455
|
return obj;
|
|
456
456
|
}
|
|
457
457
|
|
|
458
|
-
/**
|
|
459
|
-
* 获取 URL 参数
|
|
460
|
-
* @param {*} url
|
|
461
|
-
* @returns
|
|
462
|
-
* @example
|
|
463
|
-
* "https://example.com?foo=bar&baz=qux" => {"query":{"foo":"bar","baz":"qux"},"hash":{},"all":{"foo":"bar","baz":"qux"}}
|
|
464
|
-
* "https://example.com/page?foo=1#/?a=1&b=2" => {"query":{"foo":"1"},"hash":{"/":"","a":"1","b":"2"},"all":{"foo":"1","/":"","a":"1","b":"2"}},
|
|
458
|
+
/**
|
|
459
|
+
* 获取 URL 参数
|
|
460
|
+
* @param {*} url
|
|
461
|
+
* @returns
|
|
462
|
+
* @example
|
|
463
|
+
* "https://example.com?foo=bar&baz=qux" => {"query":{"foo":"bar","baz":"qux"},"hash":{},"all":{"foo":"bar","baz":"qux"}}
|
|
464
|
+
* "https://example.com/page?foo=1#/?a=1&b=2" => {"query":{"foo":"1"},"hash":{"/":"","a":"1","b":"2"},"all":{"foo":"1","/":"","a":"1","b":"2"}},
|
|
465
465
|
*/
|
|
466
466
|
}, {
|
|
467
467
|
key: "getQueryParams",
|
|
@@ -521,12 +521,12 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
521
521
|
};
|
|
522
522
|
}
|
|
523
523
|
|
|
524
|
-
/**
|
|
525
|
-
* 版本号比较
|
|
526
|
-
* @param v1
|
|
527
|
-
* @param v2
|
|
528
|
-
* @returns number
|
|
529
|
-
* @description v1大于v2(1)、v1小于v2(-1)、v1等于v2(0)
|
|
524
|
+
/**
|
|
525
|
+
* 版本号比较
|
|
526
|
+
* @param v1
|
|
527
|
+
* @param v2
|
|
528
|
+
* @returns number
|
|
529
|
+
* @description v1大于v2(1)、v1小于v2(-1)、v1等于v2(0)
|
|
530
530
|
*/
|
|
531
531
|
}, {
|
|
532
532
|
key: "compareVersion",
|
|
@@ -552,12 +552,12 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
552
552
|
return 0;
|
|
553
553
|
}
|
|
554
554
|
|
|
555
|
-
/**
|
|
556
|
-
* 根据 ids 获取相对应的数据名称
|
|
557
|
-
* @param data
|
|
558
|
-
* @param ids
|
|
559
|
-
* @param settings
|
|
560
|
-
* @returns string
|
|
555
|
+
/**
|
|
556
|
+
* 根据 ids 获取相对应的数据名称
|
|
557
|
+
* @param data
|
|
558
|
+
* @param ids
|
|
559
|
+
* @param settings
|
|
560
|
+
* @returns string
|
|
561
561
|
*/
|
|
562
562
|
}, {
|
|
563
563
|
key: "getDataNameByIds",
|
|
@@ -583,13 +583,13 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
583
583
|
return str;
|
|
584
584
|
}
|
|
585
585
|
|
|
586
|
-
/**
|
|
587
|
-
* 追加html标签属性值
|
|
588
|
-
* @param htmlStr
|
|
589
|
-
* @param tagName
|
|
590
|
-
* @param attrName
|
|
591
|
-
* @param newAttrValue
|
|
592
|
-
* @returns string
|
|
586
|
+
/**
|
|
587
|
+
* 追加html标签属性值
|
|
588
|
+
* @param htmlStr
|
|
589
|
+
* @param tagName
|
|
590
|
+
* @param attrName
|
|
591
|
+
* @param newAttrValue
|
|
592
|
+
* @returns string
|
|
593
593
|
*/
|
|
594
594
|
}, {
|
|
595
595
|
key: "appendHtmlTagAttr",
|
|
@@ -610,11 +610,11 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
610
610
|
return replacedHtml;
|
|
611
611
|
}
|
|
612
612
|
|
|
613
|
-
/**
|
|
614
|
-
* 比较数据差异
|
|
615
|
-
* @param data1
|
|
616
|
-
* @param data2
|
|
617
|
-
* @returns
|
|
613
|
+
/**
|
|
614
|
+
* 比较数据差异
|
|
615
|
+
* @param data1
|
|
616
|
+
* @param data2
|
|
617
|
+
* @returns
|
|
618
618
|
*/
|
|
619
619
|
}, {
|
|
620
620
|
key: "compareDataDiff",
|
|
@@ -671,10 +671,10 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
671
671
|
return diffFieldSet;
|
|
672
672
|
}
|
|
673
673
|
|
|
674
|
-
/**
|
|
675
|
-
*
|
|
676
|
-
* @param value
|
|
677
|
-
* @returns 12345.6789 => 12,345.6789
|
|
674
|
+
/**
|
|
675
|
+
* 格式化为千分位,主要用于展示格式化
|
|
676
|
+
* @param value
|
|
677
|
+
* @returns 12345.6789 => 12,345.6789
|
|
678
678
|
*/
|
|
679
679
|
}, {
|
|
680
680
|
key: "fmtThousands",
|
|
@@ -689,6 +689,55 @@ var CrUtil = /*#__PURE__*/function () {
|
|
|
689
689
|
var formattedInt = intPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
|
690
690
|
return decimalPart ? "".concat(formattedInt, ".").concat(decimalPart) : formattedInt;
|
|
691
691
|
}
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
* 格式化为千分位格式
|
|
695
|
+
* @param value
|
|
696
|
+
* @returns
|
|
697
|
+
*/
|
|
698
|
+
}, {
|
|
699
|
+
key: "formatThousands",
|
|
700
|
+
value: function formatThousands(value) {
|
|
701
|
+
if (value == null) return '';
|
|
702
|
+
var raw = String(value).trim();
|
|
703
|
+
if (!raw) return '';
|
|
704
|
+
// 是否末尾点
|
|
705
|
+
var hasTrailingDot = raw.endsWith('.');
|
|
706
|
+
// 只保留数字/点/负号
|
|
707
|
+
var str = raw.replace(/[^\d.-]/g, '');
|
|
708
|
+
// 负号只留开头
|
|
709
|
+
var sign = str.startsWith('-') ? '-' : '';
|
|
710
|
+
str = str.replace(/-/g, '');
|
|
711
|
+
// 提取整数/小数(只认第一个点)
|
|
712
|
+
var _str$split = str.split('.', 2),
|
|
713
|
+
_str$split2 = _slicedToArray(_str$split, 2),
|
|
714
|
+
intRaw = _str$split2[0],
|
|
715
|
+
_str$split2$ = _str$split2[1],
|
|
716
|
+
decRaw = _str$split2$ === void 0 ? '' : _str$split2$;
|
|
717
|
+
// 整数去逗号+前导0
|
|
718
|
+
var intPart = intRaw.replace(/,/g, '').replace(/^0+(?=\d)/, '');
|
|
719
|
+
// 千分位
|
|
720
|
+
var formattedInt = intPart ? intPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',') : '';
|
|
721
|
+
var result = sign + formattedInt;
|
|
722
|
+
if (decRaw || hasTrailingDot) result += '.';
|
|
723
|
+
if (decRaw) result += decRaw;
|
|
724
|
+
return result;
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
/**
|
|
728
|
+
* 解析千分位格式
|
|
729
|
+
* @param value
|
|
730
|
+
* @returns
|
|
731
|
+
*/
|
|
732
|
+
}, {
|
|
733
|
+
key: "parseThousands",
|
|
734
|
+
value: function parseThousands(value) {
|
|
735
|
+
if (value == null) return '';
|
|
736
|
+
return String(value).trim().replace(/,/g, '') // 去千分位
|
|
737
|
+
.replace(/[^\d.-]/g, '') // 去非法
|
|
738
|
+
.replace(/(?!^)-/g, '') // 只留首负号
|
|
739
|
+
.replace(/(\..*)\./g, '$1'); // 只留第一个点
|
|
740
|
+
}
|
|
692
741
|
}]);
|
|
693
742
|
return CrUtil;
|
|
694
743
|
}();
|