@litigiovirtual/ius-design-components 1.0.283 → 1.0.284
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/lib/avatar-business/avatar-business.component.mjs +1 -1
- package/esm2022/lib/avatar-v2/avatar-v2.component.mjs +1 -1
- package/esm2022/lib/button-standard-outline/button-standard-outline.component.mjs +3 -3
- package/esm2022/lib/button-standard-outline/index.mjs +1 -1
- package/esm2022/lib/card-actividad-evento/card-actividad-evento.component.mjs +3 -3
- package/esm2022/lib/card-block/card-block.component.mjs +2 -2
- package/esm2022/lib/card-etapa-subetapa/card-etapa-subetapa.component.mjs +3 -3
- package/esm2022/lib/card-impulso-procesal/card-impulso-procesal.component.mjs +3 -3
- package/esm2022/lib/card-vigilancia-judicial/card-vigilancia-judicial.component.mjs +3 -3
- package/esm2022/lib/create-ticket/create-ticket.component.mjs +3 -3
- package/esm2022/lib/create-ticket/index.mjs +1 -1
- package/esm2022/lib/input-select/input-select.component.mjs +43 -4
- package/esm2022/utils/currency-format.pipe.mjs +1 -1
- package/esm2022/utils/date-format.util.mjs +1 -1
- package/esm2022/utils/file-mime.util.mjs +1 -1
- package/esm2022/utils/file-size.util.mjs +1 -1
- package/esm2022/utils/formato-hora.pipe.mjs +1 -1
- package/esm2022/utils/public-api.mjs +1 -1
- package/fesm2022/litigiovirtual-ius-design-components-utils.mjs.map +1 -1
- package/fesm2022/litigiovirtual-ius-design-components.mjs +55 -16
- package/fesm2022/litigiovirtual-ius-design-components.mjs.map +1 -1
- package/lib/input-select/input-select.component.d.ts +8 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"litigiovirtual-ius-design-components-utils.mjs","sources":["../../../projects/ius-design-components/utils/src/currency-format.pipe.ts","../../../projects/ius-design-components/utils/src/formato-hora.pipe.ts","../../../projects/ius-design-components/utils/src/date-format.util.ts","../../../projects/ius-design-components/utils/src/file-mime.util.ts","../../../projects/ius-design-components/utils/src/file-size.util.ts","../../../projects/ius-design-components/utils/src/public-api.ts","../../../projects/ius-design-components/utils/src/litigiovirtual-ius-design-components-utils.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n// ============================================================\r\n// Utilidades de moneda (locale es-CO por defecto). Reutilizables en cualquier app.\r\n//\r\n// En un input controlado:\r\n// import { parseCurrencyInput, buildCurrencyDisplay, formatCurrencyOnBlur }\r\n// from '@litigiovirtual/ius-design-components/utils';\r\n//\r\n// onChange(event: string) {\r\n// const { rawStr, intPart, decPart } = parseCurrencyInput(event);\r\n// this.valorRaw = rawStr;\r\n// this.display = buildCurrencyDisplay(intPart, decPart);\r\n// }\r\n// onBlur() { this.display = formatCurrencyOnBlur(this.valorRaw); }\r\n// ============================================================\r\n\r\n/**\r\n * Parsea lo que el usuario escribe en un input de moneda (es-CO: punto = miles, coma = decimal).\r\n * - rawStr: string con punto decimal para cálculos JS (\"150000.50\")\r\n * - intPart: parte entera sin formato (\"150000\")\r\n * - decPart: parte decimal tal como la escribió el usuario (\"50\") o null si no hay coma\r\n */\r\nexport function parseCurrencyInput(display: string): {\r\n rawStr: string;\r\n intPart: string;\r\n decPart: string | null;\r\n} {\r\n const stripped = display.replace(/\\./g, '').replace(/[^0-9,]/g, '');\r\n const commaIndex = stripped.indexOf(',');\r\n const intPart = commaIndex >= 0 ? stripped.slice(0, commaIndex) : stripped;\r\n const decPart = commaIndex >= 0 ? stripped.slice(commaIndex + 1) : null;\r\n const rawStr = decPart !== null ? `${intPart}.${decPart}` : intPart;\r\n return { rawStr, intPart, decPart };\r\n}\r\n\r\n/**\r\n * Formatea la parte entera con separadores de miles (es-CO) y conserva la decimal\r\n * exactamente como la escribió el usuario (sin redondear). Para actualizar el display al escribir.\r\n */\r\nexport function buildCurrencyDisplay(intPart: string, decPart: string | null): string {\r\n if (!intPart && decPart === null) return '';\r\n const intNum = intPart ? parseInt(intPart, 10) : 0;\r\n const formattedInt = isNaN(intNum)\r\n ? intPart\r\n : new Intl.NumberFormat('es-CO', { minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(intNum);\r\n return decPart !== null ? `${formattedInt},${decPart}` : formattedInt;\r\n}\r\n\r\n/**\r\n * Formatea el valor raw al salir del campo (blur): completa decimales si los hay.\r\n * formatCurrencyOnBlur('150000.5') → \"150.000,50\"\r\n * formatCurrencyOnBlur('150000') → \"150.000\"\r\n */\r\nexport function formatCurrencyOnBlur(rawValue: string): string {\r\n if (!rawValue) return '';\r\n const num = parseFloat(rawValue);\r\n if (isNaN(num) || num <= 0) return rawValue;\r\n return new Intl.NumberFormat('es-CO', {\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n }).format(num);\r\n}\r\n\r\n// ============================================================\r\n// Pipe para mostrar valores en templates\r\n// {{ 150000 | currencyFormat }} → \"150.000\"\r\n// {{ 150000.5 | currencyFormat }} → \"150.000,5\"\r\n// {{ 150000 | currencyFormat: true }} → \"$ 150.000\" (símbolo COP)\r\n// ============================================================\r\n@Pipe({\r\n name: 'currencyFormat',\r\n standalone: true,\r\n})\r\nexport class CurrencyFormatPipe implements PipeTransform {\r\n transform(\r\n value: number | string | null | undefined,\r\n showSymbol = false,\r\n currencyCode = 'COP',\r\n locale = 'es-CO',\r\n ): string {\r\n if (value === null || value === undefined || value === '') return '';\r\n\r\n const num = typeof value === 'string' ? parseFloat(value.replace(/,/g, '')) : value;\r\n\r\n if (isNaN(num)) return String(value);\r\n\r\n try {\r\n return new Intl.NumberFormat(locale, {\r\n style: showSymbol ? 'currency' : 'decimal',\r\n currency: showSymbol ? currencyCode : undefined,\r\n minimumFractionDigits: 0,\r\n maximumFractionDigits: 2,\r\n }).format(num);\r\n } catch {\r\n return num.toString();\r\n }\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/**\r\n * Muestra una hora en formato 12h con am/pm.\r\n * {{ '14:30:00' | formatoHora }} → \"2:30 pm\"\r\n * {{ '09:00' | formatoHora }} → \"9 am\"\r\n * Acepta string (con HH:mm[:ss] en cualquier parte), Date o ISO.\r\n */\r\n@Pipe({\r\n name: 'formatoHora',\r\n standalone: true,\r\n})\r\nexport class FormatoHoraPipe implements PipeTransform {\r\n transform(value?: string | Date | null): string {\r\n if (!value) return '';\r\n\r\n if (value instanceof Date) {\r\n return this.formatHours(value.getHours(), value.getMinutes());\r\n }\r\n\r\n const str = String(value);\r\n\r\n const match = str.match(/(\\d{1,2}):(\\d{2})(?::\\d{2})?/);\r\n if (match) {\r\n return this.formatHours(Number(match[1]), Number(match[2]));\r\n }\r\n\r\n const parsed = new Date(str);\r\n if (!isNaN(parsed.getTime())) {\r\n return this.formatHours(parsed.getHours(), parsed.getMinutes());\r\n }\r\n\r\n return '';\r\n }\r\n\r\n private formatHours(hours: number, minutes: number): string {\r\n const period = hours >= 12 ? 'pm' : 'am';\r\n const hour12 = hours % 12 === 0 ? 12 : hours % 12;\r\n if (minutes === 0) return `${hour12} ${period}`;\r\n return `${hour12}:${minutes.toString().padStart(2, '0')} ${period}`;\r\n }\r\n}\r\n","/**\r\n * Helpers de fecha/hora para inputs Angular ↔ backend (DateOnly / TimeOnly de C#).\r\n *\r\n * IMPORTANTE: se usa SIEMPRE el constructor local Date(y, m, d) para evitar el shift de\r\n * zona horaria. new Date('yyyy-MM-dd') se interpreta como UTC y puede saltar un día según\r\n * la zona; estos helpers reconstruyen la fecha desde sus componentes (hora local).\r\n */\r\n\r\n/**\r\n * Convierte cualquier valor de fecha (string \"yyyy-MM-dd\", \"yyyy-MM-ddTHH:mm:ss\" o Date)\r\n * a Date en hora LOCAL. Devuelve undefined si es vacío/ inválido.\r\n */\r\nexport function parseLocalDate(value: any): Date | undefined {\r\n if (value === null || value === undefined || value === '') return undefined;\r\n if (value instanceof Date) return isNaN(value.getTime()) ? undefined : value;\r\n if (typeof value === 'string') {\r\n const m = value.match(/^(\\d{4})-(\\d{2})-(\\d{2})(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2}))?)?/);\r\n if (m) {\r\n return new Date(+m[1], +m[2] - 1, +m[3], +(m[4] ?? 0), +(m[5] ?? 0), +(m[6] ?? 0));\r\n }\r\n const parsed = new Date(value);\r\n return isNaN(parsed.getTime()) ? undefined : parsed;\r\n }\r\n return undefined;\r\n}\r\n\r\n/** Parsea evento de date-picker (ISO string, Date, \"YYYY-MM-DD\") a Date local. */\r\nexport function parseDateEvent(event: any): Date | undefined {\r\n if (!event) return undefined;\r\n if (event instanceof Date) return event;\r\n if (typeof event === 'string') {\r\n const match = event.match(/^(\\d{4})-(\\d{2})-(\\d{2})/);\r\n if (match) {\r\n return new Date(+match[1], +match[2] - 1, +match[3]);\r\n }\r\n const parsed = new Date(event);\r\n return isNaN(parsed.getTime()) ? undefined : parsed;\r\n }\r\n return undefined;\r\n}\r\n\r\n/** Parsea evento de time-picker a string \"HH:mm:ss\". */\r\nexport function parseHoraEvent(event: any): string | undefined {\r\n if (!event) return undefined;\r\n if (event instanceof Date) return toTimeOnlyString(event);\r\n if (typeof event === 'string') {\r\n const trimmed = event.trim();\r\n if (/^\\d{2}:\\d{2}(:\\d{2})?$/.test(trimmed)) {\r\n return trimmed.length === 5 ? `${trimmed}:00` : trimmed;\r\n }\r\n const parsed = new Date(event);\r\n return isNaN(parsed.getTime()) ? undefined : toTimeOnlyString(parsed);\r\n }\r\n return undefined;\r\n}\r\n\r\n/** Date -> \"yyyy-MM-dd\" en hora local (formato DateOnly C#). */\r\nexport function toDateOnlyString(d: Date): string {\r\n const y = d.getFullYear();\r\n const m = (d.getMonth() + 1).toString().padStart(2, '0');\r\n const dd = d.getDate().toString().padStart(2, '0');\r\n return `${y}-${m}-${dd}`;\r\n}\r\n\r\n/** Date -> \"HH:mm:ss\" en hora local (formato TimeOnly C#). */\r\nexport function toTimeOnlyString(d: Date): string {\r\n const h = d.getHours().toString().padStart(2, '0');\r\n const min = d.getMinutes().toString().padStart(2, '0');\r\n const s = d.getSeconds().toString().padStart(2, '0');\r\n return `${h}:${min}:${s}`;\r\n}\r\n","/**\r\n * Infiere el MIME type a partir de la extensión del nombre de archivo.\r\n *\r\n * Útil cuando el backend devuelve el nombre del archivo pero no su MIME type, y la UI\r\n * necesita uno para decidir ícono/visor (ej. distinguir PDF de Word/Excel/imagen).\r\n * Para archivos NUEVOS subidos por el usuario, usar `File.type` (ya viene del navegador).\r\n */\r\nexport function inferMimeTypeFromName(fileName?: string): string {\r\n if (!fileName) return '';\r\n const ext = fileName.split('.').pop()?.toLowerCase();\r\n switch (ext) {\r\n case 'pdf': return 'application/pdf';\r\n case 'jpg':\r\n case 'jpeg': return 'image/jpeg';\r\n case 'png': return 'image/png';\r\n case 'docx': return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\r\n case 'xlsx': return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\r\n default: return '';\r\n }\r\n}\r\n","/**\r\n * Constantes y conversión de tamaño de archivo. Centraliza los números mágicos\r\n * (1024) y ofrece una conversión a MB para mostrar totales agregados en UI.\r\n */\r\nexport const KB_IN_BYTES = 1024;\r\nexport const MB_IN_BYTES = 1024 * 1024;\r\n\r\n/** Bytes -> MB (1 decimal). Para mostrar totales agregados (ej. \"X MB de 25 MB\"). */\r\nexport function bytesToMB(bytes: number): number {\r\n return Math.round((bytes / MB_IN_BYTES) * 10) / 10;\r\n}\r\n","/*\r\n * Entry-point secundario: @litigiovirtual/ius-design-components/utils\r\n *\r\n * Utilidades compartidas (sin UI) para todas las apps del ecosistema:\r\n * moneda, fechas/horas y archivos. Evita duplicar este código en cada app.\r\n *\r\n * Uso:\r\n * import { CurrencyFormatPipe, parseLocalDate } from '@litigiovirtual/ius-design-components/utils';\r\n */\r\nexport * from './currency-format.pipe';\r\nexport * from './formato-hora.pipe';\r\nexport * from './date-format.util';\r\nexport * from './file-mime.util';\r\nexport * from './file-size.util';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"litigiovirtual-ius-design-components-utils.mjs","sources":["../../../projects/ius-design-components/utils/src/currency-format.pipe.ts","../../../projects/ius-design-components/utils/src/formato-hora.pipe.ts","../../../projects/ius-design-components/utils/src/date-format.util.ts","../../../projects/ius-design-components/utils/src/file-mime.util.ts","../../../projects/ius-design-components/utils/src/file-size.util.ts","../../../projects/ius-design-components/utils/src/public-api.ts","../../../projects/ius-design-components/utils/src/litigiovirtual-ius-design-components-utils.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n// ============================================================\n// Utilidades de moneda (locale es-CO por defecto). Reutilizables en cualquier app.\n//\n// En un input controlado:\n// import { parseCurrencyInput, buildCurrencyDisplay, formatCurrencyOnBlur }\n// from '@litigiovirtual/ius-design-components/utils';\n//\n// onChange(event: string) {\n// const { rawStr, intPart, decPart } = parseCurrencyInput(event);\n// this.valorRaw = rawStr;\n// this.display = buildCurrencyDisplay(intPart, decPart);\n// }\n// onBlur() { this.display = formatCurrencyOnBlur(this.valorRaw); }\n// ============================================================\n\n/**\n * Parsea lo que el usuario escribe en un input de moneda (es-CO: punto = miles, coma = decimal).\n * - rawStr: string con punto decimal para cálculos JS (\"150000.50\")\n * - intPart: parte entera sin formato (\"150000\")\n * - decPart: parte decimal tal como la escribió el usuario (\"50\") o null si no hay coma\n */\nexport function parseCurrencyInput(display: string): {\n rawStr: string;\n intPart: string;\n decPart: string | null;\n} {\n const stripped = display.replace(/\\./g, '').replace(/[^0-9,]/g, '');\n const commaIndex = stripped.indexOf(',');\n const intPart = commaIndex >= 0 ? stripped.slice(0, commaIndex) : stripped;\n const decPart = commaIndex >= 0 ? stripped.slice(commaIndex + 1) : null;\n const rawStr = decPart !== null ? `${intPart}.${decPart}` : intPart;\n return { rawStr, intPart, decPart };\n}\n\n/**\n * Formatea la parte entera con separadores de miles (es-CO) y conserva la decimal\n * exactamente como la escribió el usuario (sin redondear). Para actualizar el display al escribir.\n */\nexport function buildCurrencyDisplay(intPart: string, decPart: string | null): string {\n if (!intPart && decPart === null) return '';\n const intNum = intPart ? parseInt(intPart, 10) : 0;\n const formattedInt = isNaN(intNum)\n ? intPart\n : new Intl.NumberFormat('es-CO', { minimumFractionDigits: 0, maximumFractionDigits: 0 }).format(intNum);\n return decPart !== null ? `${formattedInt},${decPart}` : formattedInt;\n}\n\n/**\n * Formatea el valor raw al salir del campo (blur): completa decimales si los hay.\n * formatCurrencyOnBlur('150000.5') → \"150.000,50\"\n * formatCurrencyOnBlur('150000') → \"150.000\"\n */\nexport function formatCurrencyOnBlur(rawValue: string): string {\n if (!rawValue) return '';\n const num = parseFloat(rawValue);\n if (isNaN(num) || num <= 0) return rawValue;\n return new Intl.NumberFormat('es-CO', {\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n }).format(num);\n}\n\n// ============================================================\n// Pipe para mostrar valores en templates\n// {{ 150000 | currencyFormat }} → \"150.000\"\n// {{ 150000.5 | currencyFormat }} → \"150.000,5\"\n// {{ 150000 | currencyFormat: true }} → \"$ 150.000\" (símbolo COP)\n// ============================================================\n@Pipe({\n name: 'currencyFormat',\n standalone: true,\n})\nexport class CurrencyFormatPipe implements PipeTransform {\n transform(\n value: number | string | null | undefined,\n showSymbol = false,\n currencyCode = 'COP',\n locale = 'es-CO',\n ): string {\n if (value === null || value === undefined || value === '') return '';\n\n const num = typeof value === 'string' ? parseFloat(value.replace(/,/g, '')) : value;\n\n if (isNaN(num)) return String(value);\n\n try {\n return new Intl.NumberFormat(locale, {\n style: showSymbol ? 'currency' : 'decimal',\n currency: showSymbol ? currencyCode : undefined,\n minimumFractionDigits: 0,\n maximumFractionDigits: 2,\n }).format(num);\n } catch {\n return num.toString();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Muestra una hora en formato 12h con am/pm.\n * {{ '14:30:00' | formatoHora }} → \"2:30 pm\"\n * {{ '09:00' | formatoHora }} → \"9 am\"\n * Acepta string (con HH:mm[:ss] en cualquier parte), Date o ISO.\n */\n@Pipe({\n name: 'formatoHora',\n standalone: true,\n})\nexport class FormatoHoraPipe implements PipeTransform {\n transform(value?: string | Date | null): string {\n if (!value) return '';\n\n if (value instanceof Date) {\n return this.formatHours(value.getHours(), value.getMinutes());\n }\n\n const str = String(value);\n\n const match = str.match(/(\\d{1,2}):(\\d{2})(?::\\d{2})?/);\n if (match) {\n return this.formatHours(Number(match[1]), Number(match[2]));\n }\n\n const parsed = new Date(str);\n if (!isNaN(parsed.getTime())) {\n return this.formatHours(parsed.getHours(), parsed.getMinutes());\n }\n\n return '';\n }\n\n private formatHours(hours: number, minutes: number): string {\n const period = hours >= 12 ? 'pm' : 'am';\n const hour12 = hours % 12 === 0 ? 12 : hours % 12;\n if (minutes === 0) return `${hour12} ${period}`;\n return `${hour12}:${minutes.toString().padStart(2, '0')} ${period}`;\n }\n}\n","/**\n * Helpers de fecha/hora para inputs Angular ↔ backend (DateOnly / TimeOnly de C#).\n *\n * IMPORTANTE: se usa SIEMPRE el constructor local Date(y, m, d) para evitar el shift de\n * zona horaria. new Date('yyyy-MM-dd') se interpreta como UTC y puede saltar un día según\n * la zona; estos helpers reconstruyen la fecha desde sus componentes (hora local).\n */\n\n/**\n * Convierte cualquier valor de fecha (string \"yyyy-MM-dd\", \"yyyy-MM-ddTHH:mm:ss\" o Date)\n * a Date en hora LOCAL. Devuelve undefined si es vacío/ inválido.\n */\nexport function parseLocalDate(value: any): Date | undefined {\n if (value === null || value === undefined || value === '') return undefined;\n if (value instanceof Date) return isNaN(value.getTime()) ? undefined : value;\n if (typeof value === 'string') {\n const m = value.match(/^(\\d{4})-(\\d{2})-(\\d{2})(?:[T ](\\d{2}):(\\d{2})(?::(\\d{2}))?)?/);\n if (m) {\n return new Date(+m[1], +m[2] - 1, +m[3], +(m[4] ?? 0), +(m[5] ?? 0), +(m[6] ?? 0));\n }\n const parsed = new Date(value);\n return isNaN(parsed.getTime()) ? undefined : parsed;\n }\n return undefined;\n}\n\n/** Parsea evento de date-picker (ISO string, Date, \"YYYY-MM-DD\") a Date local. */\nexport function parseDateEvent(event: any): Date | undefined {\n if (!event) return undefined;\n if (event instanceof Date) return event;\n if (typeof event === 'string') {\n const match = event.match(/^(\\d{4})-(\\d{2})-(\\d{2})/);\n if (match) {\n return new Date(+match[1], +match[2] - 1, +match[3]);\n }\n const parsed = new Date(event);\n return isNaN(parsed.getTime()) ? undefined : parsed;\n }\n return undefined;\n}\n\n/** Parsea evento de time-picker a string \"HH:mm:ss\". */\nexport function parseHoraEvent(event: any): string | undefined {\n if (!event) return undefined;\n if (event instanceof Date) return toTimeOnlyString(event);\n if (typeof event === 'string') {\n const trimmed = event.trim();\n if (/^\\d{2}:\\d{2}(:\\d{2})?$/.test(trimmed)) {\n return trimmed.length === 5 ? `${trimmed}:00` : trimmed;\n }\n const parsed = new Date(event);\n return isNaN(parsed.getTime()) ? undefined : toTimeOnlyString(parsed);\n }\n return undefined;\n}\n\n/** Date -> \"yyyy-MM-dd\" en hora local (formato DateOnly C#). */\nexport function toDateOnlyString(d: Date): string {\n const y = d.getFullYear();\n const m = (d.getMonth() + 1).toString().padStart(2, '0');\n const dd = d.getDate().toString().padStart(2, '0');\n return `${y}-${m}-${dd}`;\n}\n\n/** Date -> \"HH:mm:ss\" en hora local (formato TimeOnly C#). */\nexport function toTimeOnlyString(d: Date): string {\n const h = d.getHours().toString().padStart(2, '0');\n const min = d.getMinutes().toString().padStart(2, '0');\n const s = d.getSeconds().toString().padStart(2, '0');\n return `${h}:${min}:${s}`;\n}\n","/**\n * Infiere el MIME type a partir de la extensión del nombre de archivo.\n *\n * Útil cuando el backend devuelve el nombre del archivo pero no su MIME type, y la UI\n * necesita uno para decidir ícono/visor (ej. distinguir PDF de Word/Excel/imagen).\n * Para archivos NUEVOS subidos por el usuario, usar `File.type` (ya viene del navegador).\n */\nexport function inferMimeTypeFromName(fileName?: string): string {\n if (!fileName) return '';\n const ext = fileName.split('.').pop()?.toLowerCase();\n switch (ext) {\n case 'pdf': return 'application/pdf';\n case 'jpg':\n case 'jpeg': return 'image/jpeg';\n case 'png': return 'image/png';\n case 'docx': return 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n case 'xlsx': return 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n default: return '';\n }\n}\n","/**\n * Constantes y conversión de tamaño de archivo. Centraliza los números mágicos\n * (1024) y ofrece una conversión a MB para mostrar totales agregados en UI.\n */\nexport const KB_IN_BYTES = 1024;\nexport const MB_IN_BYTES = 1024 * 1024;\n\n/** Bytes -> MB (1 decimal). Para mostrar totales agregados (ej. \"X MB de 25 MB\"). */\nexport function bytesToMB(bytes: number): number {\n return Math.round((bytes / MB_IN_BYTES) * 10) / 10;\n}\n","/*\n * Entry-point secundario: @litigiovirtual/ius-design-components/utils\n *\n * Utilidades compartidas (sin UI) para todas las apps del ecosistema:\n * moneda, fechas/horas y archivos. Evita duplicar este código en cada app.\n *\n * Uso:\n * import { CurrencyFormatPipe, parseLocalDate } from '@litigiovirtual/ius-design-components/utils';\n */\nexport * from './currency-format.pipe';\nexport * from './formato-hora.pipe';\nexport * from './date-format.util';\nexport * from './file-mime.util';\nexport * from './file-size.util';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;;;;;AAKG;AACG,SAAU,kBAAkB,CAAC,OAAe,EAAA;AAKhD,IAAA,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;IACnE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;IACxC,MAAM,OAAO,GAAG,UAAU,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,GAAG,QAAQ;IAC1E,MAAM,OAAO,GAAG,UAAU,IAAI,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,IAAI;AACvE,IAAA,MAAM,MAAM,GAAG,OAAO,KAAK,IAAI,GAAG,CAAA,EAAG,OAAO,IAAI,OAAO,CAAA,CAAE,GAAG,OAAO;AACnE,IAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE;AACrC;AAEA;;;AAGG;AACG,SAAU,oBAAoB,CAAC,OAAe,EAAE,OAAsB,EAAA;AAC1E,IAAA,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,IAAI;AAAE,QAAA,OAAO,EAAE;AAC3C,IAAA,MAAM,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC;AAClD,IAAA,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM;AAC/B,UAAE;UACA,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE,qBAAqB,EAAE,CAAC,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;AACzG,IAAA,OAAO,OAAO,KAAK,IAAI,GAAG,CAAA,EAAG,YAAY,CAAA,CAAA,EAAI,OAAO,CAAA,CAAE,GAAG,YAAY;AACvE;AAEA;;;;AAIG;AACG,SAAU,oBAAoB,CAAC,QAAgB,EAAA;AACnD,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,EAAE;AACxB,IAAA,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC;AAChC,IAAA,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;AAAE,QAAA,OAAO,QAAQ;AAC3C,IAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;AACpC,QAAA,qBAAqB,EAAE,CAAC;AACxB,QAAA,qBAAqB,EAAE,CAAC;AACzB,KAAA,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;AAChB;AAEA;AACA;AACA;AACA;AACA;AACA;MAKa,kBAAkB,CAAA;AAC7B,IAAA,SAAS,CACP,KAAyC,EACzC,UAAU,GAAG,KAAK,EAClB,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,OAAO,EAAA;QAEhB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAAE,YAAA,OAAO,EAAE;QAEpE,MAAM,GAAG,GAAG,OAAO,KAAK,KAAK,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,KAAK;QAEnF,IAAI,KAAK,CAAC,GAAG,CAAC;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC;AAEpC,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;gBACnC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,SAAS;gBAC1C,QAAQ,EAAE,UAAU,GAAG,YAAY,GAAG,SAAS;AAC/C,gBAAA,qBAAqB,EAAE,CAAC;AACxB,gBAAA,qBAAqB,EAAE,CAAC;AACzB,aAAA,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QAChB;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,GAAG,CAAC,QAAQ,EAAE;QACvB;IACF;+GAvBW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,gBAAgB;AACtB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACvED;;;;;AAKG;MAKU,eAAe,CAAA;AAC1B,IAAA,SAAS,CAAC,KAA4B,EAAA;AACpC,QAAA,IAAI,CAAC,KAAK;AAAE,YAAA,OAAO,EAAE;AAErB,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC;QAC/D;AAEA,QAAA,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;QAEzB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC;QACvD,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE;AAC5B,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QACjE;AAEA,QAAA,OAAO,EAAE;IACX;IAEQ,WAAW,CAAC,KAAa,EAAE,OAAe,EAAA;AAChD,QAAA,MAAM,MAAM,GAAG,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;AACxC,QAAA,MAAM,MAAM,GAAG,KAAK,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,EAAE;QACjD,IAAI,OAAO,KAAK,CAAC;AAAE,YAAA,OAAO,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,MAAM,EAAE;AAC/C,QAAA,OAAO,GAAG,MAAM,CAAA,CAAA,EAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,EAAE;IACrE;+GA5BW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,aAAA,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,aAAa;AACnB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA;;;ACXD;;;;;;AAMG;AAEH;;;AAGG;AACG,SAAU,cAAc,CAAC,KAAU,EAAA;IACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;AAAE,QAAA,OAAO,SAAS;IAC3E,IAAI,KAAK,YAAY,IAAI;AAAE,QAAA,OAAO,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK;AAC5E,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,+DAA+D,CAAC;QACtF,IAAI,CAAC,EAAE;YACL,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QACpF;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM;IACrD;AACA,IAAA,OAAO,SAAS;AAClB;AAEA;AACM,SAAU,cAAc,CAAC,KAAU,EAAA;AACvC,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,SAAS;IAC5B,IAAI,KAAK,YAAY,IAAI;AAAE,QAAA,OAAO,KAAK;AACvC,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC;QACrD,IAAI,KAAK,EAAE;YACT,OAAO,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACtD;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,MAAM;IACrD;AACA,IAAA,OAAO,SAAS;AAClB;AAEA;AACM,SAAU,cAAc,CAAC,KAAU,EAAA;AACvC,IAAA,IAAI,CAAC,KAAK;AAAE,QAAA,OAAO,SAAS;IAC5B,IAAI,KAAK,YAAY,IAAI;AAAE,QAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC;AACzD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE;AAC5B,QAAA,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;AAC1C,YAAA,OAAO,OAAO,CAAC,MAAM,KAAK,CAAC,GAAG,CAAA,EAAG,OAAO,CAAA,GAAA,CAAK,GAAG,OAAO;QACzD;AACA,QAAA,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAC9B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC;IACvE;AACA,IAAA,OAAO,SAAS;AAClB;AAEA;AACM,SAAU,gBAAgB,CAAC,CAAO,EAAA;AACtC,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;IACzB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACxD,IAAA,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAClD,IAAA,OAAO,GAAG,CAAC,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA,EAAI,EAAE,EAAE;AAC1B;AAEA;AACM,SAAU,gBAAgB,CAAC,CAAO,EAAA;AACtC,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AAClD,IAAA,MAAM,GAAG,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACtD,IAAA,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;AACpD,IAAA,OAAO,GAAG,CAAC,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA,EAAI,CAAC,EAAE;AAC3B;;ACtEA;;;;;;AAMG;AACG,SAAU,qBAAqB,CAAC,QAAiB,EAAA;AACrD,IAAA,IAAI,CAAC,QAAQ;AAAE,QAAA,OAAO,EAAE;AACxB,IAAA,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE;IACpD,QAAQ,GAAG;AACT,QAAA,KAAK,KAAK,EAAE,OAAO,iBAAiB;AACpC,QAAA,KAAK,KAAK;AACV,QAAA,KAAK,MAAM,EAAE,OAAO,YAAY;AAChC,QAAA,KAAK,KAAK,EAAE,OAAO,WAAW;AAC9B,QAAA,KAAK,MAAM,EAAE,OAAO,yEAAyE;AAC7F,QAAA,KAAK,MAAM,EAAE,OAAO,mEAAmE;AACvF,QAAA,SAAS,OAAO,EAAE;;AAEtB;;ACnBA;;;AAGG;AACI,MAAM,WAAW,GAAG;AACpB,MAAM,WAAW,GAAG,IAAI,GAAG;AAElC;AACM,SAAU,SAAS,CAAC,KAAa,EAAA;AACrC,IAAA,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,WAAW,IAAI,EAAE,CAAC,GAAG,EAAE;AACpD;;ACVA;;;;;;;;AAQG;;ACRH;;AAEG;;;;"}
|