@appartmint/mint 2.6.8 → 2.6.16

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.
@@ -75,7 +75,7 @@ export declare abstract class MintObject {
75
75
  /**
76
76
  * Create a deep copy of an object
77
77
  */
78
- static deepClone(object: any): any;
78
+ static deepClone<T>(object: T): T;
79
79
  }
80
80
  export default MintObject;
81
81
  //# sourceMappingURL=object.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../src/ts/imports/util/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,8BAAsB,UAAU;IAC5B;;OAEG;IACF,MAAM,CAAC,SAAS,CAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAI,OAAO;IAclD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAI,OAAO;IA8BxD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAIpD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,GAAG;IASrD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,GAAG;IAStD;;OAEG;IACH,MAAM,CAAC,IAAI,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GAAI,GAAG;IAI7E;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GAAI,GAAG;IAOjF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GAAI,GAAG;IAO5E;;OAEG;IACH,MAAM,CAAC,MAAM,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAIpD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAOxD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,MAAM;IASzD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,SAAO,GAAI,GAAG;IAqCzE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAIjE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,GAAG,GAAG;CAqBlC;AACD,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../../../src/ts/imports/util/object.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,8BAAsB,UAAU;IAC5B;;OAEG;IACF,MAAM,CAAC,SAAS,CAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,GAAI,OAAO;IAclD;;;;;;OAMG;IACH,MAAM,CAAC,UAAU,CAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAI,OAAO;IA8BxD;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAIpD;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,GAAG;IASrD;;OAEG;IACH,MAAM,CAAC,YAAY,CAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,GAAG;IAStD;;OAEG;IACH,MAAM,CAAC,IAAI,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GAAI,GAAG;IAI7E;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,MAAM,GAAI,GAAG;IAOjF;;OAEG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,MAAM,GAAI,GAAG;IAO5E;;OAEG;IACH,MAAM,CAAC,MAAM,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAIpD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,CAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,GAAI,MAAM;IAOxD;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAAI,MAAM;IASzD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,SAAO,GAAI,GAAG;IAqCzE;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS;IAIjE;;OAEG;IACH,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC;CA+DjC;AACD,eAAe,UAAU,CAAC"}
@@ -2,6 +2,10 @@
2
2
  * Functions for analyzing and manipulating text.
3
3
  */
4
4
  export declare abstract class MintText {
5
+ /**
6
+ * Shorten a string to the given length
7
+ */
8
+ static truncate(text: string, length?: number): string;
5
9
  /**
6
10
  * Generate a slug from a string
7
11
  * @param text - The string to slugify
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/ts/imports/util/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,8BAAsB,QAAQ;IAE7B;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAUnC;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAIpC;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IA6C9C;;OAEG;IACH,MAAM,CAAC,MAAM,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAkBpC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAMvC;;;;OAIM;IACH,MAAM,CAAC,QAAQ,CAAE,IAAI,EAAE,MAAM,GAAI,OAAO;IA0BxC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAE,IAAI,EAAE,MAAM,GAAI,OAAO;IAI1C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,GAAE,MAAW,GAAG,MAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,MAAM,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;CAGtC"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/ts/imports/util/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,8BAAsB,QAAQ;IAE7B;;OAEG;IACH,MAAM,CAAC,QAAQ,CAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAY,GAAG,MAAM;IAI5D;;;;OAIG;IACH,MAAM,CAAC,IAAI,CAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAUnC;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAIpC;;;;OAIG;IACH,MAAM,CAAC,KAAK,CAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM;IA6C9C;;OAEG;IACH,MAAM,CAAC,MAAM,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAkBpC;;OAEG;IACH,MAAM,CAAC,SAAS,CAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAMvC;;;;OAIM;IACH,MAAM,CAAC,QAAQ,CAAE,IAAI,EAAE,MAAM,GAAI,OAAO;IA0BxC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,CAAE,IAAI,EAAE,MAAM,GAAI,OAAO;IAI1C;;OAEG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,GAAE,MAAW,GAAG,MAAM;IAI9C;;OAEG;IACH,MAAM,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;IAItC;;OAEG;IACH,MAAM,CAAC,OAAO,CAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO;CAGtC"}
package/dist/js/index.js CHANGED
@@ -1709,23 +1709,53 @@ class MintObject {
1709
1709
  * Create a deep copy of an object
1710
1710
  */
1711
1711
  static deepClone(object) {
1712
- // Clone every property
1713
- const clone = {};
1714
- for (const key in object) {
1715
- // Functions
1716
- if (typeof object[key] === 'function') {
1717
- clone[key] = object[key].bind(clone);
1718
- // Objects
1719
- }
1720
- else if (object[key] && typeof object[key] === 'object') {
1721
- clone[key] = this.deepClone(object[key]);
1712
+ // Only clone objects
1713
+ if (typeof object !== 'object' || object === null) {
1714
+ return object;
1715
+ }
1716
+ // Track object references to avoid circular references
1717
+ const seen = new WeakMap();
1718
+ const stack = [[object, Array.isArray(object) ? [] : {}]];
1719
+ // Run clone tasks
1720
+ while (stack.length) {
1721
+ const [source, clone, key] = stack.pop();
1722
+ if (key !== undefined) {
1723
+ const value = source[key];
1724
+ // Bind functions
1725
+ if (typeof value === 'function') {
1726
+ clone[key] = value.bind(clone);
1727
+ continue;
1728
+ }
1722
1729
  // Primitives
1730
+ if (typeof value !== 'object' || value === null) {
1731
+ clone[key] = value;
1732
+ continue;
1733
+ }
1734
+ // Circular references
1735
+ if (seen.has(value)) {
1736
+ clone[key] = seen.get(value);
1737
+ continue;
1738
+ }
1739
+ // Object / Array
1740
+ clone[key] = Array.isArray(value) ? [] : {};
1741
+ seen.set(value, clone[key]);
1742
+ stack.push([value, clone[key]]);
1743
+ // No key, process full object
1723
1744
  }
1724
1745
  else {
1725
- clone[key] = object[key];
1746
+ seen.set(source, clone);
1747
+ if (Array.isArray(source)) {
1748
+ source.forEach((_, index) => {
1749
+ stack.push([source, clone, index]);
1750
+ });
1751
+ continue;
1752
+ }
1753
+ Object.keys(source).forEach((key) => {
1754
+ stack.push([source, clone, key]);
1755
+ });
1726
1756
  }
1727
1757
  }
1728
- return clone;
1758
+ return seen.get(object);
1729
1759
  }
1730
1760
  }
1731
1761
  ;
@@ -2089,6 +2119,12 @@ __webpack_require__.r(__webpack_exports__);
2089
2119
  * Functions for analyzing and manipulating text.
2090
2120
  */
2091
2121
  class MintText {
2122
+ /**
2123
+ * Shorten a string to the given length
2124
+ */
2125
+ static truncate(text, length = 100) {
2126
+ return text.length > length ? text.slice(0, length).trim() + '...' : text;
2127
+ }
2092
2128
  /**
2093
2129
  * Generate a slug from a string
2094
2130
  * @param text - The string to slugify