@yh-kit/utils 1.12.2 → 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.
- package/README.md +10 -0
- package/dist/utils.js +131 -115
- package/dist/utils.umd.cjs +1 -1
- package/package.json +1 -1
- package/types/utils/lib/string/index.d.ts +8 -0
package/README.md
CHANGED
|
@@ -22,6 +22,16 @@
|
|
|
22
22
|
}
|
|
23
23
|
]);
|
|
24
24
|
console.log(toEnumObj); // {1: {label: '壹', text: '壹', value: '1'}}
|
|
25
|
+
const toEnumObj2 = arrayUtils.toEnumObj(
|
|
26
|
+
[
|
|
27
|
+
{
|
|
28
|
+
value: "1",
|
|
29
|
+
label: "壹"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"label"
|
|
33
|
+
);
|
|
34
|
+
console.log(toEnumObj2); // {'壹': {label: '壹', text: '壹', value: '1'}}
|
|
25
35
|
const toMoney = numberUtils.toMoney(123456789);
|
|
26
36
|
console.log(toMoney); // 123,456,789.00
|
|
27
37
|
```
|
package/dist/utils.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
const w = (e, n = "value") => {
|
|
2
2
|
if (!e || !e.length) return {};
|
|
3
3
|
const t = {};
|
|
4
|
-
return e.forEach((
|
|
5
|
-
const
|
|
6
|
-
t[
|
|
4
|
+
return e.forEach((r) => {
|
|
5
|
+
const o = Object.assign({ label: r.label, text: r.label }, r);
|
|
6
|
+
t[r[n]] = o;
|
|
7
7
|
}), t;
|
|
8
8
|
}, b = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
9
9
|
__proto__: null,
|
|
@@ -35,8 +35,8 @@ const w = (e, n = "value") => {
|
|
|
35
35
|
*/
|
|
36
36
|
countOfAppear(e, n) {
|
|
37
37
|
let t = 0;
|
|
38
|
-
for (const
|
|
39
|
-
|
|
38
|
+
for (const r of e)
|
|
39
|
+
r === n && t++;
|
|
40
40
|
return t;
|
|
41
41
|
},
|
|
42
42
|
/**
|
|
@@ -47,11 +47,11 @@ const w = (e, n = "value") => {
|
|
|
47
47
|
*/
|
|
48
48
|
indexsOfAppear(e, n) {
|
|
49
49
|
let t = -1;
|
|
50
|
-
const
|
|
50
|
+
const r = [];
|
|
51
51
|
do
|
|
52
|
-
t = e.indexOf(n, t + 1), t !== -1 &&
|
|
52
|
+
t = e.indexOf(n, t + 1), t !== -1 && r.push(t);
|
|
53
53
|
while (t !== -1);
|
|
54
|
-
return
|
|
54
|
+
return r;
|
|
55
55
|
},
|
|
56
56
|
/**
|
|
57
57
|
* 数组排序-默认升序
|
|
@@ -60,7 +60,7 @@ const w = (e, n = "value") => {
|
|
|
60
60
|
* @returns 排序后的数组
|
|
61
61
|
*/
|
|
62
62
|
sort(e, n = "asc") {
|
|
63
|
-
return e ? e.sort((t,
|
|
63
|
+
return e ? e.sort((t, r) => n === "asc" ? t > r ? 1 : -1 : t < r ? 1 : -1) : [];
|
|
64
64
|
},
|
|
65
65
|
/**
|
|
66
66
|
* 数组乱序(洗牌算法)
|
|
@@ -111,9 +111,9 @@ const w = (e, n = "value") => {
|
|
|
111
111
|
/** 最小值索引 */
|
|
112
112
|
index: 0
|
|
113
113
|
};
|
|
114
|
-
for (let t = 1,
|
|
115
|
-
const
|
|
116
|
-
n.value >
|
|
114
|
+
for (let t = 1, r = e.length; t < r; t++) {
|
|
115
|
+
const o = e[t];
|
|
116
|
+
n.value > o && (n.value = o, n.index = t);
|
|
117
117
|
}
|
|
118
118
|
return n;
|
|
119
119
|
},
|
|
@@ -124,7 +124,7 @@ const w = (e, n = "value") => {
|
|
|
124
124
|
*/
|
|
125
125
|
getMaxValueAndIndex(e) {
|
|
126
126
|
return e.length === 0 ? { value: 0, index: 0 } : e.reduce(
|
|
127
|
-
(n, t,
|
|
127
|
+
(n, t, r) => t < n.value ? { value: t, index: r } : n,
|
|
128
128
|
{ value: e[0], index: 0 }
|
|
129
129
|
);
|
|
130
130
|
}
|
|
@@ -145,12 +145,12 @@ class U {
|
|
|
145
145
|
* @param sliceSize 可选参数,表示分片大小,默认为512字节。用于控制每次处理的Base64字符串长度,以优化大文件的处理。
|
|
146
146
|
* @returns 返回转换后的Blob对象,如果转换失败,则返回null。
|
|
147
147
|
*/
|
|
148
|
-
static toBlob(n, t = "",
|
|
148
|
+
static toBlob(n, t = "", r = 512) {
|
|
149
149
|
const s = (n.split(",")[1] || n).replace(/-/g, "+").replace(/_/g, "/"), a = "=".repeat((4 - s.length % 4) % 4), u = s + a;
|
|
150
150
|
try {
|
|
151
151
|
const i = atob(u), d = [];
|
|
152
|
-
for (let c = 0; c < i.length; c +=
|
|
153
|
-
const l = i.slice(c, c +
|
|
152
|
+
for (let c = 0; c < i.length; c += r) {
|
|
153
|
+
const l = i.slice(c, c + r), h = new Array(l.length);
|
|
154
154
|
for (let f = 0; f < l.length; f++)
|
|
155
155
|
h[f] = l.charCodeAt(f);
|
|
156
156
|
const p = new Uint8Array(h);
|
|
@@ -171,7 +171,7 @@ class U {
|
|
|
171
171
|
* @param mimeType MIME类型,默认为"text/plain"。
|
|
172
172
|
* @returns 返回一个File对象,包含解码后的数据。
|
|
173
173
|
*/
|
|
174
|
-
static toFile(n, t = "file.txt",
|
|
174
|
+
static toFile(n, t = "file.txt", r = "text/plain") {
|
|
175
175
|
const s = n.replace(/^data:.+;base64,/, "").replace(/-/g, "+").replace(/_/g, "/"), a = "=".repeat((4 - s.length % 4) % 4), u = s + a, i = atob(u), d = [];
|
|
176
176
|
for (let l = 0; l < i.length; l += 512) {
|
|
177
177
|
const h = i.slice(l, l + 512), p = new Array(h.length);
|
|
@@ -179,8 +179,8 @@ class U {
|
|
|
179
179
|
p[f] = h.charCodeAt(f);
|
|
180
180
|
d.push(new Uint8Array(p));
|
|
181
181
|
}
|
|
182
|
-
const c = new Blob(d, { type:
|
|
183
|
-
return new File([c], t, { type:
|
|
182
|
+
const c = new Blob(d, { type: r });
|
|
183
|
+
return new File([c], t, { type: r });
|
|
184
184
|
}
|
|
185
185
|
/**
|
|
186
186
|
* base64加密 -- 普通字符串转 Base64 编码
|
|
@@ -208,20 +208,20 @@ class U {
|
|
|
208
208
|
*/
|
|
209
209
|
static _stringToUtf8Bytes(n) {
|
|
210
210
|
const t = [];
|
|
211
|
-
for (let
|
|
212
|
-
let
|
|
213
|
-
if (
|
|
214
|
-
t.push(
|
|
215
|
-
else if (
|
|
216
|
-
t.push(192 |
|
|
217
|
-
else if (
|
|
218
|
-
t.push(224 |
|
|
211
|
+
for (let r = 0; r < n.length; r++) {
|
|
212
|
+
let o = n.charCodeAt(r);
|
|
213
|
+
if (o < 128)
|
|
214
|
+
t.push(o);
|
|
215
|
+
else if (o < 2048)
|
|
216
|
+
t.push(192 | o >> 6), t.push(128 | o & 63);
|
|
217
|
+
else if (o < 55296 || o >= 57344)
|
|
218
|
+
t.push(224 | o >> 12), t.push(128 | o >> 6 & 63), t.push(128 | o & 63);
|
|
219
219
|
else {
|
|
220
|
-
|
|
221
|
-
const s =
|
|
220
|
+
r++;
|
|
221
|
+
const s = o, a = n.charCodeAt(r);
|
|
222
222
|
if (isNaN(a))
|
|
223
223
|
throw new Error("代理对不完整");
|
|
224
|
-
|
|
224
|
+
o = 65536 + ((s & 1023) << 10) + (a & 1023), t.push(240 | o >> 18), t.push(128 | o >> 12 & 63), t.push(128 | o >> 6 & 63), t.push(128 | o & 63);
|
|
225
225
|
}
|
|
226
226
|
}
|
|
227
227
|
return t;
|
|
@@ -230,19 +230,19 @@ class U {
|
|
|
230
230
|
* UTF-8 字节数组转字符串
|
|
231
231
|
*/
|
|
232
232
|
static _utf8BytesToString(n) {
|
|
233
|
-
let t = "",
|
|
234
|
-
for (;
|
|
235
|
-
const
|
|
236
|
-
if (
|
|
237
|
-
t += String.fromCharCode(
|
|
238
|
-
else if (
|
|
239
|
-
const s = n[
|
|
240
|
-
t += String.fromCharCode((
|
|
241
|
-
} else if (
|
|
242
|
-
const s = n[
|
|
243
|
-
t += String.fromCharCode((
|
|
244
|
-
} else if (
|
|
245
|
-
const s = n[
|
|
233
|
+
let t = "", r = 0;
|
|
234
|
+
for (; r < n.length; ) {
|
|
235
|
+
const o = n[r++];
|
|
236
|
+
if (o < 128)
|
|
237
|
+
t += String.fromCharCode(o);
|
|
238
|
+
else if (o >= 192 && o < 224) {
|
|
239
|
+
const s = n[r++] & 63;
|
|
240
|
+
t += String.fromCharCode((o & 31) << 6 | s);
|
|
241
|
+
} else if (o >= 224 && o < 240) {
|
|
242
|
+
const s = n[r++] & 63, a = n[r++] & 63;
|
|
243
|
+
t += String.fromCharCode((o & 15) << 12 | s << 6 | a);
|
|
244
|
+
} else if (o >= 240 && o < 248) {
|
|
245
|
+
const s = n[r++] & 63, a = n[r++] & 63, u = n[r++] & 63, i = (o & 7) << 18 | s << 12 | a << 6 | u, d = Math.floor((i - 65536) / 1024) + 55296, c = (i - 65536) % 1024 + 56320;
|
|
246
246
|
t += String.fromCharCode(d, c);
|
|
247
247
|
} else
|
|
248
248
|
t += "�";
|
|
@@ -253,9 +253,9 @@ class U {
|
|
|
253
253
|
* 字节数组转 Base64 编码
|
|
254
254
|
*/
|
|
255
255
|
static _bytesToBase64(n) {
|
|
256
|
-
let t = "",
|
|
257
|
-
for (;
|
|
258
|
-
const
|
|
256
|
+
let t = "", r = 0;
|
|
257
|
+
for (; r < n.length; ) {
|
|
258
|
+
const o = n[r++], s = r < n.length, a = s ? n[r++] : 0, u = r < n.length, i = u ? n[r++] : 0, d = o >> 2, c = (o & 3) << 4 | a >> 4, l = (a & 15) << 2 | i >> 6, h = i & 63;
|
|
259
259
|
s ? u ? t += this.BASE64_CHARS.charAt(d) + this.BASE64_CHARS.charAt(c) + this.BASE64_CHARS.charAt(l) + this.BASE64_CHARS.charAt(h) : t += this.BASE64_CHARS.charAt(d) + this.BASE64_CHARS.charAt(c) + this.BASE64_CHARS.charAt(l) + "=" : t += this.BASE64_CHARS.charAt(d) + this.BASE64_CHARS.charAt(c) + "==";
|
|
260
260
|
}
|
|
261
261
|
return t;
|
|
@@ -265,9 +265,9 @@ class U {
|
|
|
265
265
|
*/
|
|
266
266
|
static _base64ToBytes(n) {
|
|
267
267
|
const t = n.length;
|
|
268
|
-
let
|
|
269
|
-
t >= 2 && (n[t - 1] === "=" &&
|
|
270
|
-
const
|
|
268
|
+
let r = 0;
|
|
269
|
+
t >= 2 && (n[t - 1] === "=" && r++, n[t - 2] === "=" && r++);
|
|
270
|
+
const o = Math.floor(t * 3 / 4) - r, s = new Array(o), a = new Array(256).fill(-1);
|
|
271
271
|
for (let d = 0; d < this.BASE64_CHARS.length; d++)
|
|
272
272
|
a[this.BASE64_CHARS.charCodeAt(d)] = d;
|
|
273
273
|
let u = 0, i = 0;
|
|
@@ -450,8 +450,8 @@ const S = {
|
|
|
450
450
|
* @returns void
|
|
451
451
|
*/
|
|
452
452
|
setCookie(e, n, t = 7) {
|
|
453
|
-
const
|
|
454
|
-
|
|
453
|
+
const r = /* @__PURE__ */ new Date();
|
|
454
|
+
r.setTime(r.getTime() + t * 24 * 60 * 60 * 1e3), document.cookie = `${e}=${encodeURIComponent(n)};expires=${r.toUTCString()};path=/`;
|
|
455
455
|
},
|
|
456
456
|
/**
|
|
457
457
|
* 删除cookie
|
|
@@ -478,8 +478,8 @@ const S = {
|
|
|
478
478
|
* @returns 相差天数
|
|
479
479
|
*/
|
|
480
480
|
diffDays(e, n) {
|
|
481
|
-
const t = new Date(e).getTime(),
|
|
482
|
-
return t >
|
|
481
|
+
const t = new Date(e).getTime(), r = new Date(n).getTime();
|
|
482
|
+
return t > r ? Math.abs(Math.floor((t - r) / (24 * 3600 * 1e3))) : Math.abs(Math.floor((r - t) / (24 * 3600 * 1e3)));
|
|
483
483
|
},
|
|
484
484
|
/**
|
|
485
485
|
* 生成唯一ID(时间戳+随机数)
|
|
@@ -496,9 +496,9 @@ const S = {
|
|
|
496
496
|
* @returns 当年的第几天
|
|
497
497
|
*/
|
|
498
498
|
getWhichDays(e, n, t) {
|
|
499
|
-
let
|
|
500
|
-
for (let
|
|
501
|
-
switch (
|
|
499
|
+
let r = t;
|
|
500
|
+
for (let o = 1; o < n; o++)
|
|
501
|
+
switch (o) {
|
|
502
502
|
case 1:
|
|
503
503
|
case 3:
|
|
504
504
|
case 5:
|
|
@@ -506,16 +506,16 @@ const S = {
|
|
|
506
506
|
case 8:
|
|
507
507
|
case 10:
|
|
508
508
|
case 12:
|
|
509
|
-
|
|
509
|
+
r += 31;
|
|
510
510
|
break;
|
|
511
511
|
case 2:
|
|
512
|
-
S.isLeapYear(e) ?
|
|
512
|
+
S.isLeapYear(e) ? r += 29 : r += 28;
|
|
513
513
|
break;
|
|
514
514
|
default:
|
|
515
|
-
|
|
515
|
+
r += 30;
|
|
516
516
|
break;
|
|
517
517
|
}
|
|
518
|
-
return
|
|
518
|
+
return r;
|
|
519
519
|
},
|
|
520
520
|
/**
|
|
521
521
|
* 获取时间字符串(自动短化)
|
|
@@ -524,13 +524,13 @@ const S = {
|
|
|
524
524
|
* @returns 时间字符串
|
|
525
525
|
*/
|
|
526
526
|
getTimeStringAutoShort2(e, n) {
|
|
527
|
-
const t = /* @__PURE__ */ new Date(),
|
|
527
|
+
const t = /* @__PURE__ */ new Date(), r = new Date(e), o = t.getFullYear(), s = t.getMonth() + 1, a = t.getDate(), u = r.getFullYear(), i = r.getMonth() + 1, d = r.getDate();
|
|
528
528
|
let c = "";
|
|
529
|
-
const l = n ? " " + this.formatDate(
|
|
530
|
-
if (
|
|
529
|
+
const l = n ? " " + this.formatDate(r, "hh:mm") : "";
|
|
530
|
+
if (o === u) {
|
|
531
531
|
const f = t.getTime() - e;
|
|
532
532
|
if (s === i && a === d)
|
|
533
|
-
f < 60 * 1e3 ? c = "刚刚" : c = this.formatDate(
|
|
533
|
+
f < 60 * 1e3 ? c = "刚刚" : c = this.formatDate(r, "hh:mm");
|
|
534
534
|
else {
|
|
535
535
|
const g = /* @__PURE__ */ new Date();
|
|
536
536
|
g.setDate(g.getDate() - 1);
|
|
@@ -541,11 +541,11 @@ const S = {
|
|
|
541
541
|
c = "前天" + l;
|
|
542
542
|
else if (f / 36e5 <= 7 * 24) {
|
|
543
543
|
const y = new Array(7);
|
|
544
|
-
y[0] = "星期日", y[1] = "星期一", y[2] = "星期二", y[3] = "星期三", y[4] = "星期四", y[5] = "星期五", y[6] = "星期六", c = y[
|
|
545
|
-
} else c = this.formatDate(
|
|
544
|
+
y[0] = "星期日", y[1] = "星期一", y[2] = "星期二", y[3] = "星期三", y[4] = "星期四", y[5] = "星期五", y[6] = "星期六", c = y[r.getDay()] + l;
|
|
545
|
+
} else c = this.formatDate(r, "yyyy/M/d") + l;
|
|
546
546
|
}
|
|
547
547
|
} else
|
|
548
|
-
c = this.formatDate(
|
|
548
|
+
c = this.formatDate(r, "yyyy/M/d") + l;
|
|
549
549
|
return c;
|
|
550
550
|
},
|
|
551
551
|
/**
|
|
@@ -572,8 +572,8 @@ const S = {
|
|
|
572
572
|
//毫秒
|
|
573
573
|
};
|
|
574
574
|
/(y+)/.test(n) && (n = n.replace(RegExp.$1, (e.getFullYear() + "").substr(4 - RegExp.$1.length)));
|
|
575
|
-
for (const
|
|
576
|
-
new RegExp("(" +
|
|
575
|
+
for (const r in t)
|
|
576
|
+
new RegExp("(" + r + ")").test(n) && (n = n.replace(RegExp.$1, RegExp.$1.length === 1 ? t[r] : ("00" + t[r]).substr(("" + t[r]).length)));
|
|
577
577
|
return n;
|
|
578
578
|
}
|
|
579
579
|
}, L = {
|
|
@@ -587,8 +587,8 @@ const S = {
|
|
|
587
587
|
if (!e)
|
|
588
588
|
throw new Error("Element is not provided");
|
|
589
589
|
if (e instanceof SVGElement) {
|
|
590
|
-
const t = e.getBoundingClientRect(),
|
|
591
|
-
return t.top +
|
|
590
|
+
const t = e.getBoundingClientRect(), r = window.pageYOffset || document.documentElement.scrollTop;
|
|
591
|
+
return t.top + r;
|
|
592
592
|
}
|
|
593
593
|
let n = 0;
|
|
594
594
|
for (; e; )
|
|
@@ -654,8 +654,8 @@ const S = {
|
|
|
654
654
|
* @param filename 文件名
|
|
655
655
|
*/
|
|
656
656
|
saveAsBlob(e, n) {
|
|
657
|
-
const t = document.createElement("a"),
|
|
658
|
-
t.href =
|
|
657
|
+
const t = document.createElement("a"), r = window.URL.createObjectURL(e);
|
|
658
|
+
t.href = r, t.download = n, document.body.appendChild(t), t.click(), URL.revokeObjectURL(r), document.body.removeChild(t);
|
|
659
659
|
},
|
|
660
660
|
/**
|
|
661
661
|
* 直接下载url
|
|
@@ -674,14 +674,14 @@ const S = {
|
|
|
674
674
|
*/
|
|
675
675
|
animate(e, n) {
|
|
676
676
|
let t = -1;
|
|
677
|
-
const
|
|
678
|
-
let
|
|
679
|
-
|
|
677
|
+
const r = e.series[0].data.length;
|
|
678
|
+
let o;
|
|
679
|
+
o = setInterval(() => {
|
|
680
680
|
n.dispatchAction({
|
|
681
681
|
type: "downplay",
|
|
682
682
|
seriesIndex: 0,
|
|
683
683
|
dataIndex: t
|
|
684
|
-
}), t = (t + 1) %
|
|
684
|
+
}), t = (t + 1) % r, n.dispatchAction({
|
|
685
685
|
type: "highlight",
|
|
686
686
|
seriesIndex: 0,
|
|
687
687
|
dataIndex: t
|
|
@@ -689,9 +689,9 @@ const S = {
|
|
|
689
689
|
type: "showTip",
|
|
690
690
|
seriesIndex: 0,
|
|
691
691
|
dataIndex: t
|
|
692
|
-
}), t >
|
|
692
|
+
}), t > r && (t = 0);
|
|
693
693
|
}, 2e3), n.on("mouseover", () => {
|
|
694
|
-
clearInterval(
|
|
694
|
+
clearInterval(o), n.dispatchAction({
|
|
695
695
|
type: "downplay",
|
|
696
696
|
seriesIndex: 0,
|
|
697
697
|
dataIndex: t
|
|
@@ -705,9 +705,9 @@ const S = {
|
|
|
705
705
|
* @returns
|
|
706
706
|
*/
|
|
707
707
|
sortFromA2Z(e) {
|
|
708
|
-
return e?.length ? e.sort((t,
|
|
709
|
-
const
|
|
710
|
-
return
|
|
708
|
+
return e?.length ? e.sort((t, r) => {
|
|
709
|
+
const o = t.toUpperCase(), s = r.toUpperCase();
|
|
710
|
+
return o < s ? -1 : o > s ? 1 : 0;
|
|
711
711
|
}) : void 0;
|
|
712
712
|
}
|
|
713
713
|
}, j = {
|
|
@@ -730,11 +730,11 @@ const S = {
|
|
|
730
730
|
* @param targetLng 目标经度
|
|
731
731
|
* @returns 距离值 单位:km
|
|
732
732
|
*/
|
|
733
|
-
getDistance(e, n, t,
|
|
734
|
-
const
|
|
733
|
+
getDistance(e, n, t, r) {
|
|
734
|
+
const o = this.degrees2Radians(e), s = this.degrees2Radians(t), a = o - s, u = this.degrees2Radians(n) - this.degrees2Radians(r);
|
|
735
735
|
let i = 2 * Math.asin(
|
|
736
736
|
Math.sqrt(
|
|
737
|
-
Math.pow(Math.sin(a / 2), 2) + Math.cos(
|
|
737
|
+
Math.pow(Math.sin(a / 2), 2) + Math.cos(o) * Math.cos(s) * Math.pow(Math.sin(u / 2), 2)
|
|
738
738
|
)
|
|
739
739
|
);
|
|
740
740
|
return i = i * 6378.137, i = Math.round(i * 1e4) / 1e4, i = +i.toFixed(2), console.log("经纬度计算的距离为:" + i), i;
|
|
@@ -755,10 +755,10 @@ const S = {
|
|
|
755
755
|
* @returns 距离值
|
|
756
756
|
*/
|
|
757
757
|
calculateDistanceByHaversine(e, n, t = "km") {
|
|
758
|
-
const
|
|
759
|
-
if (
|
|
758
|
+
const r = this, o = e.longitude ?? e.lng, s = e.latitude ?? e.lat, a = n.longitude ?? n.lng, u = n.latitude ?? n.lat;
|
|
759
|
+
if (o === void 0 || s === void 0 || a === void 0 || u === void 0)
|
|
760
760
|
throw new Error("无效的坐标格式,缺少经纬度信息");
|
|
761
|
-
const i = 6371, d =
|
|
761
|
+
const i = 6371, d = r.degrees2Radians(s), c = r.degrees2Radians(u), l = r.degrees2Radians(u - s), h = r.degrees2Radians(a - o), p = Math.sin(l / 2) * Math.sin(l / 2) + Math.cos(d) * Math.cos(c) * Math.sin(h / 2) * Math.sin(h / 2), f = 2 * Math.atan2(Math.sqrt(p), Math.sqrt(1 - p)), g = i * f;
|
|
762
762
|
switch (t) {
|
|
763
763
|
case "m":
|
|
764
764
|
return g * 1e3;
|
|
@@ -783,17 +783,17 @@ const S = {
|
|
|
783
783
|
calculateDistancesByHaversine(e, n = "km", t = !1) {
|
|
784
784
|
if (e.length < 2)
|
|
785
785
|
return { segments: [], total: 0 };
|
|
786
|
-
const
|
|
787
|
-
let
|
|
786
|
+
const r = [];
|
|
787
|
+
let o = 0;
|
|
788
788
|
for (let s = 0; s < e.length - 1; s++) {
|
|
789
789
|
const a = this.calculateDistanceByHaversine(e[s], e[s + 1], n);
|
|
790
|
-
|
|
790
|
+
r.push(a), o += a;
|
|
791
791
|
}
|
|
792
792
|
if (t && e.length > 2) {
|
|
793
793
|
const s = this.calculateDistanceByHaversine(e[e.length - 1], e[0], n);
|
|
794
|
-
|
|
794
|
+
r.push(s), o += s;
|
|
795
795
|
}
|
|
796
|
-
return { segments:
|
|
796
|
+
return { segments: r, total: o };
|
|
797
797
|
}
|
|
798
798
|
};
|
|
799
799
|
class $ {
|
|
@@ -826,7 +826,7 @@ class $ {
|
|
|
826
826
|
throw new Error("输入不是有效的数字");
|
|
827
827
|
if (t > 9999999999999e-2 || t < -9999999999999e-2)
|
|
828
828
|
throw new Error("输入数字超出范围");
|
|
829
|
-
const
|
|
829
|
+
const r = t < 0, o = Math.abs(t), s = Math.floor(o), a = Math.round((o - s) * 100), u = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"], i = ["", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"], d = ["角", "分"];
|
|
830
830
|
let c = "", l = s;
|
|
831
831
|
if (l === 0)
|
|
832
832
|
c = u[0];
|
|
@@ -844,7 +844,7 @@ class $ {
|
|
|
844
844
|
f > 0 && (h += u[f] + d[0]), g > 0 && (h += u[g] + d[1]);
|
|
845
845
|
} else
|
|
846
846
|
h = "整";
|
|
847
|
-
let p = (
|
|
847
|
+
let p = (r ? "负" : "") + c + "圆" + h;
|
|
848
848
|
return p === "零圆整" && (p = "零圆"), p;
|
|
849
849
|
} catch (t) {
|
|
850
850
|
return console.error("转换失败:", t), "格式错误";
|
|
@@ -895,8 +895,8 @@ const M = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], x = /*
|
|
|
895
895
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
896
896
|
deepCopy(e, n) {
|
|
897
897
|
for (const t in e) {
|
|
898
|
-
const
|
|
899
|
-
|
|
898
|
+
const r = e[t];
|
|
899
|
+
r instanceof Object ? (n[t] = {}, this.deepCopy(r, n[t])) : r instanceof Array ? (n[t] = [], this.deepCopy(r, n[t])) : n[t] = e[t];
|
|
900
900
|
}
|
|
901
901
|
}
|
|
902
902
|
}, F = {
|
|
@@ -1058,11 +1058,11 @@ const M = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], x = /*
|
|
|
1058
1058
|
*/
|
|
1059
1059
|
indexsOfAppear(e, n) {
|
|
1060
1060
|
let t = -1;
|
|
1061
|
-
const
|
|
1061
|
+
const r = [];
|
|
1062
1062
|
do
|
|
1063
|
-
t = e.indexOf(n, t + 1), t !== -1 &&
|
|
1063
|
+
t = e.indexOf(n, t + 1), t !== -1 && r.push(t);
|
|
1064
1064
|
while (t !== -1);
|
|
1065
|
-
return
|
|
1065
|
+
return r;
|
|
1066
1066
|
},
|
|
1067
1067
|
/**
|
|
1068
1068
|
* 获取字符串中出现次数最多的字符和次数
|
|
@@ -1075,13 +1075,29 @@ const M = (e) => e > 25 || e < 0 ? "" : "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e], x = /*
|
|
|
1075
1075
|
const a = e.charAt(s);
|
|
1076
1076
|
t[a] ? t[a]++ : t[a] = 1;
|
|
1077
1077
|
}
|
|
1078
|
-
let
|
|
1078
|
+
let r = 1;
|
|
1079
1079
|
for (const s in t)
|
|
1080
|
-
|
|
1081
|
-
const
|
|
1080
|
+
r < t[s] && (r = t[s]);
|
|
1081
|
+
const o = [];
|
|
1082
1082
|
for (const s in t)
|
|
1083
|
-
|
|
1084
|
-
return n[0] =
|
|
1083
|
+
r == t[s] && o.push(s);
|
|
1084
|
+
return n[0] = r, n[1] = o.join(), n;
|
|
1085
|
+
},
|
|
1086
|
+
/**
|
|
1087
|
+
* 脱敏处理
|
|
1088
|
+
* @param str 字符串
|
|
1089
|
+
* @param start 开始位置
|
|
1090
|
+
* @param end 结束位置
|
|
1091
|
+
* @returns 脱敏后的字符串
|
|
1092
|
+
*/
|
|
1093
|
+
mask(e, n, t) {
|
|
1094
|
+
if (!e)
|
|
1095
|
+
throw new Error("字符串为空");
|
|
1096
|
+
if (!n || !t)
|
|
1097
|
+
throw new Error("开始位置或结束位置为空");
|
|
1098
|
+
if (n < 0 || t > e.length || n > t)
|
|
1099
|
+
throw new Error("开始位置小于0或结束位置超出字符串长度或开始位置大于结束位置");
|
|
1100
|
+
return e.slice(0, n) + "****" + e.slice(t);
|
|
1085
1101
|
}
|
|
1086
1102
|
}, B = (e) => {
|
|
1087
1103
|
const t = new RegExp("[?&]" + e + "=([^&#]*)", "i").exec(window.location.href);
|
|
@@ -1120,13 +1136,13 @@ const R = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
1120
1136
|
toList(e, n = 2) {
|
|
1121
1137
|
console.log(e, n);
|
|
1122
1138
|
const t = {};
|
|
1123
|
-
for (let
|
|
1124
|
-
t[
|
|
1125
|
-
e.forEach((
|
|
1126
|
-
const
|
|
1127
|
-
for (const
|
|
1128
|
-
|
|
1129
|
-
return
|
|
1139
|
+
for (let o = 0; o < n; o++)
|
|
1140
|
+
t[o] = [];
|
|
1141
|
+
e.forEach((o, s) => t[s % n].push(o));
|
|
1142
|
+
const r = [];
|
|
1143
|
+
for (const o in t)
|
|
1144
|
+
r.push(...t[o]);
|
|
1145
|
+
return r;
|
|
1130
1146
|
},
|
|
1131
1147
|
/**
|
|
1132
1148
|
* js瀑布流布局
|
|
@@ -1135,14 +1151,14 @@ const R = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
1135
1151
|
* @param step 间距
|
|
1136
1152
|
*/
|
|
1137
1153
|
jsLayout(e, n, t) {
|
|
1138
|
-
const
|
|
1154
|
+
const r = e.offsetWidth, o = n[0].offsetWidth, s = parseInt((r / o).toString()), a = (r - o * s) / (s - 1), u = [];
|
|
1139
1155
|
for (let i = 0, d = n.length; i < d; i++) {
|
|
1140
1156
|
const c = n[i];
|
|
1141
1157
|
if (i < s)
|
|
1142
|
-
c.style.left = (
|
|
1158
|
+
c.style.left = (o + a) * i + "px", u[i] = c.offsetHeight;
|
|
1143
1159
|
else {
|
|
1144
1160
|
const { index: l, value: h } = A.getMinValueAndIndex(u);
|
|
1145
|
-
c.style.left = (
|
|
1161
|
+
c.style.left = (o + a) * l + "px", c.style.top = h + t + "px", u[l] = c.offsetHeight + t + h;
|
|
1146
1162
|
}
|
|
1147
1163
|
}
|
|
1148
1164
|
}
|
package/dist/utils.umd.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(h,w){typeof exports=="object"&&typeof module<"u"?w(exports):typeof define=="function"&&define.amd?define(["exports"],w):(h=typeof globalThis<"u"?globalThis:h||self,w(h.yhkitUtils={}))})(this,function(h){"use strict";const A=Object.assign({unique(e){return e?Array.from(new Set(e)):[]},isExist(e,n){return!e||!n?!1:e.indexOf(n)!==-1},countOfAppear(e,n){let t=0;for(const o of e)o===n&&t++;return t},indexsOfAppear(e,n){let t=-1;const o=[];do t=e.indexOf(n,t+1),t!==-1&&o.push(t);while(t!==-1);return o},sort(e,n="asc"){return e?e.sort((t,o)=>n==="asc"?t>o?1:-1:t<o?1:-1):[]},shuffle(e){if(!e)return[];for(let n=e.length-1;n>0;n--){const t=Math.floor(Math.random()*(n+1));[e[n],e[t]]=[e[t],e[n]]}return e},getMaxValue(e){return e?Math.max(...e):0},getMinValue(e){return e?Math.min(...e):0},getMinValueAndIndex(e){if(e.length===0)return{value:0,index:0};const n={value:e[0],index:0};for(let t=1,o=e.length;t<o;t++){const r=e[t];n.value>r&&(n.value=r,n.index=t)}return n},getMaxValueAndIndex(e){return e.length===0?{value:0,index:0}:e.reduce((n,t,o)=>t<n.value?{value:t,index:o}:n,{value:e[0],index:0})}},{...Object.freeze(Object.defineProperty({__proto__:null,toEnumObj:(e,n="value")=>{if(!e||!e.length)return{};const t={};return e.forEach(o=>{const r=Object.assign({label:o.label,text:o.label},o);t[o[n]]=r}),t}},Symbol.toStringTag,{value:"Module"}))});class M{static BASE64_CHARS="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";static toBlob(n,t="",o=512){const s=(n.split(",")[1]||n).replace(/-/g,"+").replace(/_/g,"/"),c="=".repeat((4-s.length%4)%4),u=s+c;try{const i=atob(u),d=[];for(let a=0;a<i.length;a+=o){const l=i.slice(a,a+o),f=new Array(l.length);for(let g=0;g<l.length;g++)f[g]=l.charCodeAt(g);const p=new Uint8Array(f);d.push(p)}return new Blob(d,{type:t})}catch(i){return console.error("Failed to convert base64 to blob:",i),null}}static toFile(n,t="file.txt",o="text/plain"){const s=n.replace(/^data:.+;base64,/,"").replace(/-/g,"+").replace(/_/g,"/"),c="=".repeat((4-s.length%4)%4),u=s+c,i=atob(u),d=[];for(let l=0;l<i.length;l+=512){const f=i.slice(l,l+512),p=new Array(f.length);for(let g=0;g<f.length;g++)p[g]=f.charCodeAt(g);d.push(new Uint8Array(p))}const a=new Blob(d,{type:o});return new File([a],t,{type:o})}static encode(n){if(!n)return"";const t=this._stringToUtf8Bytes(n);return this._bytesToBase64(t)}static decode(n){if(!n)return"";n=n.replace(/\s/g,"");const t=this._base64ToBytes(n);return this._utf8BytesToString(t)}static _stringToUtf8Bytes(n){const t=[];for(let o=0;o<n.length;o++){let r=n.charCodeAt(o);if(r<128)t.push(r);else if(r<2048)t.push(192|r>>6),t.push(128|r&63);else if(r<55296||r>=57344)t.push(224|r>>12),t.push(128|r>>6&63),t.push(128|r&63);else{o++;const s=r,c=n.charCodeAt(o);if(isNaN(c))throw new Error("代理对不完整");r=65536+((s&1023)<<10)+(c&1023),t.push(240|r>>18),t.push(128|r>>12&63),t.push(128|r>>6&63),t.push(128|r&63)}}return t}static _utf8BytesToString(n){let t="",o=0;for(;o<n.length;){const r=n[o++];if(r<128)t+=String.fromCharCode(r);else if(r>=192&&r<224){const s=n[o++]&63;t+=String.fromCharCode((r&31)<<6|s)}else if(r>=224&&r<240){const s=n[o++]&63,c=n[o++]&63;t+=String.fromCharCode((r&15)<<12|s<<6|c)}else if(r>=240&&r<248){const s=n[o++]&63,c=n[o++]&63,u=n[o++]&63,i=(r&7)<<18|s<<12|c<<6|u,d=Math.floor((i-65536)/1024)+55296,a=(i-65536)%1024+56320;t+=String.fromCharCode(d,a)}else t+="�"}return t}static _bytesToBase64(n){let t="",o=0;for(;o<n.length;){const r=n[o++],s=o<n.length,c=s?n[o++]:0,u=o<n.length,i=u?n[o++]:0,d=r>>2,a=(r&3)<<4|c>>4,l=(c&15)<<2|i>>6,f=i&63;s?u?t+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(a)+this.BASE64_CHARS.charAt(l)+this.BASE64_CHARS.charAt(f):t+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(a)+this.BASE64_CHARS.charAt(l)+"=":t+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(a)+"=="}return t}static _base64ToBytes(n){const t=n.length;let o=0;t>=2&&(n[t-1]==="="&&o++,n[t-2]==="="&&o++);const r=Math.floor(t*3/4)-o,s=new Array(r),c=new Array(256).fill(-1);for(let d=0;d<this.BASE64_CHARS.length;d++)c[this.BASE64_CHARS.charCodeAt(d)]=d;let u=0,i=0;for(;i<t;){const d=c[n.charCodeAt(i++)],a=c[n.charCodeAt(i++)],l=i<t?c[n.charCodeAt(i++)]:-1,f=i<t?c[n.charCodeAt(i++)]:-1;if(d===-1||a===-1)throw new Error("无效的 Base64 字符");const p=d<<2|a>>4;if(s[u++]=p,l!==-1){const g=(a&15)<<4|l>>2;if(s[u++]=g,f!==-1){const y=(l&3)<<6|f;s[u++]=y}}}return s}}const S={isEmptyString(e){return typeof e=="string"&&e.trim()===""},isNumber(e){return typeof e=="number"&&!isNaN(e)},isObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)},isEmptyObject(e){return e?Object.keys(e).length===0&&e.constructor===Object:!0},isBoolean(e){return typeof e=="boolean"},isArray(e){return Array.isArray(e)},isFunction(e){return typeof e=="function"},isPromise(e){return!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"},isElement(e){return e instanceof Element},isPhone(e){return/^1[3-9]\d{9}$/.test(e)},isEmail(e){return/^[\w.-]+@[\w.-]+\.\w+$/.test(e)},isJSON(e){try{return JSON.parse(e),!0}catch{return!1}},isImageLoaded(e){return e.complete&&e.naturalWidth!==0},isInViewport(e){const n=e.getBoundingClientRect();return n.top>=0&&n.left>=0&&n.bottom<=window.innerHeight&&n.right<=window.innerWidth},isLeapYear(e){return e%4===0&&e%100!==0||e%400===0},isMobile(){return/Mobi|Android|iPhone/i.test(navigator.userAgent)}},U={getCookie(e){if(!e)return;const n=document.cookie.match(new RegExp("(^| )"+e+"=([^;]+)"));return n?decodeURIComponent(n[2]):null},setCookie(e,n,t=7){const o=new Date;o.setTime(o.getTime()+t*24*60*60*1e3),document.cookie=`${e}=${encodeURIComponent(n)};expires=${o.toUTCString()};path=/`},deleteCookie(e){this.setCookie(e,"",-1)}},E={getTimeString(e,n=!1){return n?new Date().toLocaleString(e,{hour12:!0}):new Date().toLocaleString("chinese",{hour12:!1})},diffDays(e,n){const t=new Date(e).getTime(),o=new Date(n).getTime();return t>o?Math.abs(Math.floor((t-o)/(24*3600*1e3))):Math.abs(Math.floor((o-t)/(24*3600*1e3)))},uniqueId(){return Date.now().toString(36)+Math.random().toString(36).substr(2,5)},getWhichDays(e,n,t){let o=t;for(let r=1;r<n;r++)switch(r){case 1:case 3:case 5:case 7:case 8:case 10:case 12:o+=31;break;case 2:S.isLeapYear(e)?o+=29:o+=28;break;default:o+=30;break}return o},getTimeStringAutoShort2(e,n){const t=new Date,o=new Date(e),r=t.getFullYear(),s=t.getMonth()+1,c=t.getDate(),u=o.getFullYear(),i=o.getMonth()+1,d=o.getDate();let a="";const l=n?" "+this.formatDate(o,"hh:mm"):"";if(r===u){const g=t.getTime()-e;if(s===i&&c===d)g<60*1e3?a="刚刚":a=this.formatDate(o,"hh:mm");else{const y=new Date;y.setDate(y.getDate()-1);const b=new Date;if(b.setDate(b.getDate()-2),i===y.getMonth()+1&&d===y.getDate())a="昨天"+l;else if(i===b.getMonth()+1&&d===b.getDate())a="前天"+l;else if(g/36e5<=7*24){const m=new Array(7);m[0]="星期日",m[1]="星期一",m[2]="星期二",m[3]="星期三",m[4]="星期四",m[5]="星期五",m[6]="星期六",a=m[o.getDay()]+l}else a=this.formatDate(o,"yyyy/M/d")+l}}else a=this.formatDate(o,"yyyy/M/d")+l;return a},formatDate(e,n){const t={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};/(y+)/.test(n)&&(n=n.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length)));for(const o in t)new RegExp("("+o+")").test(n)&&(n=n.replace(RegExp.$1,RegExp.$1.length===1?t[o]:("00"+t[o]).substr((""+t[o]).length)));return n}},C={getOffsetTop(e){if(!e)throw new Error("Element is not provided");if(e instanceof SVGElement){const t=e.getBoundingClientRect(),o=window.pageYOffset||document.documentElement.scrollTop;return t.top+o}let n=0;for(;e;)n+=e.offsetTop,e=e.offsetParent;return n},getScrollValue(){const e={scrollLeft:0,scrollTop:0};return e.scrollLeft=document.body.scrollLeft||document.documentElement.scrollLeft,e.scrollTop=document.body.scrollTop||document.documentElement.scrollTop,e},getPageValue(e){e=e||window.event;const n=e.pageX||e.clientX+this.getScrollValue().scrollLeft,t=e.pageY||e.clientY+this.getScrollValue().scrollTop;return{pageX:n,pageY:t}},addEventListener(e,n,t){e.addEventListener?e.addEventListener(n,t):e.attachEvent?e.attachEvent("on"+n,t):e["on"+n]=t},getViewportWidth(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},getViewportHeight(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}},B={saveAsBlob(e,n){const t=document.createElement("a"),o=window.URL.createObjectURL(e);t.href=o,t.download=n,document.body.appendChild(t),t.click(),URL.revokeObjectURL(o),document.body.removeChild(t)},saveAsUrl(e,n){const t=document.createElement("a");t.href=e,t.download=n,document.body.appendChild(t),t.click(),URL.revokeObjectURL(e),document.body.removeChild(t)}},D={animate(e,n){let t=-1;const o=e.series[0].data.length;let r;r=setInterval(()=>{n.dispatchAction({type:"downplay",seriesIndex:0,dataIndex:t}),t=(t+1)%o,n.dispatchAction({type:"highlight",seriesIndex:0,dataIndex:t}),n.dispatchAction({type:"showTip",seriesIndex:0,dataIndex:t}),t>o&&(t=0)},2e3),n.on("mouseover",()=>{clearInterval(r),n.dispatchAction({type:"downplay",seriesIndex:0,dataIndex:t})})}},R={sortFromA2Z(e){return e?.length?e.sort((t,o)=>{const r=t.toUpperCase(),s=o.toUpperCase();return r<s?-1:r>s?1:0}):void 0}},v={degrees2Radians(e){return e*Math.PI/180},getDistance(e,n,t,o){const r=this.degrees2Radians(e),s=this.degrees2Radians(t),c=r-s,u=this.degrees2Radians(n)-this.degrees2Radians(o);let i=2*Math.asin(Math.sqrt(Math.pow(Math.sin(c/2),2)+Math.cos(r)*Math.cos(s)*Math.pow(Math.sin(u/2),2)));return i=i*6378.137,i=Math.round(i*1e4)/1e4,i=+i.toFixed(2),console.log("经纬度计算的距离为:"+i),i},calculateDistanceByHaversine(e,n,t="km"){const o=this,r=e.longitude??e.lng,s=e.latitude??e.lat,c=n.longitude??n.lng,u=n.latitude??n.lat;if(r===void 0||s===void 0||c===void 0||u===void 0)throw new Error("无效的坐标格式,缺少经纬度信息");const i=6371,d=o.degrees2Radians(s),a=o.degrees2Radians(u),l=o.degrees2Radians(u-s),f=o.degrees2Radians(c-r),p=Math.sin(l/2)*Math.sin(l/2)+Math.cos(d)*Math.cos(a)*Math.sin(f/2)*Math.sin(f/2),g=2*Math.atan2(Math.sqrt(p),Math.sqrt(1-p)),y=i*g;switch(t){case"m":return y*1e3;case"mi":return y*.621371;case"nmi":return y*.539957;default:return y}},calculateDistancesByHaversine(e,n="km",t=!1){if(e.length<2)return{segments:[],total:0};const o=[];let r=0;for(let s=0;s<e.length-1;s++){const c=this.calculateDistanceByHaversine(e[s],e[s+1],n);o.push(c),r+=c}if(t&&e.length>2){const s=this.calculateDistanceByHaversine(e[e.length-1],e[0],n);o.push(s),r+=s}return{segments:o,total:r}}};class x{static toStandardFormat(n){try{const t=typeof n=="string"?parseFloat(n):n;if(isNaN(t))throw new Error("输入不是有效的数字");if(!isFinite(t))throw new Error("输入是无穷大");return t.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}catch(t){return console.error("格式化失败:",t),"格式错误"}}static toChineseFormat(n){try{const t=typeof n=="string"?parseFloat(n):n;if(isNaN(t))throw new Error("输入不是有效的数字");if(t>9999999999999e-2||t<-9999999999999e-2)throw new Error("输入数字超出范围");const o=t<0,r=Math.abs(t),s=Math.floor(r),c=Math.round((r-s)*100),u=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"],i=["","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"],d=["角","分"];let a="",l=s;if(l===0)a=u[0];else{let g=0;for(;l>0;){const y=l%10;y!==0?a=u[y]+i[g]+a:a.charAt(0)!==u[0]&&(a=u[y]+a),l=Math.floor(l/10),g++}a=a.replace(/零+/g,"零"),a=a.replace(/零+$/,"")}let f="";if(c>0){const g=Math.floor(c/10),y=c%10;g>0&&(f+=u[g]+d[0]),y>0&&(f+=u[y]+d[1])}else f="整";let p=(o?"负":"")+a+"圆"+f;return p==="零圆整"&&(p="零圆"),p}catch(t){return console.error("转换失败:",t),"格式错误"}}}const T={...Object.freeze(Object.defineProperty({__proto__:null,toLetter:e=>e>25||e<0?"":"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e]},Symbol.toStringTag,{value:"Module"})),...Object.freeze(Object.defineProperty({__proto__:null,toMoney:e=>e.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},Symbol.toStringTag,{value:"Module"})),isNumber(e){return typeof e=="number"&&!isNaN(e)}},_={isEmptyObject(e){return e?Object.keys(e).length===0&&e.constructor===Object:!0},copy(e,n){for(const t in e)n[t]=e[t]},deepCopy(e,n){for(const t in e){const o=e[t];o instanceof Object?(n[t]={},this.deepCopy(o,n[t])):o instanceof Array?(n[t]=[],this.deepCopy(o,n[t])):n[t]=e[t]}}},O={desensitize(e){return e?e.replace(/^(\d{3})\d{4}(\d{4})$/,"$1****$2")||e.slice(0,3)+"****"+e.slice(7):""}},L={color:function(){return`#${Math.random().toString(16).slice(2,8)}`},int(e,n){return Math.floor(Math.random()*(n-e+1))+e},uniqueId(){return Date.now().toString(36)+Math.random().toString(36).substr(2,5)}},j={mobile:/^1[3-9]\d{9}$/,email:/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,chinese:/^[\u4e00-\u9fa5]+$/,english:/^[a-zA-Z]+$/,chineseStart:/^[\u4e00-\u9fa5]+\w*$/,integer:/^\d+$/,integerAndzero:/^(0|[1-9]+[0-9]*)$/,strongPassword:/^(?!.*[\s\p{C}])(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[\d\W])|(?=.*\d)(?=.*[^\w\s])).{8,}$/u,decimal:/^0\.(0[1-9]|[1-9][0-9]*)$/},I={getLocal(e){return localStorage.getItem(e)},setLocal(e,n){localStorage.setItem(e,n)},removeLocal(e){localStorage.removeItem(e)},getSession(e){return sessionStorage.getItem(e)},setSession(e,n){sessionStorage.setItem(e,n)},removeSession(e){sessionStorage.removeItem(e)}},k={isExist(e,n){if(!e||!n)return!1;const t=e.split(",");return console.log("判断某元素是否在字符串中",t.indexOf(n)===-1),t.indexOf(n)!==-1},includes(e,n){return!e||!n?!1:e.includes(n)},isJSON(e){try{return JSON.parse(e),!0}catch{return!1}},indexsOfAppear(e,n){let t=-1;const o=[];do t=e.indexOf(n,t+1),t!==-1&&o.push(t);while(t!==-1);return o},getMaxTimesAndVal(e){const n=[0,""],t={};for(let s=0;s<e.length;s++){const c=e.charAt(s);t[c]?t[c]++:t[c]=1}let o=1;for(const s in t)o<t[s]&&(o=t[s]);const r=[];for(const s in t)o==t[s]&&r.push(s);return n[0]=o,n[1]=r.join(),n}},H=e=>{const t=new RegExp("[?&]"+e+"=([^&#]*)","i").exec(window.location.href);return t?decodeURIComponent(t[1]):null};function $(e){return new URLSearchParams(window.location.search).get(e)}const P={...Object.freeze(Object.defineProperty({__proto__:null,getQueryInfoByName:H,getQueryParam:$},Symbol.toStringTag,{value:"Module"})),getHost(){return window.location.host},getPath(){return window.location.pathname}},F={toList(e,n=2){console.log(e,n);const t={};for(let r=0;r<n;r++)t[r]=[];e.forEach((r,s)=>t[s%n].push(r));const o=[];for(const r in t)o.push(...t[r]);return o},jsLayout(e,n,t){const o=e.offsetWidth,r=n[0].offsetWidth,s=parseInt((o/r).toString()),c=(o-r*s)/(s-1),u=[];for(let i=0,d=n.length;i<d;i++){const a=n[i];if(i<s)a.style.left=(r+c)*i+"px",u[i]=a.offsetHeight;else{const{index:l,value:f}=A.getMinValueAndIndex(u);a.style.left=(r+c)*l+"px",a.style.top=f+t+"px",u[l]=a.offsetHeight+t+f}}}};h.Base64Utils=M,h.MoneyFormatter=x,h.arrayUtils=A,h.booleanUtils=S,h.cookieUtils=U,h.dateUtils=E,h.documentUtils=C,h.downloadUtils=B,h.echartsUtils=D,h.letterUtils=R,h.mapUtils=v,h.numberUtils=T,h.objectUtils=_,h.phoneUtils=O,h.randomUtils=L,h.regexpUtils=j,h.storageUtils=I,h.stringUtils=k,h.urlUtils=P,h.waterfallUtils=F,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|
|
1
|
+
(function(h,w){typeof exports=="object"&&typeof module<"u"?w(exports):typeof define=="function"&&define.amd?define(["exports"],w):(h=typeof globalThis<"u"?globalThis:h||self,w(h.yhkitUtils={}))})(this,function(h){"use strict";const A=Object.assign({unique(e){return e?Array.from(new Set(e)):[]},isExist(e,n){return!e||!n?!1:e.indexOf(n)!==-1},countOfAppear(e,n){let t=0;for(const o of e)o===n&&t++;return t},indexsOfAppear(e,n){let t=-1;const o=[];do t=e.indexOf(n,t+1),t!==-1&&o.push(t);while(t!==-1);return o},sort(e,n="asc"){return e?e.sort((t,o)=>n==="asc"?t>o?1:-1:t<o?1:-1):[]},shuffle(e){if(!e)return[];for(let n=e.length-1;n>0;n--){const t=Math.floor(Math.random()*(n+1));[e[n],e[t]]=[e[t],e[n]]}return e},getMaxValue(e){return e?Math.max(...e):0},getMinValue(e){return e?Math.min(...e):0},getMinValueAndIndex(e){if(e.length===0)return{value:0,index:0};const n={value:e[0],index:0};for(let t=1,o=e.length;t<o;t++){const r=e[t];n.value>r&&(n.value=r,n.index=t)}return n},getMaxValueAndIndex(e){return e.length===0?{value:0,index:0}:e.reduce((n,t,o)=>t<n.value?{value:t,index:o}:n,{value:e[0],index:0})}},{...Object.freeze(Object.defineProperty({__proto__:null,toEnumObj:(e,n="value")=>{if(!e||!e.length)return{};const t={};return e.forEach(o=>{const r=Object.assign({label:o.label,text:o.label},o);t[o[n]]=r}),t}},Symbol.toStringTag,{value:"Module"}))});class M{static BASE64_CHARS="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";static toBlob(n,t="",o=512){const s=(n.split(",")[1]||n).replace(/-/g,"+").replace(/_/g,"/"),a="=".repeat((4-s.length%4)%4),u=s+a;try{const i=atob(u),d=[];for(let c=0;c<i.length;c+=o){const l=i.slice(c,c+o),f=new Array(l.length);for(let g=0;g<l.length;g++)f[g]=l.charCodeAt(g);const p=new Uint8Array(f);d.push(p)}return new Blob(d,{type:t})}catch(i){return console.error("Failed to convert base64 to blob:",i),null}}static toFile(n,t="file.txt",o="text/plain"){const s=n.replace(/^data:.+;base64,/,"").replace(/-/g,"+").replace(/_/g,"/"),a="=".repeat((4-s.length%4)%4),u=s+a,i=atob(u),d=[];for(let l=0;l<i.length;l+=512){const f=i.slice(l,l+512),p=new Array(f.length);for(let g=0;g<f.length;g++)p[g]=f.charCodeAt(g);d.push(new Uint8Array(p))}const c=new Blob(d,{type:o});return new File([c],t,{type:o})}static encode(n){if(!n)return"";const t=this._stringToUtf8Bytes(n);return this._bytesToBase64(t)}static decode(n){if(!n)return"";n=n.replace(/\s/g,"");const t=this._base64ToBytes(n);return this._utf8BytesToString(t)}static _stringToUtf8Bytes(n){const t=[];for(let o=0;o<n.length;o++){let r=n.charCodeAt(o);if(r<128)t.push(r);else if(r<2048)t.push(192|r>>6),t.push(128|r&63);else if(r<55296||r>=57344)t.push(224|r>>12),t.push(128|r>>6&63),t.push(128|r&63);else{o++;const s=r,a=n.charCodeAt(o);if(isNaN(a))throw new Error("代理对不完整");r=65536+((s&1023)<<10)+(a&1023),t.push(240|r>>18),t.push(128|r>>12&63),t.push(128|r>>6&63),t.push(128|r&63)}}return t}static _utf8BytesToString(n){let t="",o=0;for(;o<n.length;){const r=n[o++];if(r<128)t+=String.fromCharCode(r);else if(r>=192&&r<224){const s=n[o++]&63;t+=String.fromCharCode((r&31)<<6|s)}else if(r>=224&&r<240){const s=n[o++]&63,a=n[o++]&63;t+=String.fromCharCode((r&15)<<12|s<<6|a)}else if(r>=240&&r<248){const s=n[o++]&63,a=n[o++]&63,u=n[o++]&63,i=(r&7)<<18|s<<12|a<<6|u,d=Math.floor((i-65536)/1024)+55296,c=(i-65536)%1024+56320;t+=String.fromCharCode(d,c)}else t+="�"}return t}static _bytesToBase64(n){let t="",o=0;for(;o<n.length;){const r=n[o++],s=o<n.length,a=s?n[o++]:0,u=o<n.length,i=u?n[o++]:0,d=r>>2,c=(r&3)<<4|a>>4,l=(a&15)<<2|i>>6,f=i&63;s?u?t+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(c)+this.BASE64_CHARS.charAt(l)+this.BASE64_CHARS.charAt(f):t+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(c)+this.BASE64_CHARS.charAt(l)+"=":t+=this.BASE64_CHARS.charAt(d)+this.BASE64_CHARS.charAt(c)+"=="}return t}static _base64ToBytes(n){const t=n.length;let o=0;t>=2&&(n[t-1]==="="&&o++,n[t-2]==="="&&o++);const r=Math.floor(t*3/4)-o,s=new Array(r),a=new Array(256).fill(-1);for(let d=0;d<this.BASE64_CHARS.length;d++)a[this.BASE64_CHARS.charCodeAt(d)]=d;let u=0,i=0;for(;i<t;){const d=a[n.charCodeAt(i++)],c=a[n.charCodeAt(i++)],l=i<t?a[n.charCodeAt(i++)]:-1,f=i<t?a[n.charCodeAt(i++)]:-1;if(d===-1||c===-1)throw new Error("无效的 Base64 字符");const p=d<<2|c>>4;if(s[u++]=p,l!==-1){const g=(c&15)<<4|l>>2;if(s[u++]=g,f!==-1){const y=(l&3)<<6|f;s[u++]=y}}}return s}}const S={isEmptyString(e){return typeof e=="string"&&e.trim()===""},isNumber(e){return typeof e=="number"&&!isNaN(e)},isObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)},isEmptyObject(e){return e?Object.keys(e).length===0&&e.constructor===Object:!0},isBoolean(e){return typeof e=="boolean"},isArray(e){return Array.isArray(e)},isFunction(e){return typeof e=="function"},isPromise(e){return!!e&&(typeof e=="object"||typeof e=="function")&&typeof e.then=="function"},isElement(e){return e instanceof Element},isPhone(e){return/^1[3-9]\d{9}$/.test(e)},isEmail(e){return/^[\w.-]+@[\w.-]+\.\w+$/.test(e)},isJSON(e){try{return JSON.parse(e),!0}catch{return!1}},isImageLoaded(e){return e.complete&&e.naturalWidth!==0},isInViewport(e){const n=e.getBoundingClientRect();return n.top>=0&&n.left>=0&&n.bottom<=window.innerHeight&&n.right<=window.innerWidth},isLeapYear(e){return e%4===0&&e%100!==0||e%400===0},isMobile(){return/Mobi|Android|iPhone/i.test(navigator.userAgent)}},U={getCookie(e){if(!e)return;const n=document.cookie.match(new RegExp("(^| )"+e+"=([^;]+)"));return n?decodeURIComponent(n[2]):null},setCookie(e,n,t=7){const o=new Date;o.setTime(o.getTime()+t*24*60*60*1e3),document.cookie=`${e}=${encodeURIComponent(n)};expires=${o.toUTCString()};path=/`},deleteCookie(e){this.setCookie(e,"",-1)}},E={getTimeString(e,n=!1){return n?new Date().toLocaleString(e,{hour12:!0}):new Date().toLocaleString("chinese",{hour12:!1})},diffDays(e,n){const t=new Date(e).getTime(),o=new Date(n).getTime();return t>o?Math.abs(Math.floor((t-o)/(24*3600*1e3))):Math.abs(Math.floor((o-t)/(24*3600*1e3)))},uniqueId(){return Date.now().toString(36)+Math.random().toString(36).substr(2,5)},getWhichDays(e,n,t){let o=t;for(let r=1;r<n;r++)switch(r){case 1:case 3:case 5:case 7:case 8:case 10:case 12:o+=31;break;case 2:S.isLeapYear(e)?o+=29:o+=28;break;default:o+=30;break}return o},getTimeStringAutoShort2(e,n){const t=new Date,o=new Date(e),r=t.getFullYear(),s=t.getMonth()+1,a=t.getDate(),u=o.getFullYear(),i=o.getMonth()+1,d=o.getDate();let c="";const l=n?" "+this.formatDate(o,"hh:mm"):"";if(r===u){const g=t.getTime()-e;if(s===i&&a===d)g<60*1e3?c="刚刚":c=this.formatDate(o,"hh:mm");else{const y=new Date;y.setDate(y.getDate()-1);const b=new Date;if(b.setDate(b.getDate()-2),i===y.getMonth()+1&&d===y.getDate())c="昨天"+l;else if(i===b.getMonth()+1&&d===b.getDate())c="前天"+l;else if(g/36e5<=7*24){const m=new Array(7);m[0]="星期日",m[1]="星期一",m[2]="星期二",m[3]="星期三",m[4]="星期四",m[5]="星期五",m[6]="星期六",c=m[o.getDay()]+l}else c=this.formatDate(o,"yyyy/M/d")+l}}else c=this.formatDate(o,"yyyy/M/d")+l;return c},formatDate(e,n){const t={"M+":e.getMonth()+1,"d+":e.getDate(),"h+":e.getHours(),"m+":e.getMinutes(),"s+":e.getSeconds(),"q+":Math.floor((e.getMonth()+3)/3),S:e.getMilliseconds()};/(y+)/.test(n)&&(n=n.replace(RegExp.$1,(e.getFullYear()+"").substr(4-RegExp.$1.length)));for(const o in t)new RegExp("("+o+")").test(n)&&(n=n.replace(RegExp.$1,RegExp.$1.length===1?t[o]:("00"+t[o]).substr((""+t[o]).length)));return n}},C={getOffsetTop(e){if(!e)throw new Error("Element is not provided");if(e instanceof SVGElement){const t=e.getBoundingClientRect(),o=window.pageYOffset||document.documentElement.scrollTop;return t.top+o}let n=0;for(;e;)n+=e.offsetTop,e=e.offsetParent;return n},getScrollValue(){const e={scrollLeft:0,scrollTop:0};return e.scrollLeft=document.body.scrollLeft||document.documentElement.scrollLeft,e.scrollTop=document.body.scrollTop||document.documentElement.scrollTop,e},getPageValue(e){e=e||window.event;const n=e.pageX||e.clientX+this.getScrollValue().scrollLeft,t=e.pageY||e.clientY+this.getScrollValue().scrollTop;return{pageX:n,pageY:t}},addEventListener(e,n,t){e.addEventListener?e.addEventListener(n,t):e.attachEvent?e.attachEvent("on"+n,t):e["on"+n]=t},getViewportWidth(){return window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth},getViewportHeight(){return window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight}},B={saveAsBlob(e,n){const t=document.createElement("a"),o=window.URL.createObjectURL(e);t.href=o,t.download=n,document.body.appendChild(t),t.click(),URL.revokeObjectURL(o),document.body.removeChild(t)},saveAsUrl(e,n){const t=document.createElement("a");t.href=e,t.download=n,document.body.appendChild(t),t.click(),URL.revokeObjectURL(e),document.body.removeChild(t)}},D={animate(e,n){let t=-1;const o=e.series[0].data.length;let r;r=setInterval(()=>{n.dispatchAction({type:"downplay",seriesIndex:0,dataIndex:t}),t=(t+1)%o,n.dispatchAction({type:"highlight",seriesIndex:0,dataIndex:t}),n.dispatchAction({type:"showTip",seriesIndex:0,dataIndex:t}),t>o&&(t=0)},2e3),n.on("mouseover",()=>{clearInterval(r),n.dispatchAction({type:"downplay",seriesIndex:0,dataIndex:t})})}},R={sortFromA2Z(e){return e?.length?e.sort((t,o)=>{const r=t.toUpperCase(),s=o.toUpperCase();return r<s?-1:r>s?1:0}):void 0}},v={degrees2Radians(e){return e*Math.PI/180},getDistance(e,n,t,o){const r=this.degrees2Radians(e),s=this.degrees2Radians(t),a=r-s,u=this.degrees2Radians(n)-this.degrees2Radians(o);let i=2*Math.asin(Math.sqrt(Math.pow(Math.sin(a/2),2)+Math.cos(r)*Math.cos(s)*Math.pow(Math.sin(u/2),2)));return i=i*6378.137,i=Math.round(i*1e4)/1e4,i=+i.toFixed(2),console.log("经纬度计算的距离为:"+i),i},calculateDistanceByHaversine(e,n,t="km"){const o=this,r=e.longitude??e.lng,s=e.latitude??e.lat,a=n.longitude??n.lng,u=n.latitude??n.lat;if(r===void 0||s===void 0||a===void 0||u===void 0)throw new Error("无效的坐标格式,缺少经纬度信息");const i=6371,d=o.degrees2Radians(s),c=o.degrees2Radians(u),l=o.degrees2Radians(u-s),f=o.degrees2Radians(a-r),p=Math.sin(l/2)*Math.sin(l/2)+Math.cos(d)*Math.cos(c)*Math.sin(f/2)*Math.sin(f/2),g=2*Math.atan2(Math.sqrt(p),Math.sqrt(1-p)),y=i*g;switch(t){case"m":return y*1e3;case"mi":return y*.621371;case"nmi":return y*.539957;default:return y}},calculateDistancesByHaversine(e,n="km",t=!1){if(e.length<2)return{segments:[],total:0};const o=[];let r=0;for(let s=0;s<e.length-1;s++){const a=this.calculateDistanceByHaversine(e[s],e[s+1],n);o.push(a),r+=a}if(t&&e.length>2){const s=this.calculateDistanceByHaversine(e[e.length-1],e[0],n);o.push(s),r+=s}return{segments:o,total:r}}};class x{static toStandardFormat(n){try{const t=typeof n=="string"?parseFloat(n):n;if(isNaN(t))throw new Error("输入不是有效的数字");if(!isFinite(t))throw new Error("输入是无穷大");return t.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")}catch(t){return console.error("格式化失败:",t),"格式错误"}}static toChineseFormat(n){try{const t=typeof n=="string"?parseFloat(n):n;if(isNaN(t))throw new Error("输入不是有效的数字");if(t>9999999999999e-2||t<-9999999999999e-2)throw new Error("输入数字超出范围");const o=t<0,r=Math.abs(t),s=Math.floor(r),a=Math.round((r-s)*100),u=["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"],i=["","拾","佰","仟","万","拾","佰","仟","亿","拾","佰","仟"],d=["角","分"];let c="",l=s;if(l===0)c=u[0];else{let g=0;for(;l>0;){const y=l%10;y!==0?c=u[y]+i[g]+c:c.charAt(0)!==u[0]&&(c=u[y]+c),l=Math.floor(l/10),g++}c=c.replace(/零+/g,"零"),c=c.replace(/零+$/,"")}let f="";if(a>0){const g=Math.floor(a/10),y=a%10;g>0&&(f+=u[g]+d[0]),y>0&&(f+=u[y]+d[1])}else f="整";let p=(o?"负":"")+c+"圆"+f;return p==="零圆整"&&(p="零圆"),p}catch(t){return console.error("转换失败:",t),"格式错误"}}}const T={...Object.freeze(Object.defineProperty({__proto__:null,toLetter:e=>e>25||e<0?"":"ABCDEFGHIJKLMNOPQRSTUVWXYZ"[e]},Symbol.toStringTag,{value:"Module"})),...Object.freeze(Object.defineProperty({__proto__:null,toMoney:e=>e.toFixed(2).toString().replace(/\B(?=(\d{3})+(?!\d))/g,",")},Symbol.toStringTag,{value:"Module"})),isNumber(e){return typeof e=="number"&&!isNaN(e)}},_={isEmptyObject(e){return e?Object.keys(e).length===0&&e.constructor===Object:!0},copy(e,n){for(const t in e)n[t]=e[t]},deepCopy(e,n){for(const t in e){const o=e[t];o instanceof Object?(n[t]={},this.deepCopy(o,n[t])):o instanceof Array?(n[t]=[],this.deepCopy(o,n[t])):n[t]=e[t]}}},O={desensitize(e){return e?e.replace(/^(\d{3})\d{4}(\d{4})$/,"$1****$2")||e.slice(0,3)+"****"+e.slice(7):""}},L={color:function(){return`#${Math.random().toString(16).slice(2,8)}`},int(e,n){return Math.floor(Math.random()*(n-e+1))+e},uniqueId(){return Date.now().toString(36)+Math.random().toString(36).substr(2,5)}},j={mobile:/^1[3-9]\d{9}$/,email:/^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$/,chinese:/^[\u4e00-\u9fa5]+$/,english:/^[a-zA-Z]+$/,chineseStart:/^[\u4e00-\u9fa5]+\w*$/,integer:/^\d+$/,integerAndzero:/^(0|[1-9]+[0-9]*)$/,strongPassword:/^(?!.*[\s\p{C}])(?:(?=.*[A-Z])(?=.*[a-z])(?=.*[\d\W])|(?=.*\d)(?=.*[^\w\s])).{8,}$/u,decimal:/^0\.(0[1-9]|[1-9][0-9]*)$/},I={getLocal(e){return localStorage.getItem(e)},setLocal(e,n){localStorage.setItem(e,n)},removeLocal(e){localStorage.removeItem(e)},getSession(e){return sessionStorage.getItem(e)},setSession(e,n){sessionStorage.setItem(e,n)},removeSession(e){sessionStorage.removeItem(e)}},k={isExist(e,n){if(!e||!n)return!1;const t=e.split(",");return console.log("判断某元素是否在字符串中",t.indexOf(n)===-1),t.indexOf(n)!==-1},includes(e,n){return!e||!n?!1:e.includes(n)},isJSON(e){try{return JSON.parse(e),!0}catch{return!1}},indexsOfAppear(e,n){let t=-1;const o=[];do t=e.indexOf(n,t+1),t!==-1&&o.push(t);while(t!==-1);return o},getMaxTimesAndVal(e){const n=[0,""],t={};for(let s=0;s<e.length;s++){const a=e.charAt(s);t[a]?t[a]++:t[a]=1}let o=1;for(const s in t)o<t[s]&&(o=t[s]);const r=[];for(const s in t)o==t[s]&&r.push(s);return n[0]=o,n[1]=r.join(),n},mask(e,n,t){if(!e)throw new Error("字符串为空");if(!n||!t)throw new Error("开始位置或结束位置为空");if(n<0||t>e.length||n>t)throw new Error("开始位置小于0或结束位置超出字符串长度或开始位置大于结束位置");return e.slice(0,n)+"****"+e.slice(t)}},H=e=>{const t=new RegExp("[?&]"+e+"=([^&#]*)","i").exec(window.location.href);return t?decodeURIComponent(t[1]):null};function $(e){return new URLSearchParams(window.location.search).get(e)}const P={...Object.freeze(Object.defineProperty({__proto__:null,getQueryInfoByName:H,getQueryParam:$},Symbol.toStringTag,{value:"Module"})),getHost(){return window.location.host},getPath(){return window.location.pathname}},F={toList(e,n=2){console.log(e,n);const t={};for(let r=0;r<n;r++)t[r]=[];e.forEach((r,s)=>t[s%n].push(r));const o=[];for(const r in t)o.push(...t[r]);return o},jsLayout(e,n,t){const o=e.offsetWidth,r=n[0].offsetWidth,s=parseInt((o/r).toString()),a=(o-r*s)/(s-1),u=[];for(let i=0,d=n.length;i<d;i++){const c=n[i];if(i<s)c.style.left=(r+a)*i+"px",u[i]=c.offsetHeight;else{const{index:l,value:f}=A.getMinValueAndIndex(u);c.style.left=(r+a)*l+"px",c.style.top=f+t+"px",u[l]=c.offsetHeight+t+f}}}};h.Base64Utils=M,h.MoneyFormatter=x,h.arrayUtils=A,h.booleanUtils=S,h.cookieUtils=U,h.dateUtils=E,h.documentUtils=C,h.downloadUtils=B,h.echartsUtils=D,h.letterUtils=R,h.mapUtils=v,h.numberUtils=T,h.objectUtils=_,h.phoneUtils=O,h.randomUtils=L,h.regexpUtils=j,h.storageUtils=I,h.stringUtils=k,h.urlUtils=P,h.waterfallUtils=F,Object.defineProperty(h,Symbol.toStringTag,{value:"Module"})});
|
package/package.json
CHANGED
|
@@ -35,4 +35,12 @@ export declare const stringUtils: {
|
|
|
35
35
|
* @returns 数组,第一个元素为出现次数,第二个元素为出现次数最多的字符
|
|
36
36
|
*/
|
|
37
37
|
getMaxTimesAndVal(string: string): [number, string];
|
|
38
|
+
/**
|
|
39
|
+
* 脱敏处理
|
|
40
|
+
* @param str 字符串
|
|
41
|
+
* @param start 开始位置
|
|
42
|
+
* @param end 结束位置
|
|
43
|
+
* @returns 脱敏后的字符串
|
|
44
|
+
*/
|
|
45
|
+
mask(str: string, start: number, end: number): string;
|
|
38
46
|
};
|