@zero-library/common 2.1.10 → 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 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);
@@ -97,24 +96,8 @@ var AudioPlayer_default = ({ fileUrl }) => {
97
96
  "\u60A8\u7684\u6D4F\u89C8\u5668\u4E0D\u652F\u6301 audio \u6807\u7B7E\u3002"
98
97
  ] });
99
98
  };
100
-
101
- // src/utils/theme.ts
102
- var getPrimaryColor = () => {
103
- const searchParams = new URLSearchParams(location.search);
104
- const mainSource = searchParams.get("mainSource") || "cube-uc";
105
- if (mainSource === "cube-uc") {
106
- return "#34AFBE";
107
- } else if (mainSource === "uc") {
108
- return "#FA541C";
109
- }
110
- };
111
- var LgPrimaryColor = getPrimaryColor();
112
- var themeConfig = {
113
- token: { colorPrimary: LgPrimaryColor, colorLink: LgPrimaryColor },
114
- cssVar: true
115
- };
116
99
  var FileIcon_default = ({ suffix, fontSize = 22 }) => {
117
- const styles = { fontSize, color: LgPrimaryColor };
100
+ const styles = { fontSize, color: "var(--ant-color-primary)" };
118
101
  const Icon = React16.useMemo(() => {
119
102
  switch (suffix?.toUpperCase()) {
120
103
  case "TXT":
@@ -209,7 +192,7 @@ function highlightKeywords(html, keywords) {
209
192
  function makePlaceholder(id) {
210
193
  return `__ALERT_DATA_${id}__`;
211
194
  }
212
- function extractAlertPlaceholders(src) {
195
+ function alertMarkClean(src) {
213
196
  let pos = 0;
214
197
  let id = 0;
215
198
  let out = "";
@@ -225,17 +208,13 @@ function extractAlertPlaceholders(src) {
225
208
  const relAfter = afterStart.slice(":::alert".length);
226
209
  const matchLineEnd = relAfter.search(/\s*:::\s*/);
227
210
  let endIdx = -1;
211
+ let isNoEnd = 1;
228
212
  if (matchLineEnd !== -1) {
229
- endIdx = start + ":::alert".length + matchLineEnd + 1;
213
+ endIdx = start + ":::alert".length + matchLineEnd;
214
+ isNoEnd = 0;
230
215
  } else {
231
- const fallback = src.indexOf(":::", start + ":::alert".length);
232
- if (fallback === -1) {
233
- out += src.slice(start);
234
- pos = src.length;
235
- break;
236
- } else {
237
- endIdx = fallback;
238
- }
216
+ endIdx = src.length;
217
+ isNoEnd = 1;
239
218
  }
240
219
  const inner = src.slice(start + ":::alert".length, endIdx).trim();
241
220
  const typeMatch = inner.match(/type\s*=\s*(?:(['"])(.*?)\1|(\S+))/);
@@ -247,8 +226,8 @@ function extractAlertPlaceholders(src) {
247
226
  }
248
227
  const ph = makePlaceholder(id++);
249
228
  placeholders.set(ph, rawData);
250
- const typeText = type ? ` type=${JSON.stringify(type)}` : "";
251
- out += `:::alert${typeText} data="${ph}" :::`;
229
+ const typeText = type ? `type=${JSON.stringify(type)}` : "";
230
+ out += `:::alert ${typeText} data="${ph}" loading="${isNoEnd}" :::`;
252
231
  const realClose = src.indexOf(":::", endIdx);
253
232
  pos = realClose === -1 ? endIdx : realClose + 3;
254
233
  }
@@ -277,33 +256,23 @@ try {
277
256
  var RenderMarkdown_default = ({ content = "", searchValue, customComponents, onChange, onPartialChange }) => {
278
257
  const reactContent = React16.useMemo(() => {
279
258
  if (!content) return null;
280
- let fixedContent = content;
281
- const openCount = (fixedContent.match(/:::alert\b/g) || []).length;
282
- const closeCount = (fixedContent.match(/\s*:::\s*/gm) || []).length - openCount;
283
- let incomplete = false;
284
- if (openCount > closeCount) {
285
- incomplete = true;
286
- fixedContent += " :::";
287
- }
288
- const { text: preprocessed, placeholders } = extractAlertPlaceholders(fixedContent);
259
+ const { text: preprocessed, placeholders } = alertMarkClean(content);
289
260
  let rawHtml = md.render(preprocessed);
290
261
  rawHtml = searchValue ? highlightKeywords(rawHtml, [searchValue]) : rawHtml;
291
262
  let lazyIndex = -1;
292
- const allLazyMatches = [...rawHtml.matchAll(/<lazy-component/gi)];
293
- const lastLazyIndex = allLazyMatches.length - 1;
294
263
  return parse__default.default(rawHtml, {
295
264
  replace: (domNode) => {
296
265
  if (domNode.name === "lazy-component") {
297
266
  lazyIndex++;
298
267
  const el = domNode;
299
268
  const type = el.attribs.type;
269
+ const loading = !!Number(el.attribs.loading);
300
270
  const dataAttr = el.attribs.data || "";
301
271
  let data = {};
302
272
  if (/^__ALERT_DATA_\d+__$/.test(dataAttr)) {
303
273
  const raw = placeholders.get(dataAttr) ?? "";
304
274
  data = parseData(raw);
305
275
  }
306
- const loading = incomplete && lazyIndex === lastLazyIndex;
307
276
  return /* @__PURE__ */ jsxRuntime.jsx(
308
277
  LazyComponent_default,
309
278
  {
@@ -408,7 +377,7 @@ function isNumber(val) {
408
377
  return is(val, "Number");
409
378
  }
410
379
  function isNumberNoNaN(val) {
411
- return is(val, "Number") && !isNaN(val);
380
+ return isNumber(val) && !isNaN(val);
412
381
  }
413
382
  function isString(val) {
414
383
  return is(val, "String");
@@ -429,7 +398,7 @@ function isArray(val) {
429
398
  return Array.isArray(val);
430
399
  }
431
400
  function isEmpty(val) {
432
- if (isArray(val) || isString(val)) {
401
+ if (isString(val) || isArray(val)) {
433
402
  return val.length === 0;
434
403
  }
435
404
  if (isNullOrUnDef(val)) {
@@ -441,28 +410,89 @@ function isEmpty(val) {
441
410
  return isEmptyObj(val);
442
411
  }
443
412
  function isWindow(val) {
444
- return typeof window !== "undefined" && is(val, "Window");
413
+ return is(val, "Window");
445
414
  }
446
415
  function isElement(val) {
447
- return isObject(val) && !!val.tagName;
416
+ return isObject(val) && !!val?.tagName;
448
417
  }
449
418
  function isMap(val) {
450
419
  return is(val, "Map");
451
420
  }
452
- var isServer = typeof window === "undefined";
453
- var isClient = !isServer;
421
+ function isSet(val) {
422
+ return is(val, "Set");
423
+ }
454
424
  var isExternal = (path) => {
455
- return /^(https?:|mailto:|tel:)/.test(path);
425
+ if (!isString(path)) return false;
426
+ return /^(https?:|mailto:|tel:|ftp:)/.test(path);
456
427
  };
457
428
  var isBlob = (val) => {
458
429
  return is(val, "Blob");
459
430
  };
460
431
  var isLocalhost = (host) => {
461
- return /^(localhost:)/.test(host || location.host);
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
+ }
462
492
  };
463
493
 
464
494
  // src/hooks/iframe/useIframeRelayBridge.ts
465
- function useIframeRelayBridge(allowedOrigins = ["*"]) {
495
+ var useIframeRelayBridge_default = (allowedOrigins = ["*"]) => {
466
496
  const handlers = React16.useRef({});
467
497
  React16.useEffect(() => {
468
498
  const onMessage = (evt) => {
@@ -489,8 +519,64 @@ function useIframeRelayBridge(allowedOrigins = ["*"]) {
489
519
  handlers.current[type] = (handlers.current[type] || []).filter((fn) => fn !== handler);
490
520
  }
491
521
  return { on, off };
492
- }
493
- function useCreateValtioContext() {
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 = () => {
494
580
  const Context = React16.createContext(null);
495
581
  const ValtioProvider = ({ store, children }) => /* @__PURE__ */ jsxRuntime.jsx(Context.Provider, { value: store, children });
496
582
  const useValtioStore = () => {
@@ -500,11 +586,12 @@ function useCreateValtioContext() {
500
586
  };
501
587
  return {
502
588
  ValtioProvider,
503
- useValtioStore
504
- // Context
589
+ useValtioStore,
590
+ // 导出 Context 以便外部使用
591
+ Context
505
592
  };
506
- }
507
- function useDebounce(func, wait = 400) {
593
+ };
594
+ var useDebounce_default = (func, wait = 400) => {
508
595
  const { current } = React16.useRef({ func, timeOut: null });
509
596
  React16.useEffect(() => {
510
597
  current.func = func;
@@ -539,99 +626,155 @@ function useDebounce(func, wait = 400) {
539
626
  debounce.flush = flush;
540
627
  debounce.cancel = cancel;
541
628
  return React16.useCallback(debounce, []);
542
- }
543
-
544
- // src/utils/common.ts
545
- var deepCopy = (obj, isJson = true) => {
546
- if (!isArray(obj) && !isObject(obj)) return obj;
547
- if (isJson) return JSON.parse(JSON.stringify(obj));
548
- const result = isArray(obj) ? [] : {};
549
- for (const key in obj) {
550
- if (Object.prototype.hasOwnProperty.call(obj, key)) {
551
- 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);
552
636
  }
553
637
  }
554
- return result;
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);
555
683
  };
556
684
  function deepEqual(a, b) {
557
- if (Object.is(a, b)) return true;
558
- if (a instanceof Date && b instanceof Date) return a.getTime() === b.getTime();
559
- if (a instanceof RegExp && b instanceof RegExp) return a.toString() === b.toString();
560
- if (a instanceof Map && b instanceof Map) {
561
- if (a.size !== b.size) return false;
562
- for (const [key, val] of a.entries()) {
563
- if (!b.has(key) || !deepEqual(val, b.get(key))) return false;
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);
564
696
  }
565
- return true;
566
- }
567
- if (a instanceof Set && b instanceof Set) {
568
- if (a.size !== b.size) return false;
569
- for (const val of a.values()) {
570
- if (!b.has(val)) return false;
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;
571
706
  }
572
- return true;
573
- }
574
- if (Array.isArray(a) && Array.isArray(b)) {
575
- if (a.length !== b.length) return false;
576
- return a.every((item, i) => deepEqual(item, b[i]));
577
- }
578
- if (typeof a === "function" && typeof b === "function") return a.toString() === b.toString();
579
- if (isObject(a) && isObject(b)) {
580
- const keysA = Object.keys(a);
581
- const keysB = Object.keys(b);
582
- if (keysA.length !== keysB.length) return false;
583
- for (const key of keysA) {
584
- 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;
585
714
  }
586
- return true;
587
- }
588
- return false;
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);
589
733
  }
590
734
  var deepMerge = (base, override) => {
735
+ if (!base || !override) {
736
+ return base || override || {};
737
+ }
591
738
  const result = { ...base };
592
739
  Object.keys(override || {}).forEach((key) => {
593
740
  const baseValue = base[key];
594
741
  const overrideValue = override[key];
595
- if (typeof baseValue === "object" && baseValue !== null && !isArray(baseValue) && typeof overrideValue === "object" && overrideValue !== null && !isArray(overrideValue)) {
742
+ if (isObject(baseValue) && isObject(overrideValue)) {
596
743
  result[key] = deepMerge(baseValue, overrideValue);
597
- } else if (overrideValue !== void 0) {
744
+ } else if (isDef(overrideValue)) {
598
745
  result[key] = overrideValue;
599
746
  }
600
747
  });
601
748
  return result;
602
749
  };
603
- var objToOptions = (obj) => {
604
- 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) => ({
605
752
  label: obj[key],
606
- value: Number(key)
753
+ value: isNaN(Number(key)) ? key : Number(key)
607
754
  }));
608
755
  };
609
756
  var arrToObj = (arr = [], key) => {
610
757
  const obj = {};
611
- arr?.forEach((item) => {
758
+ arr.forEach((item) => {
612
759
  obj[item[key]] = item;
613
760
  });
614
761
  return obj;
615
762
  };
616
- var nsSetInterval = (fn, t) => {
763
+ var setInterval2 = (fn, t) => {
617
764
  let timer = null;
618
- let isCancelled = false;
619
- const interval = () => {
765
+ let running = true;
766
+ const loop = () => {
620
767
  timer = setTimeout(async () => {
621
- if (isCancelled) {
622
- return;
623
- }
768
+ if (!running) return;
624
769
  await fn();
625
- if (!isCancelled) {
626
- interval();
627
- }
770
+ if (running) loop();
628
771
  }, t);
629
772
  };
630
- interval();
773
+ loop();
631
774
  return {
632
- isRun: () => !!timer,
775
+ isRun: () => running,
633
776
  cancel: () => {
634
- isCancelled = true;
777
+ running = false;
635
778
  if (timer) {
636
779
  clearTimeout(timer);
637
780
  timer = null;
@@ -640,14 +783,13 @@ var nsSetInterval = (fn, t) => {
640
783
  };
641
784
  };
642
785
  var genNonDuplicateID = () => {
643
- let idStr = Date.now().toString(36);
644
- idStr += Math.random().toString(36).substr(2);
645
- return idStr;
786
+ return crypto.randomUUID();
646
787
  };
647
- var copyText = (text) => {
648
- if (navigator.clipboard && window.isSecureContext) {
649
- return navigator.clipboard.writeText(text);
650
- } 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) {
651
793
  const textArea = document.createElement("textarea");
652
794
  textArea.value = text;
653
795
  textArea.style.position = "absolute";
@@ -657,10 +799,9 @@ var copyText = (text) => {
657
799
  document.body.appendChild(textArea);
658
800
  textArea.focus();
659
801
  textArea.select();
660
- return new Promise((res, rej) => {
661
- document.execCommand("copy") ? res() : rej();
662
- textArea.remove();
663
- });
802
+ const ok = document.execCommand("copy");
803
+ if (ok && prompt) antd.message.success(prompt);
804
+ textArea.remove();
664
805
  }
665
806
  };
666
807
  function formatNumberWithCommas(number) {
@@ -684,25 +825,71 @@ var getFileName = (filePath) => {
684
825
  var getFileSuffixName = (fileName) => {
685
826
  return fileName.split(".").pop() || "";
686
827
  };
687
- var textAreaView = (con) => {
828
+ var convertNewlineToBr = (con) => {
688
829
  return con ? con.replace(/\r\n/g, "\n").replace(/\n/g, "<br/>") : "";
689
830
  };
690
- var buildUrlParams = (obj, url) => {
691
- const params = Object.entries(obj).filter(([, value]) => !isNullOrUnDef(value)).map(([key, value]) => {
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;
692
873
  if (isArray(value)) {
693
- return value.filter((v) => !isNullOrUnDef(v)).map((v) => `${encodeURIComponent(key)}=${encodeURIComponent(v)}`).join("&");
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));
694
883
  }
695
- return `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
696
- }).join("&");
697
- if (url) {
698
- const separator = url.includes("?") ? "&" : "?";
699
- return `${url}${separator}${params}`;
700
884
  }
701
- return params;
885
+ const query = params.toString();
886
+ if (!base) return query;
887
+ const cleanBase = base.split("?")[0];
888
+ return `${cleanBase}${query ? `?${query}` : ""}${hash}`;
702
889
  };
703
890
  var downloadFile = (url, name) => {
704
891
  const a = document.createElement("a");
705
- a.download = name || "\u56FE\u7247\u4E0B\u8F7D";
892
+ a.download = name || "\u6587\u4EF6";
706
893
  a.href = url;
707
894
  document.body.appendChild(a);
708
895
  a.click();
@@ -710,31 +897,28 @@ var downloadFile = (url, name) => {
710
897
  window.URL.revokeObjectURL(url);
711
898
  };
712
899
  var addUrlLastSlash = (url = "") => {
713
- const u = new URL(url, "https://logosdata.cn");
714
- let pathname = u.pathname;
715
- if (!pathname.endsWith("/")) {
716
- pathname += "/";
717
- }
718
- u.pathname = pathname;
719
- 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}`;
720
903
  };
721
- var getUrlMainSource = (url, preHref) => {
722
- if (!preHref) return url;
723
- let newUrl = "";
724
- const preHrefUrl = new URL(preHref);
904
+ var setUrlMainSource = (url, preHref, defaultMainSource) => {
725
905
  const urlParts = url.split("?");
726
906
  const srcParams = new URLSearchParams(urlParts[1] || "");
727
907
  if (srcParams.has("mainSource")) {
728
- newUrl = url;
729
- } else {
730
- const mainSource = preHrefUrl.searchParams.get("mainSource");
731
- if (mainSource) {
732
- newUrl = buildUrlParams({ mainSource }, url);
733
- } else {
734
- newUrl = url;
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) {
735
919
  }
736
920
  }
737
- return newUrl;
921
+ return buildUrlParams({ mainSource: mainSourceValue }, url);
738
922
  };
739
923
  var getWebSocketUrl = (path, customHost) => {
740
924
  const protocol = window.location.protocol === "https:" ? "wss:" : "ws:";
@@ -758,9 +942,178 @@ function transform(source, fieldMap) {
758
942
  function transforms(sources, fieldMap) {
759
943
  return sources?.map((source) => transform(source, fieldMap)) || [];
760
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
+ }
761
1114
 
762
1115
  // src/hooks/useDeepEffect.ts
763
- function useDeepEffect(effect, deps) {
1116
+ var useDeepEffect_default = (effect, deps) => {
764
1117
  const prevDepsRef = React16.useRef();
765
1118
  const depsChanged = !prevDepsRef.current || deps.length !== prevDepsRef.current.length || deps.some((dep, i) => !deepEqual(dep, prevDepsRef.current[i]));
766
1119
  React16.useEffect(() => {
@@ -769,8 +1122,8 @@ function useDeepEffect(effect, deps) {
769
1122
  return effect();
770
1123
  }
771
1124
  }, [depsChanged]);
772
- }
773
- function useRefState(init) {
1125
+ };
1126
+ var useRefState_default = (init) => {
774
1127
  const [state, setState] = React16.useState(init);
775
1128
  const stateRef = React16.useRef(init);
776
1129
  const setProxy = (newVal) => {
@@ -779,8 +1132,8 @@ function useRefState(init) {
779
1132
  };
780
1133
  const getState = () => stateRef.current;
781
1134
  return [state, setProxy, getState];
782
- }
783
- var useSyncInput = (storeValue, setStoreValue) => {
1135
+ };
1136
+ var useSyncInput_default = (storeValue, setStoreValue) => {
784
1137
  const [inputValue, setInputValue] = React16.useState(storeValue);
785
1138
  React16.useEffect(() => {
786
1139
  if (storeValue !== inputValue) {
@@ -796,7 +1149,7 @@ var useSyncInput = (storeValue, setStoreValue) => {
796
1149
  setInputValue: handleValueChange
797
1150
  };
798
1151
  };
799
- function useThrottle(func, wait) {
1152
+ var useThrottle_default = (func, wait) => {
800
1153
  const { current } = React16.useRef({ func, timeOut: null });
801
1154
  React16.useEffect(() => {
802
1155
  current.func = func;
@@ -830,18 +1183,20 @@ function useThrottle(func, wait) {
830
1183
  throttle.flush = flush;
831
1184
  throttle.cancel = cancel;
832
1185
  return React16.useCallback(throttle, []);
833
- }
1186
+ };
834
1187
  dayjs__default.default.extend(relativeTime__default.default);
835
- var DateFormatType = "YYYY-MM-DD HH:mm:ss";
836
- var DateFormatType2 = "YYYY-MM-DD";
837
- var UNIT = "date";
838
- var getStartOfTimestamp = (date, unit = UNIT) => {
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) => {
839
1194
  return dayjs__default.default(date).startOf(unit).valueOf();
840
1195
  };
841
- var getEndOfTimestamp = (date, unit = UNIT) => {
1196
+ var getEndOfTimestamp = (date, unit = DEFAULT_UNIT) => {
842
1197
  return dayjs__default.default(date).endOf(unit).valueOf();
843
1198
  };
844
- var formatDate = (date, fmt = DateFormatType) => {
1199
+ var formatDate = (date, fmt = DEFAULT_DATE_TIME_FORMAT) => {
845
1200
  if (date) {
846
1201
  return dayjs__default.default(date).format(fmt);
847
1202
  }
@@ -853,33 +1208,6 @@ var getTimestamp = (date) => {
853
1208
  var isExpire = (date) => {
854
1209
  return dayjs__default.default(date).isBefore(getStartOfTimestamp());
855
1210
  };
856
- var USER_KEY = "NS-USER";
857
- function setCurrentUser(userInfo) {
858
- const cipherText = AES__default.default.encrypt(JSON.stringify(userInfo), "((#II))").toString();
859
- sessionStorage.setItem(USER_KEY, cipherText);
860
- }
861
- function getCurrentUser() {
862
- const userInfoJson = sessionStorage.getItem(USER_KEY);
863
- if (userInfoJson) {
864
- const bytes = AES__default.default.decrypt(userInfoJson, "((#II))");
865
- const originalText = bytes.toString(encUtf8__default.default);
866
- return JSON.parse(originalText);
867
- }
868
- return null;
869
- }
870
- function clearCurrentUser() {
871
- sessionStorage.removeItem(USER_KEY);
872
- }
873
- var DEVICEID_KEY = "NS-DEVICE-ID";
874
- function getDeviceId() {
875
- let deviceId = localStorage.getItem(DEVICEID_KEY);
876
- if (deviceId) {
877
- return deviceId;
878
- }
879
- deviceId = genNonDuplicateID();
880
- localStorage.setItem(DEVICEID_KEY, deviceId);
881
- return deviceId;
882
- }
883
1211
  var OperatorToMethodName = {
884
1212
  "+": "plus",
885
1213
  "-": "minus",
@@ -932,97 +1260,191 @@ var isInteger = (num) => {
932
1260
  var isNegative = (num) => {
933
1261
  return new Decimal__default.default(num).isNegative();
934
1262
  };
935
- var cacheMessage = () => {
936
- const contents = {};
1263
+ var createCachedMessage = () => {
1264
+ const messageCache = {};
937
1265
  return ({ title = "\u63D0\u793A", content, type = "warning", duration = 3, onClose, isCache = true, isOnly = false }) => {
938
1266
  if (!content) return;
939
- const key = isOnly ? "cache-key" : content;
940
- const onClose2 = () => {
941
- delete contents[key];
1267
+ const cacheKey = isOnly ? "unique-message-key" : content;
1268
+ const handleClose = () => {
1269
+ delete messageCache[cacheKey];
942
1270
  onClose?.();
943
1271
  };
944
- if (isCache && contents[key]) ; else {
945
- if (isCache) {
946
- contents[key] = getTimestamp();
947
- }
948
- if (duration) {
949
- if (content.length > 30) {
950
- antd.notification[type]({
951
- message: title,
952
- description: content,
953
- placement: "top",
954
- duration,
955
- onClose: onClose2
956
- });
957
- } else {
958
- lib.message[type]({
959
- content,
960
- duration,
961
- onClose: onClose2
962
- });
963
- }
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
+ });
964
1285
  } else {
965
- antd.Modal[type]({
966
- title,
1286
+ antd.message[type]({
967
1287
  content,
968
- okButtonProps: { style: { background: LgPrimaryColor, outline: "none" } },
969
- afterClose: onClose2
1288
+ duration,
1289
+ onClose: handleClose
970
1290
  });
971
1291
  }
1292
+ } else {
1293
+ antd.Modal[type]({
1294
+ title,
1295
+ content,
1296
+ closable: true,
1297
+ centered: true,
1298
+ footer: null,
1299
+ afterClose: handleClose
1300
+ });
972
1301
  }
973
1302
  };
974
1303
  };
975
- var showMessage = cacheMessage();
1304
+ var cachedMessage = createCachedMessage();
976
1305
 
977
- // src/utils/session.ts
978
- var TOKEN_KEY = "NS-TOKEN";
979
- function setToken(accessToken) {
980
- localStorage.setItem(TOKEN_KEY, accessToken);
981
- }
982
- function getUrlToken() {
983
- const searchParams = new URLSearchParams(location.search);
984
- const token = searchParams.get(TOKEN_KEY);
985
- return token || "";
986
- }
987
- function getToken() {
988
- const token = getUrlToken();
989
- if (!token) {
990
- const token2 = localStorage.getItem(TOKEN_KEY);
991
- return token2 || "";
992
- } else {
993
- setToken(token);
994
- return token;
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();
995
1374
  }
996
- }
997
- function clearToken() {
998
- localStorage.removeItem(TOKEN_KEY);
999
- }
1000
- var SIGNPATH = "SIGNPATH";
1001
- function getSignPath() {
1002
- const path = localStorage.getItem(SIGNPATH);
1003
- return `${path || "/sign-in"}`;
1004
- }
1005
-
1006
- // src/utils/request.ts
1007
- var OK = 200;
1008
- var ERROR = 500;
1009
- var MISSING_PARAMETER = 400;
1010
- var UNAUTHORIZED = 401;
1011
- var FORBIDDEN = 403;
1012
- var NOT_FOUND = 404;
1013
- var PERMISSION_DENIED = 13001;
1014
- function createRequest(baseURL = "/api") {
1015
- const redirectUrl = () => {
1016
- emit("jumpLink", { url: `/uc${getSignPath()}` });
1017
- };
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) {
1018
1437
  const instance = axios__default.default.create({
1019
- baseURL,
1020
- timeout: 6e4
1438
+ baseURL: "/api",
1439
+ // 默认基础URL
1440
+ timeout: 6e4,
1441
+ // 请求超时时间设为60秒
1442
+ ...config
1443
+ // 合并传入的配置项
1021
1444
  });
1022
1445
  instance.interceptors.request.use(
1023
- function(config) {
1024
- config.headers[TOKEN_KEY] = getToken();
1025
- return config;
1446
+ function(config2) {
1447
+ return config2;
1026
1448
  },
1027
1449
  function(error) {
1028
1450
  return Promise.reject(error);
@@ -1031,49 +1453,80 @@ function createRequest(baseURL = "/api") {
1031
1453
  instance.interceptors.response.use(
1032
1454
  function(response) {
1033
1455
  if (isBlob(response.data)) return response;
1034
- if (response.data?.code !== OK) {
1035
- const isPermission = response.data?.code === PERMISSION_DENIED;
1036
- if (response.config?.showError !== false) {
1037
- showMessage({
1456
+ if (response.data?.code !== BusinessCode.OK) {
1457
+ const isPermission = response.data?.code === BusinessCode.PERMISSION_DENIED;
1458
+ if (showError(response.config?.showError)) {
1459
+ cachedMessage({
1038
1460
  title: isPermission ? "" : void 0,
1039
1461
  content: response.data.message,
1040
1462
  duration: isPermission ? 0 : 3
1041
1463
  });
1042
1464
  }
1043
- return Promise.reject(response.data);
1465
+ return Promise.reject(response);
1044
1466
  }
1045
1467
  return response;
1046
1468
  },
1047
1469
  function(err) {
1048
- const showError = err?.config?.showError !== false;
1049
1470
  if (!err.response) {
1050
- if (showError) showMessage({ content: "\u7F51\u7EDC\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC", type: "error" });
1471
+ if (showError(err?.config?.showError)) cachedMessage({ content: "\u7F51\u7EDC\u5F02\u5E38\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC", type: "error" });
1051
1472
  } else {
1052
1473
  switch (err.response?.status) {
1053
- case UNAUTHORIZED:
1054
- if (showError) showMessage({ content: err.response?.data.message, type: "error" });
1055
- redirectUrl();
1474
+ case HttpStatus.UNAUTHORIZED:
1475
+ if (showError(err?.config?.showError)) cachedMessage({ content: err.response?.data.message, type: "error" });
1056
1476
  break;
1057
1477
  default:
1058
- if (showError) showMessage({ content: err.response?.data.message || "\u8BF7\u6C42\u9519\u8BEF\uFF01", type: "error" });
1478
+ if (showError(err?.config?.showError)) cachedMessage({ content: err.response?.data.message || "\u8BF7\u6C42\u9519\u8BEF\uFF01", type: "error" });
1059
1479
  }
1060
1480
  }
1061
1481
  return Promise.reject(err);
1062
1482
  }
1063
1483
  );
1064
1484
  return {
1485
+ /**
1486
+ * 返回原始 axios 实例
1487
+ * 可以用于添加拦截器等
1488
+ */
1489
+ instance,
1490
+ /**
1491
+ * 发送 GET 请求
1492
+ * @param url - 请求地址
1493
+ * @param params - 查询参数
1494
+ * @param options - 额外的请求配置
1495
+ * @returns Promise<any> 响应数据
1496
+ */
1065
1497
  get: async (url, params, options) => {
1066
1498
  const res = await instance({ method: "get", url, params, ...options });
1067
1499
  return res.data;
1068
1500
  },
1501
+ /**
1502
+ * 发送 POST 请求
1503
+ * @param url - 请求地址
1504
+ * @param data - 请求体数据
1505
+ * @param options - 额外的请求配置
1506
+ * @returns Promise<any> 响应数据
1507
+ */
1069
1508
  post: async (url, data, options) => {
1070
1509
  const res = await instance({ method: "post", url, data, ...options });
1071
1510
  return res.data;
1072
1511
  },
1512
+ /**
1513
+ * 发送 PUT 请求
1514
+ * @param url - 请求地址
1515
+ * @param data - 请求体数据
1516
+ * @param options - 额外的请求配置
1517
+ * @returns Promise<any> 响应数据
1518
+ */
1073
1519
  put: async (url, data, options) => {
1074
1520
  const res = await instance({ method: "put", url, data, ...options });
1075
1521
  return res.data;
1076
1522
  },
1523
+ /**
1524
+ * 发送 DELETE 请求
1525
+ * @param url - 请求地址
1526
+ * @param data - 请求体数据
1527
+ * @param options - 额外的请求配置
1528
+ * @returns Promise<any> 响应数据
1529
+ */
1077
1530
  delete: async (url, data, options) => {
1078
1531
  const res = await instance({ method: "delete", url, data, ...options });
1079
1532
  return res.data;
@@ -1081,8 +1534,66 @@ function createRequest(baseURL = "/api") {
1081
1534
  };
1082
1535
  }
1083
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
+
1084
1595
  // src/hooks/webSocket/useWebSocket.ts
1085
- var useWebSocket = ({
1596
+ var useWebSocket_default = ({
1086
1597
  url,
1087
1598
  onMessage,
1088
1599
  onClose,
@@ -1090,11 +1601,8 @@ var useWebSocket = ({
1090
1601
  heartbeatMessage = "ping",
1091
1602
  clientHeartbeat = true,
1092
1603
  reconnectInterval = 5e3,
1093
- // 默认重连间隔为 5 秒
1094
1604
  maxReconnectAttempts,
1095
- // 不设置默认值为无限重连
1096
1605
  isReconnect = true
1097
- // 默认开启重连机制
1098
1606
  }) => {
1099
1607
  const socketRef = React16.useRef(null);
1100
1608
  const heartbeatIntervalRef = React16.useRef(null);
@@ -1118,6 +1626,7 @@ var useWebSocket = ({
1118
1626
  const stopHeartbeat = () => {
1119
1627
  if (heartbeatIntervalRef.current) {
1120
1628
  clearInterval(heartbeatIntervalRef.current);
1629
+ heartbeatIntervalRef.current = null;
1121
1630
  }
1122
1631
  };
1123
1632
  const stopReconnectTimer = () => {
@@ -1205,19 +1714,22 @@ var useWebSocket = ({
1205
1714
  stopReconnectTimer();
1206
1715
  };
1207
1716
  }, [url]);
1208
- const sendMessage = (message2) => {
1717
+ const sendMessage = (message3) => {
1209
1718
  if (socketRef.current?.readyState === WebSocket.OPEN) {
1210
- socketRef.current.send(message2);
1719
+ socketRef.current.send(message3);
1211
1720
  stopHeartbeat();
1212
1721
  startHeartbeat(socketRef.current);
1722
+ } else {
1723
+ console.warn("WebSocket \u672A\u8FDE\u63A5\uFF0C\u65E0\u6CD5\u53D1\u9001\u6D88\u606F:", message3);
1213
1724
  }
1214
1725
  };
1215
1726
  return {
1727
+ /** 发送消息方法 */
1216
1728
  sendMessage,
1729
+ /** Socket 连接状态 */
1217
1730
  socketReadyState
1218
1731
  };
1219
1732
  };
1220
- var useWebSocket_default = useWebSocket;
1221
1733
  var ProtectedView = ({
1222
1734
  passwordStatus,
1223
1735
  verifyPassword,
@@ -1243,8 +1755,8 @@ var ProtectedView = ({
1243
1755
  var PdfPreview_default = ({ password, fileUrl, pageNo = 1, scale = 1, isHasThumbnails = true, onSetPassword, onSetPageNo }) => {
1244
1756
  const embedRef = React16.useRef(null);
1245
1757
  const [sizes, setSizes] = React16.useState([0]);
1246
- const [, setDocLoaded, getDocLoaded] = useRefState(false);
1247
- const [currentPage, setCurrentPage, getCurrentPage] = useRefState(void 0);
1758
+ const [, setDocLoaded, getDocLoaded] = useRefState_default(false);
1759
+ const [currentPage, setCurrentPage, getCurrentPage] = useRefState_default(void 0);
1248
1760
  const [temporaryPassword, setTemporaryPassword] = React16.useState("");
1249
1761
  const jumpToPageNo = React16.useRef();
1250
1762
  const onVerifyPasswordEnd = (password2) => {
@@ -1290,25 +1802,25 @@ var PdfPreview_default = ({ password, fileUrl, pageNo = 1, scale = 1, isHasThumb
1290
1802
  }, 0);
1291
1803
  }, [pageNo]);
1292
1804
  const renderError = (error) => {
1293
- let message2 = "";
1805
+ let message3 = "";
1294
1806
  switch (error.name) {
1295
1807
  case "InvalidPDFException":
1296
- message2 = "\u6587\u4EF6\u65E0\u6548\u6216\u5DF2\u635F\u574F";
1808
+ message3 = "\u6587\u4EF6\u65E0\u6548\u6216\u5DF2\u635F\u574F";
1297
1809
  break;
1298
1810
  case "MissingPDFException":
1299
- message2 = "\u6587\u4EF6\u4E0D\u5B58\u5728";
1811
+ message3 = "\u6587\u4EF6\u4E0D\u5B58\u5728";
1300
1812
  break;
1301
1813
  case "UnexpectedResponseException":
1302
- message2 = "\u610F\u5916\u7684\u670D\u52A1\u5668\u54CD\u5E94";
1814
+ message3 = "\u610F\u5916\u7684\u670D\u52A1\u5668\u54CD\u5E94";
1303
1815
  break;
1304
1816
  // case 'CMapReaderFactory not initialized':
1305
1817
  // message = '字体映射文件加载失败,请刷新页面重试'
1306
1818
  // break
1307
1819
  default:
1308
- message2 = "\u65E0\u6CD5\u52A0\u8F7D\u6587\u6863";
1820
+ message3 = "\u65E0\u6CD5\u52A0\u8F7D\u6587\u6863";
1309
1821
  break;
1310
1822
  }
1311
- return /* @__PURE__ */ jsxRuntime.jsx(antd.Flex, { className: "height-full", justify: "center", align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(antd.Alert, { message: message2, type: "error", showIcon: true }) });
1823
+ return /* @__PURE__ */ jsxRuntime.jsx(antd.Flex, { className: "height-full", justify: "center", align: "center", children: /* @__PURE__ */ jsxRuntime.jsx(antd.Alert, { message: message3, type: "error", showIcon: true }) });
1312
1824
  };
1313
1825
  const onPageChange = (e) => {
1314
1826
  let newCurrentPage = e.currentPage;
@@ -1451,10 +1963,10 @@ var FilePreviewDrawer_default = ({
1451
1963
  var styles_module_default2 = {
1452
1964
  iframe: "styles_module_iframe"
1453
1965
  };
1454
- var Iframe_default = React16.forwardRef(({ id, src, className, onLoad }, ref) => {
1966
+ var Iframe_default = React16.forwardRef(({ defaultMainSource, id, src, className, onLoad }, ref) => {
1455
1967
  const [loading, setLoading] = React16.useState(false);
1456
1968
  const finalSrc = React16.useMemo(() => {
1457
- return buildUrlParams({ v: Date.now() }, addUrlLastSlash(getUrlMainSource(src, location.href)));
1969
+ return buildUrlParams({ v: Date.now() }, addUrlLastSlash(setUrlMainSource(src, location.href, defaultMainSource)));
1458
1970
  }, [src]);
1459
1971
  const onHandleLoad = () => {
1460
1972
  setLoading(false);
@@ -1463,7 +1975,17 @@ var Iframe_default = React16.forwardRef(({ id, src, className, onLoad }, ref) =>
1463
1975
  React16.useEffect(() => {
1464
1976
  setLoading(true);
1465
1977
  }, [src]);
1466
- 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("iframe", { id, ref, src: finalSrc, className: classNames2__default.default(styles_module_default2.iframe, className), onLoad: onHandleLoad }) }) });
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
+ ) }) });
1467
1989
  });
1468
1990
  var Link = TiptapLink__default.default.extend({
1469
1991
  inclusive: false,
@@ -5116,7 +5638,7 @@ var MarkdownEditor_default = ({
5116
5638
  editor?.commands.setContent(value);
5117
5639
  lastContentRef.current = value;
5118
5640
  }, [value, editor]);
5119
- const onPageChange = useDebounce((pageIndex) => {
5641
+ const onPageChange = useDebounce_default((pageIndex) => {
5120
5642
  onScrollPage?.(parseInt(pageIndex ?? "0"));
5121
5643
  }, 300);
5122
5644
  React16.useEffect(() => {
@@ -5239,7 +5761,7 @@ function renderDefault(DefaultComponent, ref, props) {
5239
5761
  if (!DefaultComponent) return null;
5240
5762
  return isRenderFn(DefaultComponent) ? /* @__PURE__ */ jsxRuntime.jsx(DefaultComponent, { ref, ...props }) : DefaultComponent;
5241
5763
  }
5242
- var RenderWrapper = React16.forwardRef(function RenderWrapper2({ control = true, ctx, DefaultComponent }, ref) {
5764
+ var RenderWrapper_default = React16.forwardRef(function RenderWrapper({ control = true, ctx, DefaultComponent }, ref) {
5243
5765
  if (control === false || isNull(control)) return null;
5244
5766
  if (control === true || control === void 0) {
5245
5767
  return renderDefault(DefaultComponent, ref);
@@ -5269,43 +5791,57 @@ function propsMerge(control, props) {
5269
5791
  return null;
5270
5792
  }
5271
5793
  var UserAvatar_default = ({ size, avatarSrc, userName }) => {
5272
- return avatarSrc ? /* @__PURE__ */ jsxRuntime.jsx(antd.Avatar, { size, src: avatarSrc }) : /* @__PURE__ */ jsxRuntime.jsx(antd.Avatar, { size, className: "cursor-pointer", style: { backgroundColor: LgPrimaryColor }, children: userName?.slice(0, 1)?.toLocaleUpperCase() });
5794
+ return avatarSrc ? /* @__PURE__ */ jsxRuntime.jsx(antd.Avatar, { size, src: avatarSrc }) : /* @__PURE__ */ jsxRuntime.jsx(antd.Avatar, { size, className: "cursor-pointer", style: { backgroundColor: "var(--ant-color-primary)" }, children: userName?.slice(0, 1)?.toLocaleUpperCase() });
5273
5795
  };
5274
5796
 
5275
5797
  exports.AudioPlayer = AudioPlayer_default;
5276
- exports.DateFormatType = DateFormatType;
5277
- exports.DateFormatType2 = DateFormatType2;
5278
- exports.ERROR = ERROR;
5279
- exports.FORBIDDEN = FORBIDDEN;
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;
5280
5803
  exports.FileIcon = FileIcon_default;
5281
5804
  exports.FilePreview = FilePreview_default;
5282
5805
  exports.FilePreviewDrawer = FilePreviewDrawer_default;
5806
+ exports.HttpStatus = HttpStatus;
5283
5807
  exports.Iframe = Iframe_default;
5284
5808
  exports.LazyComponent = LazyComponent_default;
5285
- exports.LgPrimaryColor = LgPrimaryColor;
5286
- exports.MISSING_PARAMETER = MISSING_PARAMETER;
5287
5809
  exports.MarkdownEditor = MarkdownEditor_default;
5288
5810
  exports.MarkdownPreview = MarkdownPreview_default;
5289
- exports.NOT_FOUND = NOT_FOUND;
5290
- exports.OK = OK;
5291
- exports.PERMISSION_DENIED = PERMISSION_DENIED;
5811
+ exports.MultiEmailValidator = MultiEmailValidator;
5292
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;
5293
5824
  exports.RenderMarkdown = RenderMarkdown_default;
5294
- exports.RenderWrapper = RenderWrapper;
5295
- exports.TOKEN_KEY = TOKEN_KEY;
5296
- exports.UNAUTHORIZED = UNAUTHORIZED;
5825
+ exports.RenderWrapper = RenderWrapper_default;
5826
+ exports.ThanNumLengthValidator = ThanNumLengthValidator;
5827
+ exports.ThanNumValidator = ThanNumValidator;
5297
5828
  exports.UserAvatar = UserAvatar_default;
5298
5829
  exports.VideoPlayer = VideoPlayer_default;
5299
5830
  exports.absVal = absVal;
5300
5831
  exports.addUrlLastSlash = addUrlLastSlash;
5832
+ exports.aesDecrypt = aesDecrypt;
5833
+ exports.aesEncrypt = aesEncrypt;
5301
5834
  exports.arrToObj = arrToObj;
5302
5835
  exports.buildUrlParams = buildUrlParams;
5836
+ exports.cachedMessage = cachedMessage;
5303
5837
  exports.calculate = calculate;
5304
- exports.clearCurrentUser = clearCurrentUser;
5305
- exports.clearToken = clearToken;
5306
5838
  exports.compareNum = compareNum;
5839
+ exports.convertCurrency = convertCurrency;
5840
+ exports.convertNewlineToBr = convertNewlineToBr;
5307
5841
  exports.copyText = copyText;
5308
5842
  exports.createRequest = createRequest;
5843
+ exports.createSecureManager = createSecureManager;
5844
+ exports.createTokenManager = createTokenManager;
5309
5845
  exports.decimalPlaces = decimalPlaces;
5310
5846
  exports.deepCopy = deepCopy;
5311
5847
  exports.deepEqual = deepEqual;
@@ -5314,27 +5850,25 @@ exports.dividedBy = dividedBy;
5314
5850
  exports.downloadFile = downloadFile;
5315
5851
  exports.emit = emit;
5316
5852
  exports.emitToChild = emitToChild;
5853
+ exports.executeScript = executeScript;
5317
5854
  exports.formatDate = formatDate;
5318
5855
  exports.formatNumberWithCommas = formatNumberWithCommas;
5319
5856
  exports.genNonDuplicateID = genNonDuplicateID;
5320
5857
  exports.generateRandomNumbers = generateRandomNumbers;
5321
- exports.getCurrentUser = getCurrentUser;
5858
+ exports.getAllUrlParams = getAllUrlParams;
5322
5859
  exports.getDeviceId = getDeviceId;
5323
5860
  exports.getEndOfTimestamp = getEndOfTimestamp;
5324
5861
  exports.getFileName = getFileName;
5325
5862
  exports.getFileSuffixName = getFileSuffixName;
5326
- exports.getSignPath = getSignPath;
5863
+ exports.getRowSpanCount = getRowSpanCount;
5327
5864
  exports.getStartOfTimestamp = getStartOfTimestamp;
5328
5865
  exports.getTimestamp = getTimestamp;
5329
- exports.getToken = getToken;
5330
- exports.getUrlMainSource = getUrlMainSource;
5331
- exports.getUrlToken = getUrlToken;
5332
5866
  exports.getWebSocketUrl = getWebSocketUrl;
5867
+ exports.importThirdPartyFile = importThirdPartyFile;
5333
5868
  exports.is = is;
5334
5869
  exports.isArray = isArray;
5335
5870
  exports.isBlob = isBlob;
5336
5871
  exports.isBoolean = isBoolean;
5337
- exports.isClient = isClient;
5338
5872
  exports.isDate = isDate;
5339
5873
  exports.isDef = isDef;
5340
5874
  exports.isElement = isElement;
@@ -5344,6 +5878,7 @@ exports.isExpire = isExpire;
5344
5878
  exports.isExternal = isExternal;
5345
5879
  exports.isFunction = isFunction;
5346
5880
  exports.isInteger = isInteger;
5881
+ exports.isJson = isJson;
5347
5882
  exports.isLocalhost = isLocalhost;
5348
5883
  exports.isMap = isMap;
5349
5884
  exports.isNegative = isNegative;
@@ -5353,33 +5888,35 @@ exports.isNumber = isNumber;
5353
5888
  exports.isNumberNoNaN = isNumberNoNaN;
5354
5889
  exports.isObject = isObject;
5355
5890
  exports.isPromise = isPromise;
5891
+ exports.isReferenceType = isReferenceType;
5356
5892
  exports.isRegExp = isRegExp;
5357
- exports.isServer = isServer;
5893
+ exports.isScriptSafe = isScriptSafe;
5894
+ exports.isSet = isSet;
5358
5895
  exports.isString = isString;
5359
5896
  exports.isUnDef = isUnDef;
5360
5897
  exports.isWindow = isWindow;
5361
5898
  exports.minus = minus;
5362
- exports.nsSetInterval = nsSetInterval;
5363
5899
  exports.objToOptions = objToOptions;
5364
5900
  exports.plus = plus;
5365
5901
  exports.precision = precision;
5902
+ exports.processItemList = processItemList;
5366
5903
  exports.propsMerge = propsMerge;
5367
- exports.setCurrentUser = setCurrentUser;
5368
- exports.setToken = setToken;
5904
+ exports.setInterval = setInterval2;
5905
+ exports.setUrlMainSource = setUrlMainSource;
5369
5906
  exports.shouldRender = shouldRender;
5370
- exports.textAreaView = textAreaView;
5371
- exports.themeConfig = themeConfig;
5372
5907
  exports.times = times;
5373
5908
  exports.toFixed = toFixed;
5374
5909
  exports.transform = transform;
5375
5910
  exports.transforms = transforms;
5376
- exports.useCreateValtioContext = useCreateValtioContext;
5377
- exports.useDebounce = useDebounce;
5378
- exports.useDeepEffect = useDeepEffect;
5379
- exports.useIframeRelayBridge = useIframeRelayBridge;
5380
- exports.useRefState = useRefState;
5381
- exports.useSyncInput = useSyncInput;
5382
- exports.useThrottle = useThrottle;
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;
5383
5920
  exports.useWebSocket = useWebSocket_default;
5384
5921
  //# sourceMappingURL=index.cjs.js.map
5385
5922
  //# sourceMappingURL=index.cjs.js.map