@libs-ui/utils 0.2.306-6 → 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.
- package/esm2022/helpers.mjs +78 -13
- package/fesm2022/libs-ui-utils.mjs +199 -135
- package/fesm2022/libs-ui-utils.mjs.map +1 -1
- package/helpers.d.ts +47 -2
- package/package.json +2 -2
|
@@ -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,
|
|
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';
|
|
@@ -1541,6 +1541,127 @@ class UtilsHttpParamsRequest extends HttpParams {
|
|
|
1541
1541
|
// "pathVariable-name": '124',
|
|
1542
1542
|
// };
|
|
1543
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
|
+
|
|
1544
1665
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1545
1666
|
/**Các hàm tương tự thư viện lodash */
|
|
1546
1667
|
/**
|
|
@@ -1553,7 +1674,10 @@ class UtilsHttpParamsRequest extends HttpParams {
|
|
|
1553
1674
|
* isNil(0); // false
|
|
1554
1675
|
* isNil('hello'); // false
|
|
1555
1676
|
*/
|
|
1556
|
-
const isNil = (value) => {
|
|
1677
|
+
const isNil = (value, options) => {
|
|
1678
|
+
if (!options?.ignoreUnWrapSignal) {
|
|
1679
|
+
value = convertSignalToObject(value);
|
|
1680
|
+
}
|
|
1557
1681
|
return value === null || value === undefined;
|
|
1558
1682
|
};
|
|
1559
1683
|
/**
|
|
@@ -1569,11 +1693,74 @@ const isNil = (value) => {
|
|
|
1569
1693
|
* isEmpty([1, 2, 3]); // false
|
|
1570
1694
|
* isEmpty({ a: 1 }); // false
|
|
1571
1695
|
*/
|
|
1572
|
-
const isEmpty = (value) => {
|
|
1573
|
-
|
|
1574
|
-
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 === '';
|
|
1759
|
+
}
|
|
1760
|
+
if (options?.ignoreCheckString) {
|
|
1761
|
+
return value === 0;
|
|
1575
1762
|
}
|
|
1576
|
-
return value ===
|
|
1763
|
+
return value === '' || value === 0;
|
|
1577
1764
|
};
|
|
1578
1765
|
/**
|
|
1579
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
|
|
@@ -1987,6 +2174,11 @@ const range = (start, end, step) => {
|
|
|
1987
2174
|
* isEqual({a:1}, {a:1}); // true
|
|
1988
2175
|
*/
|
|
1989
2176
|
const isEqual = (value1, value2, options) => {
|
|
2177
|
+
// Handle signals
|
|
2178
|
+
if (!options?.ignoreUnWrapSignal) {
|
|
2179
|
+
value1 = convertSignalToObject(value1);
|
|
2180
|
+
value2 = convertSignalToObject(value2);
|
|
2181
|
+
}
|
|
1990
2182
|
const { exactlyPosition = false, ignoreExactlyDataType = false } = options || {};
|
|
1991
2183
|
if (value1 === value2 || (value1 === null && value2 === null) || (value1 === undefined && value2 === undefined)) {
|
|
1992
2184
|
return true;
|
|
@@ -1994,13 +2186,6 @@ const isEqual = (value1, value2, options) => {
|
|
|
1994
2186
|
if (ignoreExactlyDataType) {
|
|
1995
2187
|
return isEqual(isNil(value1) ? undefined : `${value1}`, isNil(value2) ? undefined : `${value2}`);
|
|
1996
2188
|
}
|
|
1997
|
-
// Handle signals
|
|
1998
|
-
while (isSignal(value1)) {
|
|
1999
|
-
value1 = value1();
|
|
2000
|
-
}
|
|
2001
|
-
while (isSignal(value2)) {
|
|
2002
|
-
value2 = value2();
|
|
2003
|
-
}
|
|
2004
2189
|
if (typeof value1 !== 'object' || typeof value2 !== 'object' || (Array.isArray(value1) && !Array.isArray(value2)) || (!Array.isArray(value1) && Array.isArray(value2))) {
|
|
2005
2190
|
return false;
|
|
2006
2191
|
}
|
|
@@ -2460,127 +2645,6 @@ const xssFilter = async (data) => {
|
|
|
2460
2645
|
return await functionXssFilter(data);
|
|
2461
2646
|
};
|
|
2462
2647
|
|
|
2463
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2464
|
-
/**
|
|
2465
|
-
* Chuyển đổi một đối tượng hoặc giá trị thành signal
|
|
2466
|
-
* @param data Dữ liệu cần chuyển đổi thành signal
|
|
2467
|
-
* @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.
|
|
2468
|
-
* Đặt false nếu muốn giữ nguyên tham chiếu đến dữ liệu gốc.
|
|
2469
|
-
* Nếu muốn sao chép sâu đối tượng signal thì đặt cloneDeepIfNotSignal là true và acceptConvertObjectInnerWritableSignal là true.
|
|
2470
|
-
* @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.
|
|
2471
|
-
* Đặt true nếu muốn bọc các giá trị nguyên thủy trong signal.
|
|
2472
|
-
* @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.
|
|
2473
|
-
* Đặ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.
|
|
2474
|
-
* @returns Dữ liệu đã được chuyển đổi theo kiểu T
|
|
2475
|
-
*/
|
|
2476
|
-
const convertObjectToSignal = (data, cloneDeepIfNotSignal = true, isSignalPrimitiveType = false, acceptConvertObjectInnerWritableSignal = false, seen = new WeakMap()) => {
|
|
2477
|
-
if ((data === null || typeof data !== 'object') && !isSignal(data)) {
|
|
2478
|
-
return (isSignalPrimitiveType ? signal(data) : data);
|
|
2479
|
-
}
|
|
2480
|
-
if (seen.has(data)) {
|
|
2481
|
-
return seen.get(data);
|
|
2482
|
-
}
|
|
2483
|
-
if (isSignal(data)) {
|
|
2484
|
-
if (!acceptConvertObjectInnerWritableSignal) {
|
|
2485
|
-
return data;
|
|
2486
|
-
}
|
|
2487
|
-
seen.set(data, convertObjectToSignal(data(), cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal, seen));
|
|
2488
|
-
return seen.get(data);
|
|
2489
|
-
}
|
|
2490
|
-
if (Array.isArray(data)) {
|
|
2491
|
-
seen.set(data, signal(data.map((item) => convertObjectToSignal(item, cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal, seen))));
|
|
2492
|
-
return seen.get(data);
|
|
2493
|
-
}
|
|
2494
|
-
if (data instanceof Map) {
|
|
2495
|
-
const mapCopy = new Map();
|
|
2496
|
-
Array.from(data.keys()).forEach((key) => {
|
|
2497
|
-
mapCopy.set(key, convertObjectToSignal(data.get(key), cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal));
|
|
2498
|
-
});
|
|
2499
|
-
seen.set(data, signal(mapCopy));
|
|
2500
|
-
return seen.get(data);
|
|
2501
|
-
}
|
|
2502
|
-
if (data instanceof Promise || data instanceof Observable) {
|
|
2503
|
-
return data;
|
|
2504
|
-
}
|
|
2505
|
-
data = signal(cloneDeepIfNotSignal ? { ...data } : data);
|
|
2506
|
-
seen.set(data, data);
|
|
2507
|
-
for (const key in data()) {
|
|
2508
|
-
const value = data()[key];
|
|
2509
|
-
if (value instanceof TemplateRef ||
|
|
2510
|
-
value instanceof File ||
|
|
2511
|
-
value instanceof Blob ||
|
|
2512
|
-
Object.prototype.toString.call(value) === '[object File]' ||
|
|
2513
|
-
value instanceof ElementRef ||
|
|
2514
|
-
value instanceof Element ||
|
|
2515
|
-
value instanceof Date ||
|
|
2516
|
-
value instanceof RegExp ||
|
|
2517
|
-
value instanceof Set ||
|
|
2518
|
-
value instanceof Map ||
|
|
2519
|
-
value instanceof Promise ||
|
|
2520
|
-
value instanceof Observable ||
|
|
2521
|
-
value instanceof HttpParams) {
|
|
2522
|
-
continue;
|
|
2523
|
-
}
|
|
2524
|
-
if (Object.prototype.hasOwnProperty.call(data(), key)) {
|
|
2525
|
-
data()[key] = convertObjectToSignal(value, cloneDeepIfNotSignal, isSignalPrimitiveType, acceptConvertObjectInnerWritableSignal);
|
|
2526
|
-
}
|
|
2527
|
-
}
|
|
2528
|
-
return data;
|
|
2529
|
-
};
|
|
2530
|
-
const convertSignalToObject = (data, isCloneDeep = true, seen = new WeakMap()) => {
|
|
2531
|
-
let ignoreCheckSeenHasDataAfterWhile = false;
|
|
2532
|
-
while (isSignal(data) && !seen.has(data)) {
|
|
2533
|
-
const dataConvert = data();
|
|
2534
|
-
if (typeof dataConvert === 'object') {
|
|
2535
|
-
if (dataConvert === null) {
|
|
2536
|
-
return dataConvert;
|
|
2537
|
-
}
|
|
2538
|
-
seen.set(dataConvert, dataConvert);
|
|
2539
|
-
data = dataConvert;
|
|
2540
|
-
ignoreCheckSeenHasDataAfterWhile = true;
|
|
2541
|
-
break;
|
|
2542
|
-
}
|
|
2543
|
-
seen.set(data, dataConvert);
|
|
2544
|
-
data = dataConvert;
|
|
2545
|
-
}
|
|
2546
|
-
if (data === null || typeof data === 'function' || typeof data !== 'object') {
|
|
2547
|
-
return data;
|
|
2548
|
-
}
|
|
2549
|
-
if (!ignoreCheckSeenHasDataAfterWhile && seen.has(data)) {
|
|
2550
|
-
return seen.get(data);
|
|
2551
|
-
}
|
|
2552
|
-
if (Array.isArray(data)) {
|
|
2553
|
-
if (!isSignal(data[0])) {
|
|
2554
|
-
return data;
|
|
2555
|
-
}
|
|
2556
|
-
seen.set(data, data.map((item) => convertSignalToObject(isCloneDeep ? cloneDeep(item) : item, isCloneDeep, seen)));
|
|
2557
|
-
return seen.get(data);
|
|
2558
|
-
}
|
|
2559
|
-
if (data instanceof Map) {
|
|
2560
|
-
const mapCopy = new Map();
|
|
2561
|
-
Array.from(data.keys()).forEach((key) => {
|
|
2562
|
-
mapCopy.set(key, convertSignalToObject(isCloneDeep ? cloneDeep(data.get(key)) : data.get(key), isCloneDeep));
|
|
2563
|
-
});
|
|
2564
|
-
seen.set(data, mapCopy);
|
|
2565
|
-
return seen.get(data);
|
|
2566
|
-
}
|
|
2567
|
-
if (data instanceof File || data instanceof Blob || Object.prototype.toString.call(data) === '[object File]') {
|
|
2568
|
-
return data;
|
|
2569
|
-
}
|
|
2570
|
-
if (data instanceof TemplateRef || data instanceof ElementRef || data instanceof Element || data instanceof Promise || data instanceof Observable || data instanceof HttpParams) {
|
|
2571
|
-
return data;
|
|
2572
|
-
}
|
|
2573
|
-
const result = isCloneDeep ? {} : data;
|
|
2574
|
-
seen.set(data, result);
|
|
2575
|
-
for (const key in data) {
|
|
2576
|
-
const value = data[key];
|
|
2577
|
-
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
2578
|
-
result[key] = convertSignalToObject(isCloneDeep ? cloneDeep(value) : value, isCloneDeep);
|
|
2579
|
-
}
|
|
2580
|
-
}
|
|
2581
|
-
return result;
|
|
2582
|
-
};
|
|
2583
|
-
|
|
2584
2648
|
const ENCODE_URI_PATTERN = /%([0-9A-F]{2})/g;
|
|
2585
2649
|
const decodeURI = (value) => {
|
|
2586
2650
|
return decodeURIComponent(value
|
|
@@ -2992,5 +3056,5 @@ const createUniqueRandomIntGenerator = (min, max) => {
|
|
|
2992
3056
|
* Generated bundle index. Do not edit.
|
|
2993
3057
|
*/
|
|
2994
3058
|
|
|
2995
|
-
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 };
|
|
2996
3060
|
//# sourceMappingURL=libs-ui-utils.mjs.map
|