@jvsoft/utils 0.0.2 → 0.0.4
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/fesm2022/jvsoft-utils-src-functions.mjs +1039 -0
- package/fesm2022/jvsoft-utils-src-functions.mjs.map +1 -0
- package/fesm2022/jvsoft-utils-src-interfaces.mjs +14 -0
- package/fesm2022/jvsoft-utils-src-interfaces.mjs.map +1 -0
- package/fesm2022/jvsoft-utils-src-pipes.mjs +266 -0
- package/fesm2022/jvsoft-utils-src-pipes.mjs.map +1 -0
- package/fesm2022/jvsoft-utils.mjs +23 -268
- package/fesm2022/jvsoft-utils.mjs.map +1 -1
- package/functions/file.d.ts +1 -0
- package/functions/index.d.ts +1 -15
- package/functions/mat-form-controls/index.d.ts +1 -0
- package/functions/number.d.ts +1 -0
- package/functions/public-api.d.ts +15 -0
- package/interfaces/index.d.ts +1 -2
- package/interfaces/public-api.d.ts +2 -0
- package/package.json +16 -3
- package/pipes/index.d.ts +1 -7
- package/pipes/public-api.d.ts +7 -0
- package/src/functions/base64.d.ts +2 -0
- package/src/functions/browser.d.ts +1 -0
- package/src/functions/crypto-js.d.ts +2 -0
- package/src/functions/date.d.ts +3 -0
- package/src/functions/file.d.ts +10 -0
- package/src/functions/forms.d.ts +10 -0
- package/src/functions/http-client.d.ts +2 -0
- package/src/functions/index.d.ts +5 -0
- package/src/functions/local-storage.d.ts +29 -0
- package/src/functions/mat-form-controls/autocomplete.d.ts +21 -0
- package/src/functions/mat-form-controls/index.d.ts +2 -0
- package/src/functions/number.d.ts +1 -0
- package/src/functions/object-transformation.d.ts +2 -0
- package/src/functions/objects-arrays.d.ts +26 -0
- package/src/functions/public-api.d.ts +15 -0
- package/src/functions/string.d.ts +1 -0
- package/src/functions/sweetalert.d.ts +5 -0
- package/src/functions/utiles.d.ts +1 -0
- package/src/interfaces/datos.d.ts +4 -0
- package/src/interfaces/index.d.ts +5 -0
- package/src/interfaces/otros.d.ts +2 -0
- package/src/interfaces/public-api.d.ts +2 -0
- package/src/pipes/data-en-lista.pipe.d.ts +8 -0
- package/src/pipes/date-diff-string.pipe.d.ts +17 -0
- package/src/pipes/filtro.pipe.d.ts +18 -0
- package/src/pipes/form-control-is-required.pipe.d.ts +9 -0
- package/src/pipes/index.d.ts +5 -0
- package/src/pipes/json-parse.pipe.d.ts +7 -0
- package/src/pipes/no-sanitize.pipe.d.ts +10 -0
- package/src/pipes/public-api.d.ts +7 -0
- package/src/pipes/zero-fill.pipe.d.ts +8 -0
- package/functions/formatear-pdfmake.d.ts +0 -39
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jvsoft-utils.mjs","sources":["../../../projects/utils/src/functions/objects-arrays.ts","../../../projects/utils/src/functions/mat-form-controls/autocomplete.ts","../../../projects/utils/src/functions/base64.ts","../../../projects/utils/src/functions/browser.ts","../../../projects/utils/src/functions/crypto-js.ts","../../../projects/utils/src/functions/date.ts","../../../projects/utils/src/functions/file.ts","../../../projects/utils/src/functions/forms.ts","../../../projects/utils/src/functions/sweetalert.ts","../../../projects/utils/src/functions/http-client.ts","../../../projects/utils/src/functions/local-storage.ts","../../../projects/utils/src/functions/object-transformation.ts","../../../projects/utils/src/functions/string.ts","../../../projects/utils/src/functions/utiles.ts","../../../projects/utils/src/interfaces/otros.ts","../../../projects/utils/src/functions/formatear-pdfmake.ts","../../../projects/utils/src/classes/data-model.ts","../../../projects/utils/src/pipes/data-en-lista.pipe.ts","../../../projects/utils/src/pipes/date-diff-string.pipe.ts","../../../projects/utils/src/pipes/filtro.pipe.ts","../../../projects/utils/src/pipes/form-control-is-required.pipe.ts","../../../projects/utils/src/pipes/json-parse.pipe.ts","../../../projects/utils/src/pipes/no-sanitize.pipe.ts","../../../projects/utils/src/pipes/zero-fill.pipe.ts","../../../projects/utils/src/public-api.ts","../../../projects/utils/src/jvsoft-utils.ts"],"sourcesContent":["export function deepMerge(source: any, target: any): any {\n // Crea un clon profundo sin usar JSON.parse(JSON.stringify)\n let cloneSource = deepClone(source);\n\n if (typeof target !== 'object' || target === null) {\n return target;\n }\n\n if (typeof cloneSource !== 'object' || cloneSource === null) {\n cloneSource = Array.isArray(target) ? [] : {};\n }\n\n for (const key of Object.keys(target)) {\n const targetValue = target[key];\n const sourceValue = cloneSource[key];\n\n if (typeof targetValue === 'object' && targetValue !== null && !Array.isArray(targetValue)) {\n cloneSource[key] = deepMerge(sourceValue, targetValue);\n } else {\n cloneSource[key] = targetValue;\n }\n }\n return cloneSource; // Retorna el clon y no modifica el original\n}\n\n// Función de clonación profunda que maneja funciones, fechas y otros tipos especiales\nexport function deepClone(obj: any): any {\n if (obj === null || typeof obj !== 'object') {\n return obj; // Devuelve el valor si no es un objeto\n }\n\n // Manejar instancias de Date\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n\n // Manejar funciones devolviendo una copia directa\n if (typeof obj === 'function') {\n return obj.bind({}); // Devuelve una copia de la función enlazada a un contexto vacío\n }\n\n // Crear un nuevo objeto o array\n const clonedObj: Record<string, any> = Array.isArray(obj) ? [] : {};\n\n // Clonar recursivamente las propiedades del objeto\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clonedObj[key] = deepClone(obj[key]);\n }\n }\n\n return clonedObj;\n}\n\n/**\n * Busca un elemento en un array o jerarquía de objetos según un campo y valor especificado.\n *\n * @returns El elemento encontrado o undefined si no existe.\n */\nexport function buscarPorCampo<T>(datosFn: {\n items: T[];\n campo: keyof T;\n valor: any;\n campoHijo?: string; // Campo opcional para búsqueda recursiva\n}): T | undefined {\n for (const item of datosFn.items) {\n // Verifica si el campo coincide con el valor\n if (item[datosFn.campo] === datosFn.valor) {\n return item;\n }\n\n // Verifica si hay un campo hijo y si es un array\n if (datosFn.campoHijo && item[datosFn.campoHijo as keyof T] && Array.isArray(item[datosFn.campoHijo as keyof T])) {\n // Realiza la búsqueda recursiva en el campo hijo\n const encontrado = buscarPorCampo({\n items: item[datosFn.campoHijo as keyof T] as T[], // Asegura el tipo correcto\n campo: datosFn.campo,\n valor: datosFn.valor,\n campoHijo: datosFn.campoHijo,\n });\n\n // Si se encuentra el valor en el campo hijo, retorna el resultado\n if (encontrado) {\n return encontrado;\n }\n }\n }\n\n // Si no se encuentra nada, retorna undefined\n return undefined;\n}\n\nexport function sumarPropiedades(item: Record<string, any>, campos: string[]) {\n const datosSumar = campos.map(campo => (item[campo] * 1));\n return datosSumar.reduce((a, b) => a + b, 0);\n}\n\nexport function esNumero(value: any) {\n return !isNaN(Number(value));\n}\n\nexport function sumarObjetos(arrayObjetos: any[], campos: string[]) {\n return arrayObjetos.reduce((accumulator, item) => {\n campos.forEach(campo => {\n if (esNumero(item[campo])) {\n accumulator[campo] = (accumulator[campo] ?? 0) + ((<number>item[campo]) ?? 0);\n }\n });\n return accumulator;\n }, {});\n}\n\nexport function getUniqueValues(array: any[]) {\n return array.filter((currentValue, index, arr) => (\n arr.indexOf(currentValue) === index\n ));\n}\n\nexport function getUniqueValuesByProperty<T>(objetos: T[], campo: string): T[] {\n const objetosUnicos: {[key: string]: T} = {};\n\n objetos.forEach(objeto => {\n // Verificar si el objeto tiene el campo especificado\n // @ts-ignore\n if (objeto.hasOwnProperty(campo)) {\n // @ts-ignore\n const valorCampo = objeto[campo];\n\n // Utilizar el valor del campo como clave en un objeto para asegurar que no haya duplicados\n objetosUnicos[valorCampo] = objeto;\n }\n });\n\n // Convertir el objeto de claves únicas de vuelta a una lista de objetos\n return Object.values(objetosUnicos);\n}\n\n\nexport function ordenarArray(array: any[], numeros = false, sentido: 'ASC' | 'DESC' = 'ASC'): any[] {\n if (numeros) {\n if (sentido != 'ASC') {\n return array.sort((a: any, b: any) => b - a);\n }\n return array.sort((a: any, b: any) => a - b);\n }\n return array.sort((a, b) => (a > b) ? 1:((b > a) ? -1:0));\n\n}\n\nexport function ordenarPorPropiedad(objData: any, propiedad: string, /**@deprecated*/ numeros = false) {\n return ordenarPorPropiedades(objData, {propiedades: [propiedad], direcciones:['asc']});\n}\n\nexport function ordenarPorPropiedades<T>(arr: T[], options: {\n propiedades: (keyof T)[],\n direcciones?: ('asc' | 'desc' | '')[],\n}): T[] {\n const {propiedades, direcciones = []} = options;\n const orden = direcciones.map(d => d === 'desc' ? -1:1);\n\n return [...arr].sort((a, b) => {\n return propiedades.reduce((acc, propiedad, index) => {\n if (acc !== 0) return acc; // Si ya hay diferencia, no seguir comparando\n\n const aValue = a[propiedad];\n const bValue = b[propiedad];\n\n if (typeof aValue === 'string' && typeof bValue === 'string') {\n return aValue.localeCompare(bValue) * orden[index]; // 🔹 Comparación alfabética\n }\n if (typeof aValue === 'number' && typeof bValue === 'number') {\n return (aValue - bValue) * orden[index]; // 🔹 Comparación numérica\n }\n\n return 0; // En caso de valores no comparables\n }, 0);\n });\n}\n","import {esNumero} from '../objects-arrays';\nimport {AbstractControl} from '@angular/forms';\nimport {untilDestroyed} from '@ngneat/until-destroy';\nimport {debounceTime, finalize, isObservable, of, startWith, switchMap, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nexport function mostrarValorEnBusqueda(campos: any, idxSel: any) {\n const impDataMostrar = () => {\n let vD;\n if (campos.campoId == '*object*' || campos.campoId == '*objeto*') {\n console.log(campos);\n vD = campos.lista.find((x: any) => JSON.stringify(x).trim() == JSON.stringify(idxSel).trim());\n console.log(vD);\n }\n else {\n vD = campos.lista.find((x: any) => x[campos.campoId] == idxSel);\n }\n if (!vD && campos.opcExtra) {\n console.log('eval ', campos.opcExtra);\n if (campos.campoId == '*object*' || campos.campoId == '*objeto*') {\n console.log(campos);\n vD = campos.opcExtra.find((x: any) => JSON.stringify(x).trim() == JSON.stringify(idxSel).trim());\n console.log(vD);\n }\n else {\n vD = campos.opcExtra.find((x: any) => x[campos.campoId] == idxSel);\n }\n }\n if (vD) {\n let txtFinal = '';\n if (Array.isArray(campos.campoValue)) {\n campos.campoValue.forEach((vCampo: any, idx: any) => {\n txtFinal += (vD[vCampo] ?? '');\n if (idx < campos.campoValue.length - 1) {\n txtFinal += ' - ';\n }\n });\n }\n else {\n txtFinal = vD[campos.campoValue] ?? '';\n }\n return txtFinal.trim();\n }\n else {\n console.log('ASSSSS ----- SSSS ');\n }\n return '';\n };\n if (esNumero(idxSel)) {\n if (idxSel > 0 && campos.lista?.length > 0) {\n return impDataMostrar();\n }\n else if (idxSel && typeof idxSel == 'object') {\n return impDataMostrar();\n }\n }\n else {\n if (campos.lista?.length > 0) {\n return impDataMostrar();\n }\n }\n return '';\n}\n\n\nexport function changeSelectData(objThis: any, dataFiltro: {\n formControl: AbstractControl,\n data: any[],\n campoBuscar: string | string[],\n variableResultado: string,\n}) {\n objThis['filtrados'][dataFiltro.variableResultado] = dataFiltro.formControl.valueChanges.pipe(untilDestroyed(objThis)).pipe(\n startWith(''),\n map(value => {\n\n const varN = dataFiltro.data;\n if (varN) {\n if (value) {\n return varN.map(x => x).filter(dat => {\n if (Array.isArray(dataFiltro.campoBuscar)) {\n let encontrado = false;\n\n for (const vCampo of dataFiltro.campoBuscar) {\n // console.log(vCampo, value, dat[vCampo]);\n if (isNaN(Number(value))) {\n // NO ES NUMERO\n if (value && dat[vCampo] && dat[vCampo].toLowerCase().includes(value?.toString().toLowerCase())) {\n encontrado = true;\n break;\n }\n }\n else {\n if (value && dat[vCampo] && dat[vCampo].toString().includes(value?.toString())) {\n encontrado = true;\n break;\n }\n }\n }\n return encontrado;\n }\n else {\n if (isNaN(Number(value))) {\n return dat[dataFiltro.campoBuscar].toLowerCase().includes(value?.toString().toLowerCase());\n }\n else {\n return dat[dataFiltro.campoBuscar].toString().includes(value?.toString());\n }\n }\n });\n }\n return varN;\n }\n return false;\n })\n );\n}\n\nexport function changeSelect(control: any, formControl: AbstractControl, tipo: any, campoBuscar: any, campoFiltro = null) {\n // console.log(formControl);\n // const formGroup = formControl.parent.controls;\n // console.warn( Object.keys(formGroup).find(name => formControl === formGroup[name]) || null );\n if (!campoFiltro) {\n campoFiltro = tipo;\n }\n control['filtrados'][campoFiltro ?? '__'] = formControl.valueChanges.pipe(untilDestroyed(control)).pipe(\n startWith(''),\n map(value => {\n // console.warn(value);\n\n const partes = tipo.split('.');\n let varN;\n if (control['dataServidor']) {\n varN = (partes.length > 1) ? control['dataServidor'][partes[0]][partes[1]]:control['dataServidor'][tipo];\n }\n else if (control['dataServidorSuscripcion']) {\n varN = control['dataServidorSuscripcion'][tipo].getValue();\n }\n if (varN) {\n if (value) {\n return varN.map((x: any) => x).filter((dat: any) => {\n if (Array.isArray(campoBuscar)) {\n let encontrado = false;\n\n for (const vCampo of campoBuscar) {\n // console.log(vCampo, value, dat[vCampo]);\n if (isNaN(Number(value))) {\n // NO ES NUMERO\n if (value && dat[vCampo] && dat[vCampo].toLowerCase().includes(value?.toString().toLowerCase())) {\n encontrado = true;\n break;\n }\n }\n else {\n if (value && dat[vCampo] && dat[vCampo].toString().includes(value?.toString())) {\n encontrado = true;\n break;\n }\n }\n }\n return encontrado;\n }\n else {\n if (isNaN(Number(value))) {\n return dat[campoBuscar].toLowerCase().includes(value?.toString().toLowerCase());\n }\n else {\n return dat[campoBuscar].toString().includes(value?.toString());\n }\n }\n });\n }\n return varN;\n }\n return false;\n })\n );\n}\n\nexport function changeSelectDataApi(objThis: any, dataFiltro: {\n tipoReq: string,\n campoId?: string,\n minLength?: number,\n dataExtra?: any,\n dataExtraVariable?: any,\n anonimo?: boolean,\n queryService: any,\n\n formControl: AbstractControl,\n variableResultado?: string,\n}) {\n if (!dataFiltro.variableResultado) {\n dataFiltro.variableResultado = dataFiltro.tipoReq;\n }\n const idFiltrado: string = dataFiltro.variableResultado;\n dataFiltro.formControl.valueChanges.pipe(\n debounceTime(500),\n tap(() => {\n objThis.filtrados[dataFiltro.variableResultado + 'tmp'] = isObservable(objThis.filtrados[idFiltrado]) ? []:objThis.filtrados[idFiltrado] || [];\n if (objThis.filtrados[idFiltrado] !== objThis.filtrados[idFiltrado + 'tmp']) {\n objThis.filtrados[idFiltrado] = [];\n }\n objThis.isLoading = true;\n }),\n switchMap(value => {\n if (dataFiltro.campoId) {\n const busquedaActual2 = objThis.filtrados[idFiltrado + 'tmp'].findIndex((item: any) => item[dataFiltro.campoId ?? '--'] === value);\n if (busquedaActual2 >= 0) {\n return of({[dataFiltro.tipoReq]: objThis.filtrados[idFiltrado + 'tmp']});\n }\n }\n return !value || value.length < (dataFiltro.minLength ?? 3) ? []:(\n dataFiltro.queryService.getDataMethod('GET', dataFiltro.tipoReq, {\n ...(dataFiltro.dataExtra ?? {}),\n ...(dataFiltro.dataExtraVariable ? Object.fromEntries(dataFiltro.dataExtraVariable.map((objData: any) => [objData.campo, objData.ctrlValue.value])):{}),\n txtBuscar: value,\n }, dataFiltro.anonimo).pipe(\n finalize(() => objThis.isLoading = false),\n )\n );\n })\n ).subscribe((data: any) => {\n objThis.filtrados[idFiltrado] = data[dataFiltro.tipoReq] ?? [];\n });\n}\n\nexport function changeSelectApi(control: any, queryService: any, formControl: AbstractControl, tipo: any, dataExtra = {}, dataExtraVariable = null, minLength = 1, anonimo = false) {\n formControl.valueChanges.pipe(\n debounceTime(500),\n tap((value) => {\n control['filtrados'][tipo + 'tmp'] = isObservable(control['filtrados'][tipo]) ? []:control['filtrados'][tipo];\n if (control['filtrados'][tipo] != control['filtrados'][tipo + 'tmp']) {\n control['filtrados'][tipo] = [];\n }\n control['isLoading'] = true;\n }),\n\n switchMap(value => {\n const formGroup = <any>formControl.parent?.controls;\n const nombreControl = Object.keys(formGroup).find(name => formControl === formGroup[name]) || null;\n if (nombreControl && control['filtrados'][tipo + 'tmp'] && control['filtrados'][tipo + 'tmp'].length > 0) {\n const busquedaActual = control['filtrados'][tipo + 'tmp'].findIndex((item: any) => item[nombreControl] == value);\n if (busquedaActual >= 0) {\n const vRet: any = {};\n vRet[tipo] = control['filtrados'][tipo + 'tmp'];\n control['isLoading'] = false;\n return of(vRet);\n }\n }\n if (!value || value.length < minLength) {\n return [];\n }\n\n const dataExtraVariableData: any = {};\n if (dataExtraVariable) {\n // @ts-ignore\n for (const objData of dataExtraVariable) {\n dataExtraVariableData[objData.campo] = objData.ctrlValue.value;\n }\n }\n return queryService.getDataMethod('GET', tipo, {...dataExtra, ...dataExtraVariableData, ...{txtBuscar: value}}, anonimo).pipe(\n finalize(() => {\n control['isLoading'] = false;\n }),\n );\n\n })\n ).subscribe((data: any) => {\n if (data[tipo] == undefined) {\n control['filtrados'][tipo] = [];\n }\n else {\n control['filtrados'][tipo] = data[tipo];\n }\n });\n}\n","import {Buffer} from 'buffer';\n\nexport function b64Encode(val: string) {\n return Buffer.from(val, 'binary').toString('base64');\n}\nexport function b64Decode(val: string) {\n return Buffer.from(val, 'base64').toString('binary');\n}\n","\nexport function getBrowserName() {\n const agent = window.navigator.userAgent.toLowerCase();\n switch (true) {\n case agent.indexOf('edge') > -1:\n return 'edge';\n case agent.indexOf('opr') > -1 && !!(<any>window).opr:\n return 'opera';\n case agent.indexOf('chrome') > -1 && !!(<any>window).chrome:\n return 'chrome';\n case agent.indexOf('trident') > -1:\n return 'ie';\n case agent.indexOf('firefox') > -1:\n return 'firefox';\n case agent.indexOf('safari') > -1:\n return 'safari';\n default:\n return 'other';\n }\n}\n","// import * as CryptoJS from 'crypto-js';\nimport CryptoJS from 'crypto-js';\n// var CryptoJS = require(\"crypto-js\");\n\n\n// Clave secreta (debe ser de 16, 24 o 32 caracteres)\n\nconst secretKey = CryptoJS.enc.Utf8.parse('JVSoftSecret@20615178350');\nconst iv = CryptoJS.enc.Utf8.parse('AnSalHuaJVSoft07'); // Debe ser de 16 bytes\n\n// Función para encriptar texto\nexport function encriptar(text: string): string {\n const encrypted = CryptoJS.AES.encrypt(text, secretKey, {\n iv: iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n });\n return encrypted.toString(); // Texto cifrado en Base64\n}\n\n// Función para desencriptar texto\nexport function desencriptar(ciphertext: string): string {\n const decrypted = CryptoJS.AES.decrypt(ciphertext, secretKey, {\n iv: iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n });\n return decrypted.toString(CryptoJS.enc.Utf8);\n}\n","import {formatDate} from '@angular/common';\n\nexport function formatearFechaFormato(val: string, format: string = 'dd/MM/yyyy') {\n return val ? formatDate(val, format, 'es-PE'):'';\n}\n\nexport function formatearFecha(val: string, hora = '00:00:00') {\n if (val) {\n if (val.length <= 10) {\n val = val + ' ' + hora;\n }\n return new Date(val);\n }\n return val;\n}\n\nexport function formatearFechaCadena(fecha: string): Date {\n const year = parseInt(fecha.substring(0, 4), 10);\n const month = parseInt(fecha.substring(4, 6), 10) - 1;\n const day = parseInt(fecha.substring(6, 8), 10);\n\n return new Date(year, month, day);\n}\n","const mimeTypes: { [key: string]: string } = {\n // Imágenes\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'png': 'image/png',\n 'gif': 'image/gif',\n 'webp': 'image/webp',\n 'svg': 'image/svg+xml',\n 'ico': 'image/x-icon',\n 'bmp': 'image/bmp',\n\n // Documentos\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'txt': 'text/plain',\n 'csv': 'text/csv',\n 'json': 'application/json',\n 'xml': 'application/xml',\n 'html': 'text/html',\n\n // Audio\n 'mp3': 'audio/mpeg',\n 'wav': 'audio/wav',\n 'ogg': 'audio/ogg',\n 'm4a': 'audio/mp4',\n\n // Video\n 'mp4': 'video/mp4',\n 'avi': 'video/x-msvideo',\n 'mov': 'video/quicktime',\n 'wmv': 'video/x-ms-wmv',\n 'flv': 'video/x-flv',\n 'webm': 'video/webm',\n 'mkv': 'video/x-matroska',\n\n // Archivos comprimidos\n 'zip': 'application/zip',\n 'rar': 'application/vnd.rar',\n '7z': 'application/x-7z-compressed',\n 'tar': 'application/x-tar',\n 'gz': 'application/gzip',\n 'bz2': 'application/x-bzip2',\n\n // Otros formatos\n 'js': 'application/javascript',\n 'css': 'text/css',\n 'ts': 'application/typescript',\n 'md': 'text/markdown',\n 'exe': 'application/octet-stream',\n 'eot': 'application/vnd.ms-fontobject',\n 'woff': 'font/woff',\n 'woff2': 'font/woff2',\n 'ttf': 'font/ttf',\n 'otf': 'font/otf',\n};\n\nexport function obtenerMimeType(nombreArchivo: string): string | null {\n const extension = nombreArchivo.split('.').pop()?.toLowerCase();\n return extension ? mimeTypes[extension] || 'application/octet-stream' : null;\n}\nexport function sanitizarNombreArchivo(nombre: string, reemplazo: string = '_'): string {\n // 1. Quitar caracteres no válidos para nombres de archivo\n const nombreSanitizado = nombre.replace(/[\\/\\\\:*?\"<>|]/g, reemplazo);\n\n // 2. Reemplazar espacios múltiples o al inicio/final\n const nombreLimpio = nombreSanitizado.trim().replace(/\\s+/g, reemplazo);\n\n // 3. Asegurar longitud máxima (opcional, aquí 255 caracteres)\n return nombreLimpio.substring(0, 255);\n}\n\nexport function getDataArchivoFromPath(value: string, conTimeStamp = false): {\n nombre: string, extension?: string, d?: any, fechaSubida: any\n} {\n const partesPath = value.split('/');\n const nombreCompleto = partesPath[partesPath.length - 1];\n let timeStamp = 1;\n let nombreSinTimeStamp = nombreCompleto;\n const partesNombre: any [] = nombreCompleto.split('-');\n if (partesNombre.length > 1) {\n timeStamp = partesNombre[0] * 1;\n partesNombre.shift();\n nombreSinTimeStamp = partesNombre.join('-');\n }\n if (conTimeStamp) {\n return {\n nombre: nombreCompleto,\n extension: nombreCompleto.split('.').pop(),\n d: timeStamp,\n fechaSubida: timeStamp ? new Date(timeStamp * 1000):'',\n };\n }\n return {\n nombre: nombreSinTimeStamp,\n extension: nombreSinTimeStamp.split('.').pop(),\n d: timeStamp,\n fechaSubida: timeStamp ? new Date(timeStamp * 1000):'',\n };\n}\n\nexport function convertirBytes(valor: number, unidadSalida: string | null = null, incluirUnidad: boolean = true): string | number | null {\n const unidades: string[] = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const indiceEntrada: number = unidadSalida ? unidades.indexOf(unidadSalida):0;\n\n if (indiceEntrada === -1) {\n // Unidad de entrada no válida\n return null;\n }\n\n let indiceActual: number = indiceEntrada;\n let resultado: number = valor;\n\n let cont = 0;\n\n while (cont < 6 && (indiceActual < unidades.length - 1) && (resultado >= 1024)) {\n resultado /= 1024;\n indiceActual++;\n }\n if (incluirUnidad) {\n return `${resultado.toFixed(2)} ${unidades[indiceActual]}`;\n }\n\n return resultado;\n}\n","import {AbstractControl, FormArray, FormControl, FormGroup, ValidationErrors, Validators} from '@angular/forms';\nimport {ReactiveFormConfig} from '@rxweb/reactive-form-validators';\n\nexport function establecerQuitarRequired(formulario: FormGroup, establecer: any[] = [], quitar: any[] = [], camposDisabled: string[] | 'todos' = []) {\n establecer.forEach((control: string) => {\n if (!formulario.get(control)?.hasValidator(Validators.required)) {\n formulario.get(control)?.addValidators([Validators.required]);\n formulario.get(control)?.enable();\n formulario.get(control)?.updateValueAndValidity();\n }\n });\n const deshabilitar = (strControl: string) => {\n if (camposDisabled == 'todos') {\n formulario.get(strControl)?.disable();\n console.log(strControl);\n }\n else {\n if (camposDisabled.includes(strControl)) {\n formulario.get(strControl)?.disable();\n }\n }\n }\n quitar.forEach(control => {\n if (formulario.get(control)?.hasValidator(Validators.required)) {\n formulario.get(control)?.removeValidators([Validators.required]);\n formulario.get(control)?.updateValueAndValidity();\n }\n deshabilitar(control);\n });\n}\n\nexport function getFormValidationErrors(form: FormGroup) {\n const result: { control: string; error: string; value: any; }[] = [];\n Object.keys(form.controls).forEach(key => {\n const formProperty = form.get(key);\n if (formProperty instanceof FormGroup) {\n result.push(...getFormValidationErrors(formProperty));\n }\n const controlErrors: ValidationErrors | null | undefined = formProperty?.errors;\n if (controlErrors) {\n Object.keys(controlErrors).forEach(keyError => {\n result.push({\n control: key,\n error: keyError,\n value: controlErrors[keyError]\n });\n });\n }\n });\n\n return result;\n}\n\nexport function mensajesErrorFormControl(control: AbstractControl | null): string {\n if (!control || !control.errors || !control.touched) return '';\n\n ReactiveFormConfig.set({\n // RxwebValidators\n validationMessage: {\n required: 'Es requerido',\n numeric: 'Debe ser numérico valido',\n // minLength: 'minimum length is {{1}}',\n // maxLength: 'allowed max length is {{1}}',\n },\n });\n\n const errorMessages: Record<string, string> = {\n required: 'Es requerido',\n numeric: 'Debe ser numérico válido',\n min: `Valor mínimo permitido: ${control.errors['min']?.min}`,\n minValue: 'Debe ser positivo',\n minlength: `Mínimo ${control.errors['minlength']?.requiredLength} caracteres.`,\n maxlength: `Caracteres ${control.errors['maxlength']?.actualLength}/${control.errors['maxlength']?.requiredLength}`,\n email: 'No se cumple con el formato de Correo Electrónico',\n isNumeric: 'Debe seleccionar una opción',\n hasNumber: 'Se requiere al menos un número',\n hasCapitalCase: 'Se requiere al menos una mayúscula',\n hasSmallCase: 'Se requiere al menos una minúscula',\n hasSpecialCharacters: 'Se requiere al menos un carácter especial',\n NoPassswordMatch: 'La contraseña no coincide',\n itemSelected: 'Debe seleccionar una opción de la lista',\n inputMask: 'El formato ingresado no es válido',\n };\n\n // Devuelve el primer mensaje de error encontrado\n for (const errorKey of Object.keys(control.errors)) {\n if (errorMessages[errorKey]) {\n return errorMessages[errorKey];\n }\n }\n\n // Si el error tiene un mensaje personalizado, usarlo\n return control.errors[Object.keys(control.errors)[0]]?.message || '';\n}\n\nexport function toFormData<T extends Record<string, any>>(formValue: T): FormData {\n const formData = new FormData();\n\n Object.keys(formValue).forEach((key) => {\n const value = formValue[key];\n\n if (value === null || value === undefined) {\n return; // Ignorar valores nulos o indefinidos\n }\n\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n if (typeof item === 'object' && item !== null) {\n if ('file' in item) {\n formData.append(`${key}[${index}]`, item.file);\n }\n else {\n formData.append(`${key}[${index}]`, JSON.stringify(item));\n }\n }\n else {\n formData.append(`${key}[${index}]`, item.toString());\n }\n });\n }\n else if (typeof value === 'object') {\n // Si es un objeto (pero no un array), convertirlo a JSON\n formData.append(key, JSON.stringify(value));\n }\n else {\n // Para valores primitivos (string, number, boolean)\n formData.append(key, value.toString());\n }\n });\n\n return formData;\n}\n\nexport function markAsTouchedWithoutEmitEvent(control: AbstractControl): void {\n if (control instanceof FormControl) {\n control.markAsTouched({onlySelf: true});\n control.updateValueAndValidity({emitEvent: false});\n }\n else if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(childControl => {\n markAsTouchedWithoutEmitEvent(childControl);\n });\n control.updateValueAndValidity({emitEvent: false});\n }\n}\n","import swal, {SweetAlertOptions, SweetAlertResult} from 'sweetalert2';\n\nexport function mensajeAlerta(tipo: 'success' | 'error' | 'info' | 'warning' | 'question', titulo: string, mensaje: string, opciones?: SweetAlertOptions) {\n opciones = {\n ...{\n heightAuto: false,\n title: titulo,\n html: mensaje,\n icon: tipo,\n confirmButtonText: 'Aceptar',\n // customClass: {\n // \tconfirmButton: 'btn btn-lg btn-outline-success mx-2',\n // \tcancelButton: 'btn btn-lg btn-outline-dark mx-2'\n // },\n // buttonsStyling: false\n },\n ...opciones\n };\n return swal.fire(opciones);\n}\n\nexport function mensajeTimer(tipo: 'success' | 'error' | 'info' | 'warning' | 'question', titulo: string, mensaje: string, milisegundos = 3000, showLoading = true, opciones?: SweetAlertOptions) {\n let timerInterval: any;\n opciones = {\n ...{\n heightAuto: false,\n title: titulo,\n html: mensaje + '<br> Se cerrará en <strong> X </strong> segundos.',\n icon: tipo,\n timer: milisegundos,\n showCancelButton: false,\n showConfirmButton: false,\n willOpen: () => {\n if (showLoading) {\n swal.showLoading();\n }\n timerInterval = setInterval(() => {\n const impr = Math.ceil(((swal.getTimerLeft() ?? 1)/ 1000));\n if (swal.getHtmlContainer()) {\n // @ts-ignore\n swal.getHtmlContainer().querySelector('strong').textContent = String(impr);\n }\n }, 100);\n },\n willClose: () => {\n clearInterval(timerInterval);\n }\n },\n ...opciones\n };\n return swal.fire(opciones);\n}\n\n// @ts-ignore\nexport function mensajeConfirmacion(tipo: 'success' | 'error' | 'info' | 'warning' | 'question', titulo, mensaje, opciones?: SweetAlertOptions): Promise<SweetAlertResult<Awaited<any>>> {\n opciones = {\n ...{\n heightAuto: false,\n title: titulo,\n html: mensaje,\n icon: tipo,\n showCancelButton: true,\n // confirmButtonColor: '#3f51b5',\n // cancelButtonColor: '#ffffff',\n confirmButtonText: 'Confirmar',\n cancelButtonText: 'Cancelar',\n reverseButtons: true,\n // customClass: {\n // \tconfirmButton: 'btn btn-lg btn-outline-success mx-2',\n // \tcancelButton: 'btn btn-lg btn-outline-dark mx-2'\n // },\n // buttonsStyling: false\n },\n ...opciones\n };\n return swal.fire(opciones);\n}\nexport function mensajeToast(tipo: 'success' | 'error' | 'info' | 'warning' | 'question', titulo: string, mensaje: string, opciones?: SweetAlertOptions) {\n opciones = {\n ...{\n heightAuto: false,\n title: titulo,\n html: mensaje,\n icon: tipo,\n confirmButtonText: 'Aceptar',\n toast: true,\n position: 'top-end',\n showConfirmButton: false,\n timer: 3000,\n timerProgressBar: true,\n },\n ...opciones\n };\n return swal.fire(opciones);\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {mensajeAlerta, mensajeToast} from './sweetalert';\n\nexport function mensajesDeError(error: HttpErrorResponse, toast = false) {\n let msg;\n\n if (error.error && error.error instanceof ArrayBuffer) {\n const msgArrayBuffer = (arrayBuffer: ArrayBuffer): string => {\n try {\n const mensajeError = JSON.parse(new TextDecoder(\"utf-8\").decode(arrayBuffer));\n return mensajeError.message || 'Error desconocido';\n } catch (parseError) {\n console.error('Error al analizar la respuesta JSON:', parseError);\n return 'Error al analizar la respuesta JSON';\n }\n }\n msg = msgArrayBuffer(error.error);\n }\n else {\n\n switch (error.status) {\n case 0:\n // msg = error.message;\n msg = 'El servidor no responde, verifica tu conexion a la red';\n console.log(error);\n break;\n case 401:\n if (error.error && typeof error.error == 'object') {\n if (error.error.message) {\n msg = error.error.message;\n }\n else if (error.error.error) {\n msg = error.error.error;\n }\n else {\n msg = JSON.stringify(error.error);\n console.log(error);\n }\n }\n else if (error.error && typeof error.error == 'string') {\n msg = error.error;\n }\n else {\n msg = 'Acceso no autorizado';\n console.log(error);\n }\n break;\n case 422:\n let strEr = '';\n\n console.log(typeof error.error.errors);\n console.log(error.error.errors);\n if (error.error.errors) {\n Object.keys(error.error.errors).forEach(o => {\n strEr += '<li>' + error.error.errors[o][0] + '</li>';\n });\n msg = (error.error.message ?? '') + '<ul>' + strEr + '</ul>';\n }\n else if (error.error.error) {\n msg = error.error.msg;\n }\n break;\n case 429:\n case 400:\n case 500:\n case 503:\n msg = error.error.message;\n break;\n case 504:\n msg = 'No se puede conectar al servidor. Comprueba tu conexion a la red - ' + error.statusText;\n break;\n default:\n msg = 'Error de Sistema';\n console.log(error);\n break;\n }\n }\n if (!msg) {\n msg = error.statusText ?? 'Error inesperado o datos inexistentes.';\n }\n\n let tituloFinal = 'Error!';\n let mensajeFinal;\n\n if (msg.includes('Hmac::doVerify')) {\n console.log(error, msg);\n return;\n }\n else if (msg == 'Server Error') {\n console.log(error, msg);\n return;\n }\n else if (msg.includes('[IMSSP]')) {\n mensajeFinal = 'Error en consulta de registros.';\n }\n else if (msg.includes('Tiempo de espera de la')) {\n mensajeFinal = 'Hubo un error en la solicitud de datos, por favor actualice (SHIFT + F5)';\n }\n else {\n mensajeFinal = msg;\n }\n if (toast) {\n mensajeToast('error', tituloFinal, mensajeFinal);\n }\n else {\n mensajeAlerta('error', tituloFinal, mensajeFinal);\n }\n\n throw new Error(mensajeFinal);\n}\n","import moment from 'moment';\nimport {jwtDecode} from 'jwt-decode';\n\nexport interface JwtTokenResponse {\n access_token: string;\n expires_in: number;\n token_type: string;\n user: any;\n}\n\nexport interface DataSessionStorage {\n tokenStringKey?: string;\n changePasswordKey?: string;\n logoUrl?: string;\n logoLogin?: string;\n backgroundLogin?: string;\n favicon?: string;\n darkMode?: string;\n serverTimestamp?: string;\n apiDataKey?: string;\n}\n\nlet dataSessionStorageKey: DataSessionStorage = {\n tokenStringKey: 'JVSoftTkn',\n changePasswordKey: 'chPwd',\n logoUrl: 'logo_url',\n logoLogin: 'login-logo',\n backgroundLogin: 'login-background',\n favicon: 'favicon',\n darkMode: 'darkMode',\n serverTimestamp: 'srvtmstp',\n apiDataKey: 'reqDt',\n};\nexport let localStorageKeys = dataSessionStorageKey;\n\nexport function inicializarVariablesSessionStorage(datSesion: DataSessionStorage) {\n dataSessionStorageKey = datSesion;\n}\n\nexport function setJwtTokenData(data: string) {\n localStorage.setItem(<string>dataSessionStorageKey.tokenStringKey, data)\n}\nexport function jwtTokenData(key: string = <string>dataSessionStorageKey.tokenStringKey): JwtTokenResponse | null {\n const tokenObj = localStorage.getItem(key);\n try {\n return JSON.parse(<string>tokenObj) as JwtTokenResponse;\n } catch (error) {\n return null;\n }\n}\n\nexport function jwtToken(key: string = <string>dataSessionStorageKey.tokenStringKey) {\n const varJwtTokenData = jwtTokenData(key);\n if (varJwtTokenData) {\n return varJwtTokenData.access_token;\n }\n return '';\n}\n\nexport function jwtTokenExpiracion(key: string = <string>dataSessionStorageKey.tokenStringKey) {\n const jwtStr = jwtToken(key);\n if (!jwtStr) return null;\n try {\n const decodedToken: any = jwtDecode(jwtStr);\n return decodedToken.exp ? decodedToken.exp * 1000:null; // Convertir a milisegundos\n } catch (e) {\n return null;\n }\n}\n\nexport function jwtTokenExpiracionFaltante() {\n return Math.abs(moment().diff(jwtTokenExpiracion(), 'seconds'));\n}\n\nexport function setCambiarPwd(accion: boolean = true) {\n localStorage.setItem(<string>dataSessionStorageKey.changePasswordKey, (accion ? 1:0).toString())\n}\n\nexport function getCambiarPwd() {\n const frmCambioPwd = localStorage.getItem(<string>dataSessionStorageKey.changePasswordKey);\n if (!frmCambioPwd) {\n return null;\n }\n return frmCambioPwd == '1';\n}\n\nexport function delLocalStorage(keyElim: string[] = [\n <string>dataSessionStorageKey.tokenStringKey,\n <string>dataSessionStorageKey.changePasswordKey,\n <string>dataSessionStorageKey.apiDataKey,\n]) {\n keyElim.forEach(key => {\n localStorage.removeItem(key);\n });\n}\n\nexport function getLocalStorage(key: string | undefined) {\n return localStorage.getItem(<string>key);\n}\nexport function setLocalStorage(key: string, value = '') {\n localStorage.setItem(key, value.toString())\n}\n","import {formatDate} from '@angular/common';\nimport {formatearFecha} from './date';\n\nexport function objectPropertiesToType(formFields: Record<string, any>) {\n Object.keys(formFields).filter(control => !!formFields[control]).forEach(control => {\n if (/^dt[a-zA-Z]+/.test(control)) {\n formFields[control] = formatDate(formFields[control], 'yyyy-MM-dd HH:mm', 'es-PE');\n }\n else if (control.startsWith('d')) {\n formFields[control] = formatearFecha(formFields[control]);\n }\n else if (control.startsWith('n')) {\n formFields[control] = Number(formFields[control]);\n }\n });\n\n return formFields;\n}\n\nexport function objectPropertiesBoolean(formFields: Record<string, any>, retorno: 'boolean' | 'bit' = 'boolean') {\n Object.keys(formFields).forEach(control => {\n const valRetorno = (ctrl: any) => {\n switch (retorno) {\n case 'boolean':\n formFields[ctrl] = formFields[ctrl] == 1;\n break;\n case 'bit':\n formFields[ctrl] = formFields[ctrl] ? 1:0;\n break;\n }\n };\n if (control.charAt(0) == 'b' || (control.charAt(0) == 'i' && control.indexOf('Estado') !== -1)) {\n valRetorno(control);\n }\n });\n return formFields;\n}\n","export function generateRandomString(length: number) {\n let result = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n","import {mensajeAlerta} from './sweetalert';\n\nexport function verificarRUC(ruc: string) {\n const f = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n const rucArray = ruc.split('');\n const nArray = f.map((item, idx) => {\n return item * parseFloat(rucArray[idx]);\n });\n const suma = nArray.reduce((a, b) => a + b, 0);\n const residuo = suma % 11;\n const residuo2 = 11 - residuo;\n // @residuo=CONVERT(Integer,Right(CONVERT(VarChar,@residuo),1))\n const residuo3 = residuo2.toString().charAt(residuo2.toString().length - 1);\n const ultimoCaracter = ruc.toString().charAt(ruc.toString().length - 1);\n if (residuo3 == ultimoCaracter) {\n return true;\n }\n mensajeAlerta('error', 'Datos No válidos', ' El número de RUC no es válido');\n return false;\n}\n","export type TipoValorFuncion<T> = T | ((...param: any) => T);\n\n// @ts-ignore\nexport function tipoValorFuncion<T>(datoParam, ...param): T {\n if (typeof datoParam === 'function') {\n return datoParam(...param);\n }\n return datoParam;\n}\n","import {formatDate, formatNumber} from '@angular/common';\nimport {sumarObjetos} from './objects-arrays';\nimport {tipoValorFuncion} from '../interfaces';\n\n\nexport type TiposCeldaPdfMake = 'number' | 'integer' | 'money' | 'date' | 'datetime' | 'time' | 'columnas' | null;\n\n// 'number' | 'texto' | 'cant' | 'money' | 'mon' | 'fec' | 'fec_hora' | 'hora'\n\nexport interface OpcAdicionalesCeldaPdfMake {\n format?: string;\n style?: 'thSmall' | 'tdSmall' | string;\n alignment?: 'left' | 'center' | 'right' | 'justify';\n fontSize?: number;\n bold?: boolean;\n rowSpan?: number;\n colSpan?: number;\n\n [key: string]: any;\n}\n\nexport function imprimirCelda(data: any, tipo: TiposCeldaPdfMake = null, opcAdicionales: OpcAdicionalesCeldaPdfMake = {}) {\n let texto = data;\n\n // if (typeof data)\n switch (tipo) {\n case 'money':\n case 'number':\n case 'integer':\n let formatoNumero = (tipo == 'money' ? '1.2-2':(tipo == 'number' ? '1.0-2':'1.0-0'));\n texto = data * 1;\n if (opcAdicionales?.format) {\n formatoNumero = opcAdicionales.format;\n }\n texto = formatNumber(texto, 'es-PE', formatoNumero);\n break;\n case 'date':\n case 'datetime':\n case 'time':\n let formatoFecha = (tipo == 'date' ? 'dd/MM/yyyy':(tipo == 'time' ? 'HH:mm:ss':'dd/MM/yyyy HH:mm'));\n if (!opcAdicionales?.alignment) {\n opcAdicionales.alignment = 'center';\n }\n if (opcAdicionales?.format) {\n formatoFecha = opcAdicionales.format;\n }\n texto = texto ? formatDate(data, formatoFecha, 'es-PE'):null;\n break;\n default:\n break;\n }\n opcAdicionales['text'] = texto ?? ' ';\n return opcAdicionales;\n}\n\nexport function generarDesdeMantenimiento(tabla: any) {\n const celdasHeaderDetalle = [];\n const tHead = [];\n const titUsar = columnasValidas(tabla.titulos);\n\n const camposTotales = titUsar.filter(titulo => titulo.reporte && titulo.reporte.totalizar).map(titulo => titulo.property);\n const sumaObj = sumarObjetos(tabla.contenido, camposTotales);\n\n if (tabla.numeracion) {\n tHead.push(\n imprimirCelda('Nº', null, {style: 'thSmall', ...tabla.opcionesPdfmake?.titulo})\n );\n }\n\n titUsar.forEach(dT => {\n if (tabla.titulosMayusculas) {\n dT.label = dT.label.toUpperCase();\n }\n const opcionesPdfMakeTitulo = {\n ...tabla.opcionesPdfmake?.titulo,\n ...dT.reporte?.opcionesPdfmake?.titulo\n };\n tHead.push(imprimirCelda(dT.label.replace('<br>', ' '), null, {style: 'thSmall', ...opcionesPdfMakeTitulo}));\n });\n\n if (!tabla.sinTitulos) {\n if (tabla.prependTitle) {\n tabla.prependTitle.forEach((filaAdic: any) => {\n celdasHeaderDetalle.push(filaAdic);\n });\n // celdasHeaderDetalle.concat(tabla.prependTitle);\n }\n celdasHeaderDetalle.push(tHead);\n if (tabla.appendTitle) {\n tabla.appendTitle.forEach((filaAdic: any) => {\n celdasHeaderDetalle.push(filaAdic);\n });\n // celdasHeaderDetalle.concat(tabla.appendTitle);\n }\n }\n\n let celdasBodyDetalle: any[] = [];\n\n tabla.contenido.forEach((dataProd: any, idxProd: any) => {\n const tBody = [];\n\n if (tabla.numeracion) {\n tBody.push(\n imprimirCelda(idxProd + 1, 'number', {\n style: tabla.resaltarNumeracion == false ? 'tdSmall':'thSmall',\n alignment: 'center',\n rowSpan: tabla.detalle?.length > 0 ? 2:1,\n ...tabla.opcionesPdfmake?.cuerpo\n })\n );\n }\n\n titUsar.forEach(dT => {\n let add: OpcAdicionalesCeldaPdfMake;\n if (dT.transformarDirecto) {\n add = dT.transformarDirecto(dataProd);\n }\n else {\n let txtImprimir = dataProd[dT.property];\n if (dT.transformar) txtImprimir = dT.transformar(dataProd);\n\n const opcionesPdfMakeCuerpo = {\n ...{\n format: dT.format,\n },\n ...tabla.opcionesPdfmake?.cuerpo,\n ...dT.reporte?.opcionesPdfmake?.cuerpo,\n };\n\n switch (dT.type) {\n case 'date':\n add = imprimirCelda(txtImprimir, 'date', {\n style: 'tdSmall',\n ...opcionesPdfMakeCuerpo\n })\n break;\n case 'number':\n add = imprimirCelda(txtImprimir, 'number', {\n style: 'tdSmall',\n ...opcionesPdfMakeCuerpo\n });\n break;\n case 'money':\n add = imprimirCelda(txtImprimir, 'money', {\n style: 'tdSmall',\n alignment: 'right',\n ...opcionesPdfMakeCuerpo\n });\n break;\n default:\n add = imprimirCelda(txtImprimir, null, {style: 'tdSmall', ...opcionesPdfMakeCuerpo});\n }\n\n if (dT.cssClasses) {\n dT.cssClasses.forEach((clase: string) => {\n // @ts-ignore\n add = {...add, alignment: clase.replace('text-', '') };\n });\n }\n }\n tBody.push(add);\n });\n\n celdasBodyDetalle.push(tBody);\n\n if (tabla.detalle?.length > 0) {\n const tBody2 = [];\n const lineasBody2: any [] = [];\n\n if (tabla.numeracion) tBody2.push({});\n\n titUsar.forEach(dT => tBody2.push({text: dT.property}));\n\n tabla.detalle.forEach((campoDet: { label: any; campo: string | number; }) => {\n if (campoDet.label) lineasBody2.push(JSON.parse(JSON.stringify(campoDet.label)));\n if (dataProd[campoDet.campo]) {\n lineasBody2.push(generarDesdeMantenimiento({\n ...campoDet, contenido: dataProd[campoDet.campo]\n }));\n }\n });\n\n tBody2[tabla.numeracion ? 1:0] = {\n colSpan: titUsar.length,\n style: 'tdSmall',\n stack: lineasBody2,\n };\n\n celdasBodyDetalle.push(tBody2);\n }\n });\n\n\n const filaTotales = [];\n\n if (tabla.numeracion) {\n filaTotales.push(\n imprimirCelda('', null, {border: [false, false, false, false]}),\n );\n }\n titUsar.forEach(titulo => {\n if (titulo.reporte && titulo.reporte.totalizar) {\n camposTotales.push(titulo.property);\n let txtImprimirTotal = sumaObj[titulo.property] ?? 0;\n\n if (titulo.reporte?.opcionesPdfmake?.total) {\n txtImprimirTotal = tipoValorFuncion(titulo.reporte?.opcionesPdfmake?.total, titulo);\n console.warn(txtImprimirTotal);\n }\n\n else if (typeof titulo.reporte.totalizar === 'object') {\n if (typeof titulo.reporte.totalizar.transformar === 'function') {\n txtImprimirTotal = titulo.reporte.totalizar.transformar(titulo)\n }\n else if (titulo.reporte.totalizar?.campoTotal) {\n txtImprimirTotal = tabla.contenido[0] ? tabla.contenido[0][titulo.reporte.totalizar?.campoTotal] : '';\n }\n // txtImprimirTotal = titulo.reporte.transformar(titulo)\n }\n // @ts-ignore\n const tipoCol: TiposCeldaPdfMake = titulo.type;\n filaTotales.push(\n imprimirCelda(txtImprimirTotal, tipoCol, {\n bold: true, style: 'thSmall', alignment: 'right',\n }),\n );\n }\n else {\n filaTotales.push(\n imprimirCelda('', null, {border: [false, false, false, false]}),\n );\n }\n },\n );\n if (camposTotales && camposTotales.length > 0) {\n celdasBodyDetalle = celdasBodyDetalle.concat([filaTotales]);\n }\n\n let filaTabla = celdasHeaderDetalle.concat(celdasBodyDetalle);\n\n const tablaHeaderPedido = {\n margin: tabla.margin ?? [0, 5, 0, 10],\n table: {\n dontBreakRows: true,\n headerRows: tabla.filasTitulos ?? 1,\n widths: anchoCols(celdasBodyDetalle.length > 0 ? celdasBodyDetalle:celdasHeaderDetalle, tabla.idxResto ?? [], tabla.idxAnchoValor ?? []),\n body: filaTabla,\n },\n layout: tabla.sinBordes ? 'noBorders':tabla.customLayout ?? undefined\n };\n\n if (tabla.separado) {\n return {\n titulos: celdasHeaderDetalle,\n cuerpo: celdasBodyDetalle,\n completo: tablaHeaderPedido,\n };\n }\n\n // console.log(JSON.stringify(tablaHeaderPedido))\n return tablaHeaderPedido;\n}\nexport function anchoCols(dataCant: any[] | number, idxResto: number[] | 'todos' = [], idxAnchoValor: { idx: number | 'todos', valor: number | 'auto' }[] = []): ('auto' | '*' | number)[] {\n\tconst retorno: ('auto' | '*' | number)[] = [];\n\n\tif (Array.isArray(dataCant)) {\n\t\tif (dataCant.length === 0) return [];\n\t\tdataCant[0].forEach((_: any, idx: number) => {\n\t\t\tretorno.push(Array.isArray(idxResto) && idxResto.includes(idx) ? '*' : 'auto');\n\t\t});\n\t} else {\n\t\tfor (let idx = 0; idx < dataCant; idx++) {\n\t\t\tif (Array.isArray(idxResto)){\n\t\t\t\tretorno.push(idxResto.includes(idx) ? '*' : 'auto');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tretorno.push('*');\n\t\t\t}\n\t\t}\n\t}\n\n\n\n\tidxAnchoValor.forEach(({ idx, valor }) => {\n\t\tif (idx == 'todos'){\n\t\t\tretorno.fill(valor);\n\t\t}\n\t\telse {\n\t\t\tretorno[idx] = valor;\n\t\t}\n\t});\n\n\treturn retorno;\n}\n\n\n\n\n/**\n * Funciones PRIVADAS\n */\n\nfunction verificarColumnaTablaMantenimiento(titulo: any) {\n return titulo.visible !== false && !titulo.ocultarReporte && (!titulo.reporte || !titulo.reporte.ocultar);\n}\n\nfunction columnasValidas(titulos: any[]) {\n // Filtrar títulos visibles y válidos para el reporte\n return titulos.map(titulo => ({\n ...titulo,\n visible: titulo.visible ?? true, // Asignar `true` si `visible` es `undefined`\n })).filter(titulo => {\n return (\n titulo.visible &&\n !titulo.ocultarReporte &&\n (!titulo.reporte || !titulo.reporte.ocultar)\n );\n }\n );\n}\n\n","import {AbstractControl, FormControl, FormControlOptions, FormGroup, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';\nimport {esNumero} from '../functions';\n\nexport class DataModel {\n public modelosChk: { [key: string]: boolean | any } = {}; // Usar any para valores dinámicos\n\n public checkbox: ForCheckboxModel;\n\n constructor() {\n this.checkbox = new ForCheckboxModel(this);\n }\n\n generarId(row: any, campoValor: string[] | string, separador = '') {\n if (typeof campoValor == 'string') {\n campoValor = [campoValor];\n }\n return campoValor.map(data => row[data]).join(separador);\n }\n\n // Agrega controles al objeto modelosChk\n agregarControles(lista: any[], idLista: string, limpiar = true, campoValor: string[] | string | null = null, campoValorSeparador = '') {\n\n if (limpiar) {\n this.modelosChk = {};\n }\n\n const asignarValor = (dat: any, idLista: string, campoValor: string, key?: string) => {\n if (!key) {\n key = dat[idLista] + (campoValor.includes('.') ? '':`.${campoValor}`);\n }\n const mat = campoValor.match(/^([in])[A-Z][a-zA-Z]+/);\n if (mat) {\n this.modelosChk[key] = dat[campoValor] * 1;\n }\n else {\n this.modelosChk[key] = dat[campoValor];\n }\n }\n\n\n lista.forEach(dat => {\n if (campoValor === null) {\n // Caso 1: Sin campoValor, se asigna false\n this.modelosChk[dat[idLista]] = false;\n }\n else if (typeof campoValor === 'string') {\n // Caso 2: campoValor es un string\n asignarValor(dat, idLista, campoValor, dat[idLista]);\n }\n else if (campoValorSeparador) {\n const idStr = this.generarId(dat, campoValor, campoValorSeparador);\n // Caso 2: campoValor es un string\n asignarValor(dat, idLista, '.', idStr);\n }\n else {\n // Caso 3: campoValor es un array de strings\n campoValor.forEach(data => asignarValor(dat, idLista, data));\n }\n });\n }\n\n // Establece el estado de un índice\n setState(idx: string, state: boolean) {\n this.modelosChk[idx] = state;\n }\n\n // Obtiene el estado de un índice\n getState(idx: string): boolean | any {\n return this.modelosChk[idx];\n }\n\n getDataMultiple(idx: string) {\n const camposMod = Object.keys(this.modelosChk).filter(key => key.split('.')[0] == idx);\n const vRet: any = {};\n camposMod.forEach(key => {\n vRet[key.split('.')[1]] = this.modelosChk[key];\n });\n return vRet;\n }\n\n // Genera una lista basada en el estado de los índices\n generarLista(tipoRetorno: 'array' | 'object' | null = null, esCampoNumerico = false): string | object | any[] {\n const strLista: string[] = [];\n const objLista: { [key: string]: boolean | any } = {};\n Object.keys(this.modelosChk).forEach(key => {\n if ((esCampoNumerico && esNumero(this.modelosChk[key])) ||\n (this.modelosChk[key])\n ) {\n strLista.push(key);\n objLista[key] = this.modelosChk[key];\n }\n });\n if (tipoRetorno === 'array') {\n return strLista;\n }\n if (tipoRetorno === 'object') {\n return objLista;\n }\n return strLista.join(',');\n }\n\n generarFormGroupFromModelosChk(tipo?: string): FormGroup {\n const formGroupObj: { [key: string]: FormControl } = {};\n let validadores: ValidatorFn | ((control: AbstractControl) => ValidationErrors | null)[] | FormControlOptions | null | undefined = []\n if (tipo == 'number') {\n validadores = [\n Validators.required,\n Validators.min(1)\n ]\n }\n Object.keys(this.modelosChk).forEach(key => {\n formGroupObj[key] = new FormControl(this.modelosChk[key], validadores);\n });\n return new FormGroup(formGroupObj);\n\n // return this.formBuilder.group(formGroupObj);\n }\n}\n\nclass ForCheckboxModel {\n private modeloCheck: DataModel;\n\n constructor(modeloCheck: DataModel) {\n this.modeloCheck = modeloCheck;\n }\n\n get cantidadActivos() {\n return Object.values(this.modeloCheck.modelosChk).filter(Boolean).length;\n }\n\n get existenActivados() {\n return this.cantidadActivos > 0;\n }\n\n get todosActivos() {\n const total = Object.keys(this.modeloCheck.modelosChk).length;\n const activos = this.cantidadActivos;\n return activos > 0 && total === activos;\n }\n\n get algunosActivos() {\n const total = Object.keys(this.modeloCheck.modelosChk).length;\n const activos = this.cantidadActivos;\n return activos > 0 && total !== activos;\n }\n\n establecerTodos(activo: boolean) {\n Object.keys(this.modeloCheck.modelosChk).forEach(idx => this.modeloCheck.modelosChk[idx] = activo);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'dataEnLista',\n})\nexport class DataEnListaPipe implements PipeTransform {\n\n transform(coleccion: object[], idBuscar: string | string[], dato: any): any {\n if (coleccion) {\n if (Array.isArray(idBuscar)) {\n return coleccion.find(item => {\n const arrCoincide: any[] = [];\n idBuscar.forEach((campo: string, idx) => {\n // @ts-ignore\n arrCoincide.push((item[campo] == dato[idx]));\n });\n return arrCoincide.every(e => e === true);\n });\n }\n // @ts-ignore\n return coleccion.find(item => item[idBuscar] == dato);\n }\n return null;\n }\n\n // opcSelec(coleccion, idBuscar, formControl) {\n // \tif (coleccion) {\n // \t\tif (formControl.value == '') {\n // \t\t\treturn {cModuloNombre: '', cModuloPadreNombre: 'Todos', iModuloId: ''};\n // \t\t}\n // \t\treturn coleccion.find(item => item[idBuscar] == formControl.value);\n // \t}\n // \treturn null;\n // }\n\n}\n\nexport function dataEnLista(coleccion: object[], idBuscar: string | string[], dato: any): any {\n return new DataEnListaPipe().transform(coleccion, idBuscar, dato);\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n\tname: 'dateDiffString',\n\tpure: true\n})\nexport class DateDiffStringPipe implements PipeTransform {\n\ttransform(startingDate: Date, endingDate: Date): any {\n\t\tlet startDate = new Date(startingDate);\n\t\t// user not pass endingDate then set current date as end date.\n\t\tif (!endingDate) {\n\t\t\tendingDate = new Date();\n\t\t}\n\t\tlet endDate = new Date(endingDate);\n\t\t// chack start date and end date and base on condication alter date.\n\t\tif (startDate > endDate) {\n\t\t\tconst swap = startDate;\n\t\t\tstartDate = endDate;\n\t\t\tendDate = swap;\n\t\t}\n\n\t\tconst disgregado = this.separarMilisegundos(endDate.getTime() - startDate.getTime());\n\t\t// console.log(disgregado);\n\t\tconst formatearATexto = (arrayToFill: string[], campo: any, texto: any, textoPlural = 's') => {\n\t\t\tif (campo > 0) {\n\t\t\t\tarrayToFill.push( campo + ' ' + texto + (campo > 1 ? textoPlural : '') );\n\t\t\t}\n\t\t\treturn arrayToFill;\n\t\t};\n\n\t\tlet arrDFinal: any[] = [];\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.years, 'año');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.months, 'mes', 'es');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.weeks, 'semana');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.days, 'día');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.hours, 'hora');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.minutes, 'minuto');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.seconds, 'segundo');\n\t\tif (arrDFinal.length > 3) {\n\t\t\tarrDFinal.splice(3);\n\t\t\tarrDFinal.splice(-1, 0, 'y');\n\t\t} else {\n\t\t\tif (arrDFinal.length > 1) {\n\t\t\t\tarrDFinal.splice(-1, 0, 'y');\n\t\t\t}\n\t\t}\n\t\treturn arrDFinal.join(' ');\n\t}\n\n\tsepararMilisegundos(milisegundos: any): {\n\t\tyears: number,\n\t\tmonths: number,\n\t\tweeks: number,\n\t\tdays: number,\n\t\thours: number,\n\t\tminutes: number,\n\t\tseconds: number,\n\t} {\n\t\tconst todoEnSegundos = milisegundos / 1000;\n\t\tlet secsUsed = 0;\n\t\tconst years = Math.floor(todoEnSegundos / 31536000);\n\t\tif (years > 0) {\n\t\t\tsecsUsed += (years * 31536000);\n\t\t}\n\t\tconst months = Math.floor((todoEnSegundos - secsUsed) / 2628288);\n\t\tif (months > 0) {\n\t\t\tsecsUsed += (months * 2628288);\n\t\t}\n\t\tconst weeks = Math.floor((todoEnSegundos - secsUsed) / 604800);\n\t\tif (weeks > 0) {\n\t\t\tsecsUsed += (weeks * 604800);\n\t\t}\n\t\tconst days = Math.floor((todoEnSegundos - secsUsed) / 86400);\n\t\tif (days > 0) {\n\t\t\tsecsUsed += (days * 86400);\n\t\t}\n\t\tconst hours = Math.floor((todoEnSegundos - secsUsed) / 3600);\n\t\tif (hours > 0) {\n\t\t\tsecsUsed += (hours * 3600);\n\t\t}\n\t\tconst minutes = Math.floor((todoEnSegundos - secsUsed) / 60);\n\t\tif (minutes > 0) {\n\t\t\tsecsUsed += (minutes * 60);\n\t\t}\n\t\tconst seconds = Math.round(todoEnSegundos - secsUsed);\n\n\t\treturn {\n\t\t\tyears,\n\t\t\tmonths,\n\t\t\tweeks,\n\t\t\tdays,\n\t\t\thours,\n\t\t\tminutes,\n\t\t\tseconds,\n\t\t};\n\t}\n\n/*\n\ttransform(to: Date, from: Date, seconds = true, strict = false): string {\n\t\tif (typeof to == 'string') {\n\t\t\tto = new Date(to);\n\t\t}\n\t\tif (typeof from == 'string') {\n\t\t\tfrom = new Date(from);\n\t\t}\n\t\tconsole.log(typeof to, typeof from);\n\t\tconsole.log(to);\n\t\tconsole.log(from);\n\n\t\treturn strict ? formatDistanceStrict(from, to, {unit: 'minute', locale: es}) : formatDistance(from, to, {includeSeconds: seconds, locale: es});\n\t}\n\t*/\n}\n\nexport function dateDiffString(startingDate: Date, endingDate: Date){\n\treturn new DateDiffStringPipe().transform(startingDate, endingDate);\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\ninterface OpcionesBusqueda {\n texto: string;\n longitudMinima?: number;\n campo?: string | string[];\n mostrarObligado?: MostrarObligado;\n}\n\ninterface MostrarObligado {\n campo: string;\n items: any[];\n}\n\n@Pipe({\n name: 'filtro'\n})\nexport class FiltroPipe implements PipeTransform {\n\n transform(items: any[], opcionesBusqueda: OpcionesBusqueda): any[] {\n if (!items || !Array.isArray(items)) return [];\n if (!opcionesBusqueda.texto || opcionesBusqueda.texto.length < (opcionesBusqueda.longitudMinima ?? 1)) return items;\n\n const normalize = (() => {\n const from = 'ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç';\n const to = 'AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuunncc';\n const mapping: Record<string, string> = {};\n\n for (let i = 0; i < from.length; i++) {\n mapping[from[i]] = to[i];\n }\n\n return (str: string): string => {\n return str.split('').map(c => mapping[c] || c).join('');\n };\n })();\n\n const textoNormalizado = normalize(opcionesBusqueda.texto.toLowerCase());\n\n return items.filter(item => {\n // 🔹 Manejo de `mostrarObligado`\n if (opcionesBusqueda.mostrarObligado) {\n const {campo, items: obligados} = opcionesBusqueda.mostrarObligado;\n if (obligados.includes(item[campo])) return true;\n }\n\n // 🔹 Manejo de `campo`\n if (opcionesBusqueda.campo) {\n if (Array.isArray(opcionesBusqueda.campo)) {\n return opcionesBusqueda.campo.some(campo => {\n const valor = item[campo] as string | undefined;\n return valor ? normalize(valor.toLowerCase()).includes(textoNormalizado):false;\n });\n }\n else {\n const valor = item[opcionesBusqueda.campo] as string | undefined;\n return valor ? normalize(valor.toLowerCase()).includes(textoNormalizado):false;\n }\n }\n\n return false;\n });\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {AbstractControl, Validators} from '@angular/forms';\n\n@Pipe({\n name: 'formControlIsRequired'\n})\nexport class FormControlIsRequiredPipe implements PipeTransform {\n\n\ttransform(formControl: AbstractControl, ...args: unknown[]): any {\n\t\tif (!formControl) { return false; }\n\t\treturn formControl.hasValidator(Validators.required);\n\t}\n\n}\nexport function formControlIsRequired(formControl: AbstractControl) {\n return new FormControlIsRequiredPipe().transform(formControl);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'jsonParse'\n})\nexport class JsonParsePipe implements PipeTransform {\n\n\ttransform(value: string, ...args: unknown[]): any {\n\t\tif (!value) { return []; }\n\t\ttry {\n\t\t\treturn JSON.parse(value);\n\t\t} catch (e) {\n\t\t\tconsole.warn('La cadena \"' + value + '\" no es JSON');\n\t\t\treturn [];\n\t\t}\n\t}\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\n@Pipe({ name: 'noSanitize' })\nexport class NoSanitizePipe implements PipeTransform {\n\tconstructor(private domSanitizer: DomSanitizer) {\n\n\t}\n\ttransform(html: string): SafeHtml {\n\t\treturn this.domSanitizer.bypassSecurityTrustHtml(html);\n\t}\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n\tname: 'zeroFill',\n})\nexport class ZeroFillPipe implements PipeTransform {\n\n\ttransform(value: unknown, digitos: number, ...args: unknown[]) {\n\t\tlet s = value + '';\n\t\twhile (s.length < digitos) {\n\t\t\ts = '0' + s;\n\t\t}\n\t\treturn s;\n\t}\n\n}\nexport function zeroFill(value: unknown, digitos: number, ...args: unknown[]) {\n\treturn new ZeroFillPipe().transform(value, digitos, args);\n}\n","/*\n * Public API Surface of utils\n */\n\nexport * from './classes/data-model';\nexport * from './functions';\nexport * from './pipes';\nexport * from './interfaces';\n// export * from './functions/common.function';\n\n// export * from './lib/utils.component';\n// export * from './lib/utils.service';\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":"jvsoft-utils.mjs","sources":["../../../projects/utils/src/functions/objects-arrays.ts","../../../projects/utils/src/functions/mat-form-controls/autocomplete.ts","../../../projects/utils/src/functions/mat-form-controls/index.ts","../../../projects/utils/src/functions/base64.ts","../../../projects/utils/src/functions/browser.ts","../../../projects/utils/src/functions/crypto-js.ts","../../../projects/utils/src/functions/date.ts","../../../projects/utils/src/functions/file.ts","../../../projects/utils/src/functions/forms.ts","../../../projects/utils/src/functions/sweetalert.ts","../../../projects/utils/src/functions/http-client.ts","../../../projects/utils/src/functions/local-storage.ts","../../../projects/utils/src/functions/number.ts","../../../projects/utils/src/functions/object-transformation.ts","../../../projects/utils/src/functions/string.ts","../../../projects/utils/src/functions/utiles.ts","../../../projects/utils/src/classes/data-model.ts","../../../projects/utils/src/pipes/data-en-lista.pipe.ts","../../../projects/utils/src/pipes/date-diff-string.pipe.ts","../../../projects/utils/src/pipes/filtro.pipe.ts","../../../projects/utils/src/pipes/form-control-is-required.pipe.ts","../../../projects/utils/src/pipes/json-parse.pipe.ts","../../../projects/utils/src/pipes/no-sanitize.pipe.ts","../../../projects/utils/src/pipes/zero-fill.pipe.ts","../../../projects/utils/src/interfaces/otros.ts","../../../projects/utils/src/public-api.ts","../../../projects/utils/src/jvsoft-utils.ts"],"sourcesContent":["export function deepMerge(source: any, target: any): any {\n // Crea un clon profundo sin usar JSON.parse(JSON.stringify)\n let cloneSource = deepClone(source);\n\n if (typeof target !== 'object' || target === null) {\n return target;\n }\n\n if (typeof cloneSource !== 'object' || cloneSource === null) {\n cloneSource = Array.isArray(target) ? [] : {};\n }\n\n for (const key of Object.keys(target)) {\n const targetValue = target[key];\n const sourceValue = cloneSource[key];\n\n if (typeof targetValue === 'object' && targetValue !== null && !Array.isArray(targetValue)) {\n cloneSource[key] = deepMerge(sourceValue, targetValue);\n } else {\n cloneSource[key] = targetValue;\n }\n }\n return cloneSource; // Retorna el clon y no modifica el original\n}\n\n// Función de clonación profunda que maneja funciones, fechas y otros tipos especiales\nexport function deepClone(obj: any): any {\n if (obj === null || typeof obj !== 'object') {\n return obj; // Devuelve el valor si no es un objeto\n }\n\n // Manejar instancias de Date\n if (obj instanceof Date) {\n return new Date(obj.getTime());\n }\n\n // Manejar funciones devolviendo una copia directa\n if (typeof obj === 'function') {\n return obj.bind({}); // Devuelve una copia de la función enlazada a un contexto vacío\n }\n\n // Crear un nuevo objeto o array\n const clonedObj: Record<string, any> = Array.isArray(obj) ? [] : {};\n\n // Clonar recursivamente las propiedades del objeto\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n clonedObj[key] = deepClone(obj[key]);\n }\n }\n\n return clonedObj;\n}\n\n/**\n * Busca un elemento en un array o jerarquía de objetos según un campo y valor especificado.\n *\n * @returns El elemento encontrado o undefined si no existe.\n */\nexport function buscarPorCampo<T>(datosFn: {\n items: T[];\n campo: keyof T;\n valor: any;\n campoHijo?: string; // Campo opcional para búsqueda recursiva\n}): T | undefined {\n for (const item of datosFn.items) {\n // Verifica si el campo coincide con el valor\n if (item[datosFn.campo] === datosFn.valor) {\n return item;\n }\n\n // Verifica si hay un campo hijo y si es un array\n if (datosFn.campoHijo && item[datosFn.campoHijo as keyof T] && Array.isArray(item[datosFn.campoHijo as keyof T])) {\n // Realiza la búsqueda recursiva en el campo hijo\n const encontrado = buscarPorCampo({\n items: item[datosFn.campoHijo as keyof T] as T[], // Asegura el tipo correcto\n campo: datosFn.campo,\n valor: datosFn.valor,\n campoHijo: datosFn.campoHijo,\n });\n\n // Si se encuentra el valor en el campo hijo, retorna el resultado\n if (encontrado) {\n return encontrado;\n }\n }\n }\n\n // Si no se encuentra nada, retorna undefined\n return undefined;\n}\n\nexport function sumarPropiedades(item: Record<string, any>, campos: string[]) {\n const datosSumar = campos.map(campo => (item[campo] * 1));\n return datosSumar.reduce((a, b) => a + b, 0);\n}\n\nexport function esNumero(value: any) {\n return !isNaN(Number(value));\n}\n\nexport function sumarObjetos(arrayObjetos: any[], campos: string[]) {\n return arrayObjetos.reduce((accumulator, item) => {\n campos.forEach(campo => {\n if (esNumero(item[campo])) {\n accumulator[campo] = (accumulator[campo] ?? 0) + ((<number>item[campo]) ?? 0);\n }\n });\n return accumulator;\n }, {});\n}\n\nexport function getUniqueValues(array: any[]) {\n return array.filter((currentValue, index, arr) => (\n arr.indexOf(currentValue) === index\n ));\n}\n\nexport function getUniqueValuesByProperty<T>(objetos: T[], campo: string): T[] {\n const objetosUnicos: {[key: string]: T} = {};\n\n objetos.forEach(objeto => {\n // Verificar si el objeto tiene el campo especificado\n // @ts-ignore\n if (objeto.hasOwnProperty(campo)) {\n // @ts-ignore\n const valorCampo = objeto[campo];\n\n // Utilizar el valor del campo como clave en un objeto para asegurar que no haya duplicados\n objetosUnicos[valorCampo] = objeto;\n }\n });\n\n // Convertir el objeto de claves únicas de vuelta a una lista de objetos\n return Object.values(objetosUnicos);\n}\n\n\nexport function ordenarArray(array: any[], numeros = false, sentido: 'ASC' | 'DESC' = 'ASC'): any[] {\n if (numeros) {\n if (sentido != 'ASC') {\n return array.sort((a: any, b: any) => b - a);\n }\n return array.sort((a: any, b: any) => a - b);\n }\n return array.sort((a, b) => (a > b) ? 1:((b > a) ? -1:0));\n\n}\n\nexport function ordenarPorPropiedad(objData: any, propiedad: string, /**@deprecated*/ numeros = false) {\n return ordenarPorPropiedades(objData, {propiedades: [propiedad], direcciones:['asc']});\n}\n\nexport function ordenarPorPropiedades<T>(arr: T[], options: {\n propiedades: (keyof T)[],\n direcciones?: ('asc' | 'desc' | '')[],\n}): T[] {\n const {propiedades, direcciones = []} = options;\n const orden = direcciones.map(d => d === 'desc' ? -1:1);\n\n return [...arr].sort((a, b) => {\n return propiedades.reduce((acc, propiedad, index) => {\n if (acc !== 0) return acc; // Si ya hay diferencia, no seguir comparando\n\n const aValue = a[propiedad];\n const bValue = b[propiedad];\n\n if (typeof aValue === 'string' && typeof bValue === 'string') {\n return aValue.localeCompare(bValue) * orden[index]; // 🔹 Comparación alfabética\n }\n if (typeof aValue === 'number' && typeof bValue === 'number') {\n return (aValue - bValue) * orden[index]; // 🔹 Comparación numérica\n }\n\n return 0; // En caso de valores no comparables\n }, 0);\n });\n}\n","import {esNumero} from '../objects-arrays';\nimport {AbstractControl} from '@angular/forms';\nimport {untilDestroyed} from '@ngneat/until-destroy';\nimport {debounceTime, finalize, isObservable, of, startWith, switchMap, tap} from 'rxjs';\nimport {map} from 'rxjs/operators';\n\nexport function mostrarValorEnBusqueda(campos: any, idxSel: any) {\n const impDataMostrar = () => {\n let vD;\n if (campos.campoId == '*object*' || campos.campoId == '*objeto*') {\n console.log(campos);\n vD = campos.lista.find((x: any) => JSON.stringify(x).trim() == JSON.stringify(idxSel).trim());\n console.log(vD);\n }\n else {\n vD = campos.lista.find((x: any) => x[campos.campoId] == idxSel);\n }\n if (!vD && campos.opcExtra) {\n console.log('eval ', campos.opcExtra);\n if (campos.campoId == '*object*' || campos.campoId == '*objeto*') {\n console.log(campos);\n vD = campos.opcExtra.find((x: any) => JSON.stringify(x).trim() == JSON.stringify(idxSel).trim());\n console.log(vD);\n }\n else {\n vD = campos.opcExtra.find((x: any) => x[campos.campoId] == idxSel);\n }\n }\n if (vD) {\n let txtFinal = '';\n if (Array.isArray(campos.campoValue)) {\n campos.campoValue.forEach((vCampo: any, idx: any) => {\n txtFinal += (vD[vCampo] ?? '');\n if (idx < campos.campoValue.length - 1) {\n txtFinal += ' - ';\n }\n });\n }\n else {\n txtFinal = vD[campos.campoValue] ?? '';\n }\n return txtFinal.trim();\n }\n else {\n console.log('ASSSSS ----- SSSS ');\n }\n return '';\n };\n if (esNumero(idxSel)) {\n if (idxSel > 0 && campos.lista?.length > 0) {\n return impDataMostrar();\n }\n else if (idxSel && typeof idxSel == 'object') {\n return impDataMostrar();\n }\n }\n else {\n if (campos.lista?.length > 0) {\n return impDataMostrar();\n }\n }\n return '';\n}\n\n\nexport function changeSelectData(objThis: any, dataFiltro: {\n formControl: AbstractControl,\n data: any[],\n campoBuscar: string | string[],\n variableResultado: string,\n}) {\n objThis['filtrados'][dataFiltro.variableResultado] = dataFiltro.formControl.valueChanges.pipe(untilDestroyed(objThis)).pipe(\n startWith(''),\n map(value => {\n\n const varN = dataFiltro.data;\n if (varN) {\n if (value) {\n return varN.map(x => x).filter(dat => {\n if (Array.isArray(dataFiltro.campoBuscar)) {\n let encontrado = false;\n\n for (const vCampo of dataFiltro.campoBuscar) {\n // console.log(vCampo, value, dat[vCampo]);\n if (isNaN(Number(value))) {\n // NO ES NUMERO\n if (value && dat[vCampo] && dat[vCampo].toLowerCase().includes(value?.toString().toLowerCase())) {\n encontrado = true;\n break;\n }\n }\n else {\n if (value && dat[vCampo] && dat[vCampo].toString().includes(value?.toString())) {\n encontrado = true;\n break;\n }\n }\n }\n return encontrado;\n }\n else {\n if (isNaN(Number(value))) {\n return dat[dataFiltro.campoBuscar].toLowerCase().includes(value?.toString().toLowerCase());\n }\n else {\n return dat[dataFiltro.campoBuscar].toString().includes(value?.toString());\n }\n }\n });\n }\n return varN;\n }\n return false;\n })\n );\n}\n\nexport function changeSelect(control: any, formControl: AbstractControl, tipo: any, campoBuscar: any, campoFiltro = null) {\n // console.log(formControl);\n // const formGroup = formControl.parent.controls;\n // console.warn( Object.keys(formGroup).find(name => formControl === formGroup[name]) || null );\n if (!campoFiltro) {\n campoFiltro = tipo;\n }\n control['filtrados'][campoFiltro ?? '__'] = formControl.valueChanges.pipe(untilDestroyed(control)).pipe(\n startWith(''),\n map(value => {\n // console.warn(value);\n\n const partes = tipo.split('.');\n let varN;\n if (control['dataServidor']) {\n varN = (partes.length > 1) ? control['dataServidor'][partes[0]][partes[1]]:control['dataServidor'][tipo];\n }\n else if (control['dataServidorSuscripcion']) {\n varN = control['dataServidorSuscripcion'][tipo].getValue();\n }\n if (varN) {\n if (value) {\n return varN.map((x: any) => x).filter((dat: any) => {\n if (Array.isArray(campoBuscar)) {\n let encontrado = false;\n\n for (const vCampo of campoBuscar) {\n // console.log(vCampo, value, dat[vCampo]);\n if (isNaN(Number(value))) {\n // NO ES NUMERO\n if (value && dat[vCampo] && dat[vCampo].toLowerCase().includes(value?.toString().toLowerCase())) {\n encontrado = true;\n break;\n }\n }\n else {\n if (value && dat[vCampo] && dat[vCampo].toString().includes(value?.toString())) {\n encontrado = true;\n break;\n }\n }\n }\n return encontrado;\n }\n else {\n if (isNaN(Number(value))) {\n return dat[campoBuscar].toLowerCase().includes(value?.toString().toLowerCase());\n }\n else {\n return dat[campoBuscar].toString().includes(value?.toString());\n }\n }\n });\n }\n return varN;\n }\n return false;\n })\n );\n}\n\nexport function changeSelectDataApi(objThis: any, dataFiltro: {\n tipoReq: string,\n campoId?: string,\n minLength?: number,\n dataExtra?: any,\n dataExtraVariable?: any,\n anonimo?: boolean,\n queryService: any,\n\n formControl: AbstractControl,\n variableResultado?: string,\n}) {\n if (!dataFiltro.variableResultado) {\n dataFiltro.variableResultado = dataFiltro.tipoReq;\n }\n const idFiltrado: string = dataFiltro.variableResultado;\n dataFiltro.formControl.valueChanges.pipe(\n debounceTime(500),\n tap(() => {\n objThis.filtrados[dataFiltro.variableResultado + 'tmp'] = isObservable(objThis.filtrados[idFiltrado]) ? []:objThis.filtrados[idFiltrado] || [];\n if (objThis.filtrados[idFiltrado] !== objThis.filtrados[idFiltrado + 'tmp']) {\n objThis.filtrados[idFiltrado] = [];\n }\n objThis.isLoading = true;\n }),\n switchMap(value => {\n if (dataFiltro.campoId) {\n const busquedaActual2 = objThis.filtrados[idFiltrado + 'tmp'].findIndex((item: any) => item[dataFiltro.campoId ?? '--'] === value);\n if (busquedaActual2 >= 0) {\n return of({[dataFiltro.tipoReq]: objThis.filtrados[idFiltrado + 'tmp']});\n }\n }\n return !value || value.length < (dataFiltro.minLength ?? 3) ? []:(\n dataFiltro.queryService.getDataMethod('GET', dataFiltro.tipoReq, {\n ...(dataFiltro.dataExtra ?? {}),\n ...(dataFiltro.dataExtraVariable ? Object.fromEntries(dataFiltro.dataExtraVariable.map((objData: any) => [objData.campo, objData.ctrlValue.value])):{}),\n txtBuscar: value,\n }, dataFiltro.anonimo).pipe(\n finalize(() => objThis.isLoading = false),\n )\n );\n })\n ).subscribe((data: any) => {\n objThis.filtrados[idFiltrado] = data[dataFiltro.tipoReq] ?? [];\n });\n}\n\nexport function changeSelectApi(control: any, queryService: any, formControl: AbstractControl, tipo: any, dataExtra = {}, dataExtraVariable = null, minLength = 1, anonimo = false) {\n formControl.valueChanges.pipe(\n debounceTime(500),\n tap((value) => {\n control['filtrados'][tipo + 'tmp'] = isObservable(control['filtrados'][tipo]) ? []:control['filtrados'][tipo];\n if (control['filtrados'][tipo] != control['filtrados'][tipo + 'tmp']) {\n control['filtrados'][tipo] = [];\n }\n control['isLoading'] = true;\n }),\n\n switchMap(value => {\n const formGroup = <any>formControl.parent?.controls;\n const nombreControl = Object.keys(formGroup).find(name => formControl === formGroup[name]) || null;\n if (nombreControl && control['filtrados'][tipo + 'tmp'] && control['filtrados'][tipo + 'tmp'].length > 0) {\n const busquedaActual = control['filtrados'][tipo + 'tmp'].findIndex((item: any) => item[nombreControl] == value);\n if (busquedaActual >= 0) {\n const vRet: any = {};\n vRet[tipo] = control['filtrados'][tipo + 'tmp'];\n control['isLoading'] = false;\n return of(vRet);\n }\n }\n if (!value || value.length < minLength) {\n return [];\n }\n\n const dataExtraVariableData: any = {};\n if (dataExtraVariable) {\n // @ts-ignore\n for (const objData of dataExtraVariable) {\n dataExtraVariableData[objData.campo] = objData.ctrlValue.value;\n }\n }\n return queryService.getDataMethod('GET', tipo, {...dataExtra, ...dataExtraVariableData, ...{txtBuscar: value}}, anonimo).pipe(\n finalize(() => {\n control['isLoading'] = false;\n }),\n );\n\n })\n ).subscribe((data: any) => {\n if (data[tipo] == undefined) {\n control['filtrados'][tipo] = [];\n }\n else {\n control['filtrados'][tipo] = data[tipo];\n }\n });\n}\n","export * from './autocomplete'\n\n\nexport function seleccionarTextoInput(event: any): void {\n (event.target as HTMLInputElement).select();\n}\n","import {Buffer} from 'buffer';\n\nexport function b64Encode(val: string) {\n return Buffer.from(val, 'binary').toString('base64');\n}\nexport function b64Decode(val: string) {\n return Buffer.from(val, 'base64').toString('binary');\n}\n","\nexport function getBrowserName() {\n const agent = window.navigator.userAgent.toLowerCase();\n switch (true) {\n case agent.indexOf('edge') > -1:\n return 'edge';\n case agent.indexOf('opr') > -1 && !!(<any>window).opr:\n return 'opera';\n case agent.indexOf('chrome') > -1 && !!(<any>window).chrome:\n return 'chrome';\n case agent.indexOf('trident') > -1:\n return 'ie';\n case agent.indexOf('firefox') > -1:\n return 'firefox';\n case agent.indexOf('safari') > -1:\n return 'safari';\n default:\n return 'other';\n }\n}\n","// import * as CryptoJS from 'crypto-js';\nimport CryptoJS from 'crypto-js';\n// var CryptoJS = require(\"crypto-js\");\n\n\n// Clave secreta (debe ser de 16, 24 o 32 caracteres)\n\nconst secretKey = CryptoJS.enc.Utf8.parse('JVSoftSecret@20615178350');\nconst iv = CryptoJS.enc.Utf8.parse('AnSalHuaJVSoft07'); // Debe ser de 16 bytes\n\n// Función para encriptar texto\nexport function encriptar(text: string): string {\n const encrypted = CryptoJS.AES.encrypt(text, secretKey, {\n iv: iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n });\n return encrypted.toString(); // Texto cifrado en Base64\n}\n\n// Función para desencriptar texto\nexport function desencriptar(ciphertext: string): string {\n const decrypted = CryptoJS.AES.decrypt(ciphertext, secretKey, {\n iv: iv,\n mode: CryptoJS.mode.CBC,\n padding: CryptoJS.pad.Pkcs7,\n });\n return decrypted.toString(CryptoJS.enc.Utf8);\n}\n","import {formatDate} from '@angular/common';\n\nexport function formatearFechaFormato(val: string, format: string = 'dd/MM/yyyy') {\n return val ? formatDate(val, format, 'es-PE'):'';\n}\n\nexport function formatearFecha(val: string, hora = '00:00:00') {\n if (val) {\n if (val.length <= 10) {\n val = val + ' ' + hora;\n }\n return new Date(val);\n }\n return val;\n}\n\nexport function formatearFechaCadena(fecha: string): Date {\n const year = parseInt(fecha.substring(0, 4), 10);\n const month = parseInt(fecha.substring(4, 6), 10) - 1;\n const day = parseInt(fecha.substring(6, 8), 10);\n\n return new Date(year, month, day);\n}\n","import {saveAs} from 'file-saver';\n\n\nconst mimeTypes: { [key: string]: string } = {\n // Imágenes\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'png': 'image/png',\n 'gif': 'image/gif',\n 'webp': 'image/webp',\n 'svg': 'image/svg+xml',\n 'ico': 'image/x-icon',\n 'bmp': 'image/bmp',\n\n // Documentos\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'txt': 'text/plain',\n 'csv': 'text/csv',\n 'json': 'application/json',\n 'xml': 'application/xml',\n 'html': 'text/html',\n\n // Audio\n 'mp3': 'audio/mpeg',\n 'wav': 'audio/wav',\n 'ogg': 'audio/ogg',\n 'm4a': 'audio/mp4',\n\n // Video\n 'mp4': 'video/mp4',\n 'avi': 'video/x-msvideo',\n 'mov': 'video/quicktime',\n 'wmv': 'video/x-ms-wmv',\n 'flv': 'video/x-flv',\n 'webm': 'video/webm',\n 'mkv': 'video/x-matroska',\n\n // Archivos comprimidos\n 'zip': 'application/zip',\n 'rar': 'application/vnd.rar',\n '7z': 'application/x-7z-compressed',\n 'tar': 'application/x-tar',\n 'gz': 'application/gzip',\n 'bz2': 'application/x-bzip2',\n\n // Otros formatos\n 'js': 'application/javascript',\n 'css': 'text/css',\n 'ts': 'application/typescript',\n 'md': 'text/markdown',\n 'exe': 'application/octet-stream',\n 'eot': 'application/vnd.ms-fontobject',\n 'woff': 'font/woff',\n 'woff2': 'font/woff2',\n 'ttf': 'font/ttf',\n 'otf': 'font/otf',\n};\n\nexport function obtenerMimeType(nombreArchivo: string): string | null {\n const extension = nombreArchivo.split('.').pop()?.toLowerCase();\n return extension ? mimeTypes[extension] || 'application/octet-stream' : null;\n}\nexport function sanitizarNombreArchivo(nombre: string, reemplazo: string = '_'): string {\n // 1. Quitar caracteres no válidos para nombres de archivo\n const nombreSanitizado = nombre.replace(/[\\/\\\\:*?\"<>|]/g, reemplazo);\n\n // 2. Reemplazar espacios múltiples o al inicio/final\n const nombreLimpio = nombreSanitizado.trim().replace(/\\s+/g, reemplazo);\n\n // 3. Asegurar longitud máxima (opcional, aquí 255 caracteres)\n return nombreLimpio.substring(0, 255);\n}\n\nexport function getDataArchivoFromPath(value: string, conTimeStamp = false): {\n nombre: string, extension?: string, d?: any, fechaSubida: any\n} {\n const partesPath = value.split('/');\n const nombreCompleto = partesPath[partesPath.length - 1];\n let timeStamp = 1;\n let nombreSinTimeStamp = nombreCompleto;\n const partesNombre: any [] = nombreCompleto.split('-');\n if (partesNombre.length > 1) {\n timeStamp = partesNombre[0] * 1;\n partesNombre.shift();\n nombreSinTimeStamp = partesNombre.join('-');\n }\n if (conTimeStamp) {\n return {\n nombre: nombreCompleto,\n extension: nombreCompleto.split('.').pop(),\n d: timeStamp,\n fechaSubida: timeStamp ? new Date(timeStamp * 1000):'',\n };\n }\n return {\n nombre: nombreSinTimeStamp,\n extension: nombreSinTimeStamp.split('.').pop(),\n d: timeStamp,\n fechaSubida: timeStamp ? new Date(timeStamp * 1000):'',\n };\n}\n\nexport function convertirBytes(valor: number, unidadSalida: string | null = null, incluirUnidad: boolean = true): string | number | null {\n const unidades: string[] = ['B', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const indiceEntrada: number = unidadSalida ? unidades.indexOf(unidadSalida):0;\n\n if (indiceEntrada === -1) {\n // Unidad de entrada no válida\n return null;\n }\n\n let indiceActual: number = indiceEntrada;\n let resultado: number = valor;\n\n let cont = 0;\n\n while (cont < 6 && (indiceActual < unidades.length - 1) && (resultado >= 1024)) {\n resultado /= 1024;\n indiceActual++;\n }\n if (incluirUnidad) {\n return `${resultado.toFixed(2)} ${unidades[indiceActual]}`;\n }\n\n return resultado;\n}\n\n\nexport function downLoadFileStream(data: any, type: string, nombreArchivo?: string) {\n const blob = new Blob([data], {type});\n saveAs(blob, nombreArchivo);\n}\n","import {AbstractControl, FormArray, FormControl, FormGroup, ValidationErrors, Validators} from '@angular/forms';\nimport {ReactiveFormConfig} from '@rxweb/reactive-form-validators';\n\nexport function establecerQuitarRequired(formulario: FormGroup, establecer: any[] = [], quitar: any[] = [], camposDisabled: string[] | 'todos' = []) {\n establecer.forEach((control: string) => {\n if (!formulario.get(control)?.hasValidator(Validators.required)) {\n formulario.get(control)?.addValidators([Validators.required]);\n formulario.get(control)?.enable();\n formulario.get(control)?.updateValueAndValidity();\n }\n });\n const deshabilitar = (strControl: string) => {\n if (camposDisabled == 'todos') {\n formulario.get(strControl)?.disable();\n console.log(strControl);\n }\n else {\n if (camposDisabled.includes(strControl)) {\n formulario.get(strControl)?.disable();\n }\n }\n }\n quitar.forEach(control => {\n if (formulario.get(control)?.hasValidator(Validators.required)) {\n formulario.get(control)?.removeValidators([Validators.required]);\n formulario.get(control)?.updateValueAndValidity();\n }\n deshabilitar(control);\n });\n}\n\nexport function getFormValidationErrors(form: FormGroup) {\n const result: { control: string; error: string; value: any; }[] = [];\n Object.keys(form.controls).forEach(key => {\n const formProperty = form.get(key);\n if (formProperty instanceof FormGroup) {\n result.push(...getFormValidationErrors(formProperty));\n }\n const controlErrors: ValidationErrors | null | undefined = formProperty?.errors;\n if (controlErrors) {\n Object.keys(controlErrors).forEach(keyError => {\n result.push({\n control: key,\n error: keyError,\n value: controlErrors[keyError]\n });\n });\n }\n });\n\n return result;\n}\n\nexport function mensajesErrorFormControl(control: AbstractControl | null): string {\n if (!control || !control.errors || !control.touched) return '';\n\n ReactiveFormConfig.set({\n // RxwebValidators\n validationMessage: {\n required: 'Es requerido',\n numeric: 'Debe ser numérico valido',\n // minLength: 'minimum length is {{1}}',\n // maxLength: 'allowed max length is {{1}}',\n },\n });\n\n const errorMessages: Record<string, string> = {\n required: 'Es requerido',\n numeric: 'Debe ser numérico válido',\n min: `Valor mínimo permitido: ${control.errors['min']?.min}`,\n minValue: 'Debe ser positivo',\n minlength: `Mínimo ${control.errors['minlength']?.requiredLength} caracteres.`,\n maxlength: `Caracteres ${control.errors['maxlength']?.actualLength}/${control.errors['maxlength']?.requiredLength}`,\n email: 'No se cumple con el formato de Correo Electrónico',\n isNumeric: 'Debe seleccionar una opción',\n hasNumber: 'Se requiere al menos un número',\n hasCapitalCase: 'Se requiere al menos una mayúscula',\n hasSmallCase: 'Se requiere al menos una minúscula',\n hasSpecialCharacters: 'Se requiere al menos un carácter especial',\n NoPassswordMatch: 'La contraseña no coincide',\n itemSelected: 'Debe seleccionar una opción de la lista',\n inputMask: 'El formato ingresado no es válido',\n };\n\n // Devuelve el primer mensaje de error encontrado\n for (const errorKey of Object.keys(control.errors)) {\n if (errorMessages[errorKey]) {\n return errorMessages[errorKey];\n }\n }\n\n // Si el error tiene un mensaje personalizado, usarlo\n return control.errors[Object.keys(control.errors)[0]]?.message || '';\n}\n\nexport function toFormData<T extends Record<string, any>>(formValue: T): FormData {\n const formData = new FormData();\n\n Object.keys(formValue).forEach((key) => {\n const value = formValue[key];\n\n if (value === null || value === undefined) {\n return; // Ignorar valores nulos o indefinidos\n }\n\n if (Array.isArray(value)) {\n value.forEach((item, index) => {\n if (typeof item === 'object' && item !== null) {\n if ('file' in item) {\n formData.append(`${key}[${index}]`, item.file);\n }\n else {\n formData.append(`${key}[${index}]`, JSON.stringify(item));\n }\n }\n else {\n formData.append(`${key}[${index}]`, item.toString());\n }\n });\n }\n else if (typeof value === 'object') {\n // Si es un objeto (pero no un array), convertirlo a JSON\n formData.append(key, JSON.stringify(value));\n }\n else {\n // Para valores primitivos (string, number, boolean)\n formData.append(key, value.toString());\n }\n });\n\n return formData;\n}\n\nexport function markAsTouchedWithoutEmitEvent(control: AbstractControl): void {\n if (control instanceof FormControl) {\n control.markAsTouched({onlySelf: true});\n control.updateValueAndValidity({emitEvent: false});\n }\n else if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(childControl => {\n markAsTouchedWithoutEmitEvent(childControl);\n });\n control.updateValueAndValidity({emitEvent: false});\n }\n}\n","import swal, {SweetAlertOptions, SweetAlertResult} from 'sweetalert2';\n\nexport function mensajeAlerta(tipo: 'success' | 'error' | 'info' | 'warning' | 'question', titulo: string, mensaje: string, opciones?: SweetAlertOptions) {\n opciones = {\n ...{\n heightAuto: false,\n title: titulo,\n html: mensaje,\n icon: tipo,\n confirmButtonText: 'Aceptar',\n // customClass: {\n // \tconfirmButton: 'btn btn-lg btn-outline-success mx-2',\n // \tcancelButton: 'btn btn-lg btn-outline-dark mx-2'\n // },\n // buttonsStyling: false\n },\n ...opciones\n };\n return swal.fire(opciones);\n}\n\nexport function mensajeTimer(tipo: 'success' | 'error' | 'info' | 'warning' | 'question', titulo: string, mensaje: string, milisegundos = 3000, showLoading = true, opciones?: SweetAlertOptions) {\n let timerInterval: any;\n opciones = {\n ...{\n heightAuto: false,\n title: titulo,\n html: mensaje + '<br> Se cerrará en <strong> X </strong> segundos.',\n icon: tipo,\n timer: milisegundos,\n showCancelButton: false,\n showConfirmButton: false,\n willOpen: () => {\n if (showLoading) {\n swal.showLoading();\n }\n timerInterval = setInterval(() => {\n const impr = Math.ceil(((swal.getTimerLeft() ?? 1)/ 1000));\n if (swal.getHtmlContainer()) {\n // @ts-ignore\n swal.getHtmlContainer().querySelector('strong').textContent = String(impr);\n }\n }, 100);\n },\n willClose: () => {\n clearInterval(timerInterval);\n }\n },\n ...opciones\n };\n return swal.fire(opciones);\n}\n\n// @ts-ignore\nexport function mensajeConfirmacion(tipo: 'success' | 'error' | 'info' | 'warning' | 'question', titulo, mensaje, opciones?: SweetAlertOptions): Promise<SweetAlertResult<Awaited<any>>> {\n opciones = {\n ...{\n heightAuto: false,\n title: titulo,\n html: mensaje,\n icon: tipo,\n showCancelButton: true,\n // confirmButtonColor: '#3f51b5',\n // cancelButtonColor: '#ffffff',\n confirmButtonText: 'Confirmar',\n cancelButtonText: 'Cancelar',\n reverseButtons: true,\n // customClass: {\n // \tconfirmButton: 'btn btn-lg btn-outline-success mx-2',\n // \tcancelButton: 'btn btn-lg btn-outline-dark mx-2'\n // },\n // buttonsStyling: false\n },\n ...opciones\n };\n return swal.fire(opciones);\n}\nexport function mensajeToast(tipo: 'success' | 'error' | 'info' | 'warning' | 'question', titulo: string, mensaje: string, opciones?: SweetAlertOptions) {\n opciones = {\n ...{\n heightAuto: false,\n title: titulo,\n html: mensaje,\n icon: tipo,\n confirmButtonText: 'Aceptar',\n toast: true,\n position: 'top-end',\n showConfirmButton: false,\n timer: 3000,\n timerProgressBar: true,\n },\n ...opciones\n };\n return swal.fire(opciones);\n}\n","import {HttpErrorResponse} from '@angular/common/http';\nimport {mensajeAlerta, mensajeToast} from './sweetalert';\n\nexport function mensajesDeError(error: HttpErrorResponse, toast = false) {\n let msg;\n\n if (error.error && error.error instanceof ArrayBuffer) {\n const msgArrayBuffer = (arrayBuffer: ArrayBuffer): string => {\n try {\n const mensajeError = JSON.parse(new TextDecoder(\"utf-8\").decode(arrayBuffer));\n return mensajeError.message || 'Error desconocido';\n } catch (parseError) {\n console.error('Error al analizar la respuesta JSON:', parseError);\n return 'Error al analizar la respuesta JSON';\n }\n }\n msg = msgArrayBuffer(error.error);\n }\n else {\n\n switch (error.status) {\n case 0:\n // msg = error.message;\n msg = 'El servidor no responde, verifica tu conexion a la red';\n console.log(error);\n break;\n case 401:\n if (error.error && typeof error.error == 'object') {\n if (error.error.message) {\n msg = error.error.message;\n }\n else if (error.error.error) {\n msg = error.error.error;\n }\n else {\n msg = JSON.stringify(error.error);\n console.log(error);\n }\n }\n else if (error.error && typeof error.error == 'string') {\n msg = error.error;\n }\n else {\n msg = 'Acceso no autorizado';\n console.log(error);\n }\n break;\n case 422:\n let strEr = '';\n\n console.log(typeof error.error.errors);\n console.log(error.error.errors);\n if (error.error.errors) {\n Object.keys(error.error.errors).forEach(o => {\n strEr += '<li>' + error.error.errors[o][0] + '</li>';\n });\n msg = (error.error.message ?? '') + '<ul>' + strEr + '</ul>';\n }\n else if (error.error.error) {\n msg = error.error.msg;\n }\n break;\n case 429:\n case 400:\n case 500:\n case 503:\n msg = error.error.message;\n break;\n case 504:\n msg = 'No se puede conectar al servidor. Comprueba tu conexion a la red - ' + error.statusText;\n break;\n default:\n msg = 'Error de Sistema';\n console.log(error);\n break;\n }\n }\n if (!msg) {\n msg = error.statusText ?? 'Error inesperado o datos inexistentes.';\n }\n\n let tituloFinal = 'Error!';\n let mensajeFinal;\n\n if (msg.includes('Hmac::doVerify')) {\n console.log(error, msg);\n return;\n }\n else if (msg == 'Server Error') {\n console.log(error, msg);\n return;\n }\n else if (msg.includes('[IMSSP]')) {\n mensajeFinal = 'Error en consulta de registros.';\n }\n else if (msg.includes('Tiempo de espera de la')) {\n mensajeFinal = 'Hubo un error en la solicitud de datos, por favor actualice (SHIFT + F5)';\n }\n else {\n mensajeFinal = msg;\n }\n if (toast) {\n mensajeToast('error', tituloFinal, mensajeFinal);\n }\n else {\n mensajeAlerta('error', tituloFinal, mensajeFinal);\n }\n\n throw new Error(mensajeFinal);\n}\n","import moment from 'moment';\nimport {jwtDecode} from 'jwt-decode';\n\nexport interface JwtTokenResponse {\n access_token: string;\n expires_in: number;\n token_type: string;\n user: any;\n}\n\nexport interface DataSessionStorage {\n tokenStringKey?: string;\n changePasswordKey?: string;\n logoUrl?: string;\n logoLogin?: string;\n backgroundLogin?: string;\n favicon?: string;\n darkMode?: string;\n serverTimestamp?: string;\n apiDataKey?: string;\n}\n\nlet dataSessionStorageKey: DataSessionStorage = {\n tokenStringKey: 'JVSoftTkn',\n changePasswordKey: 'chPwd',\n logoUrl: 'logo_url',\n logoLogin: 'login-logo',\n backgroundLogin: 'login-background',\n favicon: 'favicon',\n darkMode: 'darkMode',\n serverTimestamp: 'srvtmstp',\n apiDataKey: 'reqDt',\n};\nexport let localStorageKeys = dataSessionStorageKey;\n\nexport function inicializarVariablesSessionStorage(datSesion: DataSessionStorage) {\n dataSessionStorageKey = datSesion;\n}\n\nexport function setJwtTokenData(data: string) {\n localStorage.setItem(<string>dataSessionStorageKey.tokenStringKey, data)\n}\nexport function jwtTokenData(key: string = <string>dataSessionStorageKey.tokenStringKey): JwtTokenResponse | null {\n const tokenObj = localStorage.getItem(key);\n try {\n return JSON.parse(<string>tokenObj) as JwtTokenResponse;\n } catch (error) {\n return null;\n }\n}\n\nexport function jwtToken(key: string = <string>dataSessionStorageKey.tokenStringKey) {\n const varJwtTokenData = jwtTokenData(key);\n if (varJwtTokenData) {\n return varJwtTokenData.access_token;\n }\n return '';\n}\n\nexport function jwtTokenExpiracion(key: string = <string>dataSessionStorageKey.tokenStringKey) {\n const jwtStr = jwtToken(key);\n if (!jwtStr) return null;\n try {\n const decodedToken: any = jwtDecode(jwtStr);\n return decodedToken.exp ? decodedToken.exp * 1000:null; // Convertir a milisegundos\n } catch (e) {\n return null;\n }\n}\n\nexport function jwtTokenExpiracionFaltante() {\n return Math.abs(moment().diff(jwtTokenExpiracion(), 'seconds'));\n}\n\nexport function setCambiarPwd(accion: boolean = true) {\n localStorage.setItem(<string>dataSessionStorageKey.changePasswordKey, (accion ? 1:0).toString())\n}\n\nexport function getCambiarPwd() {\n const frmCambioPwd = localStorage.getItem(<string>dataSessionStorageKey.changePasswordKey);\n if (!frmCambioPwd) {\n return null;\n }\n return frmCambioPwd == '1';\n}\n\nexport function delLocalStorage(keyElim: string[] = [\n <string>dataSessionStorageKey.tokenStringKey,\n <string>dataSessionStorageKey.changePasswordKey,\n <string>dataSessionStorageKey.apiDataKey,\n]) {\n keyElim.forEach(key => {\n localStorage.removeItem(key);\n });\n}\n\nexport function getLocalStorage(key: string | undefined) {\n return localStorage.getItem(<string>key);\n}\nexport function setLocalStorage(key: string, value = '') {\n localStorage.setItem(key, value.toString())\n}\n","export function roundToDecimal(number: number, decimal: number): number {\n return parseFloat(number.toFixed(decimal));\n}\n","import {formatDate} from '@angular/common';\nimport {formatearFecha} from './date';\n\nexport function objectPropertiesToType(formFields: Record<string, any>) {\n Object.keys(formFields).filter(control => !!formFields[control]).forEach(control => {\n if (/^dt[a-zA-Z]+/.test(control)) {\n formFields[control] = formatDate(formFields[control], 'yyyy-MM-dd HH:mm', 'es-PE');\n }\n else if (control.startsWith('d')) {\n formFields[control] = formatearFecha(formFields[control]);\n }\n else if (control.startsWith('n')) {\n formFields[control] = Number(formFields[control]);\n }\n });\n\n return formFields;\n}\n\nexport function objectPropertiesBoolean(formFields: Record<string, any>, retorno: 'boolean' | 'bit' = 'boolean') {\n Object.keys(formFields).forEach(control => {\n const valRetorno = (ctrl: any) => {\n switch (retorno) {\n case 'boolean':\n formFields[ctrl] = formFields[ctrl] == 1;\n break;\n case 'bit':\n formFields[ctrl] = formFields[ctrl] ? 1:0;\n break;\n }\n };\n if (control.charAt(0) == 'b' || (control.charAt(0) == 'i' && control.indexOf('Estado') !== -1)) {\n valRetorno(control);\n }\n });\n return formFields;\n}\n","export function generateRandomString(length: number) {\n let result = '';\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n const charactersLength = characters.length;\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * charactersLength));\n }\n return result;\n}\n","import {mensajeAlerta} from './sweetalert';\n\nexport function verificarRUC(ruc: string) {\n const f = [5, 4, 3, 2, 7, 6, 5, 4, 3, 2];\n const rucArray = ruc.split('');\n const nArray = f.map((item, idx) => {\n return item * parseFloat(rucArray[idx]);\n });\n const suma = nArray.reduce((a, b) => a + b, 0);\n const residuo = suma % 11;\n const residuo2 = 11 - residuo;\n // @residuo=CONVERT(Integer,Right(CONVERT(VarChar,@residuo),1))\n const residuo3 = residuo2.toString().charAt(residuo2.toString().length - 1);\n const ultimoCaracter = ruc.toString().charAt(ruc.toString().length - 1);\n if (residuo3 == ultimoCaracter) {\n return true;\n }\n mensajeAlerta('error', 'Datos No válidos', ' El número de RUC no es válido');\n return false;\n}\n","import {AbstractControl, FormControl, FormControlOptions, FormGroup, ValidationErrors, ValidatorFn, Validators} from '@angular/forms';\nimport {esNumero} from '../functions';\n\nexport class DataModel {\n public modelosChk: { [key: string]: boolean | any } = {}; // Usar any para valores dinámicos\n\n public checkbox: ForCheckboxModel;\n\n constructor() {\n this.checkbox = new ForCheckboxModel(this);\n }\n\n generarId(row: any, campoValor: string[] | string, separador = '') {\n if (typeof campoValor == 'string') {\n campoValor = [campoValor];\n }\n return campoValor.map(data => row[data]).join(separador);\n }\n\n // Agrega controles al objeto modelosChk\n agregarControles(lista: any[], idLista: string, limpiar = true, campoValor: string[] | string | null = null, campoValorSeparador = '') {\n\n if (limpiar) {\n this.modelosChk = {};\n }\n\n const asignarValor = (dat: any, idLista: string, campoValor: string, key?: string) => {\n if (!key) {\n key = dat[idLista] + (campoValor.includes('.') ? '':`.${campoValor}`);\n }\n const mat = campoValor.match(/^([in])[A-Z][a-zA-Z]+/);\n if (mat) {\n this.modelosChk[key] = dat[campoValor] * 1;\n }\n else {\n this.modelosChk[key] = dat[campoValor];\n }\n }\n\n\n lista.forEach(dat => {\n if (campoValor === null) {\n // Caso 1: Sin campoValor, se asigna false\n this.modelosChk[dat[idLista]] = false;\n }\n else if (typeof campoValor === 'string') {\n // Caso 2: campoValor es un string\n asignarValor(dat, idLista, campoValor, dat[idLista]);\n }\n else if (campoValorSeparador) {\n const idStr = this.generarId(dat, campoValor, campoValorSeparador);\n // Caso 2: campoValor es un string\n asignarValor(dat, idLista, '.', idStr);\n }\n else {\n // Caso 3: campoValor es un array de strings\n campoValor.forEach(data => asignarValor(dat, idLista, data));\n }\n });\n }\n\n // Establece el estado de un índice\n setState(idx: string, state: boolean) {\n this.modelosChk[idx] = state;\n }\n\n // Obtiene el estado de un índice\n getState(idx: string): boolean | any {\n return this.modelosChk[idx];\n }\n\n getDataMultiple(idx: string) {\n const camposMod = Object.keys(this.modelosChk).filter(key => key.split('.')[0] == idx);\n const vRet: any = {};\n camposMod.forEach(key => {\n vRet[key.split('.')[1]] = this.modelosChk[key];\n });\n return vRet;\n }\n\n // Genera una lista basada en el estado de los índices\n generarLista(tipoRetorno: 'array' | 'object' | null = null, esCampoNumerico = false): string | object | any[] {\n const strLista: string[] = [];\n const objLista: { [key: string]: boolean | any } = {};\n Object.keys(this.modelosChk).forEach(key => {\n if ((esCampoNumerico && esNumero(this.modelosChk[key])) ||\n (this.modelosChk[key])\n ) {\n strLista.push(key);\n objLista[key] = this.modelosChk[key];\n }\n });\n if (tipoRetorno === 'array') {\n return strLista;\n }\n if (tipoRetorno === 'object') {\n return objLista;\n }\n return strLista.join(',');\n }\n\n generarFormGroupFromModelosChk(tipo?: string): FormGroup {\n const formGroupObj: { [key: string]: FormControl } = {};\n let validadores: ValidatorFn | ((control: AbstractControl) => ValidationErrors | null)[] | FormControlOptions | null | undefined = []\n if (tipo == 'number') {\n validadores = [\n Validators.required,\n Validators.min(1)\n ]\n }\n Object.keys(this.modelosChk).forEach(key => {\n formGroupObj[key] = new FormControl(this.modelosChk[key], validadores);\n });\n return new FormGroup(formGroupObj);\n\n // return this.formBuilder.group(formGroupObj);\n }\n}\n\nclass ForCheckboxModel {\n private modeloCheck: DataModel;\n\n constructor(modeloCheck: DataModel) {\n this.modeloCheck = modeloCheck;\n }\n\n get cantidadActivos() {\n return Object.values(this.modeloCheck.modelosChk).filter(Boolean).length;\n }\n\n get existenActivados() {\n return this.cantidadActivos > 0;\n }\n\n get todosActivos() {\n const total = Object.keys(this.modeloCheck.modelosChk).length;\n const activos = this.cantidadActivos;\n return activos > 0 && total === activos;\n }\n\n get algunosActivos() {\n const total = Object.keys(this.modeloCheck.modelosChk).length;\n const activos = this.cantidadActivos;\n return activos > 0 && total !== activos;\n }\n\n establecerTodos(activo: boolean) {\n Object.keys(this.modeloCheck.modelosChk).forEach(idx => this.modeloCheck.modelosChk[idx] = activo);\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n name: 'dataEnLista',\n})\nexport class DataEnListaPipe implements PipeTransform {\n\n transform(coleccion: object[], idBuscar: string | string[], dato: any): any {\n if (coleccion) {\n if (Array.isArray(idBuscar)) {\n return coleccion.find(item => {\n const arrCoincide: any[] = [];\n idBuscar.forEach((campo: string, idx) => {\n // @ts-ignore\n arrCoincide.push((item[campo] == dato[idx]));\n });\n return arrCoincide.every(e => e === true);\n });\n }\n // @ts-ignore\n return coleccion.find(item => item[idBuscar] == dato);\n }\n return null;\n }\n\n // opcSelec(coleccion, idBuscar, formControl) {\n // \tif (coleccion) {\n // \t\tif (formControl.value == '') {\n // \t\t\treturn {cModuloNombre: '', cModuloPadreNombre: 'Todos', iModuloId: ''};\n // \t\t}\n // \t\treturn coleccion.find(item => item[idBuscar] == formControl.value);\n // \t}\n // \treturn null;\n // }\n\n}\n\nexport function dataEnLista(coleccion: object[], idBuscar: string | string[], dato: any): any {\n return new DataEnListaPipe().transform(coleccion, idBuscar, dato);\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n\tname: 'dateDiffString',\n\tpure: true\n})\nexport class DateDiffStringPipe implements PipeTransform {\n\ttransform(startingDate: Date, endingDate: Date): any {\n\t\tlet startDate = new Date(startingDate);\n\t\t// user not pass endingDate then set current date as end date.\n\t\tif (!endingDate) {\n\t\t\tendingDate = new Date();\n\t\t}\n\t\tlet endDate = new Date(endingDate);\n\t\t// chack start date and end date and base on condication alter date.\n\t\tif (startDate > endDate) {\n\t\t\tconst swap = startDate;\n\t\t\tstartDate = endDate;\n\t\t\tendDate = swap;\n\t\t}\n\n\t\tconst disgregado = this.separarMilisegundos(endDate.getTime() - startDate.getTime());\n\t\t// console.log(disgregado);\n\t\tconst formatearATexto = (arrayToFill: string[], campo: any, texto: any, textoPlural = 's') => {\n\t\t\tif (campo > 0) {\n\t\t\t\tarrayToFill.push( campo + ' ' + texto + (campo > 1 ? textoPlural : '') );\n\t\t\t}\n\t\t\treturn arrayToFill;\n\t\t};\n\n\t\tlet arrDFinal: any[] = [];\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.years, 'año');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.months, 'mes', 'es');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.weeks, 'semana');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.days, 'día');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.hours, 'hora');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.minutes, 'minuto');\n\t\tarrDFinal = formatearATexto(arrDFinal, disgregado.seconds, 'segundo');\n\t\tif (arrDFinal.length > 3) {\n\t\t\tarrDFinal.splice(3);\n\t\t\tarrDFinal.splice(-1, 0, 'y');\n\t\t} else {\n\t\t\tif (arrDFinal.length > 1) {\n\t\t\t\tarrDFinal.splice(-1, 0, 'y');\n\t\t\t}\n\t\t}\n\t\treturn arrDFinal.join(' ');\n\t}\n\n\tsepararMilisegundos(milisegundos: any): {\n\t\tyears: number,\n\t\tmonths: number,\n\t\tweeks: number,\n\t\tdays: number,\n\t\thours: number,\n\t\tminutes: number,\n\t\tseconds: number,\n\t} {\n\t\tconst todoEnSegundos = milisegundos / 1000;\n\t\tlet secsUsed = 0;\n\t\tconst years = Math.floor(todoEnSegundos / 31536000);\n\t\tif (years > 0) {\n\t\t\tsecsUsed += (years * 31536000);\n\t\t}\n\t\tconst months = Math.floor((todoEnSegundos - secsUsed) / 2628288);\n\t\tif (months > 0) {\n\t\t\tsecsUsed += (months * 2628288);\n\t\t}\n\t\tconst weeks = Math.floor((todoEnSegundos - secsUsed) / 604800);\n\t\tif (weeks > 0) {\n\t\t\tsecsUsed += (weeks * 604800);\n\t\t}\n\t\tconst days = Math.floor((todoEnSegundos - secsUsed) / 86400);\n\t\tif (days > 0) {\n\t\t\tsecsUsed += (days * 86400);\n\t\t}\n\t\tconst hours = Math.floor((todoEnSegundos - secsUsed) / 3600);\n\t\tif (hours > 0) {\n\t\t\tsecsUsed += (hours * 3600);\n\t\t}\n\t\tconst minutes = Math.floor((todoEnSegundos - secsUsed) / 60);\n\t\tif (minutes > 0) {\n\t\t\tsecsUsed += (minutes * 60);\n\t\t}\n\t\tconst seconds = Math.round(todoEnSegundos - secsUsed);\n\n\t\treturn {\n\t\t\tyears,\n\t\t\tmonths,\n\t\t\tweeks,\n\t\t\tdays,\n\t\t\thours,\n\t\t\tminutes,\n\t\t\tseconds,\n\t\t};\n\t}\n\n/*\n\ttransform(to: Date, from: Date, seconds = true, strict = false): string {\n\t\tif (typeof to == 'string') {\n\t\t\tto = new Date(to);\n\t\t}\n\t\tif (typeof from == 'string') {\n\t\t\tfrom = new Date(from);\n\t\t}\n\t\tconsole.log(typeof to, typeof from);\n\t\tconsole.log(to);\n\t\tconsole.log(from);\n\n\t\treturn strict ? formatDistanceStrict(from, to, {unit: 'minute', locale: es}) : formatDistance(from, to, {includeSeconds: seconds, locale: es});\n\t}\n\t*/\n}\n\nexport function dateDiffString(startingDate: Date, endingDate: Date){\n\treturn new DateDiffStringPipe().transform(startingDate, endingDate);\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\ninterface OpcionesBusqueda {\n texto: string;\n longitudMinima?: number;\n campo?: string | string[];\n mostrarObligado?: MostrarObligado;\n}\n\ninterface MostrarObligado {\n campo: string;\n items: any[];\n}\n\n@Pipe({\n name: 'filtro'\n})\nexport class FiltroPipe implements PipeTransform {\n\n transform(items: any[], opcionesBusqueda: OpcionesBusqueda): any[] {\n if (!items || !Array.isArray(items)) return [];\n if (!opcionesBusqueda.texto || opcionesBusqueda.texto.length < (opcionesBusqueda.longitudMinima ?? 1)) return items;\n\n const normalize = (() => {\n const from = 'ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç';\n const to = 'AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuunncc';\n const mapping: Record<string, string> = {};\n\n for (let i = 0; i < from.length; i++) {\n mapping[from[i]] = to[i];\n }\n\n return (str: string): string => {\n return str.split('').map(c => mapping[c] || c).join('');\n };\n })();\n\n const textoNormalizado = normalize(opcionesBusqueda.texto.toLowerCase());\n\n return items.filter(item => {\n // 🔹 Manejo de `mostrarObligado`\n if (opcionesBusqueda.mostrarObligado) {\n const {campo, items: obligados} = opcionesBusqueda.mostrarObligado;\n if (obligados.includes(item[campo])) return true;\n }\n\n // 🔹 Manejo de `campo`\n if (opcionesBusqueda.campo) {\n if (Array.isArray(opcionesBusqueda.campo)) {\n return opcionesBusqueda.campo.some(campo => {\n const valor = item[campo] as string | undefined;\n return valor ? normalize(valor.toLowerCase()).includes(textoNormalizado):false;\n });\n }\n else {\n const valor = item[opcionesBusqueda.campo] as string | undefined;\n return valor ? normalize(valor.toLowerCase()).includes(textoNormalizado):false;\n }\n }\n\n return false;\n });\n }\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {AbstractControl, Validators} from '@angular/forms';\n\n@Pipe({\n name: 'formControlIsRequired'\n})\nexport class FormControlIsRequiredPipe implements PipeTransform {\n\n\ttransform(formControl: AbstractControl, ...args: unknown[]): any {\n\t\tif (!formControl) { return false; }\n\t\treturn formControl.hasValidator(Validators.required);\n\t}\n\n}\nexport function formControlIsRequired(formControl: AbstractControl) {\n return new FormControlIsRequiredPipe().transform(formControl);\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n\tname: 'jsonParse'\n})\nexport class JsonParsePipe implements PipeTransform {\n\n\ttransform(value: string, ...args: unknown[]): any {\n\t\tif (!value) { return []; }\n\t\ttry {\n\t\t\treturn JSON.parse(value);\n\t\t} catch (e) {\n\t\t\tconsole.warn('La cadena \"' + value + '\" no es JSON');\n\t\t\treturn [];\n\t\t}\n\t}\n\n}\n","import {Pipe, PipeTransform} from '@angular/core';\nimport {DomSanitizer, SafeHtml} from '@angular/platform-browser';\n\n@Pipe({ name: 'noSanitize' })\nexport class NoSanitizePipe implements PipeTransform {\n\tconstructor(private domSanitizer: DomSanitizer) {\n\n\t}\n\ttransform(html: string): SafeHtml {\n\t\treturn this.domSanitizer.bypassSecurityTrustHtml(html);\n\t}\n}\n","import {Pipe, PipeTransform} from '@angular/core';\n\n@Pipe({\n\tname: 'zeroFill',\n})\nexport class ZeroFillPipe implements PipeTransform {\n\n\ttransform(value: unknown, digitos: number, ...args: unknown[]) {\n\t\tlet s = value + '';\n\t\twhile (s.length < digitos) {\n\t\t\ts = '0' + s;\n\t\t}\n\t\treturn s;\n\t}\n\n}\nexport function zeroFill(value: unknown, digitos: number, ...args: unknown[]) {\n\treturn new ZeroFillPipe().transform(value, digitos, args);\n}\n","export type TipoValorFuncion<T> = T | ((...param: any) => T);\n\n// @ts-ignore\nexport function tipoValorFuncion<T>(datoParam, ...param): T {\n if (typeof datoParam === 'function') {\n return datoParam(...param);\n }\n return datoParam;\n}\n","/*\n * Public API Surface of utils\n */\n\nexport * from './classes/data-model';\nexport * from './functions';\nexport * from './pipes';\nexport * from './interfaces';\n// export * from './functions/common.function';\n\n// export * from './lib/utils.component';\n// export * from './lib/utils.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
package/functions/file.d.ts
CHANGED
|
@@ -7,3 +7,4 @@ export declare function getDataArchivoFromPath(value: string, conTimeStamp?: boo
|
|
|
7
7
|
fechaSubida: any;
|
|
8
8
|
};
|
|
9
9
|
export declare function convertirBytes(valor: number, unidadSalida?: string | null, incluirUnidad?: boolean): string | number | null;
|
|
10
|
+
export declare function downLoadFileStream(data: any, type: string, nombreArchivo?: string): void;
|
package/functions/index.d.ts
CHANGED
|
@@ -1,15 +1 @@
|
|
|
1
|
-
export * from './
|
|
2
|
-
export * from './base64';
|
|
3
|
-
export * from './browser';
|
|
4
|
-
export * from './crypto-js';
|
|
5
|
-
export * from './date';
|
|
6
|
-
export * from './file';
|
|
7
|
-
export * from './forms';
|
|
8
|
-
export * from './http-client';
|
|
9
|
-
export * from './local-storage';
|
|
10
|
-
export * from './object-transformation';
|
|
11
|
-
export * from './objects-arrays';
|
|
12
|
-
export * from './string';
|
|
13
|
-
export * from './sweetalert';
|
|
14
|
-
export * from './utiles';
|
|
15
|
-
export * as PdfMake from './formatear-pdfmake';
|
|
1
|
+
export * from './public-api';
|