@libs-ui/utils 0.2.306-7 → 0.2.306-9
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/dangerous-object.d.ts +75 -0
- package/esm2022/dangerous-object.mjs +143 -0
- package/esm2022/dom.mjs +1 -1
- package/esm2022/helpers.mjs +24 -16
- package/esm2022/index.mjs +2 -1
- package/esm2022/two-way-signal-object.mjs +27 -27
- package/fesm2022/libs-ui-utils.mjs +187 -39
- package/fesm2022/libs-ui-utils.mjs.map +1 -1
- package/helpers.d.ts +5 -1
- package/index.d.ts +1 -0
- package/package.json +2 -2
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import DeviceDetector from 'device-detector-js';
|
|
2
2
|
import Quill from 'quill';
|
|
3
|
-
import { fromEvent, tap, takeUntil, mergeMap, startWith, finalize, lastValueFrom, timer, Subject, filter
|
|
3
|
+
import { fromEvent, tap, takeUntil, mergeMap, startWith, finalize, lastValueFrom, timer, Observable, Subject, filter } from 'rxjs';
|
|
4
4
|
import CryptoES from 'crypto-es';
|
|
5
5
|
import { HttpParams } from '@angular/common/http';
|
|
6
|
-
import {
|
|
6
|
+
import { TemplateRef, ElementRef, isSignal, signal, InjectionToken } from '@angular/core';
|
|
7
7
|
import dayjs from 'dayjs';
|
|
8
8
|
import 'dayjs/locale/en';
|
|
9
9
|
import 'dayjs/locale/vi';
|
|
@@ -629,6 +629,145 @@ const uuid = () => {
|
|
|
629
629
|
return md5(shuffledString);
|
|
630
630
|
};
|
|
631
631
|
|
|
632
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
633
|
+
/**
|
|
634
|
+
* Danh sách các constructor name nguy hiểm
|
|
635
|
+
*/
|
|
636
|
+
const DANGEROUS_CONSTRUCTOR_NAMES = ['Window', 'Document', 'HTMLDocument', 'HTMLElement', 'Element', 'Node', 'Location', 'Navigator', 'Screen', 'History', 'Storage', 'Console', 'Performance'];
|
|
637
|
+
/**
|
|
638
|
+
* Kiểm tra xem đối tượng có phải là browser global object không
|
|
639
|
+
*/
|
|
640
|
+
const isBrowserGlobalObject = (obj) => {
|
|
641
|
+
if (obj === null || typeof obj !== 'object') {
|
|
642
|
+
return false;
|
|
643
|
+
}
|
|
644
|
+
return obj instanceof Window || obj instanceof Document || obj === window || obj === document || obj === globalThis;
|
|
645
|
+
};
|
|
646
|
+
/**
|
|
647
|
+
* Kiểm tra xem đối tượng có phải là DOM object không
|
|
648
|
+
*/
|
|
649
|
+
const isDOMObject = (obj) => {
|
|
650
|
+
if (obj === null || typeof obj !== 'object') {
|
|
651
|
+
return false;
|
|
652
|
+
}
|
|
653
|
+
return obj instanceof HTMLElement || obj instanceof Node || obj instanceof Element;
|
|
654
|
+
};
|
|
655
|
+
/**
|
|
656
|
+
* Kiểm tra xem đối tượng có phải là browser API object không
|
|
657
|
+
*/
|
|
658
|
+
const isBrowserAPIObject = (obj) => {
|
|
659
|
+
if (obj === null || typeof obj !== 'object' || typeof window === 'undefined') {
|
|
660
|
+
return false;
|
|
661
|
+
}
|
|
662
|
+
return obj === window.location || obj === window.navigator || obj === window.screen || obj === window.history || obj === window.localStorage || obj === window.sessionStorage || obj === window.console || obj === window.performance;
|
|
663
|
+
};
|
|
664
|
+
/**
|
|
665
|
+
* Kiểm tra constructor name có nằm trong danh sách nguy hiểm không
|
|
666
|
+
*/
|
|
667
|
+
const hasDangerousConstructorName = (obj) => {
|
|
668
|
+
if (obj === null || typeof obj !== 'object') {
|
|
669
|
+
return false;
|
|
670
|
+
}
|
|
671
|
+
const constructorName = obj.constructor?.name;
|
|
672
|
+
return constructorName && DANGEROUS_CONSTRUCTOR_NAMES.includes(constructorName);
|
|
673
|
+
};
|
|
674
|
+
/**
|
|
675
|
+
* Kiểm tra xem đối tượng có phải là DOM object hoặc browser object nguy hiểm không
|
|
676
|
+
* Những đối tượng này có thể gây ra circular reference và maximum call stack
|
|
677
|
+
*/
|
|
678
|
+
const isDangerousObject = (obj) => {
|
|
679
|
+
if (obj === null || typeof obj !== 'object') {
|
|
680
|
+
return false;
|
|
681
|
+
}
|
|
682
|
+
return isBrowserGlobalObject(obj) || isDOMObject(obj) || isBrowserAPIObject(obj) || hasDangerousConstructorName(obj);
|
|
683
|
+
};
|
|
684
|
+
/**
|
|
685
|
+
* Kiểm tra đối tượng có phải là Angular/Framework object không
|
|
686
|
+
*/
|
|
687
|
+
const isFrameworkObject = (obj) => {
|
|
688
|
+
if (obj === null || typeof obj !== 'object') {
|
|
689
|
+
return false;
|
|
690
|
+
}
|
|
691
|
+
return obj instanceof TemplateRef || obj instanceof ElementRef;
|
|
692
|
+
};
|
|
693
|
+
/**
|
|
694
|
+
* Kiểm tra đối tượng có phải là File/Blob object không
|
|
695
|
+
*/
|
|
696
|
+
const isFileObject = (obj) => {
|
|
697
|
+
if (obj === null || typeof obj !== 'object') {
|
|
698
|
+
return false;
|
|
699
|
+
}
|
|
700
|
+
return obj instanceof File || obj instanceof Blob || Object.prototype.toString.call(obj) === '[object File]';
|
|
701
|
+
};
|
|
702
|
+
/**
|
|
703
|
+
* Kiểm tra đối tượng có phải là Built-in object không
|
|
704
|
+
*/
|
|
705
|
+
const isBuiltInObject = (obj) => {
|
|
706
|
+
if (obj === null || typeof obj !== 'object') {
|
|
707
|
+
return false;
|
|
708
|
+
}
|
|
709
|
+
return obj instanceof Date || obj instanceof RegExp || obj instanceof HttpParams;
|
|
710
|
+
};
|
|
711
|
+
/**
|
|
712
|
+
* Kiểm tra đối tượng có phải là Async object không
|
|
713
|
+
*/
|
|
714
|
+
const isAsyncObject = (obj) => {
|
|
715
|
+
if (obj === null || typeof obj !== 'object') {
|
|
716
|
+
return false;
|
|
717
|
+
}
|
|
718
|
+
return obj instanceof Promise || obj instanceof Observable;
|
|
719
|
+
};
|
|
720
|
+
/**
|
|
721
|
+
* Kiểm tra đối tượng có phải là Special object cần bỏ qua không
|
|
722
|
+
* Bao gồm: Framework objects, File objects, Built-in objects, Async objects
|
|
723
|
+
*/
|
|
724
|
+
const isSpecialObject = (obj) => {
|
|
725
|
+
return isFrameworkObject(obj) || isFileObject(obj) || isBuiltInObject(obj) || isAsyncObject(obj);
|
|
726
|
+
};
|
|
727
|
+
/**
|
|
728
|
+
* Kiểm tra đối tượng có phải là dayjs object không
|
|
729
|
+
*/
|
|
730
|
+
const isDayjsObject = (obj) => {
|
|
731
|
+
return dayjs.isDayjs(obj);
|
|
732
|
+
};
|
|
733
|
+
/**
|
|
734
|
+
* Kiểm tra đối tượng có phải là object cần bỏ qua trong quá trình convert không
|
|
735
|
+
*/
|
|
736
|
+
const isSkippableObject = (obj) => {
|
|
737
|
+
return isDangerousObject(obj) || isSpecialObject(obj);
|
|
738
|
+
};
|
|
739
|
+
/**
|
|
740
|
+
* Kiểm tra đối tượng có phải là Map object không
|
|
741
|
+
*/
|
|
742
|
+
const isMapObject = (obj) => {
|
|
743
|
+
return obj instanceof Map;
|
|
744
|
+
};
|
|
745
|
+
/**
|
|
746
|
+
* Kiểm tra đối tượng có phải là Set object không
|
|
747
|
+
*/
|
|
748
|
+
const isSetObject = (obj) => {
|
|
749
|
+
return obj instanceof Set;
|
|
750
|
+
};
|
|
751
|
+
/**
|
|
752
|
+
* Kiểm tra đối tượng có phải là Array object không
|
|
753
|
+
*/
|
|
754
|
+
const isArrayObject = (obj) => {
|
|
755
|
+
return Array.isArray(obj);
|
|
756
|
+
};
|
|
757
|
+
/**
|
|
758
|
+
* Kiểm tra đối tượng có phải là object cần trả về nguyên trạng không
|
|
759
|
+
* Bao gồm: dangerous objects, special objects, dayjs objects
|
|
760
|
+
*/
|
|
761
|
+
const isReturnAsIsObject = (obj) => {
|
|
762
|
+
return isSkippableObject(obj) || isDayjsObject(obj);
|
|
763
|
+
};
|
|
764
|
+
/**
|
|
765
|
+
* Kiểm tra xem đối tượng có an toàn để clone/convert không
|
|
766
|
+
*/
|
|
767
|
+
const isSafeToProcess = (obj) => {
|
|
768
|
+
return !isDangerousObject(obj);
|
|
769
|
+
};
|
|
770
|
+
|
|
632
771
|
let key = '12~@#loqwsxacva(3rdhaq12';
|
|
633
772
|
/**
|
|
634
773
|
* @description Thiết lập key mã hóa
|
|
@@ -1568,11 +1707,11 @@ const convertObjectToSignal = (data, cloneDeepIfNotSignal = true, isSignalPrimit
|
|
|
1568
1707
|
seen.set(data, convertObjectToSignal(data(), cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal, seen));
|
|
1569
1708
|
return seen.get(data);
|
|
1570
1709
|
}
|
|
1571
|
-
if (
|
|
1710
|
+
if (isArrayObject(data)) {
|
|
1572
1711
|
seen.set(data, signal(data.map((item) => convertObjectToSignal(item, cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal, seen))));
|
|
1573
1712
|
return seen.get(data);
|
|
1574
1713
|
}
|
|
1575
|
-
if (data
|
|
1714
|
+
if (isMapObject(data)) {
|
|
1576
1715
|
const mapCopy = new Map();
|
|
1577
1716
|
Array.from(data.keys()).forEach((key) => {
|
|
1578
1717
|
mapCopy.set(key, convertObjectToSignal(data.get(key), cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal));
|
|
@@ -1580,26 +1719,16 @@ const convertObjectToSignal = (data, cloneDeepIfNotSignal = true, isSignalPrimit
|
|
|
1580
1719
|
seen.set(data, signal(mapCopy));
|
|
1581
1720
|
return seen.get(data);
|
|
1582
1721
|
}
|
|
1583
|
-
|
|
1722
|
+
// Bỏ qua các đối tượng async
|
|
1723
|
+
if (isAsyncObject(data)) {
|
|
1584
1724
|
return data;
|
|
1585
1725
|
}
|
|
1586
1726
|
data = signal(cloneDeepIfNotSignal ? { ...data } : data);
|
|
1587
1727
|
seen.set(data, data);
|
|
1588
1728
|
for (const key in data()) {
|
|
1589
1729
|
const value = data()[key];
|
|
1590
|
-
|
|
1591
|
-
|
|
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) {
|
|
1730
|
+
// Bỏ qua các đối tượng nguy hiểm và đặc biệt
|
|
1731
|
+
if (isReturnAsIsObject(value)) {
|
|
1603
1732
|
continue;
|
|
1604
1733
|
}
|
|
1605
1734
|
if (Object.prototype.hasOwnProperty.call(data(), key)) {
|
|
@@ -1613,7 +1742,7 @@ const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakMap()) =
|
|
|
1613
1742
|
while (isSignal(data) && !seen.has(data)) {
|
|
1614
1743
|
const dataConvert = data();
|
|
1615
1744
|
if (typeof dataConvert === 'object') {
|
|
1616
|
-
if (dataConvert === null) {
|
|
1745
|
+
if (dataConvert === null || isReturnAsIsObject(dataConvert)) {
|
|
1617
1746
|
return dataConvert;
|
|
1618
1747
|
}
|
|
1619
1748
|
seen.set(dataConvert, dataConvert);
|
|
@@ -1624,20 +1753,20 @@ const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakMap()) =
|
|
|
1624
1753
|
seen.set(data, dataConvert);
|
|
1625
1754
|
data = dataConvert;
|
|
1626
1755
|
}
|
|
1627
|
-
if (data === null || typeof data === 'function' || typeof data !== 'object') {
|
|
1756
|
+
if (data === null || typeof data === 'function' || typeof data !== 'object' || isReturnAsIsObject(data)) {
|
|
1628
1757
|
return data;
|
|
1629
1758
|
}
|
|
1630
1759
|
if (!ignoreCheckSeenHasDataAfterWhile && seen.has(data)) {
|
|
1631
1760
|
return seen.get(data);
|
|
1632
1761
|
}
|
|
1633
|
-
if (
|
|
1762
|
+
if (isArrayObject(data)) {
|
|
1634
1763
|
if (!isSignal(data[0])) {
|
|
1635
1764
|
return data;
|
|
1636
1765
|
}
|
|
1637
1766
|
seen.set(data, data.map((item) => convertSignalToObject(isCloneDeep ? cloneDeep(item) : item, isCloneDeep, seen)));
|
|
1638
1767
|
return seen.get(data);
|
|
1639
1768
|
}
|
|
1640
|
-
if (data
|
|
1769
|
+
if (isMapObject(data)) {
|
|
1641
1770
|
const mapCopy = new Map();
|
|
1642
1771
|
Array.from(data.keys()).forEach((key) => {
|
|
1643
1772
|
mapCopy.set(key, convertSignalToObject(isCloneDeep ? cloneDeep(data.get(key)) : data.get(key), isCloneDeep));
|
|
@@ -1645,10 +1774,16 @@ const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakMap()) =
|
|
|
1645
1774
|
seen.set(data, mapCopy);
|
|
1646
1775
|
return seen.get(data);
|
|
1647
1776
|
}
|
|
1648
|
-
if (
|
|
1649
|
-
|
|
1777
|
+
if (isSetObject(data)) {
|
|
1778
|
+
const setCopy = new Set();
|
|
1779
|
+
Array.from(data.values()).forEach((value) => {
|
|
1780
|
+
setCopy.add(convertSignalToObject(isCloneDeep ? cloneDeep(value) : value, isCloneDeep));
|
|
1781
|
+
});
|
|
1782
|
+
seen.set(data, setCopy);
|
|
1783
|
+
return seen.get(data);
|
|
1650
1784
|
}
|
|
1651
|
-
|
|
1785
|
+
// Bỏ qua các đối tượng nguy hiểm và đặc biệt
|
|
1786
|
+
if (isReturnAsIsObject(data)) {
|
|
1652
1787
|
return data;
|
|
1653
1788
|
}
|
|
1654
1789
|
const result = isCloneDeep ? {} : data;
|
|
@@ -1656,6 +1791,11 @@ const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakMap()) =
|
|
|
1656
1791
|
for (const key in data) {
|
|
1657
1792
|
const value = data[key];
|
|
1658
1793
|
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
1794
|
+
// Bỏ qua các đối tượng nguy hiểm để tránh maximum call stack
|
|
1795
|
+
if (isReturnAsIsObject(value)) {
|
|
1796
|
+
result[key] = value;
|
|
1797
|
+
continue;
|
|
1798
|
+
}
|
|
1659
1799
|
result[key] = convertSignalToObject(isCloneDeep ? cloneDeep(value) : value, isCloneDeep);
|
|
1660
1800
|
}
|
|
1661
1801
|
}
|
|
@@ -1694,16 +1834,17 @@ const isNil = (value, options) => {
|
|
|
1694
1834
|
* isEmpty({ a: 1 }); // false
|
|
1695
1835
|
*/
|
|
1696
1836
|
const isEmpty = (value, options) => {
|
|
1697
|
-
if (options?.ignoreUnWrapSignal) {
|
|
1837
|
+
if (!options?.ignoreUnWrapSignal) {
|
|
1698
1838
|
value = convertSignalToObject(value);
|
|
1699
1839
|
}
|
|
1700
1840
|
if (options?.ignoreCheckFalsy) {
|
|
1701
1841
|
return isEmptyTypeObject(value);
|
|
1702
1842
|
}
|
|
1843
|
+
const valueIsFalsy = isFalsy(value, { ignoreUnWrapSignal: options?.ignoreUnWrapSignal, ignoreZero: true, ignoreCheckString: options?.ignoreCheckString });
|
|
1703
1844
|
if (options?.ignoreCheckTypeObj) {
|
|
1704
|
-
return
|
|
1845
|
+
return valueIsFalsy;
|
|
1705
1846
|
}
|
|
1706
|
-
return
|
|
1847
|
+
return valueIsFalsy || isEmptyTypeObject(value);
|
|
1707
1848
|
};
|
|
1708
1849
|
/**
|
|
1709
1850
|
* Kiểm tra xem một giá trị có phải là object rỗng hay không
|
|
@@ -1751,7 +1892,7 @@ const isFalsy = (value, options) => {
|
|
|
1751
1892
|
if (!options?.ignoreUnWrapSignal) {
|
|
1752
1893
|
value = convertSignalToObject(value);
|
|
1753
1894
|
}
|
|
1754
|
-
if (isNil(value)) {
|
|
1895
|
+
if (isNil(value, { ignoreUnWrapSignal: options?.ignoreUnWrapSignal })) {
|
|
1755
1896
|
return true;
|
|
1756
1897
|
}
|
|
1757
1898
|
if (options?.ignoreZero) {
|
|
@@ -1887,7 +2028,7 @@ const get = (obj, path, defaultValue, keepLastValueIfSignal) => {
|
|
|
1887
2028
|
const val = isSignal(obj[key]) && !keepLastValueIfSignal ? obj[key]() : obj[key];
|
|
1888
2029
|
obj = val;
|
|
1889
2030
|
}
|
|
1890
|
-
return out(obj);
|
|
2031
|
+
return out(obj ?? defaultValue);
|
|
1891
2032
|
};
|
|
1892
2033
|
/**
|
|
1893
2034
|
* Thiết lập giá trị cho một thuộc tính trong đối tượng theo đường dẫn chỉ định
|
|
@@ -1900,7 +2041,7 @@ const get = (obj, path, defaultValue, keepLastValueIfSignal) => {
|
|
|
1900
2041
|
* const obj = { a: { b: 1 } };
|
|
1901
2042
|
* set(obj, 'a.b', 2); // { a: { b: 2 } }
|
|
1902
2043
|
*/
|
|
1903
|
-
const set = (obj, path, value) => {
|
|
2044
|
+
const set = (obj, path, value, options) => {
|
|
1904
2045
|
if (!obj || (typeof obj !== 'object' && !isSignal(obj)) || (isSignal(obj) && typeof obj() !== 'object')) {
|
|
1905
2046
|
throw new Error('The first argument must be an object');
|
|
1906
2047
|
}
|
|
@@ -1920,7 +2061,9 @@ const set = (obj, path, value) => {
|
|
|
1920
2061
|
if (!(key in currentObjectByKey) || (typeof currentObjectByKey[key] !== 'object' && !isSignal(currentObjectByKey[key]))) {
|
|
1921
2062
|
const nextKey = pathArray[index + 1];
|
|
1922
2063
|
key = key.replace(/\[(\d+)]/g, '$1');
|
|
1923
|
-
currentObjectByKey[key]
|
|
2064
|
+
if (isNil(currentObjectByKey[key])) {
|
|
2065
|
+
currentObjectByKey[key] = /\[(\d+)]/g.test(nextKey) ? (options?.valueDefaultPathArrayUndefined ?? []) : (options?.valueDefaultPathObjectUndefined ?? {});
|
|
2066
|
+
}
|
|
1924
2067
|
}
|
|
1925
2068
|
currentObjectByKey = key ? currentObjectByKey[key] : currentObjectByKey;
|
|
1926
2069
|
preObjectByKey = currentObjectByKey;
|
|
@@ -1979,7 +2122,7 @@ const set = (obj, path, value) => {
|
|
|
1979
2122
|
* // clone là một bản sao hoàn toàn độc lập của obj
|
|
1980
2123
|
*/
|
|
1981
2124
|
const cloneDeep = (data, options = { ignoreSignal: false }, seen = new WeakMap()) => {
|
|
1982
|
-
if (data === null || (typeof data !== 'object' && !isSignal(data))) {
|
|
2125
|
+
if (data === null || (typeof data !== 'object' && !isSignal(data)) || isDangerousObject(data)) {
|
|
1983
2126
|
return data;
|
|
1984
2127
|
}
|
|
1985
2128
|
if (seen.has(data)) {
|
|
@@ -2017,10 +2160,7 @@ const cloneDeep = (data, options = { ignoreSignal: false }, seen = new WeakMap()
|
|
|
2017
2160
|
seen.set(data, data.map((item) => cloneDeep(item, options, seen)));
|
|
2018
2161
|
return seen.get(data);
|
|
2019
2162
|
}
|
|
2020
|
-
if (
|
|
2021
|
-
return data;
|
|
2022
|
-
}
|
|
2023
|
-
if (data instanceof TemplateRef || data instanceof ElementRef || data instanceof Element || data instanceof Promise || data instanceof Observable) {
|
|
2163
|
+
if (isReturnAsIsObject(data)) {
|
|
2024
2164
|
return data;
|
|
2025
2165
|
}
|
|
2026
2166
|
if (isSignal(data)) {
|
|
@@ -2038,11 +2178,19 @@ const cloneDeep = (data, options = { ignoreSignal: false }, seen = new WeakMap()
|
|
|
2038
2178
|
result[key] = new UtilsHttpParamsRequest(undefined, value);
|
|
2039
2179
|
continue;
|
|
2040
2180
|
}
|
|
2181
|
+
if (value instanceof Date) {
|
|
2182
|
+
result[key] = new Date(value.getTime());
|
|
2183
|
+
continue;
|
|
2184
|
+
}
|
|
2041
2185
|
if (dayjs.isDayjs(value)) {
|
|
2042
2186
|
result[key] = getDayjs({ date: value.valueOf() });
|
|
2043
2187
|
continue;
|
|
2044
2188
|
}
|
|
2045
|
-
if (value instanceof
|
|
2189
|
+
if (value instanceof RegExp) {
|
|
2190
|
+
result[key] = new RegExp(value.source, value.flags);
|
|
2191
|
+
continue;
|
|
2192
|
+
}
|
|
2193
|
+
if (isReturnAsIsObject(data)) {
|
|
2046
2194
|
result[key] = value;
|
|
2047
2195
|
continue;
|
|
2048
2196
|
}
|
|
@@ -3056,5 +3204,5 @@ const createUniqueRandomIntGenerator = (min, max) => {
|
|
|
3056
3204
|
* Generated bundle index. Do not edit.
|
|
3057
3205
|
*/
|
|
3058
3206
|
|
|
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 };
|
|
3207
|
+
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, hasDangerousConstructorName, highlightByKeyword, insertContentWithRange, isArrayObject, isAsyncObject, isBrowserAPIObject, isBrowserGlobalObject, isBuiltInObject, isDOMObject, isDangerousObject, isDayjsObject, isDifferenceDay, isDifferenceMonth, isDifferenceYear, isEmbedFrame, isEmpty, isEqual, isFalsy, isFileObject, isFrameworkObject, isIncludeAudioExtList, isIncludeDocumentExtList, isIncludeImageExtList, isIncludeVideoExtList, isMapObject, isNil, isReturnAsIsObject, isSafeToProcess, isSetObject, isSkippableObject, isSpecialObject, 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 };
|
|
3060
3208
|
//# sourceMappingURL=libs-ui-utils.mjs.map
|