{"version":3,"file":"rut-chileno.mjs","sources":["../../../projects/rut-chileno/src/lib/rut.service.ts","../../../projects/rut-chileno/src/lib/rut.component.ts","../../../projects/rut-chileno/src/lib/rut.module.ts","../../../projects/rut-chileno/src/public-api.ts","../../../projects/rut-chileno/src/rut-chileno.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport { AbstractControl } from '@angular/forms';\nimport { Subject } from 'rxjs';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RutService {\n  private _subject = new Subject<any>();\n\n  constructor() { }\n\n  clearInputService(event: any) {\n    this._subject.next(event);\n  }\n\n  get events$ () {\n    return this._subject.asObservable();\n  }\n\n  rutFormat(value: string): string | undefined {\n    const rut: string = this.rutClean(value);\n    if (rut.length <= 1) {\n      return;\n    }\n \n    let result = `${rut.slice(-4, -1)}-${rut.substr(rut.length - 1)}`;\n    for (let i = 4; i < rut.length; i += 3) {\n      result = `${rut.slice(-3 - i, -i)}.${result}`;\n    }\n\n    return result;\n  }\n\n  rutClean(value: string | undefined): string {\n    return typeof value === 'string' ? value.replace(/[^0-9kK]+/g, '').toUpperCase() : '';\n  }\n  \n  validaRUT(rut: string): boolean {\n    let valor: string = rut;\n    valor = this.rutClean(valor);\n  \n    // Aislar Cuerpo y Dígito Verificador\n    const cuerpo = valor.slice(0, -1);\n    let dv = valor.slice(-1).toUpperCase();\n  \n    // Si no cumple con el mínimo ej. (n.nnn.nnn)\n    if (cuerpo.length < 7 && cuerpo.length >= 0) {\n      return true;\n    }\n  \n    // Calcular Dígito Verificador\n    let suma = 0;\n    let multiplo = 2;\n  \n    // Para cada dígito del Cuerpo\n    for (let i = 1; i <= cuerpo.length; i++) {\n      // Obtener su Producto con el Múltiplo Correspondiente\n      const index = multiplo * Number(valor.charAt(cuerpo.length - i));\n  \n      // Sumar al Contador General\n      suma = suma + index;\n  \n      // Consolidar Múltiplo dentro del rango [2,7]\n      if (multiplo < 7) {\n        multiplo = multiplo + 1;\n      } else {\n        multiplo = 2;\n      }\n    }\n  \n    // Calcular Dígito Verificador en base al Módulo 11\n    const dvEsperado = 11 - (suma % 11);\n  \n    // Casos Especiales (0 y K)\n    dv = dv === 'K' ? '10' : dv;\n    dv = dv === '0' ? '11' : dv;\n  \n    // Validar que el Cuerpo coincide con su Dígito Verificador\n    if (dvEsperado.toString() !== dv && cuerpo.length >= 0) {\n      return true;\n    } else {\n      return false;\n    }\n\n  }\n\n\n  getRutChile(mode: number ,rut: string): string | boolean | undefined {\n\n    if(!this.validaRUT(rut)) {\n      switch (mode) {\n        // el rut limpio 184215551\n        case 0:\n          return this.rutClean(rut);\n        // solo el cuerpo del rut  18421555\n        case 1:\n          let valor: string = rut;\n          valor = this.rutClean(valor);\n          let cuerpo = valor.slice(0, -1);\n          return cuerpo;\n        // rut formateado 18.421.555-1\n        case 2:\n          return this.rutFormat(rut);          \n        // rut cuerpo - digitov : 18421555-1  \n        case 3:\n            let r: string = rut;\n            r = this.rutClean(r);\n            const c = r.slice(0, -1);\n            let dv = r.slice(-1).toUpperCase();\n            return c + '-'+ dv;\n        case 4:\n          let ru: string = rut;\n          ru = this.rutClean(ru);\n          let div = ru.slice(-1).toUpperCase();\n          return div; \n      }\n    } else {\n      return false;\n    }\n      \n  }\n\n\n  validaRutForm(control: AbstractControl): { [key: string]: boolean } | null {\n    \n    if (control.value == null || control.value === 'undefined' || control.value === \"\" ) {\n      // TODO: RETORNA TRUE YA QUE LA IDEA ES USAR Validators.required\n      return null;\n    } else {\n\n      let rut: string = control.value;\n    \n      let valor: string = (rut || '').replace(/[^0-9kK]+/g, '').toUpperCase();\n     \n      // Aislar Cuerpo y Dígito Verificador\n      const cuerpo = valor.slice(0, -1);\n      let dv = valor.slice(-1).toUpperCase();\n    \n      // Si no cumple con el mínimo ej. (n.nnn.nnn)\n      if (cuerpo.length < 7 && cuerpo.length >= 0) {\n        return {\n          rutnovalido: true\n        };\n      }\n    \n      // Calcular Dígito Verificador\n      let suma = 0;\n      let multiplo = 2;\n    \n      // Para cada dígito del Cuerpo\n      for (let i = 1; i <= cuerpo.length; i++) {\n        // Obtener su Producto con el Múltiplo Correspondiente\n        const index = multiplo * Number(valor.charAt(cuerpo.length - i));\n    \n        // Sumar al Contador General\n        suma = suma + index;\n    \n        // Consolidar Múltiplo dentro del rango [2,7]\n        if (multiplo < 7) {\n          multiplo = multiplo + 1;\n        } else {\n          multiplo = 2;\n        }\n      }\n    \n      // Calcular Dígito Verificador en base al Módulo 11\n      const dvEsperado = 11 - (suma % 11);\n    \n      // Casos Especiales (0 y K)\n      dv = dv === 'K' ? '10' : dv;\n      dv = dv === '0' ? '11' : dv;\n    \n      // Validar que el Cuerpo coincide con su Dígito Verificador\n      if (dvEsperado.toString() !== dv && cuerpo.length >= 0) {\n        return {\n          rutnovalido: true\n        };\n      } else {\n        return null;\n      }\n    }\n\n  }\n\n\n  getRutChileForm(mode: number ,rut: string): string | boolean | undefined {\n\n      switch (mode) {\n        case 0: // el rut limpio 184215551\n          return this.rutClean(rut);\n        case 1: // rut formateado 18.421.555-1\n          return this.rutFormat(rut);          \n        case 2: // rut cuerpo - digitov : 18421555-1 \n            let r: string = rut;\n            r = this.rutClean(r);\n            const c = r.slice(0, -1);\n            let dv = r.slice(-1).toUpperCase();\n            return c + '-'+ dv;\n      }\n      \n  }\n\n  isRutEmpy(rut: string) : boolean {\n    return rut ==='' || rut === null || rut === undefined;\n  }\n\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { RutService } from './rut.service';\n\n@Component({\n  selector: 'rut-chile',\n  template: `\n  <input type=\"text\"\n  [(ngModel)] = \"rut_chileno\"\n  (focus)=\"rutFormat($event)\"\n  (keydown)=\"rutFormat($event)\"\n  (keypress)=\"rutFormat($event)\"\n  (keyup)=\"validaRUT($event)\"\n  (blur)=\"validaRUT($event)\"\n  class=\"input-rut rut\" name=\"username\" id=\"rut_chileno\" placeholder=\"Rut\">\n  <small class=\"danger-rut\" [hidden]=\"!validacionRut\">\n      {{msjE}}\n  </small>\n  `,\n  styles: [\n  ]\n})\nexport class RutComponent implements OnInit {\n\n  @Output() rut_emiter = new EventEmitter<string | number | undefined | null >();\n  @Input() mode!: number;\n  @Input() msjError!: string;\n  @Input() obligatorio: boolean = false;\n\n  validacionRut!: boolean;\n  rut_chileno!: string;\n  msjE!:string;\n\n  constructor(private rutService :RutService) { }\n\n  ngOnInit(): void {\n    this.rutService.events$.forEach(event => {\n      if (event) {\n        this.rut_chileno = '';\n        this.rut_emiter.emit(this.rut_chileno);\n      }\n    });\n\n    if(!this.msjError)\n      this.msjE = \"El rut ingresado no es válido.\";\n    else\n      this.msjE = this.msjError;\n  }\n\n  isRutObligatorio() : void  {\n    if (!this.obligatorio) {\n      this.validacionRut = false;\n      this.rut_emiter.emit(undefined);\n    }   \n  }\n\n  isRutEmpy(rut: string) : boolean {\n    return rut ==='' || rut === null || rut === undefined;\n  }\n\n  rutFormat(event: Event): void {\n    const target = event.target as HTMLInputElement;\n\n    const rut: string = this.rutClean(target.value);\n    if (rut.length <= 1) {\n      return;\n    }\n\n    let result = `${rut.slice(-4, -1)}-${rut.substr(rut.length - 1)}`;\n    for (let i = 4; i < rut.length; i += 3) {\n      result = `${rut.slice(-3 - i, -i)}.${result}`;\n    }\n\n    this.rut_chileno = result;    \n    if (this.isRutEmpy(target.value)) this.isRutObligatorio();\n  }\n\n  rutClean(value: string): string {\n    return typeof value === 'string' ? value.replace(/[^0-9kK]+/g, '').toUpperCase() : '';\n  }\n  \n  validaRUT(event: Event): void {\n    const target = event.target as HTMLInputElement;\n    this.validacionRut = this.validaRUT_(target.value);\n    this.rutFormat(event);\n    this.sendEmiterRut(this.rut_chileno);\n    if (this.isRutEmpy(target.value)) this.isRutObligatorio();\n  }\n\n  validaRUT_(rut: string): boolean {\n    let valor: string = rut;\n    valor = this.rutClean(valor);\n  \n    const cuerpo = valor.slice(0, -1);\n    let dv = valor.slice(-1).toUpperCase();\n  \n    if (cuerpo.length < 7 && cuerpo.length >= 0) {\n      return true;\n    }\n  \n    let suma = 0;\n    let multiplo = 2;\n  \n    for (let i = 1; i <= cuerpo.length; i++) {\n      const index = multiplo * Number(valor.charAt(cuerpo.length - i));\n      suma = suma + index;\n      if (multiplo < 7) {\n        multiplo = multiplo + 1;\n      } else {\n        multiplo = 2;\n      }\n    }\n  \n    const dvEsperado = 11 - (suma % 11);\n    dv = dv === 'K' ? '10' : dv;\n    dv = dv === '0' ? '11' : dv;\n  \n    if (dvEsperado.toString() !== dv && cuerpo.length >= 0)\n      return true;\n    else \n      return false;\n  }\n\n  sendEmiterRut(rut: string): void {\n    if(!this.validacionRut) {\n      switch (this.mode) {\n        case 0:\n          this.rut_emiter.emit(this.rutClean(rut));\n          break;\n        case 1:\n          let valor: string = rut;\n          this.rut_emiter.emit(this.rutClean(valor).slice(0, -1));\n          break;\n        case 2:\n          this.rut_emiter.emit(rut);\n          break;\n        case 3:\n            let r: string = rut;\n            this.rut_emiter.emit(this.rutClean(r).slice(0, -1) + '-'+ r.slice(-1).toUpperCase());\n            break;  \n        case 4:\n          let ru: string = rut;\n          this.rut_emiter.emit(this.rutClean(ru).slice(-1).toUpperCase());\n          break;    \n      }\n    } else {\n      this.rut_emiter.emit(undefined);\n    }\n      \n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { RutComponent } from './rut.component';\n\nimport { FormsModule } from '@angular/forms';\n\n\n@NgModule({\n  declarations: [\n    RutComponent\n  ],\n  imports: [\n    FormsModule\n  ],\n  exports: [\n    RutComponent\n  ]\n})\nexport class RutModule { }\n","/*\n * Public API Surface of rut\n */\n\nexport * from './lib/rut.service';\nexport * from './lib/rut.component';\nexport * from './lib/rut.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.RutService"],"mappings":"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"}