ngx-sfc-common 0.0.35 → 0.0.37

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.
Files changed (34) hide show
  1. package/esm2020/lib/components/button/button.component.mjs +1 -1
  2. package/esm2020/lib/components/load-more-button/load-more-button.component.mjs +2 -2
  3. package/esm2020/lib/components/pagination/pagination.component.mjs +2 -2
  4. package/esm2020/lib/constants/common.constants.mjs +3 -1
  5. package/esm2020/lib/enums/color.enum.mjs +43 -0
  6. package/esm2020/lib/enums/compare.enum.mjs +3 -1
  7. package/esm2020/lib/enums/index.mjs +2 -1
  8. package/esm2020/lib/models/index.mjs +1 -1
  9. package/esm2020/lib/models/position.model.mjs +2 -0
  10. package/esm2020/lib/types/index.mjs +1 -1
  11. package/esm2020/lib/types/primitive.type.mjs +2 -0
  12. package/esm2020/lib/types/segment.type.mjs +2 -0
  13. package/esm2020/lib/utils/collections.utils.mjs +41 -1
  14. package/esm2020/lib/utils/common.utils.mjs +171 -31
  15. package/esm2020/lib/utils/index.mjs +3 -3
  16. package/fesm2015/ngx-sfc-common.mjs +264 -37
  17. package/fesm2015/ngx-sfc-common.mjs.map +1 -1
  18. package/fesm2020/ngx-sfc-common.mjs +264 -37
  19. package/fesm2020/ngx-sfc-common.mjs.map +1 -1
  20. package/lib/components/button/button.component.d.ts +3 -2
  21. package/lib/constants/common.constants.d.ts +2 -0
  22. package/lib/enums/color.enum.d.ts +30 -0
  23. package/lib/enums/compare.enum.d.ts +3 -1
  24. package/lib/enums/index.d.ts +1 -0
  25. package/lib/models/index.d.ts +1 -0
  26. package/lib/models/position.model.d.ts +4 -0
  27. package/lib/types/index.d.ts +1 -0
  28. package/lib/types/primitive.type.d.ts +1 -0
  29. package/lib/types/segment.type.d.ts +1 -0
  30. package/lib/utils/collections.utils.d.ts +23 -0
  31. package/lib/utils/common.utils.d.ts +25 -9
  32. package/lib/utils/index.d.ts +2 -2
  33. package/package.json +1 -1
  34. package/styles/_mixins.scss +38 -1
@@ -121,6 +121,8 @@ var Compare;
121
121
  (function (Compare) {
122
122
  Compare["More"] = "more";
123
123
  Compare["Less"] = "less";
124
+ Compare["Equal"] = "equal";
125
+ Compare["NotEqual"] = "not-equal";
124
126
  })(Compare || (Compare = {}));
125
127
  ;
126
128
 
@@ -150,6 +152,49 @@ var ItemsView;
150
152
  ItemsView["Cards"] = "cards";
151
153
  })(ItemsView || (ItemsView = {}));
152
154
 
155
+ var Color;
156
+ (function (Color) {
157
+ // white
158
+ Color["White_0"] = "#fff";
159
+ Color["White_1"] = "#e6e9ed";
160
+ // grey
161
+ Color["Grey_0"] = "#ccd1d9";
162
+ Color["Grey_1"] = "#aab2bd";
163
+ Color["Grey_2"] = "#656d78";
164
+ // black
165
+ Color["Black_0"] = "#34323d";
166
+ Color["Black_1"] = "#1b1d1f";
167
+ Color["Black_2"] = "#000";
168
+ // red
169
+ Color["Red_0"] = "#ed5565";
170
+ Color["Red_1"] = "#da4453";
171
+ // orange
172
+ Color["Orange_0"] = "#fc6e51";
173
+ Color["Orange_1"] = "#e9573f";
174
+ // yellow
175
+ Color["Yellow_0"] = "#ffce54";
176
+ Color["Yellow_1"] = "#fcbb42";
177
+ Color["Yellow_2"] = "#f8e976";
178
+ // green
179
+ Color["Green_0"] = "#a0d468";
180
+ Color["Green_1"] = "#8cc152";
181
+ Color["Green_2"] = "#48cfad";
182
+ Color["Green_3"] = "#37bc9b";
183
+ Color["Green_4"] = "#2bbbad";
184
+ // blue
185
+ Color["Blue_0"] = "#4fc1e9";
186
+ Color["Blue_1"] = "#3bafda";
187
+ Color["Blue_2"] = "#5d9cec";
188
+ Color["Blue_3"] = "#4a89dc";
189
+ // magenta
190
+ Color["Magenta_0"] = "#ac92ec";
191
+ Color["Magenta_1"] = "#967adc";
192
+ // pink
193
+ Color["Pink_0"] = "#ec87c0";
194
+ Color["Pink_1"] = "#d770ad";
195
+ })(Color || (Color = {}));
196
+ ;
197
+
153
198
  /**
154
199
  * Create a new injection token for injecting the Document into a component.
155
200
  */
