@yh-kit/utils 1.12.3 → 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/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((o) => {
5
- const r = Object.assign({ label: o.label, text: o.label }, o);
6
- t[o[n]] = r;
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 o of e)
39
- o === n && t++;
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 o = [];
50
+ const r = [];
51
51
  do
52
- t = e.indexOf(n, t + 1), t !== -1 && o.push(t);
52
+ t = e.indexOf(n, t + 1), t !== -1 && r.push(t);
53
53
  while (t !== -1);
54
- return o;
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, o) => n === "asc" ? t > o ? 1 : -1 : t < o ? 1 : -1) : [];
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, o = e.length; t < o; t++) {
115
- const r = e[t];
116
- n.value > r && (n.value = r, n.index = t);
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, o) => t < n.value ? { value: t, index: o } : n,
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 = "", o = 512) {
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 += o) {
153
- const l = i.slice(c, c + o), h = new Array(l.length);
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", o = "text/plain") {
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: o });
183
- return new File([c], t, { type: o });
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 o = 0; o < n.length; o++) {
212
- let r = n.charCodeAt(o);
213
- if (r < 128)
214
- t.push(r);
215
- else if (r < 2048)
216
- t.push(192 | r >> 6), t.push(128 | r & 63);
217
- else if (r < 55296 || r >= 57344)
218
- t.push(224 | r >> 12), t.push(128 | r >> 6 & 63), t.push(128 | r & 63);
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
- o++;
221
- const s = r, a = n.charCodeAt(o);
220
+ r++;
221
+ const s = o, a = n.charCodeAt(r);
222
222
  if (isNaN(a))
223
223
  throw new Error("代理对不完整");
224
- 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);
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 = "", o = 0;
234
- for (; o < n.length; ) {
235
- const r = n[o++];
236
- if (r < 128)
237
- t += String.fromCharCode(r);
238
- else if (r >= 192 && r < 224) {
239
- const s = n[o++] & 63;
240
- t += String.fromCharCode((r & 31) << 6 | s);
241
- } else if (r >= 224 && r < 240) {
242
- const s = n[o++] & 63, a = n[o++] & 63;
243
- t += String.fromCharCode((r & 15) << 12 | s << 6 | a);
244
- } else if (r >= 240 && r < 248) {
245
- 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;
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 = "", o = 0;
257
- for (; o < n.length; ) {
258
- 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, h = i & 63;
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 o = 0;
269
- t >= 2 && (n[t - 1] === "=" && o++, n[t - 2] === "=" && o++);
270
- const r = Math.floor(t * 3 / 4) - o, s = new Array(r), a = new Array(256).fill(-1);
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 o = /* @__PURE__ */ new Date();
454
- o.setTime(o.getTime() + t * 24 * 60 * 60 * 1e3), document.cookie = `${e}=${encodeURIComponent(n)};expires=${o.toUTCString()};path=/`;
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(), o = new Date(n).getTime();
482
- return t > o ? Math.abs(Math.floor((t - o) / (24 * 3600 * 1e3))) : Math.abs(Math.floor((o - t) / (24 * 3600 * 1e3)));
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 o = t;
500
- for (let r = 1; r < n; r++)
501
- switch (r) {
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
- o += 31;
509
+ r += 31;
510
510
  break;
511
511
  case 2:
512
- S.isLeapYear(e) ? o += 29 : o += 28;
512
+ S.isLeapYear(e) ? r += 29 : r += 28;
513
513
  break;
514
514
  default:
515
- o += 30;
515
+ r += 30;
516
516
  break;
517
517
  }
518
- return o;
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(), o = new Date(e), r = t.getFullYear(), s = t.getMonth() + 1, a = t.getDate(), u = o.getFullYear(), i = o.getMonth() + 1, d = o.getDate();
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(o, "hh:mm") : "";
530
- if (r === u) {
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(o, "hh:mm");
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[o.getDay()] + l;
545
- } else c = this.formatDate(o, "yyyy/M/d") + l;
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(o, "yyyy/M/d") + l;
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 o in t)
576
- new RegExp("(" + o + ")").test(n) && (n = n.replace(RegExp.$1, RegExp.$1.length === 1 ? t[o] : ("00" + t[o]).substr(("" + t[o]).length)));
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(), o = window.pageYOffset || document.documentElement.scrollTop;
591
- return t.top + o;
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"), o = window.URL.createObjectURL(e);
658
- t.href = o, t.download = n, document.body.appendChild(t), t.click(), URL.revokeObjectURL(o), document.body.removeChild(t);
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 o = e.series[0].data.length;
678
- let r;
679
- r = setInterval(() => {
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) % o, n.dispatchAction({
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 > o && (t = 0);
692
+ }), t > r && (t = 0);
693
693
  }, 2e3), n.on("mouseover", () => {
694
- clearInterval(r), n.dispatchAction({
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, o) => {
709
- const r = t.toUpperCase(), s = o.toUpperCase();
710
- return r < s ? -1 : r > s ? 1 : 0;
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, o) {
734
- const r = this.degrees2Radians(e), s = this.degrees2Radians(t), a = r - s, u = this.degrees2Radians(n) - this.degrees2Radians(o);
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(r) * Math.cos(s) * Math.pow(Math.sin(u / 2), 2)
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 o = this, r = e.longitude ?? e.lng, s = e.latitude ?? e.lat, a = n.longitude ?? n.lng, u = n.latitude ?? n.lat;
759
- if (r === void 0 || s === void 0 || a === void 0 || u === void 0)
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 = o.degrees2Radians(s), c = o.degrees2Radians(u), l = o.degrees2Radians(u - s), h = o.degrees2Radians(a - r), 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;
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 o = [];
787
- let r = 0;
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
- o.push(a), r += a;
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
- o.push(s), r += s;
794
+ r.push(s), o += s;
795
795
  }
796
- return { segments: o, total: r };
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 o = t < 0, r = Math.abs(t), s = Math.floor(r), a = Math.round((r - s) * 100), u = ["零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"], i = ["", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟"], d = ["角", "分"];
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 = (o ? "负" : "") + c + "圆" + h;
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 o = e[t];
899
- o instanceof Object ? (n[t] = {}, this.deepCopy(o, n[t])) : o instanceof Array ? (n[t] = [], this.deepCopy(o, n[t])) : n[t] = e[t];
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 o = [];
1061
+ const r = [];
1062
1062
  do
1063
- t = e.indexOf(n, t + 1), t !== -1 && o.push(t);
1063
+ t = e.indexOf(n, t + 1), t !== -1 && r.push(t);
1064
1064
  while (t !== -1);
1065
- return o;
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 o = 1;
1078
+ let r = 1;
1079
1079
  for (const s in t)
1080
- o < t[s] && (o = t[s]);
1081
- const r = [];
1080
+ r < t[s] && (r = t[s]);
1081
+ const o = [];
1082
1082
  for (const s in t)
1083
- o == t[s] && r.push(s);
1084
- return n[0] = o, n[1] = r.join(), n;
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 r = 0; r < n; r++)
1124
- t[r] = [];
1125
- e.forEach((r, s) => t[s % n].push(r));
1126
- const o = [];
1127
- for (const r in t)
1128
- o.push(...t[r]);
1129
- return o;
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 o = e.offsetWidth, r = n[0].offsetWidth, s = parseInt((o / r).toString()), a = (o - r * s) / (s - 1), u = [];
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 = (r + a) * i + "px", u[i] = c.offsetHeight;
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 = (r + a) * l + "px", c.style.top = h + t + "px", u[l] = c.offsetHeight + t + h;
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
  }
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@yh-kit/utils",
3
3
  "private": false,
4
- "version": "1.12.3",
4
+ "version": "1.13.0",
5
5
  "type": "module",
6
6
  "files": [
7
7
  "dist",
@@ -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
  };