@libs-ui/utils 0.2.306-5 → 0.2.306-7

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.
@@ -3,7 +3,7 @@ import Quill from 'quill';
3
3
  import { fromEvent, tap, takeUntil, mergeMap, startWith, finalize, lastValueFrom, timer, Subject, filter, Observable } from 'rxjs';
4
4
  import CryptoES from 'crypto-es';
5
5
  import { HttpParams } from '@angular/common/http';
6
- import { isSignal, TemplateRef, ElementRef, signal, InjectionToken } from '@angular/core';
6
+ import { isSignal, signal, TemplateRef, ElementRef, InjectionToken } from '@angular/core';
7
7
  import dayjs from 'dayjs';
8
8
  import 'dayjs/locale/en';
9
9
  import 'dayjs/locale/vi';
@@ -1304,15 +1304,17 @@ const updateFunctionFormatDate = (functionCustom) => {
1304
1304
  * @param config.formatOfDate định dạng thời gian đang được truyền vào
1305
1305
  */
1306
1306
  const getDayjs = (config) => {
1307
+ // helper cast để tránh lặp lại kiểu điều kiện ở các return
1308
+ const out = (v) => v;
1307
1309
  if (!config) {
1308
- return dayjs().tz();
1310
+ return out(dayjs().tz());
1309
1311
  }
1310
1312
  config.date = !config.date && config.returnDayjsIfConfigDateNotExist ? dayjs().tz() : config.date;
1311
1313
  if (typeof config.date === 'number') {
1312
1314
  config.date = dayjs.unix(config.date);
1313
1315
  }
1314
1316
  if (!config.date) {
1315
- return undefined;
1317
+ return out(undefined);
1316
1318
  }
1317
1319
  let { date, utc, formatOfDate } = config;
1318
1320
  while (isSignal(date)) {
@@ -1326,18 +1328,18 @@ const getDayjs = (config) => {
1326
1328
  }
1327
1329
  if (utc) {
1328
1330
  if (formatOfDate) {
1329
- return dayjs(date, formatOfDate).utc();
1331
+ return out(dayjs(date, formatOfDate).utc());
1330
1332
  }
1331
1333
  const dateInputIsUTC = (dayjs.isDayjs(date) && date.isUTC()) || (typeof date === 'string' && date.includes('Z'));
1332
1334
  if (dateInputIsUTC) {
1333
- return dayjs(date);
1335
+ return out(dayjs(date));
1334
1336
  }
1335
- return dayjs(date).utc();
1337
+ return out(dayjs(date).utc());
1336
1338
  }
1337
1339
  if (typeof date === 'string' && !date.includes('Z') && !date.includes('+')) {
1338
- return (formatOfDate ? dayjs.tz(date, formatOfDate, config.localeZone || timeZoneSetup) : dayjs.tz(date, config.localeZone || timeZoneSetup));
1340
+ return out(formatOfDate ? dayjs.tz(date, formatOfDate, config.localeZone || timeZoneSetup) : dayjs.tz(date, config.localeZone || timeZoneSetup));
1339
1341
  }
1340
- return (formatOfDate ? dayjs(date, formatOfDate) : dayjs(date)).tz();
1342
+ return out((formatOfDate ? dayjs(date, formatOfDate) : dayjs(date)).tz());
1341
1343
  };
1342
1344
  /**
1343
1345
  * @description Kiểm tra xem hai ngày có khác nhau không (khác ngày trong tuần)
@@ -1539,6 +1541,127 @@ class UtilsHttpParamsRequest extends HttpParams {
1539
1541
  // "pathVariable-name": '124',
1540
1542
  // };
1541
1543
 
1544
+ /* eslint-disable @typescript-eslint/no-explicit-any */
1545
+ /**
1546
+ * Chuyển đổi một đối tượng hoặc giá trị thành signal
1547
+ * @param data Dữ liệu cần chuyển đổi thành signal
1548
+ * @param cloneDeepIfNotSignal Có thực hiện sao chép sâu dữ liệu trước khi chuyển đổi hay không nếu data không phải signal. Mặc định là true.
1549
+ * Đặt false nếu muốn giữ nguyên tham chiếu đến dữ liệu gốc.
1550
+ * Nếu muốn sao chép sâu đối tượng signal thì đặt cloneDeepIfNotSignal là true và acceptConvertObjectInnerWritableSignal là true.
1551
+ * @param isSignalPrimitiveType Có chuyển đổi các giá trị nguyên thủy (string, number, boolean) thành signal hay không. Mặc định là false.
1552
+ * Đặt true nếu muốn bọc các giá trị nguyên thủy trong signal.
1553
+ * @param acceptConvertObjectInnerWritableSignal Có tiếp tục tìm kiếm và chuyển đổi các đối tượng bên trong signal hay không. Mặc định là false.
1554
+ * Đặt true nếu muốn tìm và chuyển đổi các đối tượng bên trong signal hoặc chính nó thành signal mới.
1555
+ * @returns Dữ liệu đã được chuyển đổi theo kiểu T
1556
+ */
1557
+ const convertObjectToSignal = (data, cloneDeepIfNotSignal = true, isSignalPrimitiveType = false, acceptConvertObjectInnerWritableSignal = false, seen = new WeakMap()) => {
1558
+ if ((data === null || typeof data !== 'object') && !isSignal(data)) {
1559
+ return (isSignalPrimitiveType ? signal(data) : data);
1560
+ }
1561
+ if (seen.has(data)) {
1562
+ return seen.get(data);
1563
+ }
1564
+ if (isSignal(data)) {
1565
+ if (!acceptConvertObjectInnerWritableSignal) {
1566
+ return data;
1567
+ }
1568
+ seen.set(data, convertObjectToSignal(data(), cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal, seen));
1569
+ return seen.get(data);
1570
+ }
1571
+ if (Array.isArray(data)) {
1572
+ seen.set(data, signal(data.map((item) => convertObjectToSignal(item, cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal, seen))));
1573
+ return seen.get(data);
1574
+ }
1575
+ if (data instanceof Map) {
1576
+ const mapCopy = new Map();
1577
+ Array.from(data.keys()).forEach((key) => {
1578
+ mapCopy.set(key, convertObjectToSignal(data.get(key), cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal));
1579
+ });
1580
+ seen.set(data, signal(mapCopy));
1581
+ return seen.get(data);
1582
+ }
1583
+ if (data instanceof Promise || data instanceof Observable) {
1584
+ return data;
1585
+ }
1586
+ data = signal(cloneDeepIfNotSignal ? { ...data } : data);
1587
+ seen.set(data, data);
1588
+ for (const key in data()) {
1589
+ const value = data()[key];
1590
+ if (value instanceof TemplateRef ||
1591
+ value instanceof File ||
1592
+ value instanceof Blob ||
1593
+ Object.prototype.toString.call(value) === '[object File]' ||
1594
+ value instanceof ElementRef ||
1595
+ value instanceof Element ||
1596
+ value instanceof Date ||
1597
+ value instanceof RegExp ||
1598
+ value instanceof Set ||
1599
+ value instanceof Map ||
1600
+ value instanceof Promise ||
1601
+ value instanceof Observable ||
1602
+ value instanceof HttpParams) {
1603
+ continue;
1604
+ }
1605
+ if (Object.prototype.hasOwnProperty.call(data(), key)) {
1606
+ data()[key] = convertObjectToSignal(value, cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal);
1607
+ }
1608
+ }
1609
+ return data;
1610
+ };
1611
+ const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakMap()) => {
1612
+ let ignoreCheckSeenHasDataAfterWhile = false;
1613
+ while (isSignal(data) && !seen.has(data)) {
1614
+ const dataConvert = data();
1615
+ if (typeof dataConvert === 'object') {
1616
+ if (dataConvert === null) {
1617
+ return dataConvert;
1618
+ }
1619
+ seen.set(dataConvert, dataConvert);
1620
+ data = dataConvert;
1621
+ ignoreCheckSeenHasDataAfterWhile = true;
1622
+ break;
1623
+ }
1624
+ seen.set(data, dataConvert);
1625
+ data = dataConvert;
1626
+ }
1627
+ if (data === null || typeof data === 'function' || typeof data !== 'object') {
1628
+ return data;
1629
+ }
1630
+ if (!ignoreCheckSeenHasDataAfterWhile && seen.has(data)) {
1631
+ return seen.get(data);
1632
+ }
1633
+ if (Array.isArray(data)) {
1634
+ if (!isSignal(data[0])) {
1635
+ return data;
1636
+ }
1637
+ seen.set(data, data.map((item) => convertSignalToObject(isCloneDeep ? cloneDeep(item) : item, isCloneDeep, seen)));
1638
+ return seen.get(data);
1639
+ }
1640
+ if (data instanceof Map) {
1641
+ const mapCopy = new Map();
1642
+ Array.from(data.keys()).forEach((key) => {
1643
+ mapCopy.set(key, convertSignalToObject(isCloneDeep ? cloneDeep(data.get(key)) : data.get(key), isCloneDeep));
1644
+ });
1645
+ seen.set(data, mapCopy);
1646
+ return seen.get(data);
1647
+ }
1648
+ if (data instanceof File || data instanceof Blob || Object.prototype.toString.call(data) === '[object File]') {
1649
+ return data;
1650
+ }
1651
+ if (data instanceof TemplateRef || data instanceof ElementRef || data instanceof Element || data instanceof Promise || data instanceof Observable || data instanceof HttpParams) {
1652
+ return data;
1653
+ }
1654
+ const result = isCloneDeep ? {} : data;
1655
+ seen.set(data, result);
1656
+ for (const key in data) {
1657
+ const value = data[key];
1658
+ if (Object.prototype.hasOwnProperty.call(data, key)) {
1659
+ result[key] = convertSignalToObject(isCloneDeep ? cloneDeep(value) : value, isCloneDeep);
1660
+ }
1661
+ }
1662
+ return result;
1663
+ };
1664
+
1542
1665
  /* eslint-disable @typescript-eslint/no-explicit-any */
1543
1666
  /**Các hàm tương tự thư viện lodash */
1544
1667
  /**
@@ -1551,7 +1674,10 @@ class UtilsHttpParamsRequest extends HttpParams {
1551
1674
  * isNil(0); // false
1552
1675
  * isNil('hello'); // false
1553
1676
  */
1554
- const isNil = (value) => {
1677
+ const isNil = (value, options) => {
1678
+ if (!options?.ignoreUnWrapSignal) {
1679
+ value = convertSignalToObject(value);
1680
+ }
1555
1681
  return value === null || value === undefined;
1556
1682
  };
1557
1683
  /**
@@ -1567,11 +1693,74 @@ const isNil = (value) => {
1567
1693
  * isEmpty([1, 2, 3]); // false
1568
1694
  * isEmpty({ a: 1 }); // false
1569
1695
  */
1570
- const isEmpty = (value) => {
1571
- while (isSignal(value)) {
1572
- value = value();
1696
+ const isEmpty = (value, options) => {
1697
+ if (options?.ignoreUnWrapSignal) {
1698
+ value = convertSignalToObject(value);
1699
+ }
1700
+ if (options?.ignoreCheckFalsy) {
1701
+ return isEmptyTypeObject(value);
1702
+ }
1703
+ if (options?.ignoreCheckTypeObj) {
1704
+ return isFalsy(value, { ignoreZero: true });
1705
+ }
1706
+ return isFalsy(value, { ignoreZero: true }) || isEmptyTypeObject(value);
1707
+ };
1708
+ /**
1709
+ * Kiểm tra xem một giá trị có phải là object rỗng hay không
1710
+ * @param value Giá trị cần kiểm tra
1711
+ * @returns true nếu giá trị là object rỗng, false nếu không
1712
+ * @example
1713
+ * isEmptyTypeObject({}); // true
1714
+ * isEmptyTypeObject({ a: 1 }); // false
1715
+ */
1716
+ const isEmptyTypeObject = (value) => {
1717
+ return typeof value === 'object' && (JSON.stringify(value) === '{}' || JSON.stringify(value) === '[]');
1718
+ };
1719
+ /**
1720
+ * Kiểm tra xem một giá trị có phải là null, rỗng, undefined hoặc 0 hay không
1721
+ * @param value Giá trị cần kiểm tra
1722
+ * @param options Cấu hình tùy chọn
1723
+ * @param options.ignoreZero Nếu true, sẽ không kiểm tra giá trị 0
1724
+ * @returns true nếu giá trị là null, rỗng, undefined hoặc 0, false nếu không
1725
+ * @example
1726
+ * isTruthy(null); // false
1727
+ * isTruthy(''); // false
1728
+ * isTruthy(undefined); // false
1729
+ * isTruthy(0); // false
1730
+ * isTruthy({}); // false
1731
+ * isTruthy(0, { ignoreZero: true }); // true
1732
+ */
1733
+ const isTruthy = (value, options) => {
1734
+ return !isFalsy(value, options);
1735
+ };
1736
+ /**
1737
+ * Kiểm tra xem một giá trị có phải là null, rỗng, undefined hoặc 0 hay không
1738
+ * @param value Giá trị cần kiểm tra
1739
+ * @param options Cấu hình tùy chọn
1740
+ * @param options.ignoreZero Nếu true, sẽ không kiểm tra giá trị 0
1741
+ * @returns true nếu giá trị là null, rỗng, undefined hoặc 0, false nếu không
1742
+ * @example
1743
+ * isFalsy(null); // true
1744
+ * isFalsy(''); // true
1745
+ * isFalsy(undefined); // true
1746
+ * isFalsy(0); // true
1747
+ * isFalsy({}); // false
1748
+ * isFalsy(0, { ignoreZero: true }); // false
1749
+ */
1750
+ const isFalsy = (value, options) => {
1751
+ if (!options?.ignoreUnWrapSignal) {
1752
+ value = convertSignalToObject(value);
1753
+ }
1754
+ if (isNil(value)) {
1755
+ return true;
1756
+ }
1757
+ if (options?.ignoreZero) {
1758
+ return value === '';
1573
1759
  }
1574
- return value === null || value === '' || value === undefined || (typeof value === 'object' && (JSON.stringify(value) === '{}' || JSON.stringify(value) === '[]'));
1760
+ if (options?.ignoreCheckString) {
1761
+ return value === 0;
1762
+ }
1763
+ return value === '' || value === 0;
1575
1764
  };
1576
1765
  /**
1577
1766
  * Loại bỏ các thuộc tính của đối tượng dựa trên một hàm điều kiện
@@ -1916,7 +2105,7 @@ const keyBy = (data, key) => {
1916
2105
  * // }
1917
2106
  */
1918
2107
  const groupBy = (data, key) => {
1919
- if (!data || !data.length || !Object.keys(get(data, '0')).length || !key) {
2108
+ if (!data || !data.length || !Object.keys(get(data, '[0]')).length || !key) {
1920
2109
  return {};
1921
2110
  }
1922
2111
  return data.reduce((dir, nextItem) => {
@@ -1985,6 +2174,11 @@ const range = (start, end, step) => {
1985
2174
  * isEqual({a:1}, {a:1}); // true
1986
2175
  */
1987
2176
  const isEqual = (value1, value2, options) => {
2177
+ // Handle signals
2178
+ if (!options?.ignoreUnWrapSignal) {
2179
+ value1 = convertSignalToObject(value1);
2180
+ value2 = convertSignalToObject(value2);
2181
+ }
1988
2182
  const { exactlyPosition = false, ignoreExactlyDataType = false } = options || {};
1989
2183
  if (value1 === value2 || (value1 === null && value2 === null) || (value1 === undefined && value2 === undefined)) {
1990
2184
  return true;
@@ -1992,13 +2186,6 @@ const isEqual = (value1, value2, options) => {
1992
2186
  if (ignoreExactlyDataType) {
1993
2187
  return isEqual(isNil(value1) ? undefined : `${value1}`, isNil(value2) ? undefined : `${value2}`);
1994
2188
  }
1995
- // Handle signals
1996
- while (isSignal(value1)) {
1997
- value1 = value1();
1998
- }
1999
- while (isSignal(value2)) {
2000
- value2 = value2();
2001
- }
2002
2189
  if (typeof value1 !== 'object' || typeof value2 !== 'object' || (Array.isArray(value1) && !Array.isArray(value2)) || (!Array.isArray(value1) && Array.isArray(value2))) {
2003
2190
  return false;
2004
2191
  }
@@ -2036,7 +2223,7 @@ const isEqual = (value1, value2, options) => {
2036
2223
  * uniqBy(numbersSignal); // [signal(1), signal(2), signal(3), signal(5), signal(4), signal(6), signal(7)]
2037
2224
  */
2038
2225
  const uniqBy = (data, key) => {
2039
- if (!key || !data?.length || typeof get(data, '0') !== 'object') {
2226
+ if (!key || !data?.length || typeof get(data, '[0]') !== 'object') {
2040
2227
  // Xử lý mảng chứa signal values
2041
2228
  if (data[0] && isSignal(data[0])) {
2042
2229
  const seen = new Set();
@@ -2458,127 +2645,6 @@ const xssFilter = async (data) => {
2458
2645
  return await functionXssFilter(data);
2459
2646
  };
2460
2647
 
2461
- /* eslint-disable @typescript-eslint/no-explicit-any */
2462
- /**
2463
- * Chuyển đổi một đối tượng hoặc giá trị thành signal
2464
- * @param data Dữ liệu cần chuyển đổi thành signal
2465
- * @param cloneDeepIfNotSignal Có thực hiện sao chép sâu dữ liệu trước khi chuyển đổi hay không nếu data không phải signal. Mặc định là true.
2466
- * Đặt false nếu muốn giữ nguyên tham chiếu đến dữ liệu gốc.
2467
- * Nếu muốn sao chép sâu đối tượng signal thì đặt cloneDeepIfNotSignal là true và acceptConvertObjectInnerWritableSignal là true.
2468
- * @param isSignalPrimitiveType Có chuyển đổi các giá trị nguyên thủy (string, number, boolean) thành signal hay không. Mặc định là false.
2469
- * Đặt true nếu muốn bọc các giá trị nguyên thủy trong signal.
2470
- * @param acceptConvertObjectInnerWritableSignal Có tiếp tục tìm kiếm và chuyển đổi các đối tượng bên trong signal hay không. Mặc định là false.
2471
- * Đặt true nếu muốn tìm và chuyển đổi các đối tượng bên trong signal hoặc chính nó thành signal mới.
2472
- * @returns Dữ liệu đã được chuyển đổi theo kiểu T
2473
- */
2474
- const convertObjectToSignal = (data, cloneDeepIfNotSignal = true, isSignalPrimitiveType = false, acceptConvertObjectInnerWritableSignal = false, seen = new WeakMap()) => {
2475
- if ((data === null || typeof data !== 'object') && !isSignal(data)) {
2476
- return (isSignalPrimitiveType ? signal(data) : data);
2477
- }
2478
- if (seen.has(data)) {
2479
- return seen.get(data);
2480
- }
2481
- if (isSignal(data)) {
2482
- if (!acceptConvertObjectInnerWritableSignal) {
2483
- return data;
2484
- }
2485
- seen.set(data, convertObjectToSignal(data(), cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal, seen));
2486
- return seen.get(data);
2487
- }
2488
- if (Array.isArray(data)) {
2489
- seen.set(data, signal(data.map((item) => convertObjectToSignal(item, cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal, seen))));
2490
- return seen.get(data);
2491
- }
2492
- if (data instanceof Map) {
2493
- const mapCopy = new Map();
2494
- Array.from(data.keys()).forEach((key) => {
2495
- mapCopy.set(key, convertObjectToSignal(data.get(key), cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal));
2496
- });
2497
- seen.set(data, signal(mapCopy));
2498
- return seen.get(data);
2499
- }
2500
- if (data instanceof Promise || data instanceof Observable) {
2501
- return data;
2502
- }
2503
- data = signal(cloneDeepIfNotSignal ? { ...data } : data);
2504
- seen.set(data, data);
2505
- for (const key in data()) {
2506
- const value = data()[key];
2507
- if (value instanceof TemplateRef ||
2508
- value instanceof File ||
2509
- value instanceof Blob ||
2510
- Object.prototype.toString.call(value) === '[object File]' ||
2511
- value instanceof ElementRef ||
2512
- value instanceof Element ||
2513
- value instanceof Date ||
2514
- value instanceof RegExp ||
2515
- value instanceof Set ||
2516
- value instanceof Map ||
2517
- value instanceof Promise ||
2518
- value instanceof Observable ||
2519
- value instanceof HttpParams) {
2520
- continue;
2521
- }
2522
- if (Object.prototype.hasOwnProperty.call(data(), key)) {
2523
- data()[key] = convertObjectToSignal(value, cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal);
2524
- }
2525
- }
2526
- return data;
2527
- };
2528
- const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakMap()) => {
2529
- let ignoreCheckSeenHasDataAfterWhile = false;
2530
- while (isSignal(data) && !seen.has(data)) {
2531
- const dataConvert = data();
2532
- if (typeof dataConvert === 'object') {
2533
- if (dataConvert === null) {
2534
- return dataConvert;
2535
- }
2536
- seen.set(dataConvert, dataConvert);
2537
- data = dataConvert;
2538
- ignoreCheckSeenHasDataAfterWhile = true;
2539
- break;
2540
- }
2541
- seen.set(data, dataConvert);
2542
- data = dataConvert;
2543
- }
2544
- if (data === null || typeof data === 'function' || typeof data !== 'object') {
2545
- return data;
2546
- }
2547
- if (!ignoreCheckSeenHasDataAfterWhile && seen.has(data)) {
2548
- return seen.get(data);
2549
- }
2550
- if (Array.isArray(data)) {
2551
- if (!isSignal(data[0])) {
2552
- return data;
2553
- }
2554
- seen.set(data, data.map((item) => convertSignalToObject(isCloneDeep ? cloneDeep(item) : item, isCloneDeep, seen)));
2555
- return seen.get(data);
2556
- }
2557
- if (data instanceof Map) {
2558
- const mapCopy = new Map();
2559
- Array.from(data.keys()).forEach((key) => {
2560
- mapCopy.set(key, convertSignalToObject(isCloneDeep ? cloneDeep(data.get(key)) : data.get(key), isCloneDeep));
2561
- });
2562
- seen.set(data, mapCopy);
2563
- return seen.get(data);
2564
- }
2565
- if (data instanceof File || data instanceof Blob || Object.prototype.toString.call(data) === '[object File]') {
2566
- return data;
2567
- }
2568
- if (data instanceof TemplateRef || data instanceof ElementRef || data instanceof Element || data instanceof Promise || data instanceof Observable || data instanceof HttpParams) {
2569
- return data;
2570
- }
2571
- const result = isCloneDeep ? {} : data;
2572
- seen.set(data, result);
2573
- for (const key in data) {
2574
- const value = data[key];
2575
- if (Object.prototype.hasOwnProperty.call(data, key)) {
2576
- result[key] = convertSignalToObject(isCloneDeep ? cloneDeep(value) : value, isCloneDeep);
2577
- }
2578
- }
2579
- return result;
2580
- };
2581
-
2582
2648
  const ENCODE_URI_PATTERN = /%([0-9A-F]{2})/g;
2583
2649
  const decodeURI = (value) => {
2584
2650
  return decodeURIComponent(value
@@ -2990,5 +3056,5 @@ const createUniqueRandomIntGenerator = (min, max) => {
2990
3056
  * Generated bundle index. Do not edit.
2991
3057
  */
2992
3058
 
2993
- export { AudioExtList, CHARACTER_DATA_EMPTY, COMMUNICATE_MICRO_KEY_GET_ALL_MESSAGE, COMMUNICATE_MICRO_PREFIX_TYPE, DEFAULT_START_PAGE_0, DocumentExtList, ENCODE_URI_PATTERN, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, ExcelExtList, ImageExtList, LINK_IMAGE_ERROR_TOKEN_INJECT, PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, PROCESS_BAR_STEPS_CONFIG_DEFAULT_TOKEN_INJECT, UtilsCache, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, UtilsKeyCodeConstant, UtilsLanguageConstants, UtilsUrlSearchParams, VideoExtList, base64Decode, base64Encode, capitalize, checkMouseOverInContainer, checkViewInScreen, cloneDeep, cloneIBoundingClientRect, colorContrastFromOrigin, colorStepContrastFromOrigin, convertBase64ToBlob, convertBlobToFile, convertFileToBase64, convertFileToBase64_ObjectUrl, convertHtmlToDivBlocks, convertObjectToSignal, convertSignalToObject, convertUrlToFile, createUniqueRandomIntGenerator, decodeEscapeHtml, decodeURI, decrypt, decrypt3rd, deleteUnicode, downloadFileByUrl, downloadFileByUrlUseXmlRequest, downloadImageFromELement, encodeURI, encrypt, encrypt3rd, endCodeUrl, escapeHtml, firstLetterToUpperCase, formatDate, formatNumber, formatTextCompare, fullNameFormat, generateInterface, get, getColorById, getDayjs, getDeltaFromHTML, getDeviceInfo, getDocumentByString, getDragEventByElement, getEventNameHandleClick, getFileExtension, getHTMLFromQuill, getKeyCacheByArrayObject, getLabelBySizeFile, getPlatFromBrowser, getSmartAxisScale, getViewport, groupBy, highlightByKeyword, insertContentWithRange, isDifferenceDay, isDifferenceMonth, isDifferenceYear, isEmbedFrame, isEmpty, isEqual, isIncludeAudioExtList, isIncludeDocumentExtList, isIncludeImageExtList, isIncludeVideoExtList, isNil, isTypeAudio, isTypeFile, isTypeImage, isTypeVideo, keyBy, listColorDefine, md5, omitBy, patternAccount, patternDomain, patternEmail, patternEmoji, patternEncodeUri, patternGetFieldByRuleFieldReplace, patternHostUrl, patternKey, patternMobilePhone, patternName, patternNameProfile, patternNameSpecial, patternNameUtf8, patternNumber, patternPem, patternPhone, patternPhoneNormal, patternRuleFieldReplace, patternTax, patternUrl, processPasteData, protectString, range, removeEmoji, revealString, rgbToHex, set, setCaretPosition, setDefaultTimeZone, setKeyCrypto, setKeyCrypto3rd, setStylesElement, uniqBy, updateFunctionCheckEmbedFrame, updateFunctionFormatDate, updateFunctionXssFilter, uppercaseByPosition, uuid, viewDataNumberByLanguage, xssFilter };
3059
+ export { AudioExtList, CHARACTER_DATA_EMPTY, COMMUNICATE_MICRO_KEY_GET_ALL_MESSAGE, COMMUNICATE_MICRO_PREFIX_TYPE, DEFAULT_START_PAGE_0, DocumentExtList, ENCODE_URI_PATTERN, ERROR_MESSAGE_EMPTY_VALID, ERROR_MESSAGE_MAX_LENGTH, ERROR_MESSAGE_MAX_VALID, ERROR_MESSAGE_MIN_LENGTH, ERROR_MESSAGE_MIN_VALID, ERROR_MESSAGE_PATTEN_VALID, ExcelExtList, ImageExtList, LINK_IMAGE_ERROR_TOKEN_INJECT, PROCESS_BAR_STANDARD_CONFIG_DEFAULT_TOKEN_INJECT, PROCESS_BAR_STEPS_CONFIG_DEFAULT_TOKEN_INJECT, UtilsCache, UtilsCommunicateMicro, UtilsCommunicateMicroKeyGlobal, UtilsHttpParamsRequest, UtilsHttpParamsRequestInstance, UtilsKeyCodeConstant, UtilsLanguageConstants, UtilsUrlSearchParams, VideoExtList, base64Decode, base64Encode, capitalize, checkMouseOverInContainer, checkViewInScreen, cloneDeep, cloneIBoundingClientRect, colorContrastFromOrigin, colorStepContrastFromOrigin, convertBase64ToBlob, convertBlobToFile, convertFileToBase64, convertFileToBase64_ObjectUrl, convertHtmlToDivBlocks, convertObjectToSignal, convertSignalToObject, convertUrlToFile, createUniqueRandomIntGenerator, decodeEscapeHtml, decodeURI, decrypt, decrypt3rd, deleteUnicode, downloadFileByUrl, downloadFileByUrlUseXmlRequest, downloadImageFromELement, encodeURI, encrypt, encrypt3rd, endCodeUrl, escapeHtml, firstLetterToUpperCase, formatDate, formatNumber, formatTextCompare, fullNameFormat, generateInterface, get, getColorById, getDayjs, getDeltaFromHTML, getDeviceInfo, getDocumentByString, getDragEventByElement, getEventNameHandleClick, getFileExtension, getHTMLFromQuill, getKeyCacheByArrayObject, getLabelBySizeFile, getPlatFromBrowser, getSmartAxisScale, getViewport, groupBy, highlightByKeyword, insertContentWithRange, isDifferenceDay, isDifferenceMonth, isDifferenceYear, isEmbedFrame, isEmpty, isEqual, isFalsy, isIncludeAudioExtList, isIncludeDocumentExtList, isIncludeImageExtList, isIncludeVideoExtList, isNil, isTruthy, isTypeAudio, isTypeFile, isTypeImage, isTypeVideo, keyBy, listColorDefine, md5, omitBy, patternAccount, patternDomain, patternEmail, patternEmoji, patternEncodeUri, patternGetFieldByRuleFieldReplace, patternHostUrl, patternKey, patternMobilePhone, patternName, patternNameProfile, patternNameSpecial, patternNameUtf8, patternNumber, patternPem, patternPhone, patternPhoneNormal, patternRuleFieldReplace, patternTax, patternUrl, processPasteData, protectString, range, removeEmoji, revealString, rgbToHex, set, setCaretPosition, setDefaultTimeZone, setKeyCrypto, setKeyCrypto3rd, setStylesElement, uniqBy, updateFunctionCheckEmbedFrame, updateFunctionFormatDate, updateFunctionXssFilter, uppercaseByPosition, uuid, viewDataNumberByLanguage, xssFilter };
2994
3060
  //# sourceMappingURL=libs-ui-utils.mjs.map