@@ -491,9 +536,11 @@ CommonConstants.EMPTY_STRING = '';
491
536
  CommonConstants.DEFAULT_KEY_VALUE = 0;
492
537
  CommonConstants.MOUSE_BUTTON_LEFT = 0;
493
538
  CommonConstants.FULL_PERCENTAGE = 100;
539
+ CommonConstants.LOW_PERCENTAGE = 0;
494
540
  CommonConstants.COMMON_TEXT_DELIMETER = '/';
495
541
  CommonConstants.PERCENTAGE_SYMBOL = '%';
496
- CommonConstants.DOT = '.';
542
+ CommonConstants.DOT = '.';
543
+ CommonConstants.ASTERISK = '*';
497
544
 
498
545
  class DateTimeConstants {
499
546
  }
@@ -898,6 +945,21 @@ function updateItemBy(collection, predicate, newItem) {
898
945
  }
899
946
  return null;
900
947
  }
948
+ /**
949
+ * Toggle item in array
950
+ * @param arr Array of items
951
+ * @param item Item to toggle
952
+ * @returns Toggling result array
953
+ */
954
+ function toggleItem(array, item) {
955
+ if (hasItem(array, item)) {
956
+ removeItem(array, item);
957
+ }
958
+ else {
959
+ addItem(array, item);
960
+ }
961
+ return array;
962
+ }
901
963
  /**
902
964
  * Return collection or empty if collection is not defined
903
965
  * @param collection Array of items
@@ -922,7 +984,32 @@ function isArraysEquals(a, b) {
922
984
  return false;
923
985
  }
924
986
  return true;
925
- }
987
+ }
988
+ /**
989
+ * Get previous item in array depend on key
990
+ * @param array Array of objects
991
+ * @param key Key name
992
+ * @param value Value for key
993
+ * @returns Previous item
994
+ */
995
+ function getPreviousItemByKey(array, key, value) {
996
+ const index = array.findIndex(item => item[key] === value);
997
+ return index > 0 ? array[index - 1] : undefined;
998
+ }
999
+ /**
1000
+ * Get next item in array depend on key
1001
+ * @param array Array of objects
1002
+ * @param key Key name
1003
+ * @param value Value for key
1004
+ * @returns Next item
1005
+ */
1006
+ function getNextItemByKey(array, key, value) {
1007
+ const index = array.findIndex(item => item[key] === value);
1008
+ return index !== -1 && index < array.length - 1
1009
+ ? array[index + 1]
1010
+ : undefined;
1011
+ }
1012
+ ``;
926
1013
 
927
1014
  /**
928
1015
  * Set minutes for date
@@ -1498,44 +1585,194 @@ function stopAndPreventPropagation(event) {
1498
1585
  /**
1499
1586
  * Update property in object by key
1500
1587
  * @param obj Object to change
1501
- * @param propertyKey Property to change
1588
+ * @param key Property to change
1502
1589
  * @param newPropertyValue New property value
1503
- * @param oldPropertyValue Old property value
1590
+ * @param options Options for array types
1504
1591
  * @returns Updated object
1505
1592
  */
