@zero-library/common 2.1.11 → 2.2.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/index.cjs.js +840 -323
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.d.mts +1452 -200
- package/dist/index.d.ts +1452 -200
- package/dist/index.esm.js +792 -290
- package/dist/index.esm.js.map +1 -1
- package/package.json +2 -2
package/dist/index.cjs.js
CHANGED
|
@@ -14,13 +14,12 @@ var zoom = require('@react-pdf-viewer/zoom');
|
|
|
14
14
|
require('@react-pdf-viewer/core/lib/styles/index.css');
|
|
15
15
|
var zh_CN = require('@react-pdf-viewer/locales/lib/zh_CN.json');
|
|
16
16
|
require('@react-pdf-viewer/page-navigation/lib/styles/index.css');
|
|
17
|
-
var dayjs = require('dayjs');
|
|
18
|
-
var relativeTime = require('dayjs/plugin/relativeTime');
|
|
19
17
|
var AES = require('crypto-js/aes');
|
|
20
18
|
var encUtf8 = require('crypto-js/enc-utf8');
|
|
19
|
+
var dayjs = require('dayjs');
|
|
20
|
+
var relativeTime = require('dayjs/plugin/relativeTime');
|
|
21
21
|
var Decimal = require('decimal.js');
|
|
22
22
|
var axios = require('axios');
|
|
23
|
-
var lib = require('antd/lib');
|
|
24
23
|
require('@react-pdf-viewer/thumbnail/lib/styles/index.css');
|
|
25
24
|
require('@react-pdf-viewer/zoom/lib/styles/index.css');
|
|
26
25
|
var classNames2 = require('classnames');
|
|
@@ -70,10 +69,10 @@ var React16__namespace = /*#__PURE__*/_interopNamespace(React16);
|
|
|
70
69
|
var parse__default = /*#__PURE__*/_interopDefault(parse);
|
|
71
70
|
var markdownit__default = /*#__PURE__*/_interopDefault(markdownit);
|
|
72
71
|
var zh_CN__default = /*#__PURE__*/_interopDefault(zh_CN);
|
|
73
|
-
var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
|
|
74
|
-
var relativeTime__default = /*#__PURE__*/_interopDefault(relativeTime);
|
|
75
72
|
var AES__default = /*#__PURE__*/_interopDefault(AES);
|
|
76
73
|
var encUtf8__default = /*#__PURE__*/_interopDefault(encUtf8);
|
|
74
|
+
var dayjs__default = /*#__PURE__*/_interopDefault(dayjs);
|
|
75
|
+
var relativeTime__default = /*#__PURE__*/_interopDefault(relativeTime);
|
|
77
76
|
var Decimal__default = /*#__PURE__*/_interopDefault(Decimal);
|
|
78
77
|
var axios__default = /*#__PURE__*/_interopDefault(axios);
|
|
79
78
|
var classNames2__default = /*#__PURE__*/_interopDefault(classNames2);
|
|
@@ -378,7 +377,7 @@ function isNumber(val) {
|
|
|
378
377
|
return is(val, "Number");
|
|
379
378
|
}
|
|
380
379
|
function isNumberNoNaN(val) {
|
|
381
|
-
return
|
|
380
|
+
return isNumber(val) && !isNaN(val);
|
|
382
381
|
}
|
|
383
382
|
function isString(val) {
|
|
384
383
|
return is(val, "String");
|
|
@@ -399,7 +398,7 @@ function isArray(val) {
|
|
|
399
398
|
return Array.isArray(val);
|
|
400
399
|
}
|
|
401
400
|
function isEmpty(val) {
|
|
402
|
-
if (
|
|
401
|
+
if (isString(val) || isArray(val)) {
|
|
403
402
|
return val.length === 0;
|
|
404
403
|
}
|
|
405
404
|
if (isNullOrUnDef(val)) {
|
|
@@ -411,28 +410,89 @@ function isEmpty(val) {
|
|
|
411
410
|
return isEmptyObj(val);
|
|
412
411
|
}
|
|
413
412
|
function isWindow(val) {
|
|
414
|
-
return
|
|
413
|
+
return is(val, "Window");
|
|
415
414
|
}
|
|
416
415
|
function isElement(val) {
|
|
417
|
-
return isObject(val) && !!val
|
|
416
|
+
return isObject(val) && !!val?.tagName;
|
|
418
417
|
}
|
|
419
418
|
function isMap(val) {
|
|
420
419
|
return is(val, "Map");
|
|
421
420
|
}
|
|
422
|
-
|
|
423
|
-
|
|
421
|
+
function isSet(val) {
|
|
422
|
+
return is(val, "Set");
|
|
423
|
+
}
|
|
424
424
|
var isExternal = (path) => {
|
|
425
|
-
|
|
425
|
+
if (!isString(path)) return false;
|
|
426
|
+
return /^(https?:|mailto:|tel:|ftp:)/.test(path);
|
|
426
427
|
};
|
|
427
428
|
var isBlob = (val) => {
|
|
428
429
|
return is(val, "Blob");
|
|
429
430
|
};
|
|
430
431
|
var isLocalhost = (host) => {
|
|
431
|
-
|
|
432
|
+
const targetHost = host || location.host;
|
|
433
|
+
return /^(localhost|127\.0\.0\.1|0\.0\.0\.0|\[?::1\]?)(:\d+)?$/.test(targetHost);
|
|
434
|
+
};
|
|
435
|
+
function isReferenceType(val) {
|
|
436
|
+
return typeof val === "object" && !isNull(val) || isFunction(val);
|
|
437
|
+
}
|
|
438
|
+
var isScriptSafe = (script) => {
|
|
439
|
+
if (isString(script)) {
|
|
440
|
+
const unsafeKeywords = [
|
|
441
|
+
"eval",
|
|
442
|
+
// 动态执行代码,极高风险
|
|
443
|
+
"new Function",
|
|
444
|
+
// 动态创建函数,高风险
|
|
445
|
+
"setTimeout",
|
|
446
|
+
// 可能被用于延迟恶意代码执行
|
|
447
|
+
"setInterval",
|
|
448
|
+
// 可能被用于持续执行恶意代码
|
|
449
|
+
"window",
|
|
450
|
+
// 访问全局窗口对象
|
|
451
|
+
"document",
|
|
452
|
+
// 访问文档对象,可能操作DOM
|
|
453
|
+
"location",
|
|
454
|
+
// 可能被用于钓鱼攻击或重定向
|
|
455
|
+
"navigator",
|
|
456
|
+
// 访问浏览器信息
|
|
457
|
+
"localStorage",
|
|
458
|
+
// 访问本地存储数据
|
|
459
|
+
"sessionStorage",
|
|
460
|
+
// 访问会话存储数据
|
|
461
|
+
"history",
|
|
462
|
+
// 可能被用于操纵浏览历史
|
|
463
|
+
"fetch",
|
|
464
|
+
// 发起网络请求
|
|
465
|
+
"XMLHttpRequest",
|
|
466
|
+
// 发起 AJAX 请求
|
|
467
|
+
"WebSocket",
|
|
468
|
+
// 建立 WebSocket 连接
|
|
469
|
+
"alert",
|
|
470
|
+
// 弹出警告框(可能用于社会工程学攻击)
|
|
471
|
+
"confirm",
|
|
472
|
+
// 弹出确认框(可能用于社会工程学攻击)
|
|
473
|
+
"prompt"
|
|
474
|
+
// 弹出输入框(可能用于社会工程学攻击)
|
|
475
|
+
// 'console' // 控制台对象(通常被注释掉)
|
|
476
|
+
];
|
|
477
|
+
const regex = new RegExp(`\\b(${unsafeKeywords.join("|")})\\b`, "i");
|
|
478
|
+
if (regex.test(script)) {
|
|
479
|
+
return false;
|
|
480
|
+
}
|
|
481
|
+
return true;
|
|
482
|
+
}
|
|
483
|
+
return false;
|
|
484
|
+
};
|
|
485
|
+
var isJson = (text = "") => {
|
|
486
|
+
try {
|
|
487
|
+
const parsed = JSON.parse(text);
|
|
488
|
+
return isObject(parsed) || isArray(parsed);
|
|
489
|
+
} catch {
|
|
490
|
+
return false;
|
|
491
|
+
}
|
|
432
492
|
};
|
|
433
493
|
|
|
434
494
|
// src/hooks/iframe/useIframeRelayBridge.ts
|
|
435
|
-
|
|
495
|
+
var useIframeRelayBridge_default = (allowedOrigins = ["*"]) => {
|
|
436
496
|
const handlers = React16.useRef({});
|
|
437
497
|
React16.useEffect(() => {
|
|
438
498
|
const onMessage = (evt) => {
|
|
@@ -459,8 +519,64 @@ function useIframeRelayBridge(allowedOrigins = ["*"]) {
|
|
|
459
519
|
handlers.current[type] = (handlers.current[type] || []).filter((fn) => fn !== handler);
|
|
460
520
|
}
|
|
461
521
|
return { on, off };
|
|
462
|
-
}
|
|
463
|
-
|
|
522
|
+
};
|
|
523
|
+
var useAutoRefresh_default = (listenValue, shouldRefresh, callback, delay = 1e4) => {
|
|
524
|
+
const timerRef = React16.useRef(null);
|
|
525
|
+
const shouldRefreshRef = React16.useRef(shouldRefresh);
|
|
526
|
+
const callbackRef = React16.useRef(callback);
|
|
527
|
+
const [num, setNum] = React16.useState(0);
|
|
528
|
+
React16.useEffect(() => {
|
|
529
|
+
shouldRefreshRef.current = shouldRefresh;
|
|
530
|
+
callbackRef.current = callback;
|
|
531
|
+
}, [shouldRefresh, callback]);
|
|
532
|
+
React16.useEffect(() => {
|
|
533
|
+
if (timerRef.current) {
|
|
534
|
+
clearTimeout(timerRef.current);
|
|
535
|
+
timerRef.current = null;
|
|
536
|
+
}
|
|
537
|
+
if (shouldRefreshRef.current(listenValue)) {
|
|
538
|
+
timerRef.current = setTimeout(async () => {
|
|
539
|
+
await callbackRef.current();
|
|
540
|
+
setNum(num + 1);
|
|
541
|
+
}, delay);
|
|
542
|
+
}
|
|
543
|
+
return () => {
|
|
544
|
+
if (timerRef.current) {
|
|
545
|
+
clearTimeout(timerRef.current);
|
|
546
|
+
}
|
|
547
|
+
};
|
|
548
|
+
}, [listenValue, delay, num]);
|
|
549
|
+
};
|
|
550
|
+
var useCountDown_default = (callback) => {
|
|
551
|
+
const [count, setCount] = React16.useState(0);
|
|
552
|
+
const [startCount, setStartCount] = React16.useState(0);
|
|
553
|
+
const timer = React16.useRef(null);
|
|
554
|
+
const pause = () => {
|
|
555
|
+
clearInterval(timer.current);
|
|
556
|
+
timer.current = null;
|
|
557
|
+
};
|
|
558
|
+
const start = (initialValue = 60) => {
|
|
559
|
+
pause();
|
|
560
|
+
setCount(initialValue);
|
|
561
|
+
setStartCount((startCount2) => startCount2 + 1);
|
|
562
|
+
timer.current = setInterval(() => {
|
|
563
|
+
setCount((count2) => count2 - 1);
|
|
564
|
+
}, 1e3);
|
|
565
|
+
};
|
|
566
|
+
React16.useEffect(() => {
|
|
567
|
+
return () => {
|
|
568
|
+
pause();
|
|
569
|
+
};
|
|
570
|
+
}, []);
|
|
571
|
+
React16.useEffect(() => {
|
|
572
|
+
if (count === 0 && startCount !== 0) {
|
|
573
|
+
pause();
|
|
574
|
+
callback?.();
|
|
575
|
+
}
|
|
576
|
+
}, [count]);
|
|
577
|
+
return { count, start, pause, startCount };
|
|
578
|
+
};
|
|
579
|
+
var useCreateValtioContext_default = () => {
|
|
464
580
|
const Context = React16.createContext(null);
|
|
465
581
|
const ValtioProvider = ({ store, children }) => /* @__PURE__ */ jsxRuntime.jsx(Context.Provider, { value: store, children });
|
|
466
582
|
const useValtioStore = () => {
|
|
@@ -474,8 +590,8 @@ function useCreateValtioContext() {
|
|
|
474
590
|
// 导出 Context 以便外部使用
|
|
475
591
|
Context
|
|
476
592
|
};
|
|
477
|
-
}
|
|
478
|
-
|
|
593
|
+
};
|
|
594
|
+
var useDebounce_default = (func, wait = 400) => {
|
|
479
595
|
const { current } = React16.useRef({ func, timeOut: null });
|
|
480
596
|
React16.useEffect(() => {
|
|
481
597
|
current.func = func;
|
|
@@ -510,97 +626,155 @@ function useDebounce(func, wait = 400) {
|
|
|
510
626
|
debounce.flush = flush;
|
|
511
627
|
debounce.cancel = cancel;
|
|
512
628
|
return React16.useCallback(debounce, []);
|
|
513
|
-
}
|
|
514
|
-
var deepCopy = (obj,
|
|
515
|
-
if (
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
result[key] = deepCopy(obj[key], isJson);
|
|
629
|
+
};
|
|
630
|
+
var deepCopy = (obj, isJson2 = true) => {
|
|
631
|
+
if (isJson2) {
|
|
632
|
+
try {
|
|
633
|
+
return JSON.parse(JSON.stringify(obj));
|
|
634
|
+
} catch {
|
|
635
|
+
return deepCopy(obj, false);
|
|
521
636
|
}
|
|
522
637
|
}
|
|
523
|
-
|
|
638
|
+
const visited = /* @__PURE__ */ new WeakMap();
|
|
639
|
+
const cloneRecursively = (value) => {
|
|
640
|
+
if (isNullOrUnDef(value)) return value;
|
|
641
|
+
const type = typeof value;
|
|
642
|
+
if (type !== "object") return value;
|
|
643
|
+
if (visited.has(value)) {
|
|
644
|
+
return visited.get(value);
|
|
645
|
+
}
|
|
646
|
+
if (isDate(value)) return new Date(value);
|
|
647
|
+
if (isRegExp(value)) return new RegExp(value);
|
|
648
|
+
if (isMap(value)) {
|
|
649
|
+
const clonedMap = /* @__PURE__ */ new Map();
|
|
650
|
+
visited.set(value, clonedMap);
|
|
651
|
+
for (const [k, v] of value.entries()) {
|
|
652
|
+
clonedMap.set(cloneRecursively(k), cloneRecursively(v));
|
|
653
|
+
}
|
|
654
|
+
return clonedMap;
|
|
655
|
+
}
|
|
656
|
+
if (isSet(value)) {
|
|
657
|
+
const clonedSet = /* @__PURE__ */ new Set();
|
|
658
|
+
visited.set(value, clonedSet);
|
|
659
|
+
for (const v of value.values()) {
|
|
660
|
+
clonedSet.add(cloneRecursively(v));
|
|
661
|
+
}
|
|
662
|
+
return clonedSet;
|
|
663
|
+
}
|
|
664
|
+
if (isArray(value)) {
|
|
665
|
+
const result = [];
|
|
666
|
+
visited.set(value, result);
|
|
667
|
+
for (let i = 0; i < value.length; i++) {
|
|
668
|
+
result[i] = cloneRecursively(value[i]);
|
|
669
|
+
}
|
|
670
|
+
return result;
|
|
671
|
+
} else {
|
|
672
|
+
const result = {};
|
|
673
|
+
visited.set(value, result);
|
|
674
|
+
for (const key in value) {
|
|
675
|
+
if (Object.prototype.hasOwnProperty.call(value, key)) {
|
|
676
|
+
result[key] = cloneRecursively(value[key]);
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
return result;
|
|
680
|
+
}
|
|
681
|
+
};
|
|
682
|
+
return cloneRecursively(obj);
|
|
524
683
|
};
|
|
525
684
|
function deepEqual(a, b) {
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
685
|
+
const visited = /* @__PURE__ */ new WeakMap();
|
|
686
|
+
const isEqual = (x, y) => {
|
|
687
|
+
if (Object.is(x, y)) return true;
|
|
688
|
+
if (typeof x === "object" && !isNull(x) && typeof y === "object" && !isNull(y)) {
|
|
689
|
+
if (visited.has(x)) {
|
|
690
|
+
if (visited.get(x).has(y)) return true;
|
|
691
|
+
}
|
|
692
|
+
if (!visited.has(x)) visited.set(x, /* @__PURE__ */ new WeakSet());
|
|
693
|
+
visited.get(x).add(y);
|
|
694
|
+
if (!visited.has(y)) visited.set(y, /* @__PURE__ */ new WeakSet());
|
|
695
|
+
visited.get(y).add(x);
|
|
533
696
|
}
|
|
534
|
-
return
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
697
|
+
if (isDate(x) && isDate(y)) return x.getTime() === y.getTime();
|
|
698
|
+
if (isRegExp(x) && isRegExp(y)) return x.toString() === y.toString();
|
|
699
|
+
if (isMap(x) && isMap(y)) {
|
|
700
|
+
if (x.size !== y.size) return false;
|
|
701
|
+
for (const [key, val] of x.entries()) {
|
|
702
|
+
if (!y.has(key)) return false;
|
|
703
|
+
if (!isEqual(val, y.get(key))) return false;
|
|
704
|
+
}
|
|
705
|
+
return true;
|
|
540
706
|
}
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
if (isObject(a) && isObject(b)) {
|
|
549
|
-
const keysA = Object.keys(a);
|
|
550
|
-
const keysB = Object.keys(b);
|
|
551
|
-
if (keysA.length !== keysB.length) return false;
|
|
552
|
-
for (const key of keysA) {
|
|
553
|
-
if (!deepEqual(a[key], b[key])) return false;
|
|
707
|
+
if (isSet(x) && isSet(y)) {
|
|
708
|
+
if (x.size !== y.size) return false;
|
|
709
|
+
for (const val of x.values()) {
|
|
710
|
+
const hasEqual = Array.from(y.values()).some((bVal) => isEqual(val, bVal));
|
|
711
|
+
if (!hasEqual) return false;
|
|
712
|
+
}
|
|
713
|
+
return true;
|
|
554
714
|
}
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
715
|
+
if (isArray(x) && isArray(y)) {
|
|
716
|
+
if (x.length !== y.length) return false;
|
|
717
|
+
return x.every((item, i) => isEqual(item, y[i]));
|
|
718
|
+
}
|
|
719
|
+
if (isFunction(x) && isFunction(y)) return x === y;
|
|
720
|
+
if (isObject(x) && isObject(y)) {
|
|
721
|
+
const keysA = Object.keys(x);
|
|
722
|
+
const keysB = Object.keys(y);
|
|
723
|
+
if (keysA.length !== keysB.length) return false;
|
|
724
|
+
for (const key of keysA) {
|
|
725
|
+
if (!keysB.includes(key)) return false;
|
|
726
|
+
if (!isEqual(x[key], y[key])) return false;
|
|
727
|
+
}
|
|
728
|
+
return true;
|
|
729
|
+
}
|
|
730
|
+
return false;
|
|
731
|
+
};
|
|
732
|
+
return isEqual(a, b);
|
|
558
733
|
}
|
|
559
734
|
var deepMerge = (base, override) => {
|
|
735
|
+
if (!base || !override) {
|
|
736
|
+
return base || override || {};
|
|
737
|
+
}
|
|
560
738
|
const result = { ...base };
|
|
561
739
|
Object.keys(override || {}).forEach((key) => {
|
|
562
740
|
const baseValue = base[key];
|
|
563
741
|
const overrideValue = override[key];
|
|
564
|
-
if (
|
|
742
|
+
if (isObject(baseValue) && isObject(overrideValue)) {
|
|
565
743
|
result[key] = deepMerge(baseValue, overrideValue);
|
|
566
|
-
} else if (overrideValue
|
|
744
|
+
} else if (isDef(overrideValue)) {
|
|
567
745
|
result[key] = overrideValue;
|
|
568
746
|
}
|
|
569
747
|
});
|
|
570
748
|
return result;
|
|
571
749
|
};
|
|
572
|
-
var objToOptions = (obj) => {
|
|
573
|
-
return Object.keys(obj).map((key) => ({
|
|
750
|
+
var objToOptions = (obj, filter) => {
|
|
751
|
+
return Object.keys(obj).filter((key) => !filter || filter(key, obj[key])).map((key) => ({
|
|
574
752
|
label: obj[key],
|
|
575
|
-
value: Number(key)
|
|
753
|
+
value: isNaN(Number(key)) ? key : Number(key)
|
|
576
754
|
}));
|
|
577
755
|
};
|
|
578
756
|
var arrToObj = (arr = [], key) => {
|
|
579
757
|
const obj = {};
|
|
580
|
-
arr
|
|
758
|
+
arr.forEach((item) => {
|
|
581
759
|
obj[item[key]] = item;
|
|
582
760
|
});
|
|
583
761
|
return obj;
|
|
584
762
|
};
|
|
585
|
-
var
|
|
763
|
+
var setInterval2 = (fn, t) => {
|
|
586
764
|
let timer = null;
|
|
587
|
-
let
|
|
588
|
-
const
|
|
765
|
+
let running = true;
|
|
766
|
+
const loop = () => {
|
|
589
767
|
timer = setTimeout(async () => {
|
|
590
|
-
if (
|
|
591
|
-
return;
|
|
592
|
-
}
|
|
768
|
+
if (!running) return;
|
|
593
769
|
await fn();
|
|
594
|
-
if (
|
|
595
|
-
interval();
|
|
596
|
-
}
|
|
770
|
+
if (running) loop();
|
|
597
771
|
}, t);
|
|
598
772
|
};
|
|
599
|
-
|
|
773
|
+
loop();
|
|
600
774
|
return {
|
|
601
|
-
isRun: () =>
|
|
775
|
+
isRun: () => running,
|
|
602
776
|
cancel: () => {
|
|
603
|
-
|
|
777
|
+
running = false;
|
|
604
778
|
if (timer) {
|
|
605
779
|
clearTimeout(timer);
|
|
606
780
|
timer = null;
|
|
@@ -609,18 +783,13 @@ var nsSetInterval = (fn, t) => {
|
|
|
609
783
|
};
|
|
610
784
|
};
|
|
611
785
|
var genNonDuplicateID = () => {
|
|
612
|
-
|
|
613
|
-
idStr += Math.random().toString(36).substr(2);
|
|
614
|
-
return idStr;
|
|
786
|
+
return crypto.randomUUID();
|
|
615
787
|
};
|
|
616
|
-
var copyText = (text, prompt = "\u590D\u5236\u6210\u529F") => {
|
|
617
|
-
|
|
618
|
-
navigator.clipboard.writeText(text)
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
}
|
|
622
|
-
});
|
|
623
|
-
} else {
|
|
788
|
+
var copyText = async (text, prompt = "\u590D\u5236\u6210\u529F") => {
|
|
789
|
+
try {
|
|
790
|
+
await navigator.clipboard.writeText(text);
|
|
791
|
+
if (prompt) antd.message.success(prompt);
|
|
792
|
+
} catch (e) {
|
|
624
793
|
const textArea = document.createElement("textarea");
|
|
625
794
|
textArea.value = text;
|
|
626
795
|
textArea.style.position = "absolute";
|
|
@@ -630,10 +799,8 @@ var copyText = (text, prompt = "\u590D\u5236\u6210\u529F") => {
|
|
|
630
799
|
document.body.appendChild(textArea);
|
|
631
800
|
textArea.focus();
|
|
632
801
|
textArea.select();
|
|
633
|
-
const
|
|
634
|
-
if (
|
|
635
|
-
antd.message.success(prompt);
|
|
636
|
-
}
|
|
802
|
+
const ok = document.execCommand("copy");
|
|
803
|
+
if (ok && prompt) antd.message.success(prompt);
|
|
637
804
|
textArea.remove();
|
|
638
805
|
}
|
|
639
806
|
};
|
|
@@ -658,25 +825,71 @@ var getFileName = (filePath) => {
|
|
|
658
825
|
var getFileSuffixName = (fileName) => {
|
|
659
826
|
return fileName.split(".").pop() || "";
|
|
660
827
|
};
|
|
661
|
-
var
|
|
828
|
+
var convertNewlineToBr = (con) => {
|
|
662
829
|
return con ? con.replace(/\r\n/g, "\n").replace(/\n/g, "<br/>") : "";
|
|
663
830
|
};
|
|
664
|
-
var
|
|
665
|
-
const
|
|
831
|
+
var getAllUrlParams = (url = "") => {
|
|
832
|
+
const result = {};
|
|
833
|
+
if (!url) return result;
|
|
834
|
+
let query = "";
|
|
835
|
+
try {
|
|
836
|
+
const u = new URL(url, "http://dummy.com");
|
|
837
|
+
query = u.search;
|
|
838
|
+
} catch {
|
|
839
|
+
const qIndex = url.indexOf("?");
|
|
840
|
+
if (qIndex === -1) return result;
|
|
841
|
+
query = url.slice(qIndex);
|
|
842
|
+
}
|
|
843
|
+
const params = new URLSearchParams(query);
|
|
844
|
+
const seen = /* @__PURE__ */ new Set();
|
|
845
|
+
for (const [key, value] of params.entries()) {
|
|
846
|
+
if (seen.has(key)) {
|
|
847
|
+
if (isArray(result[key])) {
|
|
848
|
+
result[key].push(value);
|
|
849
|
+
} else {
|
|
850
|
+
result[key] = [result[key], value];
|
|
851
|
+
}
|
|
852
|
+
} else {
|
|
853
|
+
result[key] = value;
|
|
854
|
+
seen.add(key);
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
return result;
|
|
858
|
+
};
|
|
859
|
+
var buildUrlParams = (obj, url, format = "repeat") => {
|
|
860
|
+
if (!isObject(obj)) return url ?? "";
|
|
861
|
+
let base = url || "";
|
|
862
|
+
let hash = "";
|
|
863
|
+
if (base.includes("#")) {
|
|
864
|
+
const i = base.indexOf("#");
|
|
865
|
+
hash = base.slice(i);
|
|
866
|
+
base = base.slice(0, i);
|
|
867
|
+
}
|
|
868
|
+
const originalParams = getAllUrlParams(base);
|
|
869
|
+
const merged = { ...originalParams, ...obj };
|
|
870
|
+
const params = new URLSearchParams();
|
|
871
|
+
for (const [key, value] of Object.entries(merged)) {
|
|
872
|
+
if (isNullOrUnDef(value)) continue;
|
|
666
873
|
if (isArray(value)) {
|
|
667
|
-
|
|
874
|
+
const list = value.filter((v) => !isNullOrUnDef(v)).map(String);
|
|
875
|
+
if (list.length === 0) continue;
|
|
876
|
+
if (format === "repeat") {
|
|
877
|
+
list.forEach((v) => params.append(key, v));
|
|
878
|
+
} else {
|
|
879
|
+
params.set(key, list.join(","));
|
|
880
|
+
}
|
|
881
|
+
} else {
|
|
882
|
+
params.set(key, String(value));
|
|
668
883
|
}
|
|
669
|
-
return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
|
|
670
|
-
}).join("&");
|
|
671
|
-
if (url) {
|
|
672
|
-
const separator = url.includes("?") ? "&" : "?";
|
|
673
|
-
return `${url}${separator}${params}`;
|
|
674
884
|
}
|
|
675
|
-
|
|
885
|
+
const query = params.toString();
|
|
886
|
+
if (!base) return query;
|
|
887
|
+
const cleanBase = base.split("?")[0];
|
|
888
|
+
return `${cleanBase}${query ? `?${query}` : ""}${hash}`;
|
|
676
889
|
};
|
|
677
890
|
var downloadFile = (url, name) => {
|
|
678
891
|
const a = document.createElement("a");
|
|
679
|
-
a.download = name || "\
|
|
892
|
+
a.download = name || "\u6587\u4EF6";
|
|
680
893
|
a.href = url;
|
|
681
894
|
document.body.appendChild(a);
|
|
682
895
|
a.click();
|
|
@@ -684,31 +897,28 @@ var downloadFile = (url, name) => {
|
|
|
684
897
|
window.URL.revokeObjectURL(url);
|
|
685
898
|
};
|
|
686
899
|
var addUrlLastSlash = (url = "") => {
|
|
687
|
-
const u = new URL(url, "
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
pathname += "/";
|
|
691
|
-
}
|
|
692
|
-
u.pathname = pathname;
|
|
693
|
-
return `${isExternal(url) ? u.origin : ""}${u.pathname}${u.search}${u.hash}`;
|
|
900
|
+
const u = new URL(url, "http://dummy.com");
|
|
901
|
+
if (!u.pathname.endsWith("/")) u.pathname += "/";
|
|
902
|
+
return isExternal(url) ? u.toString() : `${u.pathname}${u.search}${u.hash}`;
|
|
694
903
|
};
|
|
695
|
-
var
|
|
696
|
-
if (!preHref) return url;
|
|
697
|
-
let newUrl = "";
|
|
698
|
-
const preHrefUrl = new URL(preHref);
|
|
904
|
+
var setUrlMainSource = (url, preHref, defaultMainSource) => {
|
|
699
905
|
const urlParts = url.split("?");
|
|
700
906
|
const srcParams = new URLSearchParams(urlParts[1] || "");
|
|
701
907
|
if (srcParams.has("mainSource")) {
|
|
702
|
-
|
|
703
|
-
}
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
908
|
+
return url;
|
|
909
|
+
}
|
|
910
|
+
let mainSourceValue = defaultMainSource;
|
|
911
|
+
if (preHref) {
|
|
912
|
+
try {
|
|
913
|
+
const preHrefUrl = new URL(preHref, "http://dummy.com");
|
|
914
|
+
const preMainSource = preHrefUrl.searchParams.get("mainSource");
|
|
915
|
+
if (preMainSource) {
|
|
916
|
+
mainSourceValue = preMainSource;
|
|
917
|
+
}
|
|
918
|
+
} catch (e) {
|
|
709
919
|
}
|
|
710
920
|
}
|
|
711
|
-
return
|
|
921
|
+
return buildUrlParams({ mainSource: mainSourceValue }, url);
|
|
712
922
|
};
|
|
713
923
|
var getWebSocketUrl = (path, customHost) => {
|
|
714
924
|
const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
|
|
@@ -732,9 +942,178 @@ function transform(source, fieldMap) {
|
|
|
732
942
|
function transforms(sources, fieldMap) {
|
|
733
943
|
return sources?.map((source) => transform(source, fieldMap)) || [];
|
|
734
944
|
}
|
|
945
|
+
var convertCurrency = (money = "") => {
|
|
946
|
+
let newMoney = money;
|
|
947
|
+
const cnNums = ["\u96F6", "\u58F9", "\u8D30", "\u53C1", "\u8086", "\u4F0D", "\u9646", "\u67D2", "\u634C", "\u7396"];
|
|
948
|
+
const cnIntRadice = ["", "\u62FE", "\u4F70", "\u4EDF"];
|
|
949
|
+
const cnIntUnits = ["", "\u4E07", "\u4EBF", "\u5146"];
|
|
950
|
+
const cnDecUnits = ["\u89D2", "\u5206", "\u6BEB", "\u5398"];
|
|
951
|
+
const cnInteger = "\u6574";
|
|
952
|
+
const cnIntLast = "\u5706";
|
|
953
|
+
const minus2 = "(\u8D1F\u6570)";
|
|
954
|
+
let isMinus = false;
|
|
955
|
+
const maxNum = 1e15;
|
|
956
|
+
let integerNum;
|
|
957
|
+
let decimalNum;
|
|
958
|
+
let chineseStr = "";
|
|
959
|
+
let parts;
|
|
960
|
+
if (newMoney === "") {
|
|
961
|
+
return "";
|
|
962
|
+
}
|
|
963
|
+
newMoney = isString(newMoney) ? parseFloat(newMoney) : newMoney;
|
|
964
|
+
if (newMoney < 0) {
|
|
965
|
+
isMinus = true;
|
|
966
|
+
newMoney = Math.abs(newMoney);
|
|
967
|
+
}
|
|
968
|
+
if (newMoney >= maxNum) {
|
|
969
|
+
return "";
|
|
970
|
+
}
|
|
971
|
+
if (newMoney === 0) {
|
|
972
|
+
chineseStr = cnNums[0] + cnIntLast + cnInteger;
|
|
973
|
+
return chineseStr;
|
|
974
|
+
}
|
|
975
|
+
newMoney = newMoney.toString();
|
|
976
|
+
if (newMoney.indexOf(".") === -1) {
|
|
977
|
+
integerNum = newMoney;
|
|
978
|
+
decimalNum = "";
|
|
979
|
+
} else {
|
|
980
|
+
parts = newMoney.split(".");
|
|
981
|
+
integerNum = parts[0];
|
|
982
|
+
decimalNum = parts[1].substr(0, 4);
|
|
983
|
+
}
|
|
984
|
+
if (parseInt(integerNum, 10) > 0) {
|
|
985
|
+
let zeroCount = 0;
|
|
986
|
+
const IntLen = integerNum.length;
|
|
987
|
+
for (let i = 0; i < IntLen; i++) {
|
|
988
|
+
const n = integerNum.substr(i, 1);
|
|
989
|
+
const p = IntLen - i - 1;
|
|
990
|
+
const q = p / 4;
|
|
991
|
+
const m = p % 4;
|
|
992
|
+
if (n === "0") {
|
|
993
|
+
zeroCount++;
|
|
994
|
+
} else {
|
|
995
|
+
if (zeroCount > 0) {
|
|
996
|
+
chineseStr += cnNums[0];
|
|
997
|
+
}
|
|
998
|
+
zeroCount = 0;
|
|
999
|
+
chineseStr += cnNums[parseInt(n)] + cnIntRadice[m];
|
|
1000
|
+
}
|
|
1001
|
+
if (m === 0 && zeroCount < 4) {
|
|
1002
|
+
chineseStr += cnIntUnits[q];
|
|
1003
|
+
}
|
|
1004
|
+
}
|
|
1005
|
+
chineseStr += cnIntLast;
|
|
1006
|
+
}
|
|
1007
|
+
if (decimalNum !== "") {
|
|
1008
|
+
const decLen = decimalNum.length;
|
|
1009
|
+
for (let i = 0; i < decLen; i++) {
|
|
1010
|
+
const n = decimalNum.substr(i, 1);
|
|
1011
|
+
if (n !== "0") {
|
|
1012
|
+
chineseStr += cnNums[Number(n)] + cnDecUnits[i];
|
|
1013
|
+
} else {
|
|
1014
|
+
chineseStr += cnNums[0];
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
}
|
|
1018
|
+
if (chineseStr === "") {
|
|
1019
|
+
chineseStr += cnNums[0] + cnIntLast + cnInteger;
|
|
1020
|
+
} else if (decimalNum === "") {
|
|
1021
|
+
chineseStr += cnInteger;
|
|
1022
|
+
}
|
|
1023
|
+
if (isMinus) {
|
|
1024
|
+
chineseStr = minus2 + chineseStr;
|
|
1025
|
+
}
|
|
1026
|
+
return chineseStr;
|
|
1027
|
+
};
|
|
1028
|
+
var getRowSpanCount = (data, key, target) => {
|
|
1029
|
+
if (!Array.isArray(data)) return 1;
|
|
1030
|
+
const newData = data.map((_) => _[key]);
|
|
1031
|
+
let preValue = newData[0];
|
|
1032
|
+
const res = [[preValue]];
|
|
1033
|
+
let index = 0;
|
|
1034
|
+
for (let i = 1; i < newData.length; i++) {
|
|
1035
|
+
if (newData[i] === preValue) {
|
|
1036
|
+
res[index].push(newData[i]);
|
|
1037
|
+
} else {
|
|
1038
|
+
index += 1;
|
|
1039
|
+
res[index] = [];
|
|
1040
|
+
res[index].push(newData[i]);
|
|
1041
|
+
preValue = newData[i];
|
|
1042
|
+
}
|
|
1043
|
+
}
|
|
1044
|
+
const arr = [];
|
|
1045
|
+
res.forEach((_) => {
|
|
1046
|
+
const len = _.length;
|
|
1047
|
+
for (let i = 0; i < len; i++) {
|
|
1048
|
+
arr.push(i === 0 ? len : 0);
|
|
1049
|
+
}
|
|
1050
|
+
});
|
|
1051
|
+
return arr[target];
|
|
1052
|
+
};
|
|
1053
|
+
var importThirdPartyFile = (document2, path) => {
|
|
1054
|
+
const type = path.endsWith(".js") ? "script" : "link";
|
|
1055
|
+
const element = type === "script" ? document2.createElement("script") : document2.createElement("link");
|
|
1056
|
+
if (type === "script") {
|
|
1057
|
+
const scriptElement = element;
|
|
1058
|
+
scriptElement.async = true;
|
|
1059
|
+
scriptElement.src = path;
|
|
1060
|
+
} else {
|
|
1061
|
+
const linkElement = element;
|
|
1062
|
+
linkElement.rel = "stylesheet";
|
|
1063
|
+
linkElement.type = "text/css";
|
|
1064
|
+
linkElement.href = path;
|
|
1065
|
+
}
|
|
1066
|
+
if (document2.head) {
|
|
1067
|
+
document2.head.appendChild(element);
|
|
1068
|
+
}
|
|
1069
|
+
};
|
|
1070
|
+
var processItemList = (items) => {
|
|
1071
|
+
return items.filter((item) => item.hidden !== true).map((item, index) => ({ key: index, ...item }));
|
|
1072
|
+
};
|
|
1073
|
+
var executeScript = (script, params) => {
|
|
1074
|
+
if (isScriptSafe(script)) {
|
|
1075
|
+
const func = new Function(
|
|
1076
|
+
...Object.keys(params),
|
|
1077
|
+
// 参数列表
|
|
1078
|
+
script
|
|
1079
|
+
// 脚本字符串
|
|
1080
|
+
);
|
|
1081
|
+
try {
|
|
1082
|
+
return func(...Object.values(params));
|
|
1083
|
+
} catch (error) {
|
|
1084
|
+
console.error("Error executing script:", error);
|
|
1085
|
+
}
|
|
1086
|
+
} else {
|
|
1087
|
+
console.error("unsafe script");
|
|
1088
|
+
}
|
|
1089
|
+
};
|
|
1090
|
+
function aesEncrypt(data, key) {
|
|
1091
|
+
if (!key) throw new Error("AES Encrypt: key is required");
|
|
1092
|
+
if (isNullOrUnDef(data)) return "";
|
|
1093
|
+
try {
|
|
1094
|
+
const text = JSON.stringify(data);
|
|
1095
|
+
return AES__default.default.encrypt(text, key.trim()).toString();
|
|
1096
|
+
} catch (err) {
|
|
1097
|
+
console.error("AES Encrypt error:", err);
|
|
1098
|
+
throw new Error("AES Encrypt failed");
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
function aesDecrypt(data, key) {
|
|
1102
|
+
if (!key) throw new Error("AES Decrypt: key is required");
|
|
1103
|
+
if (!data) return null;
|
|
1104
|
+
try {
|
|
1105
|
+
const bytes = AES__default.default.decrypt(data, key.trim());
|
|
1106
|
+
const decoded = bytes.toString(encUtf8__default.default);
|
|
1107
|
+
if (!decoded) return null;
|
|
1108
|
+
return JSON.parse(decoded);
|
|
1109
|
+
} catch (err) {
|
|
1110
|
+
console.error("AES Decrypt error:", err);
|
|
1111
|
+
return null;
|
|
1112
|
+
}
|
|
1113
|
+
}
|
|
735
1114
|
|
|
736
1115
|
// src/hooks/useDeepEffect.ts
|
|
737
|
-
|
|
1116
|
+
var useDeepEffect_default = (effect, deps) => {
|
|
738
1117
|
const prevDepsRef = React16.useRef();
|
|
739
1118
|
const depsChanged = !prevDepsRef.current || deps.length !== prevDepsRef.current.length || deps.some((dep, i) => !deepEqual(dep, prevDepsRef.current[i]));
|
|
740
1119
|
React16.useEffect(() => {
|
|
@@ -743,8 +1122,8 @@ function useDeepEffect(effect, deps) {
|
|
|
743
1122
|
return effect();
|
|
744
1123
|
}
|
|
745
1124
|
}, [depsChanged]);
|
|
746
|
-
}
|
|
747
|
-
|
|
1125
|
+
};
|
|
1126
|
+
var useRefState_default = (init) => {
|
|
748
1127
|
const [state, setState] = React16.useState(init);
|
|
749
1128
|
const stateRef = React16.useRef(init);
|
|
750
1129
|
const setProxy = (newVal) => {
|
|
@@ -753,8 +1132,8 @@ function useRefState(init) {
|
|
|
753
1132
|
};
|
|
754
1133
|
const getState = () => stateRef.current;
|
|
755
1134
|
return [state, setProxy, getState];
|
|
756
|
-
}
|
|
757
|
-
var
|
|
1135
|
+
};
|
|
1136
|
+
var useSyncInput_default = (storeValue, setStoreValue) => {
|
|
758
1137
|
const [inputValue, setInputValue] = React16.useState(storeValue);
|
|
759
1138
|
React16.useEffect(() => {
|
|
760
1139
|
if (storeValue !== inputValue) {
|
|
@@ -770,7 +1149,7 @@ var useSyncInput = (storeValue, setStoreValue) => {
|
|
|
770
1149
|
setInputValue: handleValueChange
|
|
771
1150
|
};
|
|
772
1151
|
};
|
|
773
|
-
|
|
1152
|
+
var useThrottle_default = (func, wait) => {
|
|
774
1153
|
const { current } = React16.useRef({ func, timeOut: null });
|
|
775
1154
|
React16.useEffect(() => {
|
|
776
1155
|
current.func = func;
|
|
@@ -804,18 +1183,20 @@ function useThrottle(func, wait) {
|
|
|
804
1183
|
throttle.flush = flush;
|
|
805
1184
|
throttle.cancel = cancel;
|
|
806
1185
|
return React16.useCallback(throttle, []);
|
|
807
|
-
}
|
|
1186
|
+
};
|
|
808
1187
|
dayjs__default.default.extend(relativeTime__default.default);
|
|
809
|
-
var
|
|
810
|
-
var
|
|
811
|
-
var
|
|
812
|
-
var
|
|
1188
|
+
var DEFAULT_DATE_TIME_FORMAT = "YYYY-MM-DD HH:mm:ss";
|
|
1189
|
+
var DEFAULT_DATE_FORMAT = "YYYY-MM-DD";
|
|
1190
|
+
var DEFAULT_YEAR_MONTH_FORMAT = "YYYY\u5E74MM\u6708";
|
|
1191
|
+
var DEFAULT_YEAR_MONTH_DAY_FORMAT = "YYYY\u5E74MM\u6708DD\u65E5";
|
|
1192
|
+
var DEFAULT_UNIT = "date";
|
|
1193
|
+
var getStartOfTimestamp = (date, unit = DEFAULT_UNIT) => {
|
|
813
1194
|
return dayjs__default.default(date).startOf(unit).valueOf();
|
|
814
1195
|
};
|
|
815
|
-
var getEndOfTimestamp = (date, unit =
|
|
1196
|
+
var getEndOfTimestamp = (date, unit = DEFAULT_UNIT) => {
|
|
816
1197
|
return dayjs__default.default(date).endOf(unit).valueOf();
|
|
817
1198
|
};
|
|
818
|
-
var formatDate = (date, fmt =
|
|
1199
|
+
var formatDate = (date, fmt = DEFAULT_DATE_TIME_FORMAT) => {
|
|
819
1200
|
if (date) {
|
|
820
1201
|
return dayjs__default.default(date).format(fmt);
|
|
821
1202
|
}
|
|
@@ -827,33 +1208,6 @@ var getTimestamp = (date) => {
|
|
|
827
1208
|
var isExpire = (date) => {
|
|
828
1209
|
return dayjs__default.default(date).isBefore(getStartOfTimestamp());
|
|
829
1210
|
};
|
|
830
|
-
var USER_KEY = "NS-USER";
|
|
831
|
-
function setCurrentUser(userInfo) {
|
|
832
|
-
const cipherText = AES__default.default.encrypt(JSON.stringify(userInfo), "((#II))").toString();
|
|
833
|
-
sessionStorage.setItem(USER_KEY, cipherText);
|
|
834
|
-
}
|
|
835
|
-
function getCurrentUser() {
|
|
836
|
-
const userInfoJson = sessionStorage.getItem(USER_KEY);
|
|
837
|
-
if (userInfoJson) {
|
|
838
|
-
const bytes = AES__default.default.decrypt(userInfoJson, "((#II))");
|
|
839
|
-
const originalText = bytes.toString(encUtf8__default.default);
|
|
840
|
-
return JSON.parse(originalText);
|
|
841
|
-
}
|
|
842
|
-
return null;
|
|
843
|
-
}
|
|
844
|
-
function clearCurrentUser() {
|
|
845
|
-
sessionStorage.removeItem(USER_KEY);
|
|
846
|
-
}
|
|
847
|
-
var DEVICEID_KEY = "NS-DEVICE-ID";
|
|
848
|
-
function getDeviceId() {
|
|
849
|
-
let deviceId = localStorage.getItem(DEVICEID_KEY);
|
|
850
|
-
if (deviceId) {
|
|
851
|
-
return deviceId;
|
|
852
|
-
}
|
|
853
|
-
deviceId = genNonDuplicateID();
|
|
854
|
-
localStorage.setItem(DEVICEID_KEY, deviceId);
|
|
855
|
-
return deviceId;
|
|
856
|
-
}
|
|
857
1211
|
var OperatorToMethodName = {
|
|
858
1212
|
"+": "plus",
|
|
859
1213
|
"-": "minus",
|
|
@@ -906,115 +1260,191 @@ var isInteger = (num) => {
|
|
|
906
1260
|
var isNegative = (num) => {
|
|
907
1261
|
return new Decimal__default.default(num).isNegative();
|
|
908
1262
|
};
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
var getPrimaryColor = () => {
|
|
912
|
-
const searchParams = new URLSearchParams(location.search);
|
|
913
|
-
const mainSource = searchParams.get("mainSource") || "cube-uc";
|
|
914
|
-
if (mainSource === "cube-uc") {
|
|
915
|
-
return "#34AFBE";
|
|
916
|
-
} else if (mainSource === "uc") {
|
|
917
|
-
return "#FA541C";
|
|
918
|
-
}
|
|
919
|
-
};
|
|
920
|
-
var LgPrimaryColor = getPrimaryColor();
|
|
921
|
-
var themeConfig = {
|
|
922
|
-
token: { colorPrimary: LgPrimaryColor, colorLink: LgPrimaryColor },
|
|
923
|
-
cssVar: true
|
|
924
|
-
};
|
|
925
|
-
|
|
926
|
-
// src/utils/message.ts
|
|
927
|
-
var cacheMessage = () => {
|
|
928
|
-
const contents = {};
|
|
1263
|
+
var createCachedMessage = () => {
|
|
1264
|
+
const messageCache = {};
|
|
929
1265
|
return ({ title = "\u63D0\u793A", content, type = "warning", duration = 3, onClose, isCache = true, isOnly = false }) => {
|
|
930
1266
|
if (!content) return;
|
|
931
|
-
const
|
|
932
|
-
const
|
|
933
|
-
delete
|
|
1267
|
+
const cacheKey = isOnly ? "unique-message-key" : content;
|
|
1268
|
+
const handleClose = () => {
|
|
1269
|
+
delete messageCache[cacheKey];
|
|
934
1270
|
onClose?.();
|
|
935
1271
|
};
|
|
936
|
-
if (isCache &&
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
} else {
|
|
950
|
-
lib.message[type]({
|
|
951
|
-
content,
|
|
952
|
-
duration,
|
|
953
|
-
onClose: onClose2
|
|
954
|
-
});
|
|
955
|
-
}
|
|
1272
|
+
if (isCache && messageCache[cacheKey]) return;
|
|
1273
|
+
if (isCache) {
|
|
1274
|
+
messageCache[cacheKey] = getTimestamp();
|
|
1275
|
+
}
|
|
1276
|
+
if (duration) {
|
|
1277
|
+
if (content.length > 30) {
|
|
1278
|
+
antd.notification[type]({
|
|
1279
|
+
message: title,
|
|
1280
|
+
description: content,
|
|
1281
|
+
placement: "top",
|
|
1282
|
+
duration,
|
|
1283
|
+
onClose: handleClose
|
|
1284
|
+
});
|
|
956
1285
|
} else {
|
|
957
|
-
antd.
|
|
958
|
-
title,
|
|
1286
|
+
antd.message[type]({
|
|
959
1287
|
content,
|
|
960
|
-
|
|
961
|
-
|
|
1288
|
+
duration,
|
|
1289
|
+
onClose: handleClose
|
|
962
1290
|
});
|
|
963
1291
|
}
|
|
1292
|
+
} else {
|
|
1293
|
+
antd.Modal[type]({
|
|
1294
|
+
title,
|
|
1295
|
+
content,
|
|
1296
|
+
closable: true,
|
|
1297
|
+
centered: true,
|
|
1298
|
+
footer: null,
|
|
1299
|
+
afterClose: handleClose
|
|
1300
|
+
});
|
|
964
1301
|
}
|
|
965
1302
|
};
|
|
966
1303
|
};
|
|
967
|
-
var
|
|
1304
|
+
var cachedMessage = createCachedMessage();
|
|
968
1305
|
|
|
969
|
-
// src/utils/
|
|
970
|
-
var
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
}
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
1306
|
+
// src/utils/pattern.ts
|
|
1307
|
+
var RegMobile = {
|
|
1308
|
+
pattern: /^1[3-9]\d{9}$/,
|
|
1309
|
+
message: "\u624B\u673A\u53F7\u683C\u5F0F\u4E0D\u6B63\u786E\uFF01"
|
|
1310
|
+
};
|
|
1311
|
+
var RegFixedTelePhone = {
|
|
1312
|
+
pattern: /^0\d{2,3}-\d{7,8}$/,
|
|
1313
|
+
message: "\u7535\u8BDD\u53F7\u7801\u683C\u5F0F\u4E0D\u6B63\u786E\uFF01"
|
|
1314
|
+
};
|
|
1315
|
+
var RegTelePhone = {
|
|
1316
|
+
pattern: /^[\\+\-\\(\\)\\(\\)\d]{1,20}$/,
|
|
1317
|
+
message: "\u7535\u8BDD\u53F7\u7801\u683C\u5F0F\u4E0D\u6B63\u786E\uFF01"
|
|
1318
|
+
};
|
|
1319
|
+
var RegTaxNo = {
|
|
1320
|
+
pattern: /^[A-Z0-9]{15}$|^[A-Z0-9]{18}$|^[A-Z0-9]{20}$/,
|
|
1321
|
+
message: "\u7A0E\u53F7\u683C\u5F0F\u6709\u8BEF\uFF01"
|
|
1322
|
+
};
|
|
1323
|
+
var RegBankCardNo = {
|
|
1324
|
+
pattern: /^[0-9]*$/,
|
|
1325
|
+
message: "\u94F6\u884C\u5361\u53F7\u683C\u5F0F\u6709\u8BEF\uFF01"
|
|
1326
|
+
};
|
|
1327
|
+
var RegIdentityCardNo = {
|
|
1328
|
+
pattern: /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/,
|
|
1329
|
+
message: "\u8EAB\u4EFD\u8BC1\u53F7\u683C\u5F0F\u6709\u8BEF\uFF01"
|
|
1330
|
+
};
|
|
1331
|
+
var RegNumNo = {
|
|
1332
|
+
pattern: /^[0-9]*$/,
|
|
1333
|
+
message: "\u683C\u5F0F\u6709\u8BEF\uFF0C\u8BF7\u91CD\u65B0\u8F93\u5165\uFF01"
|
|
1334
|
+
};
|
|
1335
|
+
var RegSmsCode = {
|
|
1336
|
+
pattern: /^[0-9]{6}$/,
|
|
1337
|
+
message: "\u9A8C\u8BC1\u7801\u4E3A6\u4F4D\u6570\u5B57"
|
|
1338
|
+
};
|
|
1339
|
+
var RegEmail = {
|
|
1340
|
+
pattern: /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,
|
|
1341
|
+
message: "\u90AE\u7BB1\u683C\u5F0F\u6709\u8BEF\uFF01"
|
|
1342
|
+
};
|
|
1343
|
+
var RegDetailAddress = {
|
|
1344
|
+
pattern: /.*(街|路|村|乡|镇|道|巷|号).*/,
|
|
1345
|
+
message: "\u5FC5\u987B\u5305\u542B\u201C\u8857\u3001\u8DEF\u3001\u6751\u3001\u4E61\u3001\u9547\u3001\u9053\u3001\u5DF7\u3001\u53F7\u201D\u7B49\u5173\u952E\u8BCD\u4E4B\u4E00"
|
|
1346
|
+
};
|
|
1347
|
+
var PhoneOrMobileValidator = (errMessage = "\u8054\u7CFB\u7535\u8BDD\u683C\u5F0F\u4E0D\u6B63\u786E") => ({
|
|
1348
|
+
validator: (_, value) => !value || RegFixedTelePhone.pattern.test(value) || RegMobile.pattern.test(value) ? Promise.resolve() : Promise.reject(new Error(errMessage))
|
|
1349
|
+
});
|
|
1350
|
+
var ThanNumValidator = ({
|
|
1351
|
+
min,
|
|
1352
|
+
max,
|
|
1353
|
+
equalMin = false,
|
|
1354
|
+
equalMax = false,
|
|
1355
|
+
errMessage,
|
|
1356
|
+
maxErrMessage,
|
|
1357
|
+
minErrMessage
|
|
1358
|
+
}) => ({
|
|
1359
|
+
validator: (_, value) => {
|
|
1360
|
+
if (!value) {
|
|
1361
|
+
return Promise.resolve();
|
|
1362
|
+
}
|
|
1363
|
+
if (isNumberNoNaN(parseFloat(min))) {
|
|
1364
|
+
if (!(Number(value) > Number(min) || equalMin && Number(value) === Number(min))) {
|
|
1365
|
+
return Promise.reject(new Error(minErrMessage || errMessage || `\u4E0D\u80FD\u5C0F\u4E8E${equalMin ? "" : "\u7B49\u4E8E"}${min}`));
|
|
1366
|
+
}
|
|
1367
|
+
}
|
|
1368
|
+
if (isNumberNoNaN(parseFloat(max))) {
|
|
1369
|
+
if (!(Number(value) < Number(max) || equalMax && Number(value) === Number(max))) {
|
|
1370
|
+
return Promise.reject(new Error(maxErrMessage || errMessage || `\u4E0D\u80FD\u5927\u4E8E${equalMax ? "" : "\u7B49\u4E8E"}${max}`));
|
|
1371
|
+
}
|
|
1372
|
+
}
|
|
1373
|
+
return Promise.resolve();
|
|
987
1374
|
}
|
|
988
|
-
}
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
}
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1375
|
+
});
|
|
1376
|
+
var ThanNumLengthValidator = ({
|
|
1377
|
+
length,
|
|
1378
|
+
decimalsLength,
|
|
1379
|
+
integerLength,
|
|
1380
|
+
lengthErrMessage,
|
|
1381
|
+
decimalsLengthErrMessage,
|
|
1382
|
+
integerLengthErrMessage
|
|
1383
|
+
}) => ({
|
|
1384
|
+
validator: (_, value) => {
|
|
1385
|
+
if (!value) {
|
|
1386
|
+
return Promise.resolve();
|
|
1387
|
+
}
|
|
1388
|
+
if (isNumber(length)) {
|
|
1389
|
+
if (precision(value) > length) {
|
|
1390
|
+
return Promise.reject(new Error(lengthErrMessage || `\u603B\u4F4D\u6570\u4E0D\u80FD\u8D85\u8FC7${length}\u4F4D`));
|
|
1391
|
+
}
|
|
1392
|
+
}
|
|
1393
|
+
if (isNumber(integerLength)) {
|
|
1394
|
+
if (precision(value) - decimalPlaces(value) > integerLength) {
|
|
1395
|
+
return Promise.reject(new Error(integerLengthErrMessage || `\u6574\u6570\u4F4D\u4E0D\u80FD\u8D85\u8FC7${integerLength}\u4F4D`));
|
|
1396
|
+
}
|
|
1397
|
+
}
|
|
1398
|
+
if (isNumber(decimalsLength)) {
|
|
1399
|
+
if (decimalPlaces(value) > decimalsLength) {
|
|
1400
|
+
return Promise.reject(new Error(decimalsLengthErrMessage || `\u5C0F\u6570\u4F4D\u4E0D\u80FD\u8D85\u8FC7${decimalsLength}\u4F4D`));
|
|
1401
|
+
}
|
|
1402
|
+
}
|
|
1403
|
+
return Promise.resolve();
|
|
1404
|
+
}
|
|
1405
|
+
});
|
|
1406
|
+
var MultiEmailValidator = (max) => ({
|
|
1407
|
+
validator: (_, value) => {
|
|
1408
|
+
if (value) {
|
|
1409
|
+
const emailArr = value.split(",").map((v) => v.trim()).filter((v) => v);
|
|
1410
|
+
if (emailArr.length > max) return Promise.reject(new Error(`\u6700\u591A\u8F93\u5165${max}\u4E2A\u90AE\u7BB1`));
|
|
1411
|
+
const noEmailArr = emailArr.filter((email) => !RegEmail.pattern.test(email));
|
|
1412
|
+
if (noEmailArr.length) return Promise.reject(new Error(RegEmail.message));
|
|
1413
|
+
}
|
|
1414
|
+
return Promise.resolve();
|
|
1415
|
+
}
|
|
1416
|
+
});
|
|
1417
|
+
var HttpStatus = {
|
|
1418
|
+
/** 服务器错误 */
|
|
1419
|
+
ERROR: 500,
|
|
1420
|
+
/** 缺少参数或参数错误 */
|
|
1421
|
+
MISSING_PARAMETER: 400,
|
|
1422
|
+
/** 未授权,需要用户验证 */
|
|
1423
|
+
UNAUTHORIZED: 401,
|
|
1424
|
+
/** 禁止访问,服务器理解请求但拒绝执行 */
|
|
1425
|
+
FORBIDDEN: 403,
|
|
1426
|
+
/** 请求的资源未找到 */
|
|
1427
|
+
NOT_FOUND: 404
|
|
1428
|
+
};
|
|
1429
|
+
var BusinessCode = {
|
|
1430
|
+
/** 请求成功 */
|
|
1431
|
+
OK: 200,
|
|
1432
|
+
/** 权限拒绝,没有足够的权限执行操作 */
|
|
1433
|
+
PERMISSION_DENIED: 13001
|
|
1434
|
+
};
|
|
1435
|
+
var showError = (showError2) => showError2 !== false;
|
|
1436
|
+
function createRequest(config) {
|
|
1010
1437
|
const instance = axios__default.default.create({
|
|
1011
|
-
baseURL,
|
|
1012
|
-
|
|
1438
|
+
baseURL: "/api",
|
|
1439
|
+
// 默认基础URL
|
|
1440
|
+
timeout: 6e4,
|
|
1441
|
+
// 请求超时时间设为60秒
|
|
1442
|
+
...config
|
|
1443
|
+
// 合并传入的配置项
|
|
1013
1444
|
});
|
|
1014
1445
|
instance.interceptors.request.use(
|
|
1015
|
-
function(
|
|
1016
|
-
|
|
1017
|
-
return config;
|
|
1446
|
+
function(config2) {
|
|
1447
|
+
return config2;
|
|
1018
1448
|
},
|
|
1019
1449
|
function(error) {
|
|
1020
1450
|
return Promise.reject(error);
|
|
@@ -1023,31 +1453,29 @@ function createRequest(baseURL = "/api") {
|
|
|
1023
1453
|
instance.interceptors.response.use(
|
|
1024
1454
|
function(response) {
|
|
1025
1455
|
if (isBlob(response.data)) return response;
|
|
1026
|
-
if (response.data?.code !== OK) {
|
|
1027
|
-
const isPermission = response.data?.code === PERMISSION_DENIED;
|
|
1028
|
-
if (response.config?.showError
|
|
1029
|
-
|
|
1456
|
+
if (response.data?.code !== BusinessCode.OK) {
|
|
1457
|
+
const isPermission = response.data?.code === BusinessCode.PERMISSION_DENIED;
|
|
1458
|
+
if (showError(response.config?.showError)) {
|
|
1459
|
+
cachedMessage({
|
|
1030
1460
|
title: isPermission ? "" : void 0,
|
|
1031
1461
|
content: response.data.message,
|
|
1032
1462
|
duration: isPermission ? 0 : 3
|
|
1033
1463
|
});
|
|
1034
1464
|
}
|
|
1035
|
-
return Promise.reject(response
|
|
1465
|
+
return Promise.reject(response);
|
|
1036
1466
|
}
|
|
1037
1467
|
return response;
|
|
1038
1468
|
},
|
|
1039
1469
|
function(err) {
|
|
1040
|
-
const showError = err?.config?.showError !== false;
|
|
1041
1470
|
if (!err.response) {
|
|
1042
|
-
if (showError)
|
|
1471
|
+
if (showError(err?.config?.showError)) cachedMessage({ content: "\u7F51\u7EDC\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC", type: "error" });
|
|
1043
1472
|
} else {
|
|
1044
1473
|
switch (err.response?.status) {
|
|
1045
|
-
case UNAUTHORIZED:
|
|
1046
|
-
if (showError)
|
|
1047
|
-
redirectUrl();
|
|
1474
|
+
case HttpStatus.UNAUTHORIZED:
|
|
1475
|
+
if (showError(err?.config?.showError)) cachedMessage({ content: err.response?.data.message, type: "error" });
|
|
1048
1476
|
break;
|
|
1049
1477
|
default:
|
|
1050
|
-
if (showError)
|
|
1478
|
+
if (showError(err?.config?.showError)) cachedMessage({ content: err.response?.data.message || "\u8BF7\u6C42\u9519\u8BEF\uFF01", type: "error" });
|
|
1051
1479
|
}
|
|
1052
1480
|
}
|
|
1053
1481
|
return Promise.reject(err);
|
|
@@ -1055,44 +1483,49 @@ function createRequest(baseURL = "/api") {
|
|
|
1055
1483
|
);
|
|
1056
1484
|
return {
|
|
1057
1485
|
/**
|
|
1058
|
-
*
|
|
1486
|
+
* 返回原始 axios 实例
|
|
1487
|
+
* 可以用于添加拦截器等
|
|
1488
|
+
*/
|
|
1489
|
+
instance,
|
|
1490
|
+
/**
|
|
1491
|
+
* 发送 GET 请求
|
|
1059
1492
|
* @param url - 请求地址
|
|
1060
1493
|
* @param params - 查询参数
|
|
1061
|
-
* @param options -
|
|
1062
|
-
* @returns 响应数据
|
|
1494
|
+
* @param options - 额外的请求配置
|
|
1495
|
+
* @returns Promise<any> 响应数据
|
|
1063
1496
|
*/
|
|
1064
1497
|
get: async (url, params, options) => {
|
|
1065
1498
|
const res = await instance({ method: "get", url, params, ...options });
|
|
1066
1499
|
return res.data;
|
|
1067
1500
|
},
|
|
1068
1501
|
/**
|
|
1069
|
-
* POST
|
|
1502
|
+
* 发送 POST 请求
|
|
1070
1503
|
* @param url - 请求地址
|
|
1071
|
-
* @param data -
|
|
1072
|
-
* @param options -
|
|
1073
|
-
* @returns 响应数据
|
|
1504
|
+
* @param data - 请求体数据
|
|
1505
|
+
* @param options - 额外的请求配置
|
|
1506
|
+
* @returns Promise<any> 响应数据
|
|
1074
1507
|
*/
|
|
1075
1508
|
post: async (url, data, options) => {
|
|
1076
1509
|
const res = await instance({ method: "post", url, data, ...options });
|
|
1077
1510
|
return res.data;
|
|
1078
1511
|
},
|
|
1079
1512
|
/**
|
|
1080
|
-
* PUT
|
|
1513
|
+
* 发送 PUT 请求
|
|
1081
1514
|
* @param url - 请求地址
|
|
1082
|
-
* @param data -
|
|
1083
|
-
* @param options -
|
|
1084
|
-
* @returns 响应数据
|
|
1515
|
+
* @param data - 请求体数据
|
|
1516
|
+
* @param options - 额外的请求配置
|
|
1517
|
+
* @returns Promise<any> 响应数据
|
|
1085
1518
|
*/
|
|
1086
1519
|
put: async (url, data, options) => {
|
|
1087
1520
|
const res = await instance({ method: "put", url, data, ...options });
|
|
1088
1521
|
return res.data;
|
|
1089
1522
|
},
|
|
1090
1523
|
/**
|
|
1091
|
-
* DELETE
|
|
1524
|
+
* 发送 DELETE 请求
|
|
1092
1525
|
* @param url - 请求地址
|
|
1093
|
-
* @param data -
|
|
1094
|
-
* @param options -
|
|
1095
|
-
* @returns 响应数据
|
|
1526
|
+
* @param data - 请求体数据
|
|
1527
|
+
* @param options - 额外的请求配置
|
|
1528
|
+
* @returns Promise<any> 响应数据
|
|
1096
1529
|
*/
|
|
1097
1530
|
delete: async (url, data, options) => {
|
|
1098
1531
|
const res = await instance({ method: "delete", url, data, ...options });
|
|
@@ -1101,8 +1534,66 @@ function createRequest(baseURL = "/api") {
|
|
|
1101
1534
|
};
|
|
1102
1535
|
}
|
|
1103
1536
|
|
|
1537
|
+
// src/utils/storage.ts
|
|
1538
|
+
function getDeviceId(DEVICEID_KEY) {
|
|
1539
|
+
let deviceId = localStorage.getItem(DEVICEID_KEY);
|
|
1540
|
+
if (deviceId) {
|
|
1541
|
+
return deviceId;
|
|
1542
|
+
}
|
|
1543
|
+
deviceId = genNonDuplicateID();
|
|
1544
|
+
localStorage.setItem(DEVICEID_KEY, deviceId);
|
|
1545
|
+
return deviceId;
|
|
1546
|
+
}
|
|
1547
|
+
function createSecureManager({ key, storage = localStorage, aesKey }) {
|
|
1548
|
+
const set = (data) => {
|
|
1549
|
+
if (isNullOrUnDef(data)) return;
|
|
1550
|
+
storage.setItem(key, aesKey ? aesEncrypt(data, aesKey) : isString(data) ? data : JSON.stringify(data));
|
|
1551
|
+
};
|
|
1552
|
+
const get = () => {
|
|
1553
|
+
const cipher = storage.getItem(key);
|
|
1554
|
+
if (!cipher) {
|
|
1555
|
+
return null;
|
|
1556
|
+
}
|
|
1557
|
+
if (aesKey) {
|
|
1558
|
+
return aesDecrypt(cipher, aesKey);
|
|
1559
|
+
}
|
|
1560
|
+
try {
|
|
1561
|
+
return JSON.parse(cipher);
|
|
1562
|
+
} catch (e) {
|
|
1563
|
+
console.log("Failed to parse stored data:", e);
|
|
1564
|
+
return cipher;
|
|
1565
|
+
}
|
|
1566
|
+
};
|
|
1567
|
+
const clear = () => storage.removeItem(key);
|
|
1568
|
+
return {
|
|
1569
|
+
set,
|
|
1570
|
+
get,
|
|
1571
|
+
clear
|
|
1572
|
+
};
|
|
1573
|
+
}
|
|
1574
|
+
function createTokenManager({ key, storage = localStorage }) {
|
|
1575
|
+
const tokenManager = createSecureManager({ key, storage });
|
|
1576
|
+
const getFromUrl = () => {
|
|
1577
|
+
const searchParams = new URLSearchParams(location.search);
|
|
1578
|
+
return searchParams.get(key);
|
|
1579
|
+
};
|
|
1580
|
+
const get = () => {
|
|
1581
|
+
const urlToken = getFromUrl();
|
|
1582
|
+
if (urlToken) {
|
|
1583
|
+
tokenManager.set(urlToken);
|
|
1584
|
+
return urlToken;
|
|
1585
|
+
}
|
|
1586
|
+
return tokenManager.get();
|
|
1587
|
+
};
|
|
1588
|
+
return {
|
|
1589
|
+
set: tokenManager.set,
|
|
1590
|
+
get,
|
|
1591
|
+
clear: tokenManager.clear
|
|
1592
|
+
};
|
|
1593
|
+
}
|
|
1594
|
+
|
|
1104
1595
|
// src/hooks/webSocket/useWebSocket.ts
|
|
1105
|
-
var
|
|
1596
|
+
var useWebSocket_default = ({
|
|
1106
1597
|
url,
|
|
1107
1598
|
onMessage,
|
|
1108
1599
|
onClose,
|
|
@@ -1110,11 +1601,8 @@ var useWebSocket = ({
|
|
|
1110
1601
|
heartbeatMessage = "ping",
|
|
1111
1602
|
clientHeartbeat = true,
|
|
1112
1603
|
reconnectInterval = 5e3,
|
|
1113
|
-
// 默认重连间隔为 5 秒
|
|
1114
1604
|
maxReconnectAttempts,
|
|
1115
|
-
// 不设置默认值为无限重连
|
|
1116
1605
|
isReconnect = true
|
|
1117
|
-
// 默认开启重连机制
|
|
1118
1606
|
}) => {
|
|
1119
1607
|
const socketRef = React16.useRef(null);
|
|
1120
1608
|
const heartbeatIntervalRef = React16.useRef(null);
|
|
@@ -1138,6 +1626,7 @@ var useWebSocket = ({
|
|
|
1138
1626
|
const stopHeartbeat = () => {
|
|
1139
1627
|
if (heartbeatIntervalRef.current) {
|
|
1140
1628
|
clearInterval(heartbeatIntervalRef.current);
|
|
1629
|
+
heartbeatIntervalRef.current = null;
|
|
1141
1630
|
}
|
|
1142
1631
|
};
|
|
1143
1632
|
const stopReconnectTimer = () => {
|
|
@@ -1230,14 +1719,17 @@ var useWebSocket = ({
|
|
|
1230
1719
|
socketRef.current.send(message3);
|
|
1231
1720
|
stopHeartbeat();
|
|
1232
1721
|
startHeartbeat(socketRef.current);
|
|
1722
|
+
} else {
|
|
1723
|
+
console.warn("WebSocket \u672A\u8FDE\u63A5\uFF0C\u65E0\u6CD5\u53D1\u9001\u6D88\u606F:", message3);
|
|
1233
1724
|
}
|
|
1234
1725
|
};
|
|
1235
1726
|
return {
|
|
1727
|
+
/** 发送消息方法 */
|
|
1236
1728
|
sendMessage,
|
|
1729
|
+
/** Socket 连接状态 */
|
|
1237
1730
|
socketReadyState
|
|
1238
1731
|
};
|
|
1239
1732
|
};
|
|
1240
|
-
var useWebSocket_default = useWebSocket;
|
|
1241
1733
|
var ProtectedView = ({
|
|
1242
1734
|
passwordStatus,
|
|
1243
1735
|
verifyPassword,
|
|
@@ -1263,8 +1755,8 @@ var ProtectedView = ({
|
|
|
1263
1755
|
var PdfPreview_default = ({ password, fileUrl, pageNo = 1, scale = 1, isHasThumbnails = true, onSetPassword, onSetPageNo }) => {
|
|
1264
1756
|
const embedRef = React16.useRef(null);
|
|
1265
1757
|
const [sizes, setSizes] = React16.useState([0]);
|
|
1266
|
-
const [, setDocLoaded, getDocLoaded] =
|
|
1267
|
-
const [currentPage, setCurrentPage, getCurrentPage] =
|
|
1758
|
+
const [, setDocLoaded, getDocLoaded] = useRefState_default(false);
|
|
1759
|
+
const [currentPage, setCurrentPage, getCurrentPage] = useRefState_default(void 0);
|
|
1268
1760
|
const [temporaryPassword, setTemporaryPassword] = React16.useState("");
|
|
1269
1761
|
const jumpToPageNo = React16.useRef();
|
|
1270
1762
|
const onVerifyPasswordEnd = (password2) => {
|
|
@@ -1471,10 +1963,10 @@ var FilePreviewDrawer_default = ({
|
|
|
1471
1963
|
var styles_module_default2 = {
|
|
1472
1964
|
iframe: "styles_module_iframe"
|
|
1473
1965
|
};
|
|
1474
|
-
var Iframe_default = React16.forwardRef(({ id, src, className, onLoad }, ref) => {
|
|
1966
|
+
var Iframe_default = React16.forwardRef(({ defaultMainSource, id, src, className, onLoad }, ref) => {
|
|
1475
1967
|
const [loading, setLoading] = React16.useState(false);
|
|
1476
1968
|
const finalSrc = React16.useMemo(() => {
|
|
1477
|
-
return buildUrlParams({ v: Date.now() }, addUrlLastSlash(
|
|
1969
|
+
return buildUrlParams({ v: Date.now() }, addUrlLastSlash(setUrlMainSource(src, location.href, defaultMainSource)));
|
|
1478
1970
|
}, [src]);
|
|
1479
1971
|
const onHandleLoad = () => {
|
|
1480
1972
|
setLoading(false);
|
|
@@ -1483,7 +1975,17 @@ var Iframe_default = React16.forwardRef(({ id, src, className, onLoad }, ref) =>
|
|
|
1483
1975
|
React16.useEffect(() => {
|
|
1484
1976
|
setLoading(true);
|
|
1485
1977
|
}, [src]);
|
|
1486
|
-
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(antd.Spin, { spinning: loading, wrapperClassName: "full-spin", tip: "\u52A0\u8F7D\u4E2D...", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1978
|
+
return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsx(antd.Spin, { spinning: loading, wrapperClassName: "full-spin", tip: "\u52A0\u8F7D\u4E2D...", children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
1979
|
+
"iframe",
|
|
1980
|
+
{
|
|
1981
|
+
id,
|
|
1982
|
+
ref,
|
|
1983
|
+
src: finalSrc,
|
|
1984
|
+
className: classNames2__default.default(styles_module_default2.iframe, className),
|
|
1985
|
+
onLoad: onHandleLoad,
|
|
1986
|
+
allow: "clipboard-write"
|
|
1987
|
+
}
|
|
1988
|
+
) }) });
|
|
1487
1989
|
});
|
|
1488
1990
|
var Link = TiptapLink__default.default.extend({
|
|
1489
1991
|
inclusive: false,
|
|
@@ -5136,7 +5638,7 @@ var MarkdownEditor_default = ({
|
|
|
5136
5638
|
editor?.commands.setContent(value);
|
|
5137
5639
|
lastContentRef.current = value;
|
|
5138
5640
|
}, [value, editor]);
|
|
5139
|
-
const onPageChange =
|
|
5641
|
+
const onPageChange = useDebounce_default((pageIndex) => {
|
|
5140
5642
|
onScrollPage?.(parseInt(pageIndex ?? "0"));
|
|
5141
5643
|
}, 300);
|
|
5142
5644
|
React16.useEffect(() => {
|
|
@@ -5259,7 +5761,7 @@ function renderDefault(DefaultComponent, ref, props) {
|
|
|
5259
5761
|
if (!DefaultComponent) return null;
|
|
5260
5762
|
return isRenderFn(DefaultComponent) ? /* @__PURE__ */ jsxRuntime.jsx(DefaultComponent, { ref, ...props }) : DefaultComponent;
|
|
5261
5763
|
}
|
|
5262
|
-
var
|
|
5764
|
+
var RenderWrapper_default = React16.forwardRef(function RenderWrapper({ control = true, ctx, DefaultComponent }, ref) {
|
|
5263
5765
|
if (control === false || isNull(control)) return null;
|
|
5264
5766
|
if (control === true || control === void 0) {
|
|
5265
5767
|
return renderDefault(DefaultComponent, ref);
|
|
@@ -5293,39 +5795,53 @@ var UserAvatar_default = ({ size, avatarSrc, userName }) => {
|
|
|
5293
5795
|
};
|
|
5294
5796
|
|
|
5295
5797
|
exports.AudioPlayer = AudioPlayer_default;
|
|
5296
|
-
exports.
|
|
5297
|
-
exports.
|
|
5298
|
-
exports.
|
|
5299
|
-
exports.
|
|
5798
|
+
exports.BusinessCode = BusinessCode;
|
|
5799
|
+
exports.DEFAULT_DATE_FORMAT = DEFAULT_DATE_FORMAT;
|
|
5800
|
+
exports.DEFAULT_DATE_TIME_FORMAT = DEFAULT_DATE_TIME_FORMAT;
|
|
5801
|
+
exports.DEFAULT_YEAR_MONTH_DAY_FORMAT = DEFAULT_YEAR_MONTH_DAY_FORMAT;
|
|
5802
|
+
exports.DEFAULT_YEAR_MONTH_FORMAT = DEFAULT_YEAR_MONTH_FORMAT;
|
|
5300
5803
|
exports.FileIcon = FileIcon_default;
|
|
5301
5804
|
exports.FilePreview = FilePreview_default;
|
|
5302
5805
|
exports.FilePreviewDrawer = FilePreviewDrawer_default;
|
|
5806
|
+
exports.HttpStatus = HttpStatus;
|
|
5303
5807
|
exports.Iframe = Iframe_default;
|
|
5304
5808
|
exports.LazyComponent = LazyComponent_default;
|
|
5305
|
-
exports.LgPrimaryColor = LgPrimaryColor;
|
|
5306
|
-
exports.MISSING_PARAMETER = MISSING_PARAMETER;
|
|
5307
5809
|
exports.MarkdownEditor = MarkdownEditor_default;
|
|
5308
5810
|
exports.MarkdownPreview = MarkdownPreview_default;
|
|
5309
|
-
exports.
|
|
5310
|
-
exports.OK = OK;
|
|
5311
|
-
exports.PERMISSION_DENIED = PERMISSION_DENIED;
|
|
5811
|
+
exports.MultiEmailValidator = MultiEmailValidator;
|
|
5312
5812
|
exports.PdfPreview = PdfPreview_default;
|
|
5813
|
+
exports.PhoneOrMobileValidator = PhoneOrMobileValidator;
|
|
5814
|
+
exports.RegBankCardNo = RegBankCardNo;
|
|
5815
|
+
exports.RegDetailAddress = RegDetailAddress;
|
|
5816
|
+
exports.RegEmail = RegEmail;
|
|
5817
|
+
exports.RegFixedTelePhone = RegFixedTelePhone;
|
|
5818
|
+
exports.RegIdentityCardNo = RegIdentityCardNo;
|
|
5819
|
+
exports.RegMobile = RegMobile;
|
|
5820
|
+
exports.RegNumNo = RegNumNo;
|
|
5821
|
+
exports.RegSmsCode = RegSmsCode;
|
|
5822
|
+
exports.RegTaxNo = RegTaxNo;
|
|
5823
|
+
exports.RegTelePhone = RegTelePhone;
|
|
5313
5824
|
exports.RenderMarkdown = RenderMarkdown_default;
|
|
5314
|
-
exports.RenderWrapper =
|
|
5315
|
-
exports.
|
|
5316
|
-
exports.
|
|
5825
|
+
exports.RenderWrapper = RenderWrapper_default;
|
|
5826
|
+
exports.ThanNumLengthValidator = ThanNumLengthValidator;
|
|
5827
|
+
exports.ThanNumValidator = ThanNumValidator;
|
|
5317
5828
|
exports.UserAvatar = UserAvatar_default;
|
|
5318
5829
|
exports.VideoPlayer = VideoPlayer_default;
|
|
5319
5830
|
exports.absVal = absVal;
|
|
5320
5831
|
exports.addUrlLastSlash = addUrlLastSlash;
|
|
5832
|
+
exports.aesDecrypt = aesDecrypt;
|
|
5833
|
+
exports.aesEncrypt = aesEncrypt;
|
|
5321
5834
|
exports.arrToObj = arrToObj;
|
|
5322
5835
|
exports.buildUrlParams = buildUrlParams;
|
|
5836
|
+
exports.cachedMessage = cachedMessage;
|
|
5323
5837
|
exports.calculate = calculate;
|
|
5324
|
-
exports.clearCurrentUser = clearCurrentUser;
|
|
5325
|
-
exports.clearToken = clearToken;
|
|
5326
5838
|
exports.compareNum = compareNum;
|
|
5839
|
+
exports.convertCurrency = convertCurrency;
|
|
5840
|
+
exports.convertNewlineToBr = convertNewlineToBr;
|
|
5327
5841
|
exports.copyText = copyText;
|
|
5328
5842
|
exports.createRequest = createRequest;
|
|
5843
|
+
exports.createSecureManager = createSecureManager;
|
|
5844
|
+
exports.createTokenManager = createTokenManager;
|
|
5329
5845
|
exports.decimalPlaces = decimalPlaces;
|
|
5330
5846
|
exports.deepCopy = deepCopy;
|
|
5331
5847
|
exports.deepEqual = deepEqual;
|
|
@@ -5334,27 +5850,25 @@ exports.dividedBy = dividedBy;
|
|
|
5334
5850
|
exports.downloadFile = downloadFile;
|
|
5335
5851
|
exports.emit = emit;
|
|
5336
5852
|
exports.emitToChild = emitToChild;
|
|
5853
|
+
exports.executeScript = executeScript;
|
|
5337
5854
|
exports.formatDate = formatDate;
|
|
5338
5855
|
exports.formatNumberWithCommas = formatNumberWithCommas;
|
|
5339
5856
|
exports.genNonDuplicateID = genNonDuplicateID;
|
|
5340
5857
|
exports.generateRandomNumbers = generateRandomNumbers;
|
|
5341
|
-
exports.
|
|
5858
|
+
exports.getAllUrlParams = getAllUrlParams;
|
|
5342
5859
|
exports.getDeviceId = getDeviceId;
|
|
5343
5860
|
exports.getEndOfTimestamp = getEndOfTimestamp;
|
|
5344
5861
|
exports.getFileName = getFileName;
|
|
5345
5862
|
exports.getFileSuffixName = getFileSuffixName;
|
|
5346
|
-
exports.
|
|
5863
|
+
exports.getRowSpanCount = getRowSpanCount;
|
|
5347
5864
|
exports.getStartOfTimestamp = getStartOfTimestamp;
|
|
5348
5865
|
exports.getTimestamp = getTimestamp;
|
|
5349
|
-
exports.getToken = getToken;
|
|
5350
|
-
exports.getUrlMainSource = getUrlMainSource;
|
|
5351
|
-
exports.getUrlToken = getUrlToken;
|
|
5352
5866
|
exports.getWebSocketUrl = getWebSocketUrl;
|
|
5867
|
+
exports.importThirdPartyFile = importThirdPartyFile;
|
|
5353
5868
|
exports.is = is;
|
|
5354
5869
|
exports.isArray = isArray;
|
|
5355
5870
|
exports.isBlob = isBlob;
|
|
5356
5871
|
exports.isBoolean = isBoolean;
|
|
5357
|
-
exports.isClient = isClient;
|
|
5358
5872
|
exports.isDate = isDate;
|
|
5359
5873
|
exports.isDef = isDef;
|
|
5360
5874
|
exports.isElement = isElement;
|
|
@@ -5364,6 +5878,7 @@ exports.isExpire = isExpire;
|
|
|
5364
5878
|
exports.isExternal = isExternal;
|
|
5365
5879
|
exports.isFunction = isFunction;
|
|
5366
5880
|
exports.isInteger = isInteger;
|
|
5881
|
+
exports.isJson = isJson;
|
|
5367
5882
|
exports.isLocalhost = isLocalhost;
|
|
5368
5883
|
exports.isMap = isMap;
|
|
5369
5884
|
exports.isNegative = isNegative;
|
|
@@ -5373,33 +5888,35 @@ exports.isNumber = isNumber;
|
|
|
5373
5888
|
exports.isNumberNoNaN = isNumberNoNaN;
|
|
5374
5889
|
exports.isObject = isObject;
|
|
5375
5890
|
exports.isPromise = isPromise;
|
|
5891
|
+
exports.isReferenceType = isReferenceType;
|
|
5376
5892
|
exports.isRegExp = isRegExp;
|
|
5377
|
-
exports.
|
|
5893
|
+
exports.isScriptSafe = isScriptSafe;
|
|
5894
|
+
exports.isSet = isSet;
|
|
5378
5895
|
exports.isString = isString;
|
|
5379
5896
|
exports.isUnDef = isUnDef;
|
|
5380
5897
|
exports.isWindow = isWindow;
|
|
5381
5898
|
exports.minus = minus;
|
|
5382
|
-
exports.nsSetInterval = nsSetInterval;
|
|
5383
5899
|
exports.objToOptions = objToOptions;
|
|
5384
5900
|
exports.plus = plus;
|
|
5385
5901
|
exports.precision = precision;
|
|
5902
|
+
exports.processItemList = processItemList;
|
|
5386
5903
|
exports.propsMerge = propsMerge;
|
|
5387
|
-
exports.
|
|
5388
|
-
exports.
|
|
5904
|
+
exports.setInterval = setInterval2;
|
|
5905
|
+
exports.setUrlMainSource = setUrlMainSource;
|
|
5389
5906
|
exports.shouldRender = shouldRender;
|
|
5390
|
-
exports.textAreaView = textAreaView;
|
|
5391
|
-
exports.themeConfig = themeConfig;
|
|
5392
5907
|
exports.times = times;
|
|
5393
5908
|
exports.toFixed = toFixed;
|
|
5394
5909
|
exports.transform = transform;
|
|
5395
5910
|
exports.transforms = transforms;
|
|
5396
|
-
exports.
|
|
5397
|
-
exports.
|
|
5398
|
-
exports.
|
|
5399
|
-
exports.
|
|
5400
|
-
exports.
|
|
5401
|
-
exports.
|
|
5402
|
-
exports.
|
|
5911
|
+
exports.useAutoRefresh = useAutoRefresh_default;
|
|
5912
|
+
exports.useCountDown = useCountDown_default;
|
|
5913
|
+
exports.useCreateValtioContext = useCreateValtioContext_default;
|
|
5914
|
+
exports.useDebounce = useDebounce_default;
|
|
5915
|
+
exports.useDeepEffect = useDeepEffect_default;
|
|
5916
|
+
exports.useIframeRelayBridge = useIframeRelayBridge_default;
|
|
5917
|
+
exports.useRefState = useRefState_default;
|
|
5918
|
+
exports.useSyncInput = useSyncInput_default;
|
|
5919
|
+
exports.useThrottle = useThrottle_default;
|
|
5403
5920
|
exports.useWebSocket = useWebSocket_default;
|
|
5404
5921
|
//# sourceMappingURL=index.cjs.js.map
|
|
5405
5922
|
//# sourceMappingURL=index.cjs.js.map
|