{"version":3,"file":"uni-manager-type.mjs","sources":["../../../projects/uni-manager/type/date.manager.ts","../../../projects/uni-manager/type/number.manager.ts","../../../projects/uni-manager/type/string.manager.ts","../../../projects/uni-manager/type/uni-manager-type.ts"],"sourcesContent":["/**\r\n * Classe di utilità per la gestione e formattazione delle date.\r\n * Fornisce metodi per convertire in modo sicuro valori di tipo Date, stringa o null in formati standardizzati.\r\n */\r\nexport class UniTypeDateManager {\r\n  static toYYYYMMDD(date: Date | string | null | undefined): string {\r\n    if (!date) return '';\r\n\r\n    // Istanzia oggetto data\r\n    const d = new Date(date);\r\n\r\n    // Verifica validità\r\n    if (Number.isNaN(d.getTime())) {\r\n      return '';\r\n    }\r\n\r\n    // Recupero parti della data\r\n    const year = d.getFullYear();\r\n    const month = String(d.getMonth() + 1).padStart(2, '0');\r\n    const day = String(d.getDate()).padStart(2, '0');\r\n\r\n    // Creazione stringa\r\n    return `${year}-${month}-${day}`;\r\n  }\r\n}\r\n","/**\r\n * Utility per la gestione e formattazione di valori numerici.\r\n */\r\nexport class UniTypeNumberManager {\r\n  /** Applica il padding a un numero o una stringa */\r\n  static toPad(value: number | string | null | undefined, count: number, character = '0'): string {\r\n    // Se il valore è null/undefined, riempiamo l'intero campo con il carattere scelto\r\n    if (value === null || value === undefined) {\r\n      return ''.padStart(count, character);\r\n    }\r\n\r\n    // Convertiamo in stringa e applichiamo il padding\r\n    return value.toString().padStart(count, character);\r\n  }\r\n\r\n  /** Formatta un numero in una versione leggibile (es: 1000 -> 1K, 1000000 -> 1M) */\r\n  static toTruncateAndAdUdm(value: number, decimalDigits = 0, maxIntegerDigits = 3): string {\r\n    // Nessun limite impostato o numero inferiore alla soglia definita\r\n    if (Math.abs(value) < Math.pow(10, maxIntegerDigits)) {\r\n      return value.toFixed(decimalDigits);\r\n    }\r\n\r\n    // Definizione delle scale di riduzione per grandi numeri\r\n    const scales = [\r\n      { threshold: 1e12, suffix: 'T' }, // Trilioni\r\n      { threshold: 1e9, suffix: 'B' }, // Miliardi\r\n      { threshold: 1e6, suffix: 'M' }, // Milioni\r\n      { threshold: 1e3, suffix: 'K' }, // Migliaia\r\n    ];\r\n\r\n    // Itera dalla scala più grande alla più piccola per trovare la soglia corretta\r\n    for (const { threshold, suffix } of scales) {\r\n      if (Math.abs(value) >= threshold) {\r\n        const reduced = value / threshold;\r\n\r\n        // parseFloat(toFixed()) rimuove gli zeri decimali superflui (es: 1.50 -> 1.5)\r\n        // aggiungendo poi il relativo suffisso (K, M, B, T)\r\n        return Number.parseFloat(reduced.toFixed(decimalDigits)).toString() + suffix;\r\n      }\r\n    }\r\n\r\n    // Fallback: se il numero è grande ma non rientra nelle scale (caso raro con la logica attuale)\r\n    return value.toFixed(decimalDigits);\r\n  }\r\n}\r\n","/**\r\n * Utility per la manipolazione di stringhe\r\n */\r\nexport class UniTypeStringManager {\r\n  /** Converte una stringa in formato lblPascalCase (es. \"user_id\" -> \"lblUserId\") */\r\n  static toLabelize(key: string | null | undefined, prefix = 'lbl'): string {\r\n    // Se vuoto restituisce vuoto\r\n    if (!key) return '';\r\n\r\n    // Pulizia chiave\r\n    const fixedKey = key.trim();\r\n\r\n    // Unisce il prefisso\r\n    return prefix + this.toPascalCase(fixedKey);\r\n  }\r\n\r\n  /** Converte una stringa in PascalCase (es. \"user_id\" -> \"UserId\") */\r\n  static toPascalCase(key: string | null | undefined): string {\r\n    // Se vuoto restituisce vuoto\r\n    if (!key) return '';\r\n\r\n    // Pulizia chiave\r\n    const fixedKey = key.trim();\r\n\r\n    // Normalizza e pulisce\r\n    const parts = this.splitString(fixedKey);\r\n    if (parts.length === 0) return '';\r\n\r\n    // Converte in PascalCase\r\n    const pascalCased = this.toPascalCaseParts(parts);\r\n\r\n    return pascalCased;\r\n  }\r\n\r\n  /** Converte una stringa in camelCase (es. \"user_id\" -> \"userId\") */\r\n  static toCamelCase(key: string | null | undefined): string {\r\n    // Se vuoto restituisce vuoto\r\n    if (!key) return '';\r\n\r\n    // Pulizia chiave\r\n    const fixedKey = key.trim();\r\n\r\n    // Normalizza e pulisce\r\n    const parts = this.splitString(fixedKey);\r\n    if (parts.length === 0) return '';\r\n\r\n    // La prima parola resta minuscola, le successive PascalCase\r\n    const first = parts[0].toLowerCase();\r\n    const rest = parts.slice(1);\r\n    return first + this.toPascalCaseParts(rest);\r\n  }\r\n\r\n  /** Capitalizza solo la prima lettera della stringa */\r\n  static toCapitalize(key: string | null | undefined): string {\r\n    // Se vuoto restituisce vuoto\r\n    if (!key) return '';\r\n\r\n    // Pulizia chiave\r\n    const fixedKey = key.trim();\r\n\r\n    return fixedKey.charAt(0).toUpperCase() + fixedKey.slice(1);\r\n  }\r\n\r\n  /** Sostituisce sotto-stringhe all'interno della stringa */\r\n  static toReplace(\r\n    key: string | null | undefined,\r\n    values: { searchValue: string; replaceValue: string }[],\r\n  ): string {\r\n    // Se vuoto restituisce vuoto\r\n    if (!key) return '';\r\n\r\n    // Pulizia chiave\r\n    let fixedKey = key.trim();\r\n\r\n    for (const value of values) {\r\n      fixedKey = fixedKey.replaceAll(value.searchValue, value.replaceValue);\r\n    }\r\n\r\n    return fixedKey;\r\n  }\r\n\r\n  /* ----------------- Utils  ----------------- */\r\n  private static splitString(key: string): string[] {\r\n    return (\r\n      key\r\n        // Pulisce eventuali caratteri di separazione rimasti in testa (es. \"_tab_name\" -> \"tab_name\")\r\n        .replace(/^[-_\\s]+/, '')\r\n\r\n        // Isola il CamelCase inserendo un underscore tra minuscole e maiuscole (es. \"userId\" -> \"user_Id\")\r\n        .replaceAll(/([a-z])([A-Z])/g, '$1_$2')\r\n\r\n        // Isola gli acronimi attaccati a parole Normali (es. \"VARAna\" -> \"VAR_Ana\" grazie alla minuscola \"na\")\r\n        .replaceAll(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\r\n\r\n        // Applica il taglio definitivo usando come riferimento i trattini, gli underscore e gli spazi\r\n        .split(/[-_\\s]+/)\r\n\r\n        // Rimuove dall'array finale eventuali stringhe vuote generate da separatori consecutivi\r\n        .filter(Boolean)\r\n    );\r\n  }\r\n\r\n  private static toPascalCaseParts(parts: string[]): string {\r\n    return parts.map((part) => part.charAt(0).toUpperCase() + part.slice(1).toLowerCase()).join('');\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}