1506
- function updatePropertyByKey(obj, propertyKey, newPropertyValue, oldPropertyValue) {
1593
+ function updatePropertyByKey(obj, key, newPropertyValue, options = {}) {
1594
+ const { arrayMode = "toggle", arrayToggleValue = newPropertyValue } = options;
1595
+ // Arrays: map recursively over items
1507
1596
  if (Array.isArray(obj)) {
1508
- return obj.map(item => {
1509
- return isObject(item) && item !== null
1510
- ? updatePropertyByKey(item, propertyKey, newPropertyValue, oldPropertyValue)
1511
- : item;
1597
+ let changed = false;
1598
+ const mapped = obj.map(item => {
1599
+ const updated = updatePropertyByKey(item, key, newPropertyValue, options);
1600
+ if (updated !== item)
1601
+ changed = true;
1602
+ return updated;
1512
1603
  });
1513
- }
1514
- else if (isObject(obj) && obj !== null) {
1515
- const updatedObj = {};
1516
- for (const key in obj) {
1517
- if (key === propertyKey) {
1518
- if (Array.isArray(obj[key])) {
1519
- if (hasItem(obj[key], oldPropertyValue)) {
1520
- removeItem(obj[key], oldPropertyValue);
1604
+ return changed ? mapped : obj;
1605
+ }
1606
+ // Plain objects: iterate over keys immutably
1607
+ if (isObject(obj)) {
1608
+ const source = obj;
1609
+ let changed = false;
1610
+ const result = {};
1611
+ for (const propertyKey of Object.keys(source)) {
1612
+ const value = source[propertyKey];
1613
+ if (propertyKey === key) {
1614
+ // Matched key: apply update
1615
+ if (Array.isArray(value)) {
1616
+ if (arrayMode === "toggle") {
1617
+ const updatedArray = toggleItem(value, arrayToggleValue);
1618
+ result[propertyKey] = updatedArray;
1619
+ if (updatedArray !== value)
1620
+ changed = true;
1521
1621
  }
1522
1622
  else {
1523
- addItem(obj[key], oldPropertyValue);
1623
+ // replace mode
1624
+ if (!Array.isArray(newPropertyValue)) {
1625
+ throw new Error("arrayMode 'replace' requires newPropertyValue to be an array.");
1626
+ }
1627
+ const replaced = [...newPropertyValue];
1628
+ result[propertyKey] = replaced;
1629
+ changed = true;
1524
1630
  }
1525
- updatedObj[key] = obj[key];
1526
1631
  }
1527
1632
  else {
1528
- updatedObj[key] = newPropertyValue;
1633
+ // Non-array leaf -> set to newPropertyValue
1634
+ result[propertyKey] = newPropertyValue;
1635
+ if (result[propertyKey] !== value)
1636
+ changed = true;
1529
1637
  }
1530
1638
  }
1531
1639
  else {
1532
- updatedObj[key] = updatePropertyByKey(obj[key], propertyKey, newPropertyValue, oldPropertyValue);
1640
+ // Recurse into nested values
1641
+ const updatedVal = updatePropertyByKey(value, key, newPropertyValue, options);
1642
+ result[propertyKey] = updatedVal;
1643
+ if (updatedVal !== value)
1644
+ changed = true;
1533
1645
  }
1534
1646
  }
1535
- return updatedObj;
1647
+ return changed ? result : obj;
1536
1648
  }
1649
+ // Primitives or non-plain objects (Date, Map, etc.): return as-is
1537
1650
  return obj;
1538
1651
  }
1652
+ /**
1653
+ * Update property in object by path
1654
+ * @param obj Object to change
1655
+ * @param path Property to change
1656
+ * @param newPropertyValue New property value
1657
+ * @param previousPropertyValue New property value
1658
+ * @param options Options for array types
1659
+ * @returns Updated object
1660
+ */
1661
+ function updatePropertyByPath(obj, path, newPropertyValue, previousPropertyValue, options = {}) {
1662
+ const { arrayMode = "toggle" } = options;
1663
+ const segments = Array.isArray(path) ? path : _pathToSegments(path);
1664
+ /**
1665
+ * Parses a path string like:
1666
+ * - "a.b.c"
1667
+ * - "a.b[0].c"
1668
+ * - "items[*].tags"
1669
+ * into segments: ["a","b",0,"c"] or ["items","*", "tags"]
1670
+ *
1671
+ * Supported:
1672
+ * - Dot notation
1673
+ * - Bracket numbers: [0]
1674
+ * - Wildcard: [*] or .* (as a segment "*")
1675
+ *
1676
+ * Not supported:
1677
+ * - Quoted property names in brackets (e.g., ["foo bar"])
1678
+ * - Escaped dots in keys
1679
+ * @param path Property path
1680
+ * @returns Path segments
1681
+ */
1682
+ function _pathToSegments(path) {
1683
+ // Normalize brackets to dot form (e.g., a[0].b -> a.0.b, a[*].b -> a.*.b)
1684
+ const normalized = path
1685
+ .replace(/\[(\d+)\]/g, ".$1")
1686
+ .replace(/\[\*\]/g, ".*");
1687
+ const rawSegments = normalized.split(".").filter(s => s.length > 0);
1688
+ return rawSegments.map(seg => {
1689
+ if (seg === "*")
1690
+ return "*";
1691
+ const n = Number(seg);
1692
+ if (!Number.isNaN(n) && seg.trim() !== "" && String(n) === seg) {
1693
+ return n;
1694
+ }
1695
+ return seg;
1696
+ });
1697
+ }
1698
+ function _apply(current, remaining) {
1699
+ // Base: reached target path
1700
+ if (remaining.length === 0) {
1701
+ if (Array.isArray(current)) {
1702
+ if (arrayMode === "toggle") {
1703
+ return toggleItem(current, previousPropertyValue);
1704
+ }
1705
+ // replace mode
1706
+ if (!Array.isArray(newPropertyValue)) {
1707
+ throw new Error("arrayMode 'replace' requires newPropertyValue to be an array.");
1708
+ }
1709
+ return [...newPropertyValue];
1710
+ }
1711
+ // Non-array leaf -> set to newPropertyValue
1712
+ return newPropertyValue;
1713
+ }
1714
+ const [seg, ...rest] = remaining;
1715
+ // Wildcard handling
1716
+ if (seg === "*") {
1717
+ if (Array.isArray(current)) {
1718
+ // Map each element
1719
+ return current.map(item => _apply(item, rest));
1720
+ }
1721
+ if (isObject(current)) {
1722
+ const objCurr = current;
1723
+ const result = {};
1724
+ for (const key of Object.keys(objCurr)) {
1725
+ result[key] = _apply(objCurr[key], rest);
1726
+ }
1727
+ return result;
1728
+ }
1729
+ // If not object/array, nothing to expand -> return as-is
1730
+ return current;
1731
+ }
1732
+ // Numeric index -> navigate arrays
1733
+ if (typeof seg === "number") {
1734
+ if (!Array.isArray(current)) {
1735
+ // Path expects array here, but current isn't an array => no-op
1736
+ return current;
1737
+ }
1738
+ const arr = current;
1739
+ if (seg < 0 || seg >= arr.length) {
1740
+ // Out of bounds -> no-op (alternatively, you could extend the array)
1741
+ return current;
1742
+ }
1743
+ const updatedItem = _apply(arr[seg], rest);
1744
+ if (updatedItem === arr[seg]) {
1745
+ return current; // no structural change
1746
+ }
1747
+ const newArr = arr.slice();
1748
+ newArr[seg] = updatedItem;
1749
+ return newArr;
1750
+ }
1751
+ // String key -> navigate objects
1752
+ if (isObject(current)) {
1753
+ const objCurr = current;
1754
+ const nextVal = objCurr[seg];
1755
+ const updatedVal = _apply(nextVal, rest);
1756
+ if (updatedVal === nextVal) {
1757
+ return current; // no structural change
1758
+ }
1759
+ return Object.assign(Object.assign({}, objCurr), { [seg]: updatedVal });
1760
+ }
1761
+ // If we cannot traverse further (e.g., null, primitive, or array when expecting object) -> no-op
1762
+ return current;
1763
+ }
1764
+ return _apply(obj, segments);
1765
+ }
1766
+ /**
1767
+ * Get changed property key
1768
+ * @param previous Previous value
1769
+ * @param current Currency value
1770
+ * @returns Key of property that was changed
1771
+ */
1772
+ function findChangedPropertyKey(previous, current) {
1773
+ const path = findChangedPropertyPath(previous, current), parts = path === null || path === void 0 ? void 0 : path.split('.');
1774
+ return parts && parts.length ? parts[parts.length - 1] : undefined;
1775
+ }
1539
1776
  /**
1540
1777
  * Get changed property path
1541
1778
  * @param previous Previous value
@@ -1560,16 +1797,6 @@ function findChangedPropertyPath(previous, current, parentKey = '') {
1560
1797
  }
1561
1798
  return null;
1562
1799
  }
1563
- /**
1564
- * Get changed property key
1565
- * @param previous Previous value
1566
- * @param current Currency value
1567
- * @returns Key of property that was changed
1568
- */
1569
- function findChangedPropertyKey(previous, current) {
1570
- const path = findChangedPropertyPath(previous, current), parts = path === null || path === void 0 ? void 0 : path.split('.');
1571
- return parts && parts.length ? parts[parts.length - 1] : undefined;
1572
- }
1573
1800
  /**
1574
1801
  * Clone object without any reference
1575
1802
  * @param value Object to clone
@@ -3129,10 +3356,10 @@ class PaginationComponent {
3129
3356
  }
3130
3357
  }
3131
3358
  PaginationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationComponent, deps: [{ token: PaginationService }], target: i0.ɵɵFactoryTarget.Component });
3132
- PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PaginationComponent, selector: "sfc-pagination", inputs: { count: "count", full: "full", limits: "limits", page: "page", total: "total", size: "size" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
3359
+ PaginationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: PaginationComponent, selector: "sfc-pagination", inputs: { count: "count", full: "full", limits: "limits", page: "page", total: "total", size: "size" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:0;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"], dependencies: [{ kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: ShowHideElementDirective, selector: "[sfcShowHideElement]", inputs: ["sfcShowHideElement", "delay"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
3133
3360
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: PaginationComponent, decorators: [{
3134
3361
  type: Component,
3135
- args: [{ selector: 'sfc-pagination', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"] }]
3362
+ args: [{ selector: 'sfc-pagination', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <ul *ngIf=\"model.any\">\r\n <li [sfcShowHideElement]=\"model.previousPage\" (click)=\"onPageClick(model.previous)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronLeft\"></fa-icon>\r\n </button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\" (click)=\"onPageClick(1)\">\r\n <button>1</button>\r\n </li>\r\n <li *ngIf=\"model.firstPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngFor=\"let page of model.range\" (click)=\"model.page !== page && onPageClick(page)\">\r\n <button [class.active]=\"model.page === page\">{{page}}</button>\r\n </li>\r\n <li *ngIf=\"model.lastPage\">\r\n <span>...</span>\r\n </li>\r\n <li *ngIf=\"model.lastPage\" (click)=\"onPageClick(model.total)\">\r\n <button>{{model.total}}</button>\r\n </li>\r\n <li [sfcShowHideElement]=\"model.nextPage\" (click)=\"onPageClick(model.next)\">\r\n <button class=\"limit\">\r\n <fa-icon [icon]=\"faChevronRight\"></fa-icon>\r\n </button>\r\n </li>\r\n </ul>\r\n <sfc-delimeter></sfc-delimeter>\r\n</div>", styles: [":host{width:100%;display:inline-block}:host .container{position:relative;text-align:center}:host .container ul{list-style:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:0;-webkit-user-select:none;user-select:none}:host .container ul li{display:block;float:left;padding:.31em}:host .container ul li:first-child{border:none}:host .container ul li button,:host .container ul li span{transition:color .5s ease;background:none;border:none;border-radius:50%;box-sizing:border-box;display:block;font-size:1em;height:2.5em;min-width:2.5em;line-height:2.5em;padding:0}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button,:host .container ul li span,:host-context(.sfc-default-theme) :host .container ul li span{color:#0009}:host-context(.sfc-dark-theme) :host .container ul li button,:host-context(.sfc-dark-theme) :host .container ul li span{color:#fff}:host .container ul li button{transition:color .5s ease;outline:none;position:relative;transition:all .17s linear}:host .container ul li button,:host-context(.sfc-default-theme) :host .container ul li button{color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button{color:#fff}:host .container ul li button:before{transition:background .5s ease;border-radius:50%;content:\"\";cursor:pointer;height:0;left:50%;opacity:0;position:absolute;transform:translate(-50%,-50%);transition:all .17s linear;top:50%;width:0}:host .container ul li button:before,:host-context(.sfc-default-theme) :host .container ul li button:before{background:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:before{background:#f5f7fa}:host .container ul li button:hover:not(.active){transition:color .5s ease}:host .container ul li button:hover:not(.active),:host-context(.sfc-default-theme) :host .container ul li button:hover:not(.active){color:#545e61}:host-context(.sfc-dark-theme) :host .container ul li button:hover:not(.active){color:#fff}:host .container ul li button:hover:not(.active):before{animation:hover-animation .51s linear forwards;width:2.5em;height:2.5em}:host .container ul li button.active{transition:background .5s ease;color:#545e61!important}:host .container ul li button.active,:host-context(.sfc-default-theme) :host .container ul li button.active{background:rgba(0,0,0,.1019607843)}:host-context(.sfc-dark-theme) :host .container ul li button.active{background:#f5f7fa}@keyframes hover-animation{0%{opacity:1}to{opacity:0}}\n"] }]
3136
3363
  }], ctorParameters: function () { return [{ type: PaginationService }]; }, propDecorators: { count: [{
3137
3364
  type: Input
3138
3365
  }], full: [{
@@ -3189,10 +3416,10 @@ class LoadMoreButtonComponent {
3189
3416
  }
3190
3417
  }
3191
3418
  LoadMoreButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3192
- LoadMoreButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadMoreButtonComponent, selector: "sfc-load-more-button", inputs: { label: "label", icon: "icon" }, outputs: { more: "more" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700;text-transform:uppercase}:host .container .button:hover{color:#ffce54}\n"], dependencies: [{ kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: MouseDownDirective, selector: "[sfcMouseDown]", inputs: ["button"], outputs: ["sfcMouseDown"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
3419
+ LoadMoreButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.4", type: LoadMoreButtonComponent, selector: "sfc-load-more-button", inputs: { label: "label", icon: "icon" }, outputs: { more: "more" }, ngImport: i0, template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700}:host .container .button:hover{color:#ffce54}\n"], dependencies: [{ kind: "component", type: i1$2.FaIconComponent, selector: "fa-icon", inputs: ["icon", "title", "spin", "pulse", "mask", "styles", "flip", "size", "pull", "border", "inverse", "symbol", "rotate", "fixedWidth", "classes", "transform", "a11yRole"] }, { kind: "directive", type: MouseDownDirective, selector: "[sfcMouseDown]", inputs: ["button"], outputs: ["sfcMouseDown"] }, { kind: "component", type: DelimeterComponent, selector: "sfc-delimeter", inputs: ["label", "direction"] }] });
3193
3420
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImport: i0, type: LoadMoreButtonComponent, decorators: [{
3194
3421
  type: Component,
3195
- args: [{ selector: 'sfc-load-more-button', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700;text-transform:uppercase}:host .container .button:hover{color:#ffce54}\n"] }]
3422
+ args: [{ selector: 'sfc-load-more-button', template: "<div class=\"container\">\r\n <sfc-delimeter></sfc-delimeter>\r\n <div class=\"button\" (sfcMouseDown)=\"more.emit($event)\">\r\n <fa-icon [icon]=\"icon\"></fa-icon>\r\n <span>{{label}}</span>\r\n </div>\r\n</div>", styles: [":host{cursor:default}:host .container{text-align:center}:host .container,:host-context(.sfc-default-theme) :host .container{background:#fff}:host-context(.sfc-dark-theme) :host .container{background:transparent}:host .container .button{display:inline-flex;align-items:center;justify-content:center;flex-wrap:wrap;cursor:pointer;transition:color .5s ease;transition:color .5s;padding:.5em 0 1em}:host .container .button,:host-context(.sfc-default-theme) :host .container .button{color:#545e61}:host-context(.sfc-dark-theme) :host .container .button{color:#fff}:host .container .button fa-icon{font-size:.7em;margin-right:.31em}:host .container .button span{font-size:.6em;font-weight:700}:host .container .button:hover{color:#ffce54}\n"] }]
3196
3423
  }], propDecorators: { label: [{
3197
3424
  type: Input
3198
3425
  }], icon: [{
@@ -3806,6 +4033,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.4", ngImpor
3806
4033
  * Generated bundle index. Do not edit.
3807
4034
  */
3808
4035
 
3809
- export { BounceLoaderComponent, BrowserDocumentRef, BrowserWindowRef, ButtonComponent, ButtonType, CheckmarkComponent, CheckmarkType, CircleLoaderComponent, CircleLoaderType, ClickOutsideDirective, CloseComponent, CollapseExpandComponent, CollapseExpandContainerComponent, CollapseExpandDirective, CommonConstants, Compare, ComponentReferenceDirective, ComponentSize, ComponentSizeDirective, DOCUMENT, DOCUMENT_PROVIDERS, DateTimeConstants, DefaultModalFooterComponent, DefaultModalHeaderComponent, DelimeterComponent, DestroyParentDirective, Direction, DocumentRef, DomChangesDirective, DotComponent, DotsComponent, HamburgerComponent, HamburgerMenuComponent, IconComponent, IfDirective, ImageLoadDirective, ImageLoadService, ItemsView, LoadContainerChangesSource, LoadContainerComponent, LoadContainerLoadType, LoadContainerType, LoadMoreButtonComponent, LoadMoreService, LoaderService, MediaLimits, MessageComponent, ModalComponent, ModalOpenDirective, ModalOpenOnClickDirective, ModalService, ModalTemplate, MouseDownDirective, NgxSfcCommonModule, NotificationType, ObservableBehaviorModel, ObservableModel, PaginationComponent, PaginationConstants, PaginationService, Position, ReloadService, RepeatPipe, ResizeService, ScrollIntoViewDirective, ScrollTrackerDirective, Select, Sequence, ShowHideElementDirective, SortByPipe, SortingDirection, SortingService, State, SwitchMultiCasePipe, TagComponent, TemplateContentComponent, TemplateReferenceDirective, Theme, ThrowElementOnHoverDirective, ToggleComponent, ToggleSwitcherComponent, TooltipComponent, TooltipType, UIClass, UIConstants, WINDOW, WINDOW_PROVIDERS, WindowRef, addClasses, addItem, addPropertyToObject, all, any, browserDocumentProvider, browserWindowProvider, buildHttpParams, contains, convertDateToTimestamp, convertFromBase64String, convertTimestampToDate, convertToBase64String, convertUTCDateToLocalDate, count, deepClone, distinct, documentFactory, documentProvider, findChangedPropertyKey, findChangedPropertyPath, firstItem, firstOrDefault, generateGuid, getAge, getCalcValue, getCollectionOrEmpty, getCssLikeValue, getFileExtension, getFirstDayOfMonth, getFirstDayOfMonthByYearAndMonth, getFirstDayOfYear, getLastDayOfMonth, getLastDayOfMonthByYearAndMonth, getLastDayOfYear, getNextDate, getNextMonth, getNextYear, getPreviousDate, getPreviousMonth, getPreviousYear, getRotateValue, getValueFromCssLikeValue, getWeeksNumberInMonth, hasAnyItem, hasItem, hasItemBy, hasObjectItem, hexToRgb, isArraysEquals, isAsyncData, isChromeBrowser, isDateGreat, isDateGreatOrEqual, isDateTimeGreat, isDateTimeGreatOrEqual, isDateTimeLessOrEqual, isDefined, isEmail, isEqual, isEqualDateTimes, isEqualDates, isImage, isJsonString, isNullOrEmptyString, isNumeric, isObject, isString, isTimeGreatOrEqual, isTimeLessOrEqual, lastItem, max, mergeDeep, nameof, parseBoolean, parseFileSize, readAsDataURL, remove, removeClasses, removeItem, removeItemBy, removePropertyFromObject, replaceRgbOpacity, rgbToHex, setDay, setDefaultSecondsAndMiliseconds, setHours, setMilliseconds, setMinutes, setSeconds, setYear, skip, sort, sortBy, sortByPath, stopAndPreventPropagation, sum, trim, updateItemBy, updatePropertyByKey, where, windowFactory, windowProvider };
4036
+ export { BounceLoaderComponent, BrowserDocumentRef, BrowserWindowRef, ButtonComponent, ButtonType, CheckmarkComponent, CheckmarkType, CircleLoaderComponent, CircleLoaderType, ClickOutsideDirective, CloseComponent, CollapseExpandComponent, CollapseExpandContainerComponent, CollapseExpandDirective, Color, CommonConstants, Compare, ComponentReferenceDirective, ComponentSize, ComponentSizeDirective, DOCUMENT, DOCUMENT_PROVIDERS, DateTimeConstants, DefaultModalFooterComponent, DefaultModalHeaderComponent, DelimeterComponent, DestroyParentDirective, Direction, DocumentRef, DomChangesDirective, DotComponent, DotsComponent, HamburgerComponent, HamburgerMenuComponent, IconComponent, IfDirective, ImageLoadDirective, ImageLoadService, ItemsView, LoadContainerChangesSource, LoadContainerComponent, LoadContainerLoadType, LoadContainerType, LoadMoreButtonComponent, LoadMoreService, LoaderService, MediaLimits, MessageComponent, ModalComponent, ModalOpenDirective, ModalOpenOnClickDirective, ModalService, ModalTemplate, MouseDownDirective, NgxSfcCommonModule, NotificationType, ObservableBehaviorModel, ObservableModel, PaginationComponent, PaginationConstants, PaginationService, Position, ReloadService, RepeatPipe, ResizeService, ScrollIntoViewDirective, ScrollTrackerDirective, Select, Sequence, ShowHideElementDirective, SortByPipe, SortingDirection, SortingService, State, SwitchMultiCasePipe, TagComponent, TemplateContentComponent, TemplateReferenceDirective, Theme, ThrowElementOnHoverDirective, ToggleComponent, ToggleSwitcherComponent, TooltipComponent, TooltipType, UIClass, UIConstants, WINDOW, WINDOW_PROVIDERS, WindowRef, addClasses, addItem, addPropertyToObject, all, any, browserDocumentProvider, browserWindowProvider, buildHttpParams, contains, convertDateToTimestamp, convertFromBase64String, convertTimestampToDate, convertToBase64String, convertUTCDateToLocalDate, count, deepClone, distinct, documentFactory, documentProvider, findChangedPropertyKey, findChangedPropertyPath, firstItem, firstOrDefault, generateGuid, getAge, getCalcValue, getCollectionOrEmpty, getCssLikeValue, getFileExtension, getFirstDayOfMonth, getFirstDayOfMonthByYearAndMonth, getFirstDayOfYear, getLastDayOfMonth, getLastDayOfMonthByYearAndMonth, getLastDayOfYear, getNextDate, getNextItemByKey, getNextMonth, getNextYear, getPreviousDate, getPreviousItemByKey, getPreviousMonth, getPreviousYear, getRotateValue, getValueFromCssLikeValue, getWeeksNumberInMonth, hasAnyItem, hasItem, hasItemBy, hasObjectItem, hexToRgb, isArraysEquals, isAsyncData, isChromeBrowser, isDateGreat, isDateGreatOrEqual, isDateTimeGreat, isDateTimeGreatOrEqual, isDateTimeLessOrEqual, isDefined, isEmail, isEqual, isEqualDateTimes, isEqualDates, isImage, isJsonString, isNullOrEmptyString, isNumeric, isObject, isString, isTimeGreatOrEqual, isTimeLessOrEqual, lastItem, max, mergeDeep, nameof, parseBoolean, parseFileSize, readAsDataURL, remove, removeClasses, removeItem, removeItemBy, removePropertyFromObject, replaceRgbOpacity, rgbToHex, setDay, setDefaultSecondsAndMiliseconds, setHours, setMilliseconds, setMinutes, setSeconds, setYear, skip, sort, sortBy, sortByPath, stopAndPreventPropagation, sum, toggleItem, trim, updateItemBy, updatePropertyByKey, updatePropertyByPath, where, windowFactory, windowProvider };
3810
4037
  //# sourceMappingURL=ngx-sfc-common.mjs.map
3811
4038
  //# sourceMappingURL=ngx-sfc-common.mjs.map