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/Constant.d.ts +4 -1
- package/dist/User/index.d.ts +16 -0
- package/dist/Utility/index.d.ts +54 -10
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +33 -0
- package/dist/index.es.js +599 -366
- package/package.json +1 -1
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
|
|
3
|
-
var
|
|
2
|
+
var K = Object.defineProperty;
|
|
3
|
+
var H = (n) => {
|
|
4
4
|
throw TypeError(n);
|
|
5
5
|
};
|
|
6
|
-
var
|
|
7
|
-
var
|
|
8
|
-
var
|
|
9
|
-
const
|
|
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
|
-
},
|
|
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
|
|
268
|
+
function le(n) {
|
|
269
269
|
return n != null;
|
|
270
270
|
}
|
|
271
|
-
function
|
|
271
|
+
function ue(n) {
|
|
272
272
|
return !(n === null || typeof n != "object" || Array.isArray(n));
|
|
273
273
|
}
|
|
274
|
-
function
|
|
274
|
+
function me(n) {
|
|
275
275
|
if (typeof n != "function")
|
|
276
276
|
return console.error("非函数:", n);
|
|
277
|
-
const
|
|
278
|
-
|
|
277
|
+
const t = function(e) {
|
|
278
|
+
e.didTimeout || e.timeRemaining() <= 0 ? requestIdleCallback(t) : n();
|
|
279
279
|
};
|
|
280
|
-
requestIdleCallback(
|
|
280
|
+
requestIdleCallback(t);
|
|
281
281
|
}
|
|
282
|
-
function
|
|
283
|
-
const
|
|
284
|
-
return new Promise((o,
|
|
285
|
-
const
|
|
286
|
-
if (+/* @__PURE__ */ new Date() -
|
|
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(
|
|
288
|
+
requestIdleCallback(i);
|
|
289
289
|
};
|
|
290
|
-
|
|
290
|
+
i();
|
|
291
291
|
});
|
|
292
292
|
}
|
|
293
|
-
function
|
|
293
|
+
function fe(n, t, e = ",") {
|
|
294
294
|
const o = new RegExp(
|
|
295
|
-
`(^|${
|
|
295
|
+
`(^|${e})${t}(${e}|$)`,
|
|
296
296
|
"g"
|
|
297
297
|
);
|
|
298
|
-
return n.replace(o, function(
|
|
299
|
-
return
|
|
298
|
+
return n.replace(o, function(r, i, s) {
|
|
299
|
+
return i === s ? e : "";
|
|
300
300
|
});
|
|
301
301
|
}
|
|
302
|
-
function
|
|
302
|
+
function he(n) {
|
|
303
303
|
return n.charAt(0).toUpperCase() + n.slice(1);
|
|
304
304
|
}
|
|
305
|
-
function
|
|
306
|
-
if (o < +/* @__PURE__ */ new Date() -
|
|
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
|
|
311
|
-
if (r !=
|
|
310
|
+
const r = G(n), i = G(t);
|
|
311
|
+
if (r != i) return t;
|
|
312
312
|
if (r == "object" || r == "array") {
|
|
313
|
-
if (
|
|
314
|
-
if (
|
|
315
|
-
for (const
|
|
316
|
-
if (Object.prototype.hasOwnProperty.call(
|
|
317
|
-
const
|
|
318
|
-
n[
|
|
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
|
|
323
|
-
const
|
|
324
|
-
n[
|
|
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
|
|
326
|
+
} else return t;
|
|
327
327
|
}
|
|
328
|
-
function
|
|
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
|
|
333
|
-
YYYY: (
|
|
334
|
-
MM: (
|
|
332
|
+
const r = {
|
|
333
|
+
YYYY: (i) => i.getFullYear(),
|
|
334
|
+
MM: (i) => i.getMonth() + 1,
|
|
335
335
|
// Adjust for 0-based month
|
|
336
|
-
DD: (
|
|
337
|
-
hh: (
|
|
338
|
-
mm: (
|
|
339
|
-
ss: (
|
|
340
|
-
ms: (
|
|
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
|
|
343
|
-
const
|
|
344
|
-
return
|
|
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
|
|
348
|
-
return new Promise((
|
|
349
|
-
fetch(n).then((o) =>
|
|
350
|
-
console.error("Error fetching :", 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
|
|
355
|
-
if (!n || (n = String(n).trim(), n === "")) return
|
|
356
|
-
const
|
|
357
|
-
return
|
|
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
|
|
360
|
-
return new Promise((
|
|
359
|
+
function we(n, t) {
|
|
360
|
+
return new Promise((e, o) => {
|
|
361
361
|
try {
|
|
362
|
-
|
|
363
|
-
const
|
|
364
|
-
|
|
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 (
|
|
367
|
-
o(
|
|
366
|
+
} catch (r) {
|
|
367
|
+
o(r);
|
|
368
368
|
}
|
|
369
369
|
});
|
|
370
370
|
}
|
|
371
|
-
function
|
|
372
|
-
let
|
|
373
|
-
function
|
|
371
|
+
function xe(n, t = 10) {
|
|
372
|
+
let e = 0, o = t;
|
|
373
|
+
function r() {
|
|
374
374
|
if (o > 0)
|
|
375
|
-
o--, requestAnimationFrame(
|
|
375
|
+
o--, requestAnimationFrame(r);
|
|
376
376
|
else {
|
|
377
|
-
const
|
|
378
|
-
n(Number(a.toFixed(2)), Number(
|
|
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
|
-
|
|
382
|
+
e = +/* @__PURE__ */ new Date(), r();
|
|
383
383
|
});
|
|
384
384
|
}
|
|
385
|
-
function
|
|
386
|
-
return n = n.replace(/([^a-zA-Z][a-z])/g, (
|
|
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
|
|
389
|
-
if (!
|
|
390
|
-
let
|
|
391
|
-
|
|
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,
|
|
394
|
-
|
|
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
|
|
403
|
-
return n + "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(
|
|
404
|
-
const
|
|
405
|
-
return (
|
|
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
|
|
409
|
-
let
|
|
402
|
+
function ne(n, t) {
|
|
403
|
+
let e;
|
|
410
404
|
return function(...o) {
|
|
411
|
-
clearTimeout(
|
|
412
|
-
n(...o),
|
|
413
|
-
},
|
|
405
|
+
clearTimeout(e), e = setTimeout(() => {
|
|
406
|
+
n(...o), e = void 0;
|
|
407
|
+
}, t);
|
|
414
408
|
};
|
|
415
409
|
}
|
|
416
|
-
function
|
|
417
|
-
let
|
|
410
|
+
function Ee(n, t) {
|
|
411
|
+
let e = -1 / 0;
|
|
418
412
|
return function(...o) {
|
|
419
|
-
const
|
|
420
|
-
if (
|
|
421
|
-
|
|
413
|
+
const r = performance.now();
|
|
414
|
+
if (r - e > t) {
|
|
415
|
+
e = r;
|
|
422
416
|
try {
|
|
423
417
|
n(...o);
|
|
424
|
-
} catch (
|
|
425
|
-
console.error("Throttled function execution failed:",
|
|
418
|
+
} catch (i) {
|
|
419
|
+
console.error("Throttled function execution failed:", i);
|
|
426
420
|
}
|
|
427
421
|
}
|
|
428
422
|
};
|
|
429
423
|
}
|
|
430
|
-
function
|
|
424
|
+
function G(n) {
|
|
431
425
|
return Array.isArray(n) ? "array" : n === null ? "null" : typeof n;
|
|
432
426
|
}
|
|
433
|
-
function
|
|
434
|
-
const
|
|
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(
|
|
430
|
+
return navigator.clipboard.writeText(n).then(t).catch(e);
|
|
437
431
|
}
|
|
438
|
-
function
|
|
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
|
|
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
|
|
454
|
-
return
|
|
455
|
-
|
|
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(
|
|
452
|
+
return navigator.clipboard ? o().catch(s) : s();
|
|
459
453
|
}
|
|
460
|
-
function
|
|
461
|
-
const
|
|
462
|
-
return
|
|
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
|
|
465
|
-
const
|
|
466
|
-
return
|
|
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
|
|
469
|
-
const o =
|
|
470
|
-
return o.reduce((
|
|
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
|
|
473
|
-
return new Promise((
|
|
466
|
+
function Me(n) {
|
|
467
|
+
return new Promise((t, e) => {
|
|
474
468
|
if (typeof n != "string" || n.trim() === "" || !n.includes("://")) {
|
|
475
|
-
|
|
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 (
|
|
481
|
-
|
|
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
|
|
487
|
-
|
|
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 ?
|
|
491
|
-
}, o.onerror =
|
|
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 (
|
|
495
|
-
|
|
488
|
+
} catch (i) {
|
|
489
|
+
e(new Error(`Request send failed: ${i.message}`));
|
|
496
490
|
}
|
|
497
491
|
});
|
|
498
492
|
}
|
|
499
|
-
function
|
|
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((
|
|
522
|
-
}
|
|
523
|
-
const
|
|
524
|
-
|
|
525
|
-
if (
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
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
|
|
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(
|
|
545
|
-
return !
|
|
546
|
-
const o =
|
|
547
|
-
return { url:
|
|
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(
|
|
557
|
-
if (!
|
|
558
|
-
if (typeof
|
|
559
|
-
const o =
|
|
560
|
-
return
|
|
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 === "*" ||
|
|
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(
|
|
574
|
-
return
|
|
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(
|
|
583
|
-
return
|
|
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(
|
|
591
|
-
for (const [
|
|
592
|
-
if (o.some((
|
|
593
|
-
return
|
|
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
|
-
|
|
599
|
-
let
|
|
600
|
-
function
|
|
601
|
-
return n.map((
|
|
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
|
|
604
|
-
const
|
|
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
|
|
604
|
+
return t ? t(n) : e(n);
|
|
607
605
|
} catch (o) {
|
|
608
|
-
return console.error("structuredClone error:", o),
|
|
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
|
|
612
|
-
const
|
|
613
|
-
let
|
|
614
|
-
return function(
|
|
615
|
-
const
|
|
616
|
-
if (!
|
|
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:
|
|
719
|
+
scrollTop: s,
|
|
619
720
|
scrollHeight: a,
|
|
620
721
|
clientHeight: m,
|
|
621
722
|
scrollLeft: u,
|
|
622
723
|
scrollWidth: f,
|
|
623
|
-
clientWidth:
|
|
624
|
-
} =
|
|
625
|
-
function
|
|
626
|
-
if (
|
|
627
|
-
const
|
|
628
|
-
if (
|
|
629
|
-
a -
|
|
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
|
|
732
|
+
function J() {
|
|
632
733
|
if (o == u) return;
|
|
633
|
-
const
|
|
634
|
-
if (o = u,
|
|
635
|
-
f - u -
|
|
734
|
+
const q = o > u;
|
|
735
|
+
if (o = u, q) return;
|
|
736
|
+
f - u - g <= 1 && t("horizontal");
|
|
636
737
|
}
|
|
637
|
-
|
|
738
|
+
A(), J();
|
|
638
739
|
};
|
|
639
740
|
}
|
|
640
|
-
function
|
|
641
|
-
const { isClickAllowed: o, uiLibrary:
|
|
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) &&
|
|
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
|
|
656
|
-
|
|
756
|
+
function s() {
|
|
757
|
+
t(), document.removeEventListener("mousedown", a);
|
|
657
758
|
}
|
|
658
759
|
function a(m) {
|
|
659
760
|
if (o) {
|
|
660
|
-
const
|
|
661
|
-
if (
|
|
662
|
-
if (
|
|
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(
|
|
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
|
|
673
|
-
class
|
|
773
|
+
var w, j, M, U, P, E, C, L, z;
|
|
774
|
+
class De {
|
|
674
775
|
constructor() {
|
|
675
|
-
d(this,
|
|
676
|
-
d(this,
|
|
677
|
-
d(this,
|
|
678
|
-
d(this,
|
|
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,
|
|
681
|
-
d(this,
|
|
682
|
-
d(this,
|
|
683
|
-
d(this,
|
|
781
|
+
d(this, E, 0);
|
|
782
|
+
d(this, C, 0);
|
|
783
|
+
d(this, L);
|
|
784
|
+
d(this, z);
|
|
684
785
|
}
|
|
685
|
-
init(
|
|
686
|
-
l(this,
|
|
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(
|
|
696
|
-
const
|
|
697
|
-
if (!
|
|
698
|
-
|
|
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 (!
|
|
702
|
-
|
|
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(
|
|
705
|
-
if (!
|
|
706
|
-
if (
|
|
707
|
-
document.body.classList.add("no-select"), l(this,
|
|
708
|
-
const
|
|
709
|
-
l(this,
|
|
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(
|
|
712
|
-
const { pageX:
|
|
713
|
-
|
|
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
|
-
|
|
817
|
+
c(this, j) && (l(this, j, !1), document.body.classList.remove("no-select"));
|
|
717
818
|
}
|
|
718
819
|
}
|
|
719
|
-
|
|
720
|
-
var x,
|
|
721
|
-
class
|
|
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,
|
|
725
|
-
d(this,
|
|
726
|
-
d(this,
|
|
727
|
-
d(this,
|
|
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,
|
|
731
|
-
d(this,
|
|
732
|
-
d(this,
|
|
830
|
+
d(this, b, 0);
|
|
831
|
+
d(this, p);
|
|
832
|
+
d(this, O);
|
|
833
|
+
d(this, _);
|
|
733
834
|
}
|
|
734
|
-
init(
|
|
735
|
-
l(this, x,
|
|
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(
|
|
745
|
-
const
|
|
746
|
-
if (!
|
|
747
|
-
|
|
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
|
|
751
|
-
top:
|
|
752
|
-
left:
|
|
851
|
+
const t = {
|
|
852
|
+
top: c(this, v),
|
|
853
|
+
left: c(this, b),
|
|
753
854
|
percentage: { top: 0, left: 0 }
|
|
754
855
|
};
|
|
755
|
-
if (
|
|
756
|
-
const
|
|
757
|
-
|
|
758
|
-
top:
|
|
759
|
-
left:
|
|
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
|
|
863
|
+
return t;
|
|
763
864
|
}
|
|
764
865
|
alterLocation() {
|
|
765
|
-
if (!
|
|
766
|
-
|
|
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(
|
|
769
|
-
if (!
|
|
770
|
-
document.body.classList.add("no-select"), l(this,
|
|
771
|
-
const
|
|
772
|
-
l(this,
|
|
773
|
-
const { pageX: o, pageY:
|
|
774
|
-
l(this,
|
|
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(
|
|
777
|
-
const { pageX:
|
|
778
|
-
|
|
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
|
-
|
|
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(),
|
|
785
|
-
function
|
|
786
|
-
const
|
|
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 (
|
|
791
|
-
return
|
|
792
|
-
if (
|
|
793
|
-
return
|
|
794
|
-
if (
|
|
795
|
-
return
|
|
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
|
|
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
|
|
904
|
+
function ie() {
|
|
804
905
|
const n = document;
|
|
805
906
|
return document.fullscreenElement || n.webkitFullscreenElement || n.mozFullScreenElement || n.msFullscreenElement;
|
|
806
907
|
}
|
|
807
|
-
function
|
|
908
|
+
function Oe(n) {
|
|
808
909
|
return function() {
|
|
809
|
-
|
|
910
|
+
ie() ? re() : oe(n);
|
|
810
911
|
};
|
|
811
912
|
}
|
|
812
|
-
function
|
|
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
|
|
816
|
-
|
|
817
|
-
const o =
|
|
818
|
-
return
|
|
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
|
|
821
|
-
return !Number.isFinite(n) || !Number.isFinite(
|
|
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
|
|
824
|
-
return Math.abs(n -
|
|
957
|
+
function qe(n, t, e) {
|
|
958
|
+
return Math.abs(n - t) <= e;
|
|
825
959
|
}
|
|
826
|
-
function
|
|
827
|
-
let
|
|
828
|
-
function o(
|
|
829
|
-
|
|
830
|
-
let
|
|
831
|
-
n(
|
|
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
|
|
969
|
+
function Ye(n) {
|
|
836
970
|
return n.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
|
837
971
|
}
|
|
838
|
-
function
|
|
839
|
-
const
|
|
972
|
+
function Be(n, t) {
|
|
973
|
+
const e = {
|
|
840
974
|
join: !0,
|
|
841
975
|
suffix: "",
|
|
842
976
|
decimalPlaces: 2
|
|
843
|
-
}, { join: o, suffix:
|
|
844
|
-
...
|
|
845
|
-
...
|
|
846
|
-
},
|
|
847
|
-
if (isNaN(
|
|
848
|
-
const a = Math.abs(
|
|
849
|
-
return o ? `${
|
|
850
|
-
}
|
|
851
|
-
function
|
|
852
|
-
let
|
|
853
|
-
const { x: o, y:
|
|
854
|
-
for (let
|
|
855
|
-
const m =
|
|
856
|
-
u >
|
|
857
|
-
}
|
|
858
|
-
return
|
|
859
|
-
}
|
|
860
|
-
function
|
|
861
|
-
const
|
|
862
|
-
let
|
|
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,
|
|
865
|
-
return `${Math.round(n * 100) / 100} ${e
|
|
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
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
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
|
};
|