@jvsoft/utils 0.0.13-alpha.4 → 0.0.13-alpha.6
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/classes/data-model.d.ts +25 -0
- package/fesm2022/jvsoft-utils-src-functions.mjs +1450 -0
- package/fesm2022/jvsoft-utils-src-functions.mjs.map +1 -0
- package/fesm2022/jvsoft-utils-src-interfaces.mjs +6 -0
- package/fesm2022/jvsoft-utils-src-interfaces.mjs.map +1 -0
- package/fesm2022/jvsoft-utils-src-pipes.mjs +290 -0
- package/fesm2022/jvsoft-utils-src-pipes.mjs.map +1 -0
- package/fesm2022/jvsoft-utils.mjs +1867 -0
- package/fesm2022/jvsoft-utils.mjs.map +1 -0
- package/functions/base64.d.ts +26 -0
- package/functions/browser.d.ts +1 -0
- package/functions/crypto-js.d.ts +2 -0
- package/functions/date.d.ts +3 -0
- package/functions/email.d.ts +2 -0
- package/functions/file.d.ts +10 -0
- package/functions/forms.d.ts +23 -0
- package/functions/http-client.d.ts +2 -0
- package/functions/index.d.ts +1 -0
- package/functions/local-storage.d.ts +29 -0
- package/functions/mat-form-controls/autocomplete.d.ts +51 -0
- package/functions/mat-form-controls/index.d.ts +2 -0
- package/functions/number.d.ts +2 -0
- package/functions/object-transformation.d.ts +2 -0
- package/functions/objects-arrays.d.ts +147 -0
- package/functions/public-api.d.ts +16 -0
- package/functions/string.d.ts +23 -0
- package/functions/sweetalert.d.ts +5 -0
- package/functions/utiles.d.ts +1 -0
- package/index.d.ts +5 -0
- package/{src/interfaces/datos.ts → interfaces/datos.d.ts} +1 -2
- package/interfaces/index.d.ts +1 -0
- package/interfaces/public-api.d.ts +1 -0
- package/package.json +28 -12
- package/pipes/data-en-lista.pipe.d.ts +8 -0
- package/pipes/date-diff-string.pipe.d.ts +17 -0
- package/pipes/filtro.pipe.d.ts +18 -0
- package/pipes/form-control-is-required.pipe.d.ts +9 -0
- package/pipes/index.d.ts +1 -0
- package/pipes/json-parse.pipe.d.ts +7 -0
- package/pipes/no-sanitize.pipe.d.ts +10 -0
- package/pipes/public-api.d.ts +8 -0
- package/pipes/tipo-valor-funcion.pipe.d.ts +9 -0
- package/pipes/zero-fill.pipe.d.ts +8 -0
- package/public-api.d.ts +4 -0
- package/src/functions/base64.d.ts +26 -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/email.d.ts +2 -0
- package/src/functions/file.d.ts +10 -0
- package/src/functions/forms.d.ts +23 -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 +51 -0
- package/src/functions/mat-form-controls/index.d.ts +2 -0
- package/src/functions/number.d.ts +2 -0
- package/src/functions/object-transformation.d.ts +2 -0
- package/src/functions/objects-arrays.d.ts +147 -0
- package/src/functions/public-api.d.ts +16 -0
- package/src/functions/string.d.ts +23 -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/public-api.d.ts +1 -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 +8 -0
- package/src/pipes/tipo-valor-funcion.pipe.d.ts +9 -0
- package/src/pipes/zero-fill.pipe.d.ts +8 -0
- package/CHANGELOG.md +0 -25
- package/ng-package.json +0 -7
- package/src/classes/data-model.ts +0 -150
- package/src/functions/base64.ts +0 -8
- package/src/functions/browser.ts +0 -20
- package/src/functions/crypto-js.ts +0 -29
- package/src/functions/date.ts +0 -23
- package/src/functions/email.ts +0 -17
- package/src/functions/file.ts +0 -138
- package/src/functions/forms.ts +0 -251
- package/src/functions/http-client.ts +0 -110
- package/src/functions/index.ts +0 -1
- package/src/functions/local-storage.ts +0 -102
- package/src/functions/mat-form-controls/autocomplete.ts +0 -205
- package/src/functions/mat-form-controls/index.ts +0 -6
- package/src/functions/ng-package.json +0 -5
- package/src/functions/number.ts +0 -85
- package/src/functions/object-transformation.ts +0 -37
- package/src/functions/objects-arrays.ts +0 -321
- package/src/functions/public-api.ts +0 -19
- package/src/functions/string.ts +0 -68
- package/src/functions/sweetalert.ts +0 -95
- package/src/functions/utiles.ts +0 -20
- package/src/interfaces/index.ts +0 -1
- package/src/interfaces/ng-package.json +0 -5
- package/src/interfaces/otros.ts +0 -0
- package/src/interfaces/public-api.ts +0 -3
- package/src/interfaces/routes.ts +0 -42
- package/src/pipes/data-en-lista.pipe.ts +0 -40
- package/src/pipes/date-diff-string.pipe.ts +0 -117
- package/src/pipes/filtro.pipe.ts +0 -64
- package/src/pipes/form-control-is-required.pipe.ts +0 -17
- package/src/pipes/index.ts +0 -1
- package/src/pipes/json-parse.pipe.ts +0 -18
- package/src/pipes/ng-package.json +0 -5
- package/src/pipes/no-sanitize.pipe.ts +0 -12
- package/src/pipes/public-api.ts +0 -10
- package/src/pipes/tipo-valor-funcion.pipe.ts +0 -23
- package/src/pipes/zero-fill.pipe.ts +0 -19
- package/src/public-api.ts +0 -12
- package/tsconfig.lib.json +0 -18
- package/tsconfig.lib.prod.json +0 -11
- package/tsconfig.spec.json +0 -15
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jvsoft-utils-src-functions.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/email.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/functions/jvsoft-utils-src-functions.ts"],"sourcesContent":["/**\n * Realiza una fusión profunda entre dos objetos, sin modificar el original.\n * Si el valor en target no es un objeto, lo reemplaza directamente.\n *\n * @param source - Objeto fuente que se clonará y fusionará.\n * @param target - Objeto destino cuyos valores se fusionarán.\n * @returns Un nuevo objeto con la fusión profunda.\n */\nexport 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/**\n * Realiza una clonación profunda de un objeto, manejando funciones, fechas y arrays.\n *\n * @param obj - Objeto a clonar.\n * @returns Una copia profunda del objeto.\n */\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 * @param datosFn - Objeto con los parámetros de búsqueda: items, campo, valor y opcionalmente campoHijo.\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;\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\n/**\n * Suma los valores de las propiedades especificadas de un objeto.\n *\n * @param item - Objeto con las propiedades a sumar.\n * @param campos - Array de nombres de las propiedades a sumar.\n * @returns La suma de los valores de las propiedades.\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\n/**\n * Verifica si el valor proporcionado es un número válido.\n *\n * @param value - Valor a verificar.\n * @returns true si es un número, false en caso contrario.\n */\nexport function esNumero(value: any): boolean {\n return !isNaN(Number(value));\n}\n\n/**\n * Suma los valores de las propiedades especificadas en un array de objetos.\n *\n * @param arrayObjetos - Array de objetos a procesar.\n * @param campos - Array de nombres de las propiedades a sumar.\n * @returns Objeto con la suma de cada propiedad.\n */\nexport function sumarObjetos(arrayObjetos: any[], campos: string[]): Record<string, number> {\n return arrayObjetos.reduce((accumulator: Record<string, number>, item: any) => {\n campos.forEach(campo => {\n const valor = Number(item[campo]);\n if (!isNaN(valor)) {\n accumulator[campo] = (accumulator[campo] ?? 0) + valor;\n }\n });\n return accumulator;\n }, {});\n}\n\n/**\n * Obtiene los valores únicos de un array.\n *\n * @param array - Array de valores.\n * @returns Array con los valores únicos.\n */\nexport function getUniqueValues(array: any[]) {\n return array.filter((currentValue, index, arr) => (\n arr.indexOf(currentValue) === index\n ));\n}\n\n/**\n * Obtiene los objetos únicos de un array según una propiedad específica.\n *\n * @param objetos - Array de objetos.\n * @param campo - Nombre de la propiedad para determinar unicidad.\n * @returns Array de objetos únicos por la propiedad.\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/**\n * Ordena un array de valores numéricos o alfabéticos.\n *\n * @param array - Array a ordenar.\n * @param numeros - Si es true, ordena como números.\n * @param sentido - 'ASC' para ascendente, 'DESC' para descendente.\n * @returns Array ordenado.\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\n/**\n * Ordena un array de objetos por una propiedad específica.\n *\n * @param objData - Array de objetos a ordenar.\n * @param propiedad - Propiedad por la que se ordena.\n * @param numeros - (Obsoleto) Si es true, ordena como números.\n * @returns Array ordenado.\n */\nexport function ordenarPorPropiedad(objData: any, propiedad: string, /**@deprecated*/ numeros = false) {\n return ordenarPorPropiedades(objData, {propiedades: [propiedad], direcciones:['asc']});\n}\n\n/**\n * Ordena un array de objetos por varias propiedades y direcciones.\n *\n * @param arr - Array de objetos a ordenar.\n * @param options - Opciones con propiedades y direcciones de orden.\n * @returns Array ordenado.\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\n/**\n * Agrupa los elementos de un array según una clave o función de clave.\n *\n * @param array - Array de objetos a agrupar.\n * @param key - Propiedad o función para agrupar.\n * @returns Objeto con los grupos por clave.\n */\nexport function groupBy<T extends Record<string, any>, K extends keyof T>(\n array: T[],\n key: K | ((obj: T) => string)\n): Record<string, T[]> {\n const keyFn = key instanceof Function ? key:(obj: T) => obj[key];\n return array.reduce((objectsByKeyValue, obj) => {\n const value = keyFn(obj);\n objectsByKeyValue[value] = (objectsByKeyValue[value] || []).concat(obj);\n return objectsByKeyValue;\n }, {} as Record<string, T[]>);\n}\n\n/**\n * Agrupa y anida los elementos de un array según una lista de propiedades.\n *\n * @param arr - Array de objetos a agrupar.\n * @param properties - Propiedades para agrupar de forma anidada.\n * @returns Objeto anidado por los grupos de propiedades.\n */\nexport function nestGroupsBy(arr: any, properties: any) {\n const fnGroupBy = (conversions: any, property2: any) => {\n return conversions.reduce((acc: any, obj: any) => {\n const key = obj[property2];\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(obj);\n return acc;\n }, {});\n };\n properties = Array.from(properties);\n if (properties.length === 1) {\n return fnGroupBy(arr, properties[0]);\n }\n const property = properties.shift();\n const grouped = fnGroupBy(arr, property);\n Object.keys(grouped).forEach(key => {\n grouped[key] = nestGroupsBy(grouped[key], Array.from(properties));\n });\n return grouped;\n}\n\n/**\n * Obtiene un valor de un objeto usando una ruta de propiedad anidada.\n *\n * @param obj - Objeto de entrada.\n * @param path - Ruta en formato punto (ej: \"cliente.orden\").\n * @returns El valor encontrado o undefined si no existe.\n */\nfunction getValueByPath(obj: any, path: string): any {\n return path.split('.').reduce((acc, key) => acc?.[key], obj);\n}\n\n/**\n * Retorna el valor máximo del campo especificado (incluso anidado) en un arreglo de objetos.\n *\n * @param data - Lista de objetos a procesar.\n * @param campo - Nombre del campo a evaluar, puede ser anidado (ej. \"campo.orden\").\n * @param incrementar - Si es true, retorna el valor máximo + 1. Por defecto es true.\n * @returns El valor máximo encontrado, posiblemente incrementado.\n */\nexport function obtenerUltimoOrden(data: any[], campo: string, incrementar: boolean = true): number {\n const max = data.reduce((mayor, item) => {\n const valor = Number(getValueByPath(item, campo)) || 0;\n return valor > mayor ? valor:mayor;\n }, 0);\n\n return incrementar ? max + 1:max;\n}\n\n/**\n * Elimina una o varias columnas específicas (por índice) de una tabla representada como array de arrays.\n *\n * @param data - Array de filas (cada fila debe ser un array).\n * @param columnIndex - Índice o lista de índices de las columnas a eliminar.\n * @returns Nuevo array con las columnas eliminadas.\n */\nexport function eliminarColumnaPorIndex<T extends unknown[][]>(\n data: T,\n columnIndex: number | number[]\n): T {\n if (!Array.isArray(data)) return [] as unknown as T;\n\n // Normalizar a array único y ordenado (descendente para evitar reindexación al splicing)\n const indices: number[] = Array.isArray(columnIndex)\n ? [...new Set(columnIndex)].filter((i) => (typeof i === 'number' && i >= 0)).sort((a, b) => b - a)\n :[columnIndex];\n\n return data.map((row) => {\n if (!Array.isArray(row)) return row;\n\n const newRow = [...row];\n\n for (const index of indices) {\n if (index >= 0 && index < newRow.length) {\n newRow.splice(index, 1);\n }\n }\n\n return newRow as typeof row;\n }) as T;\n}\n\n/**\n * Elimina elementos duplicados de un array de objetos según claves específicas.\n *\n * @param array - Array de objetos.\n * @param claves - Claves para determinar unicidad. Si no se especifica, compara todo el objeto.\n * @returns Array sin duplicados.\n */\nexport function eliminarDuplicados<T extends object>(\n array: T[],\n claves?: (keyof T)[]\n): T[] {\n const unicos = new Map<string, T>();\n\n for (const item of array) {\n const claveUnica = claves && claves.length > 0\n ? claves.map(k => item[k]).join('|')\n : JSON.stringify(item);\n\n if (!unicos.has(claveUnica)) {\n unicos.set(claveUnica, item);\n }\n }\n\n return Array.from(unicos.values());\n}\n\n/**\n * Elimina elementos de un array origen que estén presentes en otro array, según claves específicas.\n *\n * @param origen - Array original.\n * @param elementosAEliminar - Elementos a eliminar del array origen.\n * @param claves - Claves para comparar los objetos. Si no se especifica, compara todo el objeto.\n * @returns Array filtrado sin los elementos eliminados.\n */\nexport function eliminarElementos<T extends object>(\n origen: T[],\n elementosAEliminar: T[],\n claves?: (keyof T)[]\n): T[] {\n const clavesSet = new Set<string>();\n\n for (const item of elementosAEliminar) {\n const key = claves && claves.length > 0\n ? claves.map(k => item[k]).join('|')\n : JSON.stringify(item);\n clavesSet.add(key);\n }\n\n return origen.filter(item => {\n const key = claves && claves.length > 0\n ? claves.map(k => item[k]).join('|')\n : JSON.stringify(item);\n return !clavesSet.has(key);\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\n/**\n * Devuelve un valor de visualización para un elemento buscado.\n * Compatible con listas simples, objetos y campos múltiples.\n */\nexport function mostrarValorEnBusqueda(campos: any, idxSel: any) {\n const buscarEnLista = (lista: any[]) => {\n if (!lista) return null;\n if (campos.campoId === '*object*' || campos.campoId === '*objeto*') {\n return lista.find((x: any) => JSON.stringify(x).trim() === JSON.stringify(idxSel).trim());\n }\n return lista.find((x: any) => x[campos.campoId] === idxSel);\n };\n\n const impDataMostrar = () => {\n let vD = buscarEnLista(campos.lista) || (campos.opcExtra && buscarEnLista(campos.opcExtra));\n if (!vD) return '';\n\n if (Array.isArray(campos.campoValue)) {\n return campos.campoValue.map((vCampo: any) => vD[vCampo] ?? '').join(' - ').trim();\n }\n return (vD[campos.campoValue] ?? '').trim();\n };\n\n if (esNumero(idxSel)) {\n if ((idxSel > 0 && campos.lista?.length) || (idxSel && typeof idxSel === 'object')) {\n return impDataMostrar();\n }\n } else if (campos.lista?.length) {\n return impDataMostrar();\n }\n return '';\n}\n\n/**\n * Filtra datos locales de un array basado en un valor de búsqueda.\n */\nfunction filtrarDatosLocal(data: any[], value: any, campoBuscar: string | string[]) {\n if (!value) return data;\n\n const normalizar = (val: any) => val?.toString()?.toLowerCase() ?? '';\n const esNum = !isNaN(Number(value));\n\n return data.filter(item => {\n const campos = Array.isArray(campoBuscar) ? campoBuscar : [campoBuscar];\n return campos.some(campo => {\n const campoVal = item[campo];\n if (campoVal == null) return false;\n return esNum\n ? campoVal.toString().includes(value.toString())\n : normalizar(campoVal).includes(normalizar(value));\n });\n });\n}\n\n/**\n * Vincula un FormControl a datos locales para autocompletado.\n */\nexport function changeSelectData(objThis: any, { formControl, data, campoBuscar, variableResultado }: {\n formControl: AbstractControl;\n data: any[];\n campoBuscar: string | string[];\n variableResultado: string;\n}) {\n objThis.filtrados[variableResultado] = formControl.valueChanges.pipe(untilDestroyed(objThis)).pipe(\n startWith(''),\n map(value => data ? filtrarDatosLocal(data, value, campoBuscar) : [])\n );\n}\n\n/**\n * Vincula un FormControl a datos locales obtenidos de dataServidor o dataServidorSuscripcion.\n */\nexport function changeSelect(control: any, formControl: AbstractControl, tipo: string, campoBuscar: string | string[], campoFiltro: string | null = null) {\n const filtro = campoFiltro ?? tipo;\n control.filtrados[filtro] = formControl.valueChanges.pipe(untilDestroyed(control)).pipe(\n startWith(''),\n map(value => {\n const partes = tipo.split('.');\n const varN =\n control.dataServidor?.[partes[0]]?.[partes[1]] ??\n control.dataServidor?.[tipo] ??\n control.dataServidorSuscripcion?.[tipo]?.getValue();\n\n return varN ? filtrarDatosLocal(varN, value, campoBuscar) : [];\n })\n );\n}\n\n/**\n * Configuración para changeSelectReformateado.\n */\ninterface ChangeSelectConfig {\n objThis: any;\n tipoReq: string;\n formControl: AbstractControl;\n queryService: any;\n campoId?: string;\n minLength?: number;\n dataExtra?: any;\n dataExtraVariable?: { campo: string; ctrlValue: AbstractControl }[];\n anonimo?: boolean;\n variableResultado?: string;\n}\n\n/**\n * Función genérica para vincular un FormControl con datos desde API o Promise.\n * Preparada para migrar a signals en el futuro.\n */\nexport function changeSelectReformateado(config: ChangeSelectConfig) {\n const {\n objThis,\n tipoReq,\n formControl,\n queryService,\n campoId,\n minLength = 3,\n dataExtra = {},\n dataExtraVariable = [],\n anonimo = false,\n variableResultado = tipoReq,\n } = config;\n\n formControl.valueChanges.pipe(\n debounceTime(500),\n tap(() => {\n objThis.filtrados[variableResultado + 'tmp'] = isObservable(objThis.filtrados[variableResultado])\n ? []\n : objThis.filtrados[variableResultado] || [];\n if (objThis.filtrados[variableResultado] !== objThis.filtrados[variableResultado + 'tmp']) {\n objThis.filtrados[variableResultado] = [];\n }\n objThis.isLoading = true;\n }),\n switchMap(value => {\n if (campoId) {\n const existe = objThis.filtrados[variableResultado + 'tmp']\n .findIndex((item: any) => item[campoId] === value);\n if (existe >= 0) {\n return of({ [tipoReq]: objThis.filtrados[variableResultado + 'tmp'] });\n }\n }\n if (!value || value.length < minLength) {\n objThis.isLoading = false;\n return of({ [tipoReq]: [] });\n }\n const extraVars = Object.fromEntries(dataExtraVariable.map(v => [v.campo, v.ctrlValue.value]));\n const query = queryService.getDataMethod('GET', tipoReq, { ...dataExtra, ...extraVars, txtBuscar: value }, anonimo);\n\n if (esPromise(query)) {\n return query.then((data: any) => ({ [tipoReq]: data[tipoReq] ?? [] }))\n .finally(() => { objThis.isLoading = false; });\n }\n return query.pipe(finalize(() => { objThis.isLoading = false; }));\n })\n ).subscribe((data: any) => {\n objThis.filtrados[variableResultado] = data[tipoReq] ?? [];\n });\n}\n\n/**\n * Alias para compatibilidad.\n */\nexport function changeSelectDataApi(objThis: any, dataFiltro: any) {\n return changeSelectReformateado({\n objThis,\n tipoReq: dataFiltro.tipoReq,\n formControl: dataFiltro.formControl,\n queryService: dataFiltro.queryService,\n campoId: dataFiltro.campoId,\n minLength: dataFiltro.minLength,\n dataExtra: dataFiltro.dataExtra,\n dataExtraVariable: dataFiltro.dataExtraVariable,\n anonimo: dataFiltro.anonimo,\n variableResultado: dataFiltro.variableResultado,\n });\n}\n\n/**\n * Alias para compatibilidad.\n */\nexport function changeSelectApi(control: any, queryService: any, formControl: AbstractControl, tipo: any, dataExtra = {}, dataExtraVariable: any[] | null = null, minLength = 1, anonimo = false) {\n return changeSelectReformateado({\n objThis: control,\n tipoReq: tipo,\n formControl,\n queryService,\n minLength,\n dataExtra,\n dataExtraVariable: dataExtraVariable ?? [],\n anonimo,\n });\n}\n\n/**\n * Comprueba si un valor es una Promesa.\n */\nfunction esPromise(valor: any): valor is Promise<any> {\n return !!valor && typeof valor.then === 'function';\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\n/**\n * Codificar string a Base64 (UTF-8 seguro)\n */\nexport function encodeBase64String(str: string): string {\n const encoder = new TextEncoder();\n const bytes = encoder.encode(str);\n let binary = '';\n bytes.forEach(b => binary += String.fromCharCode(b));\n return btoa(binary);\n}\n\n/**\n * Decodificar Base64 a string (UTF-8 seguro)\n */\nexport function decodeBase64String(b64: string): string {\n const binary = atob(b64);\n const bytes = new Uint8Array(binary.length);\n for (let i = 0; i < binary.length; i++) {\n bytes[i] = binary.charCodeAt(i);\n }\n const decoder = new TextDecoder();\n return decoder.decode(bytes);\n}\n\n/**\n * Codificar un objeto a base64 (UTF-8 seguro)\n */\nexport function encodeBase64Object(obj: any): string {\n return encodeBase64String(JSON.stringify(obj));\n}\n\n/**\n * Decodificar un base64 y obtener el objeto original\n */\nexport function decodeBase64Object<T = any>(b64: string): T {\n return JSON.parse(decodeBase64String(b64));\n}\n\n/**\n * Codificar archivo a Base64 (retorna solo el contenido, sin \"data:...\")\n */\nexport function encodeBase64File(file: File | Blob): Promise<string> {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = () => {\n const result = reader.result as string;\n resolve(result.split(',')[1]); // quita el prefijo \"data:...;base64,\"\n };\n reader.onerror = reject;\n reader.readAsDataURL(file);\n });\n}\n\n/**\n * Decodificar Base64 a Blob (para reconstruir archivos en Angular)\n */\nexport function decodeBase64ToBlob(b64: string, mimeType = 'application/octet-stream'): Blob {\n const byteChars = atob(b64);\n const byteNumbers = new Array(byteChars.length);\n for (let i = 0; i < byteChars.length; i++) {\n byteNumbers[i] = byteChars.charCodeAt(i);\n }\n return new Blob([new Uint8Array(byteNumbers)], { type: mimeType });\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","export function maskEmail(email: string): string {\n const [user, domain] = email.split(\"@\");\n\n if (user.length <= 2) {\n return `${user[0]}***@${domain}`; // 🔹 Si el usuario es muy corto, no se oculta nada\n }\n\n if (user.length <= 4) {\n return `${user[0]}***${user.slice(-1)}@${domain}`; // 🔹 Muestra 1 al inicio y 1 al final\n }\n\n return `${user.slice(0, 2)}***${user.slice(-2)}@${domain}`; // 🔹 Muestra 2 al inicio y 2 al final\n}\n\nexport function isEmail(email: string): boolean {\n return /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email);\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';\nimport moment from \"moment\";\nimport {BehaviorSubject} from 'rxjs';\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\n\nexport interface SetControlDesdeListaConfig<T, V = any> {\n lista$: BehaviorSubject<T[]>;\n formControl?: FormControl<V>;\n formGroup?: FormGroup;\n controlName?: string;\n idProp?: keyof T;\n idValor?: any;\n selector?: (item: T) => V;\n usarPrimeraOpcion?: boolean; // ✅ nuevo\n}\n\nexport function setControlDesdeLista<T, V = any>(\n config: SetControlDesdeListaConfig<T, V>\n): void {\n const lista = config.lista$?.getValue() ?? [];\n\n if (!lista.length) return;\n\n let seleccionado: T | undefined;\n\n if (config.idProp && config.idValor !== undefined) {\n seleccionado = lista.find((item: any) => item[config.idProp] === config.idValor);\n } else if (config.usarPrimeraOpcion) {\n seleccionado = lista[0];\n }\n\n console.log(seleccionado);\n if (!seleccionado) return;\n\n let valor: V;\n\n if (config.selector) {\n valor = config.selector(seleccionado);\n } else if (config.idProp) {\n valor = seleccionado[config.idProp] as V;\n } else {\n valor = seleccionado as unknown as V;\n }\n\n if (config.formControl) {\n config.formControl.setValue(valor);\n } else if (config.formGroup && config.controlName) {\n const control = config.formGroup.get(config.controlName);\n if (control instanceof FormControl) {\n (control as FormControl<V>).setValue(valor);\n }\n }\n}\n\n\nexport function transformarFechasPorNombreDeCampo<T extends Record<string, any>>(formValue: T): T {\n const retData: any = {};\n\n Object.entries(formValue).forEach(([key, value]) => {\n\n // ✅ No procesar Blob o File\n if (value instanceof Blob || value instanceof File) {\n retData[key] = value;\n return;\n }\n\n if (value instanceof Date) {\n if (/^d[A-Za-z]+/.test(key)) {\n retData[key] = moment(value).format('YYYY-MM-DD');\n } else {\n retData[key] = new Date(Date.UTC(\n value.getFullYear(),\n value.getMonth(),\n value.getDate(),\n value.getHours(),\n value.getMinutes(),\n value.getSeconds()\n ));\n }\n } else if (/^dt[A-Za-z]+/.test(key) && typeof value === 'string') {\n if (/\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}:\\d{2}\\.\\d{3}/.test(value)) {\n retData[key] = new Date(value + 'Z');\n } else if (/\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}/.test(value) || /\\d{4}-\\d{2}-\\d{2}\\s\\d{2}:\\d{2}/.test(value)) {\n retData[key] = new Date(value + ':00.000Z');\n } else {\n console.warn('FECHA INVALIDA AL ENVIAR (FormInter):', key, value);\n retData[key] = value;\n }\n } else if (Array.isArray(value)) {\n if (value.every(v => v instanceof File || v instanceof Blob)) {\n retData[key] = value;\n } else {\n retData[key] = value.map(item =>\n typeof item === 'object' && item !== null\n ? transformarFechasPorNombreDeCampo(item)\n : item\n );\n }\n } else if (typeof value === 'object' && value !== null) {\n retData[key] = transformarFechasPorNombreDeCampo(value);\n } else {\n retData[key] = value;\n }\n });\n\n return retData;\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?.error?.message ?? '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\nexport function numberToWords(num: number): string {\n if (num === 0) return 'cero';\n if (num < 0) return 'menos ' + numberToWords(Math.abs(num));\n if (num > 999999999999) return 'número demasiado grande';\n\n const ones = ['', 'un', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', 'ocho', 'nueve'];\n const onesFinal = ['', 'uno', 'dos', 'tres', 'cuatro', 'cinco', 'seis', 'siete', 'ocho', 'nueve'];\n const tens = ['', 'diez', 'veinte', 'treinta', 'cuarenta', 'cincuenta', 'sesenta', 'setenta', 'ochenta', 'noventa'];\n const teens = ['diez', 'once', 'doce', 'trece', 'catorce', 'quince', 'dieciséis', 'diecisiete', 'dieciocho', 'diecinueve'];\n const hundreds = ['', 'ciento', 'doscientos', 'trescientos', 'cuatrocientos', 'quinientos', 'seiscientos', 'setecientos', 'ochocientos', 'novecientos'];\n\n // Función auxiliar para \"un\"/\"uno\"\n const getOneForm = (n: number, isFinal: boolean): string =>\n n === 1 ? (isFinal ? 'uno':'un'):onesFinal[n];\n\n let words = '';\n\n // Miles de millones (ahora sí se ejecuta)\n if (num >= 1000000000) {\n const billions = Math.floor(num / 1000000000);\n words += (billions === 1 ? 'mil':numberToWords(billions) + ' mil') + ' millones ';\n num %= 1000000000;\n }\n\n // Millones\n if (num >= 1000000) {\n const millions = Math.floor(num / 1000000);\n words += millions === 1 ? 'un millón ':numberToWords(millions) + ' millones ';\n num %= 1000000;\n }\n\n // Miles\n if (num >= 1000) {\n const thousands = Math.floor(num / 1000);\n words += thousands === 1 ? 'mil ':numberToWords(thousands) + ' mil ';\n num %= 1000;\n }\n\n // Centenas (con tratamiento especial para \"ciento uno\")\n if (num >= 100) {\n if (num === 100) {\n words += 'cien';\n num = 0;\n }\n else {\n words += hundreds[Math.floor(num / 100)];\n num %= 100;\n if (num > 0) {\n words += ' ' + getOneForm(num, true); // Siempre \"uno\" después de ciento\n num = 0;\n }\n }\n }\n\n // Decenas y unidades\n if (num > 0) {\n const isFinalWord = words === '';\n\n if (num < 10) {\n words += getOneForm(num, isFinalWord);\n }\n else if (num < 20) {\n words += teens[num - 10];\n }\n else if (num < 30) {\n if (num === 21) words += 'veintiuno';\n else if (num === 22) words += 'veintidós';\n else if (num === 23) words += 'veintitrés';\n else if (num === 26) words += 'veintiséis';\n else words += `veinti${onesFinal[num % 10]}`;\n }\n else {\n words += tens[Math.floor(num / 10)];\n if (num % 10 > 0) {\n words += ' y ' + getOneForm(num % 10, isFinalWord);\n }\n }\n }\n\n return words.trim().replace(/\\s+/g, ' ');\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\n/**\n * Obtiene el host (hostname) de una URL o cadena host[:port].\n * Opcionalmente puede devolver también el puerto si está presente.\n *\n * - Acepta inputs como:\n * 'https://example.com/path', 'example.com:3000', 'localhost', 'http://[::1]:4200'\n * - Usa la API URL cuando es posible (más robusta) y cae a un regex de respaldo.\n *\n * @param url Cadena que representa una URL o host\n * @param options\n * @param options.includePort Si es true, incluye\":puerto\" cuando exista (por defecto false)\n * @param options.includeProtocol Incluye \"http://\" o \"https://\" según corresponda (por defecto false)\n */\nexport function obtenerHostDesdeUrl(\n url: string | null | undefined,\n options?: { includePort?: boolean; includeProtocol?: boolean }\n): string | null {\n if (!url) return null;\n\n const includePort = !!options?.includePort;\n const includeProtocol = !!options?.includeProtocol;\n\n // Intentar con API URL\n try {\n const candidate = url.includes('://') ? url : `http://${url}`;\n const parsed = new URL(candidate);\n\n const protocol = includeProtocol ? `${parsed.protocol}//` : '';\n const hostname = parsed.hostname;\n const port = parsed.port;\n\n if (!hostname) return null;\n\n return `${protocol}${hostname}${includePort && port ? `:${port}` : ''}`;\n } catch {\n // Regex fallback\n const regex =\n /^(?:(?<protocol>[a-z]+):\\/\\/)?(?:www\\.)?(?<host>\\[[^\\]]+\\]|[A-Za-z0-9.-]+)(?::(?<port>\\d{1,5}))?/;\n const match = String(url).match(regex);\n if (!match?.groups) return null;\n\n let host = match.groups['host'];\n if (host.startsWith('[') && host.endsWith(']')) {\n host = host.slice(1, -1);\n }\n const port = match.groups['port'];\n const protocol = includeProtocol ? `${match.groups['protocol'] ?? 'http'}://` : '';\n\n return `${protocol}${host}${includePort && port ? `:${port}` : ''}`;\n }\n}\n\n\n/** @deprecated Alias compatible (deprecated) — preferir usar `obtenerHostDesdeUrl`. */\nexport const extraerDominio = (\n url: string | null | undefined,\n options?: { includePort?: boolean; includeProtocol?: boolean }\n) => obtenerHostDesdeUrl(url, options);\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","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jvsoft-utils-src-interfaces.mjs","sources":["../../../projects/utils/src/interfaces/public-api.ts","../../../projects/utils/src/interfaces/jvsoft-utils-src-interfaces.ts"],"sourcesContent":["export * from './datos';\n// export * from './otros';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"AACA;;ACDA;;AAEG"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Pipe } from '@angular/core';
|
|
3
|
+
import { Validators } from '@angular/forms';
|
|
4
|
+
import * as i1 from '@angular/platform-browser';
|
|
5
|
+
|
|
6
|
+
class DataEnListaPipe {
|
|
7
|
+
transform(coleccion, idBuscar, dato) {
|
|
8
|
+
if (coleccion) {
|
|
9
|
+
if (Array.isArray(idBuscar)) {
|
|
10
|
+
return coleccion.find(item => {
|
|
11
|
+
const arrCoincide = [];
|
|
12
|
+
idBuscar.forEach((campo, idx) => {
|
|
13
|
+
// @ts-ignore
|
|
14
|
+
arrCoincide.push((item[campo] == dato[idx]));
|
|
15
|
+
});
|
|
16
|
+
return arrCoincide.every(e => e === true);
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
// @ts-ignore
|
|
20
|
+
return coleccion.find(item => item[idBuscar] == dato);
|
|
21
|
+
}
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DataEnListaPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
25
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: DataEnListaPipe, isStandalone: true, name: "dataEnLista" });
|
|
26
|
+
}
|
|
27
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DataEnListaPipe, decorators: [{
|
|
28
|
+
type: Pipe,
|
|
29
|
+
args: [{
|
|
30
|
+
name: 'dataEnLista',
|
|
31
|
+
}]
|
|
32
|
+
}] });
|
|
33
|
+
function dataEnLista(coleccion, idBuscar, dato) {
|
|
34
|
+
return new DataEnListaPipe().transform(coleccion, idBuscar, dato);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
class DateDiffStringPipe {
|
|
38
|
+
transform(startingDate, endingDate) {
|
|
39
|
+
let startDate = new Date(startingDate);
|
|
40
|
+
// user not pass endingDate then set current date as end date.
|
|
41
|
+
if (!endingDate) {
|
|
42
|
+
endingDate = new Date();
|
|
43
|
+
}
|
|
44
|
+
let endDate = new Date(endingDate);
|
|
45
|
+
// chack start date and end date and base on condication alter date.
|
|
46
|
+
if (startDate > endDate) {
|
|
47
|
+
const swap = startDate;
|
|
48
|
+
startDate = endDate;
|
|
49
|
+
endDate = swap;
|
|
50
|
+
}
|
|
51
|
+
const disgregado = this.separarMilisegundos(endDate.getTime() - startDate.getTime());
|
|
52
|
+
// console.log(disgregado);
|
|
53
|
+
const formatearATexto = (arrayToFill, campo, texto, textoPlural = 's') => {
|
|
54
|
+
if (campo > 0) {
|
|
55
|
+
arrayToFill.push(campo + ' ' + texto + (campo > 1 ? textoPlural : ''));
|
|
56
|
+
}
|
|
57
|
+
return arrayToFill;
|
|
58
|
+
};
|
|
59
|
+
let arrDFinal = [];
|
|
60
|
+
arrDFinal = formatearATexto(arrDFinal, disgregado.years, 'año');
|
|
61
|
+
arrDFinal = formatearATexto(arrDFinal, disgregado.months, 'mes', 'es');
|
|
62
|
+
arrDFinal = formatearATexto(arrDFinal, disgregado.weeks, 'semana');
|
|
63
|
+
arrDFinal = formatearATexto(arrDFinal, disgregado.days, 'día');
|
|
64
|
+
arrDFinal = formatearATexto(arrDFinal, disgregado.hours, 'hora');
|
|
65
|
+
arrDFinal = formatearATexto(arrDFinal, disgregado.minutes, 'minuto');
|
|
66
|
+
arrDFinal = formatearATexto(arrDFinal, disgregado.seconds, 'segundo');
|
|
67
|
+
if (arrDFinal.length > 3) {
|
|
68
|
+
arrDFinal.splice(3);
|
|
69
|
+
arrDFinal.splice(-1, 0, 'y');
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
if (arrDFinal.length > 1) {
|
|
73
|
+
arrDFinal.splice(-1, 0, 'y');
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return arrDFinal.join(' ');
|
|
77
|
+
}
|
|
78
|
+
separarMilisegundos(milisegundos) {
|
|
79
|
+
const todoEnSegundos = milisegundos / 1000;
|
|
80
|
+
let secsUsed = 0;
|
|
81
|
+
const years = Math.floor(todoEnSegundos / 31536000);
|
|
82
|
+
if (years > 0) {
|
|
83
|
+
secsUsed += (years * 31536000);
|
|
84
|
+
}
|
|
85
|
+
const months = Math.floor((todoEnSegundos - secsUsed) / 2628288);
|
|
86
|
+
if (months > 0) {
|
|
87
|
+
secsUsed += (months * 2628288);
|
|
88
|
+
}
|
|
89
|
+
const weeks = Math.floor((todoEnSegundos - secsUsed) / 604800);
|
|
90
|
+
if (weeks > 0) {
|
|
91
|
+
secsUsed += (weeks * 604800);
|
|
92
|
+
}
|
|
93
|
+
const days = Math.floor((todoEnSegundos - secsUsed) / 86400);
|
|
94
|
+
if (days > 0) {
|
|
95
|
+
secsUsed += (days * 86400);
|
|
96
|
+
}
|
|
97
|
+
const hours = Math.floor((todoEnSegundos - secsUsed) / 3600);
|
|
98
|
+
if (hours > 0) {
|
|
99
|
+
secsUsed += (hours * 3600);
|
|
100
|
+
}
|
|
101
|
+
const minutes = Math.floor((todoEnSegundos - secsUsed) / 60);
|
|
102
|
+
if (minutes > 0) {
|
|
103
|
+
secsUsed += (minutes * 60);
|
|
104
|
+
}
|
|
105
|
+
const seconds = Math.round(todoEnSegundos - secsUsed);
|
|
106
|
+
return {
|
|
107
|
+
years,
|
|
108
|
+
months,
|
|
109
|
+
weeks,
|
|
110
|
+
days,
|
|
111
|
+
hours,
|
|
112
|
+
minutes,
|
|
113
|
+
seconds,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DateDiffStringPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
117
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: DateDiffStringPipe, isStandalone: true, name: "dateDiffString" });
|
|
118
|
+
}
|
|
119
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: DateDiffStringPipe, decorators: [{
|
|
120
|
+
type: Pipe,
|
|
121
|
+
args: [{
|
|
122
|
+
name: 'dateDiffString',
|
|
123
|
+
pure: true
|
|
124
|
+
}]
|
|
125
|
+
}] });
|
|
126
|
+
function dateDiffString(startingDate, endingDate) {
|
|
127
|
+
return new DateDiffStringPipe().transform(startingDate, endingDate);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
class FiltroPipe {
|
|
131
|
+
transform(items, opcionesBusqueda) {
|
|
132
|
+
if (!items || !Array.isArray(items))
|
|
133
|
+
return [];
|
|
134
|
+
if (!opcionesBusqueda.texto || opcionesBusqueda.texto.length < (opcionesBusqueda.longitudMinima ?? 1))
|
|
135
|
+
return items;
|
|
136
|
+
const normalize = (() => {
|
|
137
|
+
const from = 'ÃÀÁÄÂÈÉËÊÌÍÏÎÒÓÖÔÙÚÜÛãàáäâèéëêìíïîòóöôùúüûÑñÇç';
|
|
138
|
+
const to = 'AAAAAEEEEIIIIOOOOUUUUaaaaaeeeeiiiioooouuuunncc';
|
|
139
|
+
const mapping = {};
|
|
140
|
+
for (let i = 0; i < from.length; i++) {
|
|
141
|
+
mapping[from[i]] = to[i];
|
|
142
|
+
}
|
|
143
|
+
return (str) => {
|
|
144
|
+
return str.split('').map(c => mapping[c] || c).join('');
|
|
145
|
+
};
|
|
146
|
+
})();
|
|
147
|
+
const textoNormalizado = normalize(opcionesBusqueda.texto.toLowerCase());
|
|
148
|
+
return items.filter(item => {
|
|
149
|
+
// 🔹 Manejo de `mostrarObligado`
|
|
150
|
+
if (opcionesBusqueda.mostrarObligado) {
|
|
151
|
+
const { campo, items: obligados } = opcionesBusqueda.mostrarObligado;
|
|
152
|
+
if (obligados.includes(item[campo]))
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
// 🔹 Manejo de `campo`
|
|
156
|
+
if (opcionesBusqueda.campo) {
|
|
157
|
+
if (Array.isArray(opcionesBusqueda.campo)) {
|
|
158
|
+
return opcionesBusqueda.campo.some(campo => {
|
|
159
|
+
const valor = item[campo];
|
|
160
|
+
return valor ? normalize(valor.toLowerCase()).includes(textoNormalizado) : false;
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
const valor = item[opcionesBusqueda.campo];
|
|
165
|
+
return valor ? normalize(valor.toLowerCase()).includes(textoNormalizado) : false;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return false;
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FiltroPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
172
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: FiltroPipe, isStandalone: true, name: "filtro" });
|
|
173
|
+
}
|
|
174
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FiltroPipe, decorators: [{
|
|
175
|
+
type: Pipe,
|
|
176
|
+
args: [{
|
|
177
|
+
name: 'filtro'
|
|
178
|
+
}]
|
|
179
|
+
}] });
|
|
180
|
+
|
|
181
|
+
class FormControlIsRequiredPipe {
|
|
182
|
+
transform(formControl, ...args) {
|
|
183
|
+
if (!formControl) {
|
|
184
|
+
return false;
|
|
185
|
+
}
|
|
186
|
+
return formControl.hasValidator(Validators.required);
|
|
187
|
+
}
|
|
188
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormControlIsRequiredPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
189
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: FormControlIsRequiredPipe, isStandalone: true, name: "formControlIsRequired" });
|
|
190
|
+
}
|
|
191
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: FormControlIsRequiredPipe, decorators: [{
|
|
192
|
+
type: Pipe,
|
|
193
|
+
args: [{
|
|
194
|
+
name: 'formControlIsRequired'
|
|
195
|
+
}]
|
|
196
|
+
}] });
|
|
197
|
+
function formControlIsRequired(formControl) {
|
|
198
|
+
return new FormControlIsRequiredPipe().transform(formControl);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
class JsonParsePipe {
|
|
202
|
+
transform(value, ...args) {
|
|
203
|
+
if (!value) {
|
|
204
|
+
return [];
|
|
205
|
+
}
|
|
206
|
+
try {
|
|
207
|
+
return JSON.parse(value);
|
|
208
|
+
}
|
|
209
|
+
catch (e) {
|
|
210
|
+
console.warn('La cadena "' + value + '" no es JSON');
|
|
211
|
+
return [];
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JsonParsePipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
215
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: JsonParsePipe, isStandalone: true, name: "jsonParse" });
|
|
216
|
+
}
|
|
217
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: JsonParsePipe, decorators: [{
|
|
218
|
+
type: Pipe,
|
|
219
|
+
args: [{
|
|
220
|
+
name: 'jsonParse'
|
|
221
|
+
}]
|
|
222
|
+
}] });
|
|
223
|
+
|
|
224
|
+
class NoSanitizePipe {
|
|
225
|
+
domSanitizer;
|
|
226
|
+
constructor(domSanitizer) {
|
|
227
|
+
this.domSanitizer = domSanitizer;
|
|
228
|
+
}
|
|
229
|
+
transform(html) {
|
|
230
|
+
return this.domSanitizer.bypassSecurityTrustHtml(html);
|
|
231
|
+
}
|
|
232
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoSanitizePipe, deps: [{ token: i1.DomSanitizer }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
233
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: NoSanitizePipe, isStandalone: true, name: "noSanitize" });
|
|
234
|
+
}
|
|
235
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: NoSanitizePipe, decorators: [{
|
|
236
|
+
type: Pipe,
|
|
237
|
+
args: [{ name: 'noSanitize' }]
|
|
238
|
+
}], ctorParameters: () => [{ type: i1.DomSanitizer }] });
|
|
239
|
+
|
|
240
|
+
class TipoValorFuncionPipe {
|
|
241
|
+
transform(datoParam, defaultValue, ...param) {
|
|
242
|
+
if (datoParam === undefined || datoParam === null) {
|
|
243
|
+
return defaultValue;
|
|
244
|
+
}
|
|
245
|
+
if (typeof datoParam === 'function') {
|
|
246
|
+
return datoParam(...param);
|
|
247
|
+
}
|
|
248
|
+
return datoParam;
|
|
249
|
+
}
|
|
250
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TipoValorFuncionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
251
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: TipoValorFuncionPipe, isStandalone: true, name: "tipoValorFuncion" });
|
|
252
|
+
}
|
|
253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: TipoValorFuncionPipe, decorators: [{
|
|
254
|
+
type: Pipe,
|
|
255
|
+
args: [{
|
|
256
|
+
name: 'tipoValorFuncion',
|
|
257
|
+
standalone: true, // Para usarlo en standalone components
|
|
258
|
+
}]
|
|
259
|
+
}] });
|
|
260
|
+
function tipoValorFuncion(datoParam, defaultValue, ...param) {
|
|
261
|
+
return new TipoValorFuncionPipe().transform(datoParam, defaultValue, ...param);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
class ZeroFillPipe {
|
|
265
|
+
transform(value, digitos, ...args) {
|
|
266
|
+
let s = value + '';
|
|
267
|
+
while (s.length < digitos) {
|
|
268
|
+
s = '0' + s;
|
|
269
|
+
}
|
|
270
|
+
return s;
|
|
271
|
+
}
|
|
272
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ZeroFillPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
273
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.14", ngImport: i0, type: ZeroFillPipe, isStandalone: true, name: "zeroFill" });
|
|
274
|
+
}
|
|
275
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.14", ngImport: i0, type: ZeroFillPipe, decorators: [{
|
|
276
|
+
type: Pipe,
|
|
277
|
+
args: [{
|
|
278
|
+
name: 'zeroFill',
|
|
279
|
+
}]
|
|
280
|
+
}] });
|
|
281
|
+
function zeroFill(value, digitos, ...args) {
|
|
282
|
+
return new ZeroFillPipe().transform(value, digitos, args);
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Generated bundle index. Do not edit.
|
|
287
|
+
*/
|
|
288
|
+
|
|
289
|
+
export { DataEnListaPipe, DateDiffStringPipe, FiltroPipe, FormControlIsRequiredPipe, JsonParsePipe, NoSanitizePipe, TipoValorFuncionPipe, ZeroFillPipe, dataEnLista, dateDiffString, formControlIsRequired, tipoValorFuncion, zeroFill };
|
|
290
|
+
//# sourceMappingURL=jvsoft-utils-src-pipes.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jvsoft-utils-src-pipes.mjs","sources":["../../../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/tipo-valor-funcion.pipe.ts","../../../projects/utils/src/pipes/zero-fill.pipe.ts","../../../projects/utils/src/pipes/jvsoft-utils-src-pipes.ts"],"sourcesContent":["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\nexport type TipoValorFuncion<T> = T | ((...param: any) => T);\n\n@Pipe({\n name: 'tipoValorFuncion',\n standalone: true, // Para usarlo en standalone components\n})\nexport class TipoValorFuncionPipe implements PipeTransform {\n transform<T>(datoParam: TipoValorFuncion<T>, defaultValue?: T, ...param: any[]): T | undefined {\n if (datoParam === undefined || datoParam === null) {\n return defaultValue;\n }\n if (typeof datoParam === 'function') {\n return (datoParam as (...args: any) => T)(...param);\n }\n return datoParam;\n }\n}\n\nexport function tipoValorFuncion<T>(datoParam: TipoValorFuncion<T>, defaultValue?: T, ...param: any[]): T | undefined {\n return new TipoValorFuncionPipe().transform(datoParam, defaultValue, ...param);\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 * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|