nhanh-pure-function 2.0.2 → 2.0.3

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/index.es.js CHANGED
@@ -1,12 +1,12 @@
1
1
  (function(){"use strict";try{if(typeof document<"u"){var e=document.createElement("style");e.appendChild(document.createTextNode(".nhanh-pure-function{--nhanh: 2233}.no-select{-webkit-user-select:none;-ms-user-select:none;user-select:none}")),document.head.appendChild(e)}}catch(n){console.error("vite-plugin-css-injected-by-js",n)}})();
2
- var W = Object.defineProperty;
3
- var q = (n) => {
2
+ var K = Object.defineProperty;
3
+ var H = (n) => {
4
4
  throw TypeError(n);
5
5
  };
6
- var G = (n, e, t) => e in n ? W(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t;
7
- var A = (n, e, t) => G(n, typeof e != "symbol" ? e + "" : e, t), Y = (n, e, t) => e.has(n) || q("Cannot " + t);
8
- var s = (n, e, t) => (Y(n, e, "read from private field"), t ? t.call(n) : e.get(n)), d = (n, e, t) => e.has(n) ? q("Cannot add the same private member more than once") : e instanceof WeakSet ? e.add(n) : e.set(n, t), l = (n, e, t, o) => (Y(n, e, "write to private field"), o ? o.call(n, t) : e.set(n, t), t);
9
- const V = {
6
+ var ee = (n, t, e) => t in n ? K(n, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : n[t] = e;
7
+ var y = (n, t, e) => ee(n, typeof t != "symbol" ? t + "" : t, e), X = (n, t, e) => t.has(n) || H("Cannot " + e);
8
+ var c = (n, t, e) => (X(n, t, "read from private field"), e ? e.call(n) : t.get(n)), d = (n, t, e) => t.has(n) ? H("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(n) : t.set(n, e), l = (n, t, e, o) => (X(n, t, "write to private field"), o ? o.call(n, e) : t.set(n, e), e);
9
+ const te = {
10
10
  /* 常见扩展名映射 */
11
11
  ".mp3": "audio/mpeg",
12
12
  ".mp4": "video/mp4",
@@ -70,7 +70,7 @@ const V = {
70
70
  ".eot": "application/vnd.ms-fontobject",
71
71
  ".map": "application/json"
72
72
  // 可根据需要继续扩展
73
- }, I = {
73
+ }, $ = {
74
74
  image: [
75
75
  ".jpg",
76
76
  ".jpeg",
@@ -250,7 +250,7 @@ const V = {
250
250
  ".awk",
251
251
  ".php"
252
252
  ]
253
- }, $ = [
253
+ }, W = [
254
254
  "",
255
255
  "万",
256
256
  "亿",
@@ -265,177 +265,171 @@ const V = {
265
265
  "载",
266
266
  "极"
267
267
  ];
268
- function et(n) {
268
+ function le(n) {
269
269
  return n != null;
270
270
  }
271
- function nt(n) {
271
+ function ue(n) {
272
272
  return !(n === null || typeof n != "object" || Array.isArray(n));
273
273
  }
274
- function ot(n) {
274
+ function me(n) {
275
275
  if (typeof n != "function")
276
276
  return console.error("非函数:", n);
277
- const e = function(t) {
278
- t.didTimeout || t.timeRemaining() <= 0 ? requestIdleCallback(e) : n();
277
+ const t = function(e) {
278
+ e.didTimeout || e.timeRemaining() <= 0 ? requestIdleCallback(t) : n();
279
279
  };
280
- requestIdleCallback(e);
280
+ requestIdleCallback(t);
281
281
  }
282
- function it(n, e) {
283
- const t = +/* @__PURE__ */ new Date();
284
- return new Promise((o, i) => {
285
- const r = () => {
286
- if (+/* @__PURE__ */ new Date() - t >= e) return i("超时");
282
+ function de(n, t) {
283
+ const e = +/* @__PURE__ */ new Date();
284
+ return new Promise((o, r) => {
285
+ const i = () => {
286
+ if (+/* @__PURE__ */ new Date() - e >= t) return r("超时");
287
287
  if (n()) return o("完成");
288
- requestIdleCallback(r);
288
+ requestIdleCallback(i);
289
289
  };
290
- r();
290
+ i();
291
291
  });
292
292
  }
293
- function rt(n, e, t = ",") {
293
+ function fe(n, t, e = ",") {
294
294
  const o = new RegExp(
295
- `(^|${t})${e}(${t}|$)`,
295
+ `(^|${e})${t}(${e}|$)`,
296
296
  "g"
297
297
  );
298
- return n.replace(o, function(i, r, c) {
299
- return r === c ? t : "";
298
+ return n.replace(o, function(r, i, s) {
299
+ return i === s ? e : "";
300
300
  });
301
301
  }
302
- function st(n) {
302
+ function he(n) {
303
303
  return n.charAt(0).toUpperCase() + n.slice(1);
304
304
  }
305
- function O(n, e, t = [], o = +/* @__PURE__ */ new Date()) {
306
- if (o < +/* @__PURE__ */ new Date() - 300) {
305
+ function Y(n, t, e = [], o = +/* @__PURE__ */ new Date()) {
306
+ if (o < +/* @__PURE__ */ new Date() - 50) {
307
307
  console.error("_MergeObjects 合并异常:疑似死循环");
308
308
  return;
309
309
  }
310
- const i = (a) => Array.isArray(a) ? "array" : typeof a, r = i(n), c = i(e);
311
- if (r != c) return e;
310
+ const r = G(n), i = G(t);
311
+ if (r != i) return t;
312
312
  if (r == "object" || r == "array") {
313
- if (t.some(([a, m]) => a == n && m == e)) return n;
314
- if (t.push([n, e]), r == "object") {
315
- for (const a in e)
316
- if (Object.prototype.hasOwnProperty.call(e, a)) {
317
- const m = e[a], u = n[a], f = O(u, m, t, o);
318
- n[a] = f;
313
+ if (e.some(([s, a]) => s == n && a == t)) return n;
314
+ if (e.push([n, t]), r == "object") {
315
+ for (const s in t)
316
+ if (Object.prototype.hasOwnProperty.call(t, s)) {
317
+ const a = t[s], m = n[s], u = Y(m, a, e, o);
318
+ n[s] = u;
319
319
  }
320
320
  return n;
321
321
  } else if (r == "array")
322
- return e.forEach((a, m) => {
323
- const u = a, f = n[m], p = O(f, u, t, o);
324
- n[m] = p;
322
+ return t.forEach((s, a) => {
323
+ const m = s, u = n[a], f = Y(u, m, e, o);
324
+ n[a] = f;
325
325
  }), n;
326
- } else return e;
326
+ } else return t;
327
327
  }
328
- function ct(n, e = "YYYY-MM-DD hh:mm:ss", t = !0) {
328
+ function pe(n, t = "YYYY-MM-DD hh:mm:ss", e = !0) {
329
329
  const o = new Date(n);
330
330
  if (isNaN(o.getTime()))
331
331
  return console.error("Invalid date"), "";
332
- const i = {
333
- YYYY: (r) => r.getFullYear(),
334
- MM: (r) => r.getMonth() + 1,
332
+ const r = {
333
+ YYYY: (i) => i.getFullYear(),
334
+ MM: (i) => i.getMonth() + 1,
335
335
  // Adjust for 0-based month
336
- DD: (r) => r.getDate(),
337
- hh: (r) => r.getHours(),
338
- mm: (r) => r.getMinutes(),
339
- ss: (r) => r.getSeconds(),
340
- ms: (r) => r.getMilliseconds()
336
+ DD: (i) => i.getDate(),
337
+ hh: (i) => i.getHours(),
338
+ mm: (i) => i.getMinutes(),
339
+ ss: (i) => i.getSeconds(),
340
+ ms: (i) => i.getMilliseconds()
341
341
  };
342
- return e.replace(/YYYY|MM|DD|hh|mm|ss|ms/g, (r) => {
343
- const c = i[r](o);
344
- return t ? String(c).padStart(2, "0") : String(c);
342
+ return t.replace(/YYYY|MM|DD|hh|mm|ss|ms/g, (i) => {
343
+ const s = r[i](o);
344
+ return e ? String(s).padStart(2, "0") : String(s);
345
345
  });
346
346
  }
347
- function at(n) {
348
- return new Promise((e, t) => {
349
- fetch(n).then((o) => e(o.text())).catch((o) => {
350
- console.error("Error fetching :", o), t(o);
347
+ function ge(n) {
348
+ return new Promise((t, e) => {
349
+ fetch(n).then((o) => t(o.text())).catch((o) => {
350
+ console.error("Error fetching :", o), e(o);
351
351
  });
352
352
  });
353
353
  }
354
- function N(n, e = "file") {
355
- if (!n || (n = String(n).trim(), n === "")) return e;
356
- const t = n.split("/");
357
- return t[t.length - 1].split("?")[0];
354
+ function B(n, t = "file") {
355
+ if (!n || (n = String(n).trim(), n === "")) return t;
356
+ const e = n.split("/");
357
+ return e[e.length - 1].split("?")[0];
358
358
  }
359
- function lt(n, e) {
360
- return new Promise((t, o) => {
359
+ function we(n, t) {
360
+ return new Promise((e, o) => {
361
361
  try {
362
- e = e || N(n, "downloaded_file"), fetch(n).then((i) => (i.ok || o(`文件下载失败,状态码: ${i.status}`), i.blob())).then((i) => {
363
- const r = URL.createObjectURL(i), c = document.createElement("a");
364
- c.href = r, c.download = decodeURIComponent(e), document.body.appendChild(c), c.click(), document.body.removeChild(c), URL.revokeObjectURL(r), t(i);
362
+ t = t || B(n, "downloaded_file"), fetch(n).then((r) => (r.ok || o(`文件下载失败,状态码: ${r.status}`), r.blob())).then((r) => {
363
+ const i = URL.createObjectURL(r), s = document.createElement("a");
364
+ s.href = i, s.download = decodeURIComponent(t), document.body.appendChild(s), s.click(), document.body.removeChild(s), URL.revokeObjectURL(i), e(r);
365
365
  }).catch(o);
366
- } catch (i) {
367
- o(i);
366
+ } catch (r) {
367
+ o(r);
368
368
  }
369
369
  });
370
370
  }
371
- function ut(n, e = 10) {
372
- let t = 0, o = e;
373
- function i() {
371
+ function xe(n, t = 10) {
372
+ let e = 0, o = t;
373
+ function r() {
374
374
  if (o > 0)
375
- o--, requestAnimationFrame(i);
375
+ o--, requestAnimationFrame(r);
376
376
  else {
377
- const c = (+/* @__PURE__ */ new Date() - t) / e, a = 1e3 / c;
378
- n(Number(a.toFixed(2)), Number(c.toFixed(2)));
377
+ const s = (+/* @__PURE__ */ new Date() - e) / t, a = 1e3 / s;
378
+ n(Number(a.toFixed(2)), Number(s.toFixed(2)));
379
379
  }
380
380
  }
381
381
  requestAnimationFrame(() => {
382
- t = +/* @__PURE__ */ new Date(), i();
382
+ e = +/* @__PURE__ */ new Date(), r();
383
383
  });
384
384
  }
385
- function mt(n, e) {
386
- return n = n.replace(/([^a-zA-Z][a-z])/g, (t) => t.toUpperCase()), e ? n.replace(/[^a-zA-Z]+/g, "") : n;
385
+ function ve(n, t) {
386
+ return n = n.replace(/([^a-zA-Z][a-z])/g, (e) => e.toUpperCase()), t ? n.replace(/[^a-zA-Z]+/g, "") : n;
387
387
  }
388
- function dt(n, e, t) {
389
- if (!t) {
390
- let c = e.replace(/^[^.]+./, "");
391
- c = c == e ? "text/plain" : "application/" + c, t = { type: c };
388
+ function be(n, t, e) {
389
+ if (!e) {
390
+ let s = t.replace(/^[^.]+./, "");
391
+ s = s == t ? "text/plain" : "application/" + s, e = { type: s };
392
392
  }
393
- const o = new Blob(n, t), i = URL.createObjectURL(o), r = document.createElement("a");
394
- r.href = i, r.download = e, document.body.appendChild(r), r.click(), document.body.removeChild(r), URL.revokeObjectURL(i);
395
- }
396
- function ft(n) {
397
- const e = n.split("?")[1] || "", t = new URLSearchParams(e), o = {};
398
- return t.forEach((i, r) => {
399
- o[r] = i;
400
- }), o;
393
+ const o = new Blob(n, e), r = URL.createObjectURL(o), i = document.createElement("a");
394
+ i.href = r, i.download = t, document.body.appendChild(i), i.click(), document.body.removeChild(i), URL.revokeObjectURL(r);
401
395
  }
402
- function pt(n = "") {
403
- return n + "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(e) {
404
- const t = Math.random() * 16 | 0;
405
- return (e === "x" ? t : t & 3 | 8).toString(16);
396
+ function ye(n = "") {
397
+ return n + "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(t) {
398
+ const e = Math.random() * 16 | 0;
399
+ return (t === "x" ? e : e & 3 | 8).toString(16);
406
400
  });
407
401
  }
408
- function Z(n, e) {
409
- let t;
402
+ function ne(n, t) {
403
+ let e;
410
404
  return function(...o) {
411
- clearTimeout(t), t = setTimeout(() => {
412
- n(...o), t = void 0;
413
- }, e);
405
+ clearTimeout(e), e = setTimeout(() => {
406
+ n(...o), e = void 0;
407
+ }, t);
414
408
  };
415
409
  }
416
- function ht(n, e) {
417
- let t = -1 / 0;
410
+ function Ee(n, t) {
411
+ let e = -1 / 0;
418
412
  return function(...o) {
419
- const i = performance.now();
420
- if (i - t > e) {
421
- t = i;
413
+ const r = performance.now();
414
+ if (r - e > t) {
415
+ e = r;
422
416
  try {
423
417
  n(...o);
424
- } catch (r) {
425
- console.error("Throttled function execution failed:", r);
418
+ } catch (i) {
419
+ console.error("Throttled function execution failed:", i);
426
420
  }
427
421
  }
428
422
  };
429
423
  }
430
- function gt(n) {
424
+ function G(n) {
431
425
  return Array.isArray(n) ? "array" : n === null ? "null" : typeof n;
432
426
  }
433
- function xt(n) {
434
- const e = () => Promise.resolve(), t = (a) => (console.error(a), Promise.reject(a));
427
+ function Ce(n) {
428
+ const t = () => Promise.resolve(), e = (a) => (console.error(a), Promise.reject(a));
435
429
  function o() {
436
- return navigator.clipboard.writeText(n).then(e).catch(t);
430
+ return navigator.clipboard.writeText(n).then(t).catch(e);
437
431
  }
438
- function i() {
432
+ function r() {
439
433
  const a = document.createElement("div");
440
434
  a.innerText = n, document.body.appendChild(a);
441
435
  const m = document.createRange();
@@ -444,59 +438,59 @@ function xt(n) {
444
438
  let f = !1;
445
439
  return u && (u.removeAllRanges(), u.addRange(m), f = document.execCommand("copy")), document.body.removeChild(a), f ? Promise.resolve() : Promise.reject();
446
440
  }
447
- function r() {
441
+ function i() {
448
442
  const a = document.createElement("textarea");
449
443
  a.value = n, document.body.appendChild(a), a.select(), a.setSelectionRange(0, n.length);
450
444
  let m = !1;
451
445
  return document.activeElement === a && (m = document.execCommand("Copy", !0)), document.body.removeChild(a), m ? Promise.resolve() : Promise.reject();
452
446
  }
453
- function c() {
454
- return i().then(e).catch(() => {
455
- r().then(e).catch(() => t("复制方式尽皆失效"));
447
+ function s() {
448
+ return r().then(t).catch(() => {
449
+ i().then(t).catch(() => e("复制方式尽皆失效"));
456
450
  });
457
451
  }
458
- return navigator.clipboard ? o().catch(c) : c();
452
+ return navigator.clipboard ? o().catch(s) : s();
459
453
  }
460
- function bt(n, e) {
461
- const t = e.split(".");
462
- return t.reduce((o, i, r) => (i in o || (r === t.length - 1 ? o[i] = void 0 : o[i] = {}), o[i]), n);
454
+ function Fe(n, t) {
455
+ const e = t.split(".");
456
+ return e.reduce((o, r, i) => (r in o || (i === e.length - 1 ? o[r] = void 0 : o[r] = {}), o[r]), n);
463
457
  }
464
- function vt(n, e) {
465
- const t = e.split(".");
466
- return t.reduce((o, i, r) => o.hasOwnProperty(i) ? o[i] : o[i] = r == t.length - 1 ? void 0 : {}, n);
458
+ function Le(n, t) {
459
+ const e = t.split(".");
460
+ return e.reduce((o, r, i) => o.hasOwnProperty(r) ? o[r] : o[r] = i == e.length - 1 ? void 0 : {}, n);
467
461
  }
468
- function wt(n, e, t) {
469
- const o = e.split(".");
470
- return o.reduce((i, r, c) => (c === o.length - 1 && (i[r] = t), i[r]), n);
462
+ function je(n, t, e) {
463
+ const o = t.split(".");
464
+ return o.reduce((r, i, s) => (s === o.length - 1 && (r[i] = e), r[i]), n);
471
465
  }
472
- function yt(n) {
473
- return new Promise((e, t) => {
466
+ function Me(n) {
467
+ return new Promise((t, e) => {
474
468
  if (typeof n != "string" || n.trim() === "" || !n.includes("://")) {
475
- t(new Error("Invalid URL: Must be a non-empty string"));
469
+ e(new Error("Invalid URL: Must be a non-empty string"));
476
470
  return;
477
471
  }
478
472
  try {
479
473
  new XMLHttpRequest().open("HEAD", n, !0);
480
- } catch (r) {
481
- t(new Error(`Invalid URL format: ${r.message}`));
474
+ } catch (i) {
475
+ e(new Error(`Invalid URL format: ${i.message}`));
482
476
  return;
483
477
  }
484
478
  const o = new XMLHttpRequest();
485
479
  o.open("HEAD", n, !0);
486
- const i = (r) => {
487
- t(new Error(`Request failed: ${r.type}`));
480
+ const r = (i) => {
481
+ e(new Error(`Request failed: ${i.type}`));
488
482
  };
489
483
  o.onreadystatechange = function() {
490
- o.readyState === XMLHttpRequest.DONE && (o.status === 0 ? t(new Error("Network error or CORS blocked")) : o.status >= 200 && o.status < 300 ? e(!0) : t(new Error(`HTTP Error: ${o.status}`)));
491
- }, o.onerror = i, o.onabort = i, o.ontimeout = i;
484
+ o.readyState === XMLHttpRequest.DONE && (o.status === 0 ? e(new Error("Network error or CORS blocked")) : o.status >= 200 && o.status < 300 ? t(!0) : e(new Error(`HTTP Error: ${o.status}`)));
485
+ }, o.onerror = r, o.onabort = r, o.ontimeout = r;
492
486
  try {
493
487
  o.send();
494
- } catch (r) {
495
- t(new Error(`Request send failed: ${r.message}`));
488
+ } catch (i) {
489
+ e(new Error(`Request send failed: ${i.message}`));
496
490
  }
497
491
  });
498
492
  }
499
- function Et(n) {
493
+ function Re(n) {
500
494
  return [
501
495
  "https:",
502
496
  // HTTPS协议,用于安全地浏览网页
@@ -518,20 +512,24 @@ function Et(n) {
518
512
  // Remote Desktop Protocol,用于安全的远程桌面连接
519
513
  "vpn:"
520
514
  // VPN协议,用于创建安全的网络连接
521
- ].some((t) => n.startsWith(t));
522
- }
523
- const C = class C {
524
- static check(e, t) {
525
- if (!e || typeof e != "string")
526
- return console.error("Invalid URL provided"), t ? !1 : "unknown";
527
- const o = N(e).toLowerCase();
528
- if (t) {
529
- if (!I.hasOwnProperty(t))
530
- return console.error(`Unknown file type: ${t}`), "unknown";
531
- const i = I[t];
532
- return C._checkExtension(o, i);
515
+ ].some((e) => n.startsWith(e));
516
+ }
517
+ const F = class F {
518
+ constructor() {
519
+ if (new.target === F)
520
+ throw new Error("请直接使用静态方法,而不是实例化此类");
521
+ }
522
+ static check(t, e) {
523
+ if (!t || typeof t != "string")
524
+ return console.error("Invalid URL provided"), e ? !1 : "unknown";
525
+ const o = B(t).toLowerCase();
526
+ if (e) {
527
+ if (!$.hasOwnProperty(e))
528
+ return console.error(`Unknown file type: ${e}`), "unknown";
529
+ const r = $[e];
530
+ return F._checkExtension(o, r);
533
531
  }
534
- return C._detectFileType(o);
532
+ return F._detectFileType(o);
535
533
  }
536
534
  /**
537
535
  * 静态方法,用于解析地址信息
@@ -541,10 +539,10 @@ const C = class C {
541
539
  * @param {string} url - 以逗号分隔的URL字符串,每个URL代表一个资源的位置
542
540
  * @returns {Array} - 包含每个URL及其相关信息(名称和类型)的对象数组
543
541
  */
544
- static parseAddresses(e) {
545
- return !e || typeof e != "string" ? (console.error("Invalid URL provided"), []) : e.split(",").map((t) => {
546
- const o = N(t), i = this.check(t);
547
- return { url: t, name: o, type: i };
542
+ static parseAddresses(t) {
543
+ return !t || typeof t != "string" ? (console.error("Invalid URL provided"), []) : t.split(",").map((e) => {
544
+ const o = B(e), r = this.check(e);
545
+ return { url: e, name: o, type: r };
548
546
  });
549
547
  }
550
548
  /**
@@ -553,13 +551,13 @@ const C = class C {
553
551
  * @param {string} [accept] - 可接受的 MIME 类型模式(如 "image/*, text/plain")
554
552
  * @returns {boolean} - 如果类型匹配,则返回 true,否则返回 false
555
553
  */
556
- static matchesMimeType(e, t) {
557
- if (!t) return !0;
558
- if (typeof e != "string" || typeof t != "string") return !1;
559
- const o = C._normalizeType(e), i = t.split(",").map((a) => C._normalizeType(a.trim())), [r, c = "*"] = o.split("/");
560
- return i.some((a) => {
554
+ static matchesMimeType(t, e) {
555
+ if (!e) return !0;
556
+ if (typeof t != "string" || typeof e != "string") return !1;
557
+ const o = F._normalizeType(t), r = e.split(",").map((a) => F._normalizeType(a.trim())), [i, s = "*"] = o.split("/");
558
+ return r.some((a) => {
561
559
  const [m, u = "*"] = a.split("/");
562
- return (m === "*" || r === "*" || m === r) && (u === "*" || c === "*" || u === c);
560
+ return (m === "*" || i === "*" || m === i) && (u === "*" || s === "*" || u === s);
563
561
  });
564
562
  }
565
563
  /**
@@ -570,8 +568,8 @@ const C = class C {
570
568
  * @param {string} type - 文件类型或MIME类型字符串
571
569
  * @returns {string} 标准化的MIME类型字符串,如果无法识别则返回原始输入
572
570
  */
573
- static _normalizeType(e) {
574
- return e.startsWith(".") && !e.includes("/") ? V[e.toLowerCase()] || e : e.includes("/") ? e : `${e}/*`;
571
+ static _normalizeType(t) {
572
+ return t.startsWith(".") && !t.includes("/") ? te[t.toLowerCase()] || t : t.includes("/") ? t : `${t}/*`;
575
573
  }
576
574
  /**
577
575
  * 检查URL是否具有任何指定的文件扩展名
@@ -579,69 +577,172 @@ const C = class C {
579
577
  * @param {string[]} validExtensions - 有效文件扩展名的数组
580
578
  * @returns {boolean} - 如果URL具有任何指定的文件扩展名,则返回true,否则返回false
581
579
  */
582
- static _checkExtension(e, t) {
583
- return t.some((o) => e.endsWith(o));
580
+ static _checkExtension(t, e) {
581
+ return e.some((o) => t.endsWith(o));
584
582
  }
585
583
  /**
586
584
  * 检测文件URL的类型
587
585
  * @param {string} url - 文件的URL
588
586
  * @returns {string} - 如果URL与任何已知类型匹配,则返回文件类型,否则返回"unknown"
589
587
  */
590
- static _detectFileType(e) {
591
- for (const [t, o] of C.cachedEntries)
592
- if (o.some((i) => e.endsWith(i)))
593
- return t;
588
+ static _detectFileType(t) {
589
+ for (const [e, o] of F.cachedEntries)
590
+ if (o.some((r) => t.endsWith(r)))
591
+ return e;
594
592
  return "unknown";
595
593
  }
596
594
  };
597
595
  // 缓存文件扩展名的条目,以提高性能
598
- A(C, "cachedEntries", Object.entries(I));
599
- let H = C;
600
- function Ct(n) {
601
- return n.map((e, t) => n.slice(t).concat(n.slice(0, t)));
596
+ y(F, "cachedEntries", Object.entries($));
597
+ let V = F;
598
+ function Te(n) {
599
+ return n.map((t, e) => n.slice(e).concat(n.slice(0, e)));
602
600
  }
603
- function _t(n) {
604
- const e = window.structuredClone, t = (o) => o === null || typeof o != "object" ? o : O(Array.isArray(o) ? [] : {}, o);
601
+ function ke(n) {
602
+ const t = window.structuredClone, e = (o) => o === null || typeof o != "object" ? o : Y(Array.isArray(o) ? [] : {}, o);
605
603
  try {
606
- return e ? e(n) : t(n);
604
+ return t ? t(n) : e(n);
607
605
  } catch (o) {
608
- return console.error("structuredClone error:", o), e && t(n);
606
+ return console.error("structuredClone error:", o), t && e(n);
607
+ }
608
+ }
609
+ const N = class N {
610
+ /**
611
+ * 构造函数
612
+ * @throws 如果尝试实例化该类,则抛出错误,因为应该使用静态方法
613
+ */
614
+ constructor() {
615
+ if (new.target === N)
616
+ throw new Error("请直接使用静态方法,而不是实例化此类");
617
+ }
618
+ /**
619
+ * 根据键打开或聚焦窗口
620
+ * @param key 窗口的唯一键
621
+ * @param url 要打开的URL
622
+ * @param target 窗口的目标
623
+ * @param windowFeatures 新窗口的特性
624
+ * @returns 返回已打开或新打开的窗口
625
+ */
626
+ static open(t, e, o, r) {
627
+ const i = this.keys.get(t);
628
+ if (i && !i.closed)
629
+ return i.focus(), i;
630
+ {
631
+ const s = window.open(e, o, r);
632
+ if (s)
633
+ return this.keys.set(t, s), s.addEventListener("unload", () => this.keys.delete(t)), s;
634
+ console.error("window.open failed: 可能是浏览器阻止了弹出窗口"), this.keys.delete(t);
635
+ }
636
+ }
637
+ /**
638
+ * 关闭与指定键关联的窗口
639
+ * @param key 窗口的唯一键
640
+ */
641
+ static close(t) {
642
+ const e = this.keys.get(t);
643
+ e && !e.closed && (e.close(), this.keys.delete(t));
644
+ }
645
+ /**
646
+ * 检查指定键的窗口是否打开
647
+ * @param key 窗口的唯一键
648
+ * @returns 如果窗口打开则返回true,否则返回false
649
+ */
650
+ static isOpen(t) {
651
+ const e = this.keys.get(t);
652
+ return !!e && !e.closed;
653
+ }
654
+ /**
655
+ * 获取与指定键关联的窗口
656
+ * @param key 窗口的唯一键
657
+ * @returns 返回对应的窗口,如果窗口已关闭则返回undefined
658
+ */
659
+ static getWindow(t) {
660
+ const e = this.keys.get(t);
661
+ if (e && !e.closed) return e;
662
+ }
663
+ /**
664
+ * 关闭所有打开的窗口并清空Map
665
+ */
666
+ static closeAll() {
667
+ this.keys.forEach((t, e) => {
668
+ t.closed || t.close(), this.keys.delete(e);
669
+ });
670
+ }
671
+ };
672
+ // 存储键与对应窗口的Map
673
+ y(N, "keys", /* @__PURE__ */ new Map());
674
+ let Z = N;
675
+ function Ue(n, t = "image/png") {
676
+ try {
677
+ let e, o = t;
678
+ if (n instanceof File)
679
+ return URL.createObjectURL(n);
680
+ if (typeof n == "string") {
681
+ let i = n;
682
+ const s = i.match(/^data:([^;]*)(;base64)?,(.*)$/i);
683
+ if (s) {
684
+ if (!s[2])
685
+ throw new Error("无效的数据 URL:缺少 base64 编码声明");
686
+ if (o = s[1] || o, i = s[3], !i)
687
+ throw new Error("数据 URL 包含空有效负载");
688
+ }
689
+ i = i.replace(/[^A-Za-z0-9+/=]/g, "");
690
+ const a = atob(i);
691
+ e = new Uint8Array(a.length);
692
+ for (let m = 0; m < a.length; m++)
693
+ e[m] = a.charCodeAt(m);
694
+ } else if (n instanceof ArrayBuffer)
695
+ e = new Uint8Array(n);
696
+ else if (n instanceof Uint8Array)
697
+ e = n;
698
+ else
699
+ throw new Error(
700
+ "不支持的数据类型。应为 Base64 字符串、ArrayBuffer 或 Uint8Array"
701
+ );
702
+ const r = new Blob([e], { type: o });
703
+ return URL.createObjectURL(r);
704
+ } catch (e) {
705
+ return console.error(
706
+ "数据到 ImageURL 的转换失败:",
707
+ e.message,
708
+ e.stack || "没有可用的堆栈跟踪"
709
+ ), null;
609
710
  }
610
711
  }
611
- function Ft(n) {
612
- const e = Z(n, 100);
613
- let t = 0, o = 0;
614
- return function(i) {
615
- const r = i.target;
616
- if (!r || !(r instanceof HTMLElement)) return;
712
+ function Pe(n) {
713
+ const t = ne(n, 100);
714
+ let e = 0, o = 0;
715
+ return function(r) {
716
+ const i = r.target;
717
+ if (!i || !(i instanceof HTMLElement)) return;
617
718
  const {
618
- scrollTop: c,
719
+ scrollTop: s,
619
720
  scrollHeight: a,
620
721
  clientHeight: m,
621
722
  scrollLeft: u,
622
723
  scrollWidth: f,
623
- clientWidth: p
624
- } = r;
625
- function S() {
626
- if (t == c) return;
627
- const U = t > c;
628
- if (t = c, U) return;
629
- a - c - m <= 1 && e("vertical");
724
+ clientWidth: g
725
+ } = i;
726
+ function A() {
727
+ if (e == s) return;
728
+ const q = e > s;
729
+ if (e = s, q) return;
730
+ a - s - m <= 1 && t("vertical");
630
731
  }
631
- function X() {
732
+ function J() {
632
733
  if (o == u) return;
633
- const U = o > u;
634
- if (o = u, U) return;
635
- f - u - p <= 1 && e("horizontal");
734
+ const q = o > u;
735
+ if (o = u, q) return;
736
+ f - u - g <= 1 && t("horizontal");
636
737
  }
637
- S(), X();
738
+ A(), J();
638
739
  };
639
740
  }
640
- function Mt(n, e, t) {
641
- const { isClickAllowed: o, uiLibrary: i = ["naiveUI", "ElementPlus", "Element"] } = t || {}, r = function(m) {
741
+ function ze(n, t, e) {
742
+ const { isClickAllowed: o, uiLibrary: r = ["naiveUI", "ElementPlus", "Element"] } = e || {}, i = function(m) {
642
743
  const u = [];
643
744
  for (const f in m)
644
- Object.hasOwnProperty.call(m, f) && i.includes(f) && u.push(...m[f]);
745
+ Object.hasOwnProperty.call(m, f) && r.includes(f) && u.push(...m[f]);
645
746
  return u;
646
747
  }({
647
748
  naiveUI: [
@@ -652,38 +753,38 @@ function Mt(n, e, t) {
652
753
  ElementPlus: [".el-popper"],
653
754
  Element: [".el-popper"]
654
755
  });
655
- function c() {
656
- e(), document.removeEventListener("mousedown", a);
756
+ function s() {
757
+ t(), document.removeEventListener("mousedown", a);
657
758
  }
658
759
  function a(m) {
659
760
  if (o) {
660
- const p = o(m);
661
- if (p) return;
662
- if (p === !1) return c();
761
+ const g = o(m);
762
+ if (g) return;
763
+ if (g === !1) return s();
663
764
  }
664
765
  const u = m.target;
665
766
  if (!(u instanceof HTMLElement) || !(u != null && u.closest("body"))) return;
666
- n.concat(r).some((p) => !!(u != null && u.closest(p))) || c();
767
+ n.concat(i).some((g) => !!(u != null && u.closest(g))) || s();
667
768
  }
668
769
  requestAnimationFrame(
669
770
  () => document.addEventListener("mousedown", a)
670
771
  );
671
772
  }
672
- var g, _, F, R, P, w, y, E, T;
673
- class Lt {
773
+ var w, j, M, U, P, E, C, L, z;
774
+ class De {
674
775
  constructor() {
675
- d(this, g);
676
- d(this, _, !1);
677
- d(this, F, {});
678
- d(this, R, 0);
776
+ d(this, w);
777
+ d(this, j, !1);
778
+ d(this, M, {});
779
+ d(this, U, 0);
679
780
  d(this, P, 0);
680
- d(this, w, 0);
681
- d(this, y, 0);
682
- d(this, E);
683
- d(this, T);
781
+ d(this, E, 0);
782
+ d(this, C, 0);
783
+ d(this, L);
784
+ d(this, z);
684
785
  }
685
- init(e, t) {
686
- l(this, g, e), l(this, E, t == null ? void 0 : t.limit), l(this, T, t == null ? void 0 : t.dragDom), l(this, F, {
786
+ init(t, e) {
787
+ l(this, w, t), l(this, L, e == null ? void 0 : e.limit), l(this, z, e == null ? void 0 : e.dragDom), l(this, M, {
687
788
  mousedown: this.mousedown.bind(this),
688
789
  mousemove: this.mousemove.bind(this),
689
790
  mouseup: this.mouseup.bind(this)
@@ -692,47 +793,47 @@ class Lt {
692
793
  finish() {
693
794
  this.bindOrUnbindEvent("unbind");
694
795
  }
695
- bindOrUnbindEvent(e) {
696
- const t = e === "bind" ? "addEventListener" : "removeEventListener";
697
- if (!s(this, g)) return console.error("No DOM");
698
- s(this, g)[t]("mousedown", s(this, F).mousedown), document[t]("mousemove", s(this, F).mousemove), document[t]("mouseup", s(this, F).mouseup);
796
+ bindOrUnbindEvent(t) {
797
+ const e = t === "bind" ? "addEventListener" : "removeEventListener";
798
+ if (!c(this, w)) return console.error("No DOM");
799
+ c(this, w)[e]("mousedown", c(this, M).mousedown), document[e]("mousemove", c(this, M).mousemove), document[e]("mouseup", c(this, M).mouseup);
699
800
  }
700
801
  alterLocation() {
701
- if (!s(this, g)) return console.error("No DOM");
702
- s(this, E) && (l(this, w, Math.min(s(this, w), s(this, E).max.top)), l(this, w, Math.max(s(this, w), s(this, E).min.top)), l(this, y, Math.min(s(this, y), s(this, E).max.left)), l(this, y, Math.max(s(this, y), s(this, E).min.left))), s(this, g).style.setProperty("--top", s(this, w) + "px"), s(this, g).style.setProperty("--left", s(this, y) + "px");
802
+ if (!c(this, w)) return console.error("No DOM");
803
+ c(this, L) && (l(this, E, Math.min(c(this, E), c(this, L).max.top)), l(this, E, Math.max(c(this, E), c(this, L).min.top)), l(this, C, Math.min(c(this, C), c(this, L).max.left)), l(this, C, Math.max(c(this, C), c(this, L).min.left))), c(this, w).style.setProperty("--top", c(this, E) + "px"), c(this, w).style.setProperty("--left", c(this, C) + "px");
703
804
  }
704
- mousedown(e) {
705
- if (!s(this, g)) return console.error("No DOM");
706
- if (s(this, T) && e.target != s(this, T)) return;
707
- document.body.classList.add("no-select"), l(this, _, !0);
708
- const t = s(this, g).getBoundingClientRect(), { pageX: o, pageY: i } = e;
709
- l(this, R, o), l(this, P, i), l(this, w, t.y), l(this, y, t.x);
805
+ mousedown(t) {
806
+ if (!c(this, w)) return console.error("No DOM");
807
+ if (c(this, z) && t.target != c(this, z)) return;
808
+ document.body.classList.add("no-select"), l(this, j, !0);
809
+ const e = c(this, w).getBoundingClientRect(), { pageX: o, pageY: r } = t;
810
+ l(this, U, o), l(this, P, r), l(this, E, e.y), l(this, C, e.x);
710
811
  }
711
- mousemove(e) {
712
- const { pageX: t, pageY: o } = e;
713
- s(this, _) && (l(this, w, s(this, w) + (o - s(this, P))), l(this, y, s(this, y) + (t - s(this, R))), l(this, R, t), l(this, P, o), this.alterLocation());
812
+ mousemove(t) {
813
+ const { pageX: e, pageY: o } = t;
814
+ c(this, j) && (l(this, E, c(this, E) + (o - c(this, P))), l(this, C, c(this, C) + (e - c(this, U))), l(this, U, e), l(this, P, o), this.alterLocation());
714
815
  }
715
816
  mouseup() {
716
- s(this, _) && (l(this, _, !1), document.body.classList.remove("no-select"));
817
+ c(this, j) && (l(this, j, !1), document.body.classList.remove("no-select"));
717
818
  }
718
819
  }
719
- g = new WeakMap(), _ = new WeakMap(), F = new WeakMap(), R = new WeakMap(), P = new WeakMap(), w = new WeakMap(), y = new WeakMap(), E = new WeakMap(), T = new WeakMap();
720
- var x, M, L, k, j, b, v, h, z, D;
721
- class Rt {
820
+ w = new WeakMap(), j = new WeakMap(), M = new WeakMap(), U = new WeakMap(), P = new WeakMap(), E = new WeakMap(), C = new WeakMap(), L = new WeakMap(), z = new WeakMap();
821
+ var x, R, T, D, I, v, b, p, O, _;
822
+ class Ie {
722
823
  constructor() {
723
824
  d(this, x);
724
- d(this, M, !1);
725
- d(this, L, {});
726
- d(this, k, 0);
727
- d(this, j, 0);
728
- d(this, b, 0);
825
+ d(this, R, !1);
826
+ d(this, T, {});
827
+ d(this, D, 0);
828
+ d(this, I, 0);
729
829
  d(this, v, 0);
730
- d(this, h);
731
- d(this, z);
732
- d(this, D);
830
+ d(this, b, 0);
831
+ d(this, p);
832
+ d(this, O);
833
+ d(this, _);
733
834
  }
734
- init(e, t = {}) {
735
- l(this, x, e), l(this, h, t.limit), l(this, z, t.update_move), l(this, D, t.update_up), l(this, L, {
835
+ init(t, e = {}) {
836
+ l(this, x, t), l(this, p, e.limit), l(this, O, e.update_move), l(this, _, e.update_up), l(this, T, {
736
837
  mousedown: this.mousedown.bind(this),
737
838
  mousemove: this.mousemove.bind(this),
738
839
  mouseup: this.mouseup.bind(this)
@@ -741,172 +842,304 @@ class Rt {
741
842
  finish() {
742
843
  this.bindOrUnbindEvent("unbind");
743
844
  }
744
- bindOrUnbindEvent(e) {
745
- const t = e === "bind" ? "addEventListener" : "removeEventListener";
746
- if (!s(this, x)) return console.error("No DOM");
747
- s(this, x)[t]("mousedown", s(this, L).mousedown), document[t]("mousemove", s(this, L).mousemove), document[t]("mouseup", s(this, L).mouseup);
845
+ bindOrUnbindEvent(t) {
846
+ const e = t === "bind" ? "addEventListener" : "removeEventListener";
847
+ if (!c(this, x)) return console.error("No DOM");
848
+ c(this, x)[e]("mousedown", c(this, T).mousedown), document[e]("mousemove", c(this, T).mousemove), document[e]("mouseup", c(this, T).mouseup);
748
849
  }
749
850
  updateValue() {
750
- const e = {
751
- top: s(this, b),
752
- left: s(this, v),
851
+ const t = {
852
+ top: c(this, v),
853
+ left: c(this, b),
753
854
  percentage: { top: 0, left: 0 }
754
855
  };
755
- if (s(this, h)) {
756
- const t = (o) => s(this, h) ? (e[o] - s(this, h).min[o]) / (s(this, h).max[o] - s(this, h).min[o]) : 0;
757
- e.percentage = {
758
- top: t("top") || 0,
759
- left: t("left") || 0
856
+ if (c(this, p)) {
857
+ const e = (o) => c(this, p) ? (t[o] - c(this, p).min[o]) / (c(this, p).max[o] - c(this, p).min[o]) : 0;
858
+ t.percentage = {
859
+ top: e("top") || 0,
860
+ left: e("left") || 0
760
861
  };
761
862
  }
762
- return e;
863
+ return t;
763
864
  }
764
865
  alterLocation() {
765
- if (!s(this, x)) return console.error("No DOM");
766
- s(this, h) && (l(this, b, Math.min(s(this, b), s(this, h).max.top)), l(this, b, Math.max(s(this, b), s(this, h).min.top)), l(this, v, Math.min(s(this, v), s(this, h).max.left)), l(this, v, Math.max(s(this, v), s(this, h).min.left))), s(this, z) && s(this, z).call(this, this.updateValue()), s(this, x).style.setProperty("--top", s(this, b) + "px"), s(this, x).style.setProperty("--left", s(this, v) + "px");
866
+ if (!c(this, x)) return console.error("No DOM");
867
+ c(this, p) && (l(this, v, Math.min(c(this, v), c(this, p).max.top)), l(this, v, Math.max(c(this, v), c(this, p).min.top)), l(this, b, Math.min(c(this, b), c(this, p).max.left)), l(this, b, Math.max(c(this, b), c(this, p).min.left))), c(this, O) && c(this, O).call(this, this.updateValue()), c(this, x).style.setProperty("--top", c(this, v) + "px"), c(this, x).style.setProperty("--left", c(this, b) + "px");
767
868
  }
768
- mousedown(e) {
769
- if (!s(this, x)) return console.error("No DOM");
770
- document.body.classList.add("no-select"), l(this, M, !0);
771
- const t = s(this, x).getBoundingClientRect();
772
- l(this, j, t.y), l(this, k, t.x);
773
- const { pageX: o, pageY: i } = e;
774
- l(this, b, i - s(this, j)), l(this, v, o - s(this, k)), this.alterLocation();
869
+ mousedown(t) {
870
+ if (!c(this, x)) return console.error("No DOM");
871
+ document.body.classList.add("no-select"), l(this, R, !0);
872
+ const e = c(this, x).getBoundingClientRect();
873
+ l(this, I, e.y), l(this, D, e.x);
874
+ const { pageX: o, pageY: r } = t;
875
+ l(this, v, r - c(this, I)), l(this, b, o - c(this, D)), this.alterLocation();
775
876
  }
776
- mousemove(e) {
777
- const { pageX: t, pageY: o } = e;
778
- s(this, M) && (l(this, b, o - s(this, j)), l(this, v, t - s(this, k)), this.alterLocation());
877
+ mousemove(t) {
878
+ const { pageX: e, pageY: o } = t;
879
+ c(this, R) && (l(this, v, o - c(this, I)), l(this, b, e - c(this, D)), this.alterLocation());
779
880
  }
780
881
  mouseup() {
781
- s(this, M) && (l(this, M, !1), document.body.classList.remove("no-select"), s(this, D) && s(this, D).call(this, this.updateValue()));
882
+ c(this, R) && (l(this, R, !1), document.body.classList.remove("no-select"), c(this, _) && c(this, _).call(this, this.updateValue()));
782
883
  }
783
884
  }
784
- x = new WeakMap(), M = new WeakMap(), L = new WeakMap(), k = new WeakMap(), j = new WeakMap(), b = new WeakMap(), v = new WeakMap(), h = new WeakMap(), z = new WeakMap(), D = new WeakMap();
785
- function K(n) {
786
- const e = n;
885
+ x = new WeakMap(), R = new WeakMap(), T = new WeakMap(), D = new WeakMap(), I = new WeakMap(), v = new WeakMap(), b = new WeakMap(), p = new WeakMap(), O = new WeakMap(), _ = new WeakMap();
886
+ function oe(n) {
887
+ const t = n;
787
888
  if (n) {
788
889
  if (n.requestFullscreen)
789
890
  return n.requestFullscreen();
790
- if (e.mozRequestFullScreen)
791
- return e.mozRequestFullScreen();
792
- if (e.webkitRequestFullscreen)
793
- return e.webkitRequestFullscreen();
794
- if (e.msRequestFullscreen)
795
- return e.msRequestFullscreen();
891
+ if (t.mozRequestFullScreen)
892
+ return t.mozRequestFullScreen();
893
+ if (t.webkitRequestFullscreen)
894
+ return t.webkitRequestFullscreen();
895
+ if (t.msRequestFullscreen)
896
+ return t.msRequestFullscreen();
796
897
  } else return Promise.reject("No DOM");
797
898
  return Promise.reject("No Fullscreen API");
798
899
  }
799
- function Q() {
900
+ function re() {
800
901
  const n = document;
801
902
  return document.exitFullscreen ? document.exitFullscreen() : n.mozCancelFullScreen ? n.mozCancelFullScreen() : n.webkitExitFullscreen ? n.webkitExitFullscreen() : n.msExitFullscreen ? n.msExitFullscreen() : Promise.reject("No ExitFullscreen API");
802
903
  }
803
- function J() {
904
+ function ie() {
804
905
  const n = document;
805
906
  return document.fullscreenElement || n.webkitFullscreenElement || n.mozFullScreenElement || n.msFullscreenElement;
806
907
  }
807
- function Pt(n) {
908
+ function Oe(n) {
808
909
  return function() {
809
- J() ? Q() : K(n);
910
+ ie() ? re() : oe(n);
810
911
  };
811
912
  }
812
- function Tt(n, e) {
913
+ function _e(n, t) {
813
914
  if (typeof n == "number") return n;
814
915
  if (/px/.test(n)) return Number(n.replace(/px/, "")) || 0;
815
- const t = document.createElement("div");
816
- t.style.width = n, e = e || document.body, e.appendChild(t);
817
- const o = t.getBoundingClientRect().width;
818
- return e.removeChild(t), o;
916
+ const e = document.createElement("div");
917
+ e.style.width = n, t = t || document.body, t.appendChild(e);
918
+ const o = e.getBoundingClientRect().width;
919
+ return t.removeChild(e), o;
920
+ }
921
+ function Se(n, t) {
922
+ if (!n) return;
923
+ let e, o;
924
+ if (typeof t == "string") {
925
+ const i = document.querySelector(t);
926
+ if (!i) return;
927
+ const s = i.getBoundingClientRect();
928
+ e = s.width, o = s.height;
929
+ } else if (Array.isArray(t))
930
+ e = t[0], o = t[1];
931
+ else {
932
+ const i = t.getBoundingClientRect();
933
+ e = i.width, o = i.height;
934
+ }
935
+ const r = e / o;
936
+ return r > n ? [n * o, o] : r < n ? [e, e / n] : [e, o];
937
+ }
938
+ function Ae(n, t = 5e3) {
939
+ return new Promise((e, o) => {
940
+ const r = new Image();
941
+ r.src = n;
942
+ const i = setTimeout(() => {
943
+ o(new Error("图片加载超时")), r.onload = null, r.onerror = null;
944
+ }, t);
945
+ r.onload = () => {
946
+ clearTimeout(i);
947
+ const s = r.naturalWidth, a = r.naturalHeight, m = s / a;
948
+ e([r, m]);
949
+ }, r.onerror = () => {
950
+ clearTimeout(i), o(new Error("图片加载失败"));
951
+ }, r.crossOrigin = "Anonymous";
952
+ });
819
953
  }
820
- function kt(n, e, t = 2) {
821
- return !Number.isFinite(n) || !Number.isFinite(e) || !Number.isFinite(t) ? (console.error("所有参数必须是有限的数字"), "") : e === 0 ? (console.error("分母不能为零"), "") : t < 0 ? (console.error("小数位数不能为负数"), "") : (n / e * 100).toFixed(t) + "%";
954
+ function Ne(n, t, e = 2) {
955
+ return !Number.isFinite(n) || !Number.isFinite(t) || !Number.isFinite(e) ? (console.error("所有参数必须是有限的数字"), "") : t === 0 ? (console.error("分母不能为零"), "") : e < 0 ? (console.error("小数位数不能为负数"), "") : (n / t * 100).toFixed(e) + "%";
822
956
  }
823
- function jt(n, e, t) {
824
- return Math.abs(n - e) <= t;
957
+ function qe(n, t, e) {
958
+ return Math.abs(n - t) <= e;
825
959
  }
826
- function zt(n, e = 500) {
827
- let t;
828
- function o(i) {
829
- t || (t = i);
830
- let r = Math.min((i - t) / e, 1);
831
- n(r), i - t < e && requestAnimationFrame(o);
960
+ function $e(n, t = 500) {
961
+ let e;
962
+ function o(r) {
963
+ e || (e = r);
964
+ let i = Math.min((r - e) / t, 1);
965
+ n(i), r - e < t && requestAnimationFrame(o);
832
966
  }
833
967
  requestAnimationFrame(o);
834
968
  }
835
- function Dt(n) {
969
+ function Ye(n) {
836
970
  return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
837
971
  }
838
- function St(n, e) {
839
- const t = {
972
+ function Be(n, t) {
973
+ const e = {
840
974
  join: !0,
841
975
  suffix: "",
842
976
  decimalPlaces: 2
843
- }, { join: o, suffix: i, decimalPlaces: r } = {
844
- ...t,
845
- ...e || {}
846
- }, c = Number(n);
847
- if (isNaN(c)) return o ? `0${i}` : [0, i];
848
- const a = Math.abs(c), m = c >= 0, u = Math.max(0, Math.floor(Math.log10(a) / 4)), f = Math.pow(1e4, u), p = a / f, S = (m ? 1 : -1) * parseFloat(p.toFixed(Math.max(0, r)));
849
- return o ? `${S}${$[u]}${i}` : [S, $[u] + i];
850
- }
851
- function Ut(n, e) {
852
- let t = !1;
853
- const { x: o, y: i } = n, r = e.length;
854
- for (let c = 0, a = r - 1; c < r; a = c++) {
855
- const m = e[c].x, u = e[c].y, f = e[a].x, p = e[a].y;
856
- u > i != p > i && o < (f - m) * (i - u) / (p - u) + m && (t = !t);
857
- }
858
- return t;
859
- }
860
- function It(n) {
861
- const e = ["B", "KB", "MB", "GB", "TB", "PB"];
862
- let t = 0;
977
+ }, { join: o, suffix: r, decimalPlaces: i } = {
978
+ ...e,
979
+ ...t || {}
980
+ }, s = Number(n);
981
+ if (isNaN(s)) return o ? `0${r}` : [0, r];
982
+ const a = Math.abs(s), m = s >= 0, u = Math.max(0, Math.floor(Math.log10(a) / 4)), f = Math.pow(1e4, u), g = a / f, A = (m ? 1 : -1) * parseFloat(g.toFixed(Math.max(0, i)));
983
+ return o ? `${A}${W[u]}${r}` : [A, W[u] + r];
984
+ }
985
+ function He(n, t) {
986
+ let e = !1;
987
+ const { x: o, y: r } = n, i = t.length;
988
+ for (let s = 0, a = i - 1; s < i; a = s++) {
989
+ const m = t[s].x, u = t[s].y, f = t[a].x, g = t[a].y;
990
+ u > r != g > r && o < (f - m) * (r - u) / (g - u) + m && (e = !e);
991
+ }
992
+ return e;
993
+ }
994
+ function Xe(n) {
995
+ const t = ["B", "KB", "MB", "GB", "TB", "PB"];
996
+ let e = 0;
863
997
  for (; n > 1024; )
864
- n /= 1024, t++;
865
- return `${Math.round(n * 100) / 100} ${e[t]}`;
998
+ n /= 1024, e++;
999
+ return `${Math.round(n * 100) / 100} ${t[e]}`;
1000
+ }
1001
+ class k {
1002
+ constructor(t, e) {
1003
+ y(this, "resolve");
1004
+ y(this, "reject");
1005
+ this.resolve = t, this.reject = e;
1006
+ }
1007
+ run(t) {
1008
+ var e, o;
1009
+ return t instanceof Promise ? t.then((r) => {
1010
+ var i;
1011
+ return (i = this.resolve) == null || i.call(this), r;
1012
+ }).catch((r) => {
1013
+ var i;
1014
+ return (i = this.reject) == null || i.call(this), Promise.reject(r);
1015
+ }) : t ? (e = this.resolve) == null || e.call(this) : (o = this.reject) == null || o.call(this), t;
1016
+ }
1017
+ }
1018
+ class se extends k {
1019
+ constructor(t) {
1020
+ super(), this.resolve = t;
1021
+ }
1022
+ warning(...t) {
1023
+ const e = () => {
1024
+ var o, r;
1025
+ return (r = (o = S.tips).warning) == null ? void 0 : r.call(o, ...t);
1026
+ };
1027
+ return new k(this.resolve, e);
1028
+ }
1029
+ error(...t) {
1030
+ const e = () => {
1031
+ var o, r;
1032
+ return (r = (o = S.tips).error) == null ? void 0 : r.call(o, ...t);
1033
+ };
1034
+ return new k(this.resolve, e);
1035
+ }
1036
+ }
1037
+ class ce extends k {
1038
+ constructor(t) {
1039
+ super(), this.reject = t;
1040
+ }
1041
+ info(...t) {
1042
+ const e = () => {
1043
+ var o, r;
1044
+ return (r = (o = S.tips).info) == null ? void 0 : r.call(o, ...t);
1045
+ };
1046
+ return new k(e, this.reject);
1047
+ }
1048
+ success(...t) {
1049
+ const e = () => {
1050
+ var o, r;
1051
+ return (r = (o = S.tips).success) == null ? void 0 : r.call(o, ...t);
1052
+ };
1053
+ return new k(e, this.reject);
1054
+ }
866
1055
  }
1056
+ const h = class h {
1057
+ /**
1058
+ * 构造函数
1059
+ * @throws 如果尝试实例化该类,则抛出错误,因为应该使用静态方法
1060
+ */
1061
+ constructor() {
1062
+ if (new.target === h)
1063
+ throw new Error("请直接使用静态方法,而不是实例化此类");
1064
+ }
1065
+ static register(t, e) {
1066
+ if (typeof e != "function")
1067
+ return console.error("TipHandler must be a function");
1068
+ h.tips[t] = e;
1069
+ }
1070
+ static resolveTip(t) {
1071
+ return function(...e) {
1072
+ const o = () => {
1073
+ var r, i;
1074
+ return (i = (r = h.tips)[t]) == null ? void 0 : i.call(r, ...e);
1075
+ };
1076
+ return new se(o);
1077
+ };
1078
+ }
1079
+ static rejectTip(t) {
1080
+ return function(...e) {
1081
+ const o = () => {
1082
+ var r, i;
1083
+ return (i = (r = h.tips)[t]) == null ? void 0 : i.call(r, ...e);
1084
+ };
1085
+ return new ce(o);
1086
+ };
1087
+ }
1088
+ };
1089
+ y(h, "tips", {
1090
+ info: void 0,
1091
+ success: void 0,
1092
+ warning: void 0,
1093
+ error: void 0
1094
+ }), y(h, "info", h.resolveTip("info")), y(h, "success", h.resolveTip("success")), y(h, "warning", h.rejectTip("warning")), y(h, "error", h.rejectTip("error"));
1095
+ let S = h;
867
1096
  export {
868
- st as _CapitalizeFirstLetter,
869
- yt as _CheckConnectionWithXHR,
870
- _t as _Clone,
871
- Mt as _CloseOnOutsideClick,
872
- mt as _ConvertToCamelCase,
873
- kt as _ConvertToPercentage,
874
- xt as _CopyToClipboard,
875
- dt as _CreateAndDownloadFile,
876
- gt as _DataType,
877
- Z as _Debounce,
878
- lt as _DownloadFile,
879
- Lt as _Drag,
880
- K as _EnterFullscreen,
881
- rt as _ExcludeSubstring,
882
- ot as _ExecuteWhenIdle,
883
- Q as _ExitFullscreen,
884
- H as _FileTypeChecker,
885
- It as _FormatFileSize,
886
- Dt as _FormatNumber,
887
- St as _FormatNumberWithUnit,
888
- Pt as _Fullscreen,
889
- pt as _GenerateUUID,
890
- ut as _GetFrameRate,
891
- N as _GetHrefName,
892
- Tt as _GetOtherSizeInPixels,
893
- ft as _GetQueryParams,
894
- vt as _GetTargetByPath,
895
- bt as _InitTargetByPath,
896
- J as _IsFullscreen,
897
- nt as _IsObject,
898
- Ut as _IsPointInPolygon,
899
- Et as _IsSecureContext,
900
- jt as _IsWithinErrorMargin,
901
- Rt as _LocalDrag,
902
- O as _MergeObjects,
903
- et as _NotNull,
904
- at as _ReadFile,
905
- Ct as _RotateList,
906
- zt as _Schedule,
907
- Ft as _ScrollEndListener,
908
- ht as _Throttle,
909
- ct as _TimeTransition,
910
- wt as _UpdateTargetByPath,
911
- it as _WaitForCondition
1097
+ Se as _CalculateCanvasSize,
1098
+ he as _CapitalizeFirstLetter,
1099
+ Me as _CheckConnectionWithXHR,
1100
+ ke as _Clone,
1101
+ ze as _CloseOnOutsideClick,
1102
+ ve as _ConvertToCamelCase,
1103
+ Ne as _ConvertToPercentage,
1104
+ Ce as _CopyToClipboard,
1105
+ be as _CreateAndDownloadFile,
1106
+ Ue as _Danger_ConvertDataToImageUrl,
1107
+ G as _DataType,
1108
+ ne as _Debounce,
1109
+ we as _DownloadFile,
1110
+ De as _Drag,
1111
+ oe as _EnterFullscreen,
1112
+ fe as _ExcludeSubstring,
1113
+ me as _ExecuteWhenIdle,
1114
+ re as _ExitFullscreen,
1115
+ V as _FileTypeChecker,
1116
+ Xe as _FormatFileSize,
1117
+ Ye as _FormatNumber,
1118
+ Be as _FormatNumberWithUnit,
1119
+ Oe as _Fullscreen,
1120
+ ye as _GenerateUUID,
1121
+ xe as _GetFrameRate,
1122
+ B as _GetHrefName,
1123
+ _e as _GetOtherSizeInPixels,
1124
+ Le as _GetTargetByPath,
1125
+ Fe as _InitTargetByPath,
1126
+ ie as _IsFullscreen,
1127
+ ue as _IsObject,
1128
+ He as _IsPointInPolygon,
1129
+ Re as _IsSecureContext,
1130
+ qe as _IsWithinErrorMargin,
1131
+ Z as _KeyedWindowManager,
1132
+ Ae as _LoadImage,
1133
+ Ie as _LocalDrag,
1134
+ Y as _MergeObjects,
1135
+ le as _NotNull,
1136
+ ge as _ReadFile,
1137
+ Te as _RotateList,
1138
+ $e as _Schedule,
1139
+ Pe as _ScrollEndListener,
1140
+ Ee as _Throttle,
1141
+ pe as _TimeTransition,
1142
+ S as _Tip,
1143
+ je as _UpdateTargetByPath,
1144
+ de as _WaitForCondition
912
1145
  };