{"version":3,"file":"ngx-autosave-form.mjs","sources":["../../../projects/ngx-autosave-form/src/autosave-form.directive.ts","../../../projects/ngx-autosave-form/src/autosave-reactive-form.directive.ts","../../../projects/ngx-autosave-form/src/ngx-autosave-form.module.ts","../../../projects/ngx-autosave-form/src/public-api.ts","../../../projects/ngx-autosave-form/src/ngx-autosave-form.ts"],"sourcesContent":["import { Directive, Input, HostListener } from '@angular/core';\nimport { NgForm } from '@angular/forms';\nimport { NgxForm } from './ngxForm.interface';\n\n@Directive({\n  selector: 'form[ngxAutosaveForm]'\n})\nexport class AutosaveFormDirective {\n\n  @Input('id') idStorageKey!: string;\n  @Input('ngxAutosaveForm') ngxAutosaveForm: boolean = true;\n\n  constructor(\n    private ngForm: NgForm\n  ) {\n    (this.ngForm as NgxForm).read = () => { return this.readStorageForm(); };\n    (this.ngForm as NgxForm).clear = () => { this.clearStorageForm(); };\n    (this.ngForm as NgxForm).save = () => { this.saveStorageForm(); };\n  }\n\n  @HostListener('change')\n  onChange() {\n    if (!this.idStorageKey) return;\n    if (this.ngxAutosaveForm) {\n      this.saveStorageForm();\n    }\n  }\n\n  readStorageForm() {\n    if (!this.idStorageKey) return;\n    const formValue = localStorage.getItem(`autosaved-form-${this.idStorageKey}`);\n    return formValue ? JSON.parse(formValue) : null;\n  }\n\n  saveStorageForm() {\n    if (!this.idStorageKey) return;\n    localStorage.setItem(`autosaved-form-${this.idStorageKey}`, JSON.stringify(this.ngForm.value));\n  }\n\n  clearStorageForm() {\n    if (!this.idStorageKey) return;\n    localStorage.removeItem(`autosaved-form-${this.idStorageKey}`);\n  }\n\n}\n","import { Directive, Input, OnDestroy, OnInit } from '@angular/core';\nimport { FormGroupDirective } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\nimport { NgxFormGroup } from './ngxFormGroup.interface';\n\n@Directive({\n  selector: 'form[ngxAutosaveReactiveForm]'\n})\nexport class AutosaveReactiveFormDirective implements OnInit, OnDestroy {\n\n  @Input('id') idStorageKey!: string;\n  @Input('ngxAutosaveReactiveForm') ngxAutosaveReactiveForm: boolean = true;\n  private debounceTime: number = 300;\n  private subscription?: Subscription;\n  \n  constructor(\n    private formGroupDirective: FormGroupDirective\n  ) { }\n\n  ngOnInit(): void {\n    // Extender el FormGroup con métodos personalizados\n    const formGroup = this.formGroupDirective.form as NgxFormGroup;\n    formGroup.read = () => this.readStorageForm();\n    formGroup.clear = () => this.clearStorageForm();\n    formGroup.save = () => this.saveStorageForm();\n\n    // Suscribirse a los cambios del formulario\n    this.subscription = this.formGroupDirective.form.valueChanges\n      .pipe(debounceTime(this.debounceTime))\n      .subscribe(() => {\n        if (this.ngxAutosaveReactiveForm) {\n          this.saveStorageForm();\n        }\n      });\n  }\n\n  ngOnDestroy(): void {\n    this.subscription?.unsubscribe();\n  }\n\n  readStorageForm() {\n    if (!this.idStorageKey) return;\n    const formValue = localStorage.getItem(`autosaved-form-${this.idStorageKey}`);\n    return formValue ? JSON.parse(formValue) : null;\n  }\n\n  saveStorageForm() {\n    if (!this.idStorageKey) return;\n    localStorage.setItem(`autosaved-form-${this.idStorageKey}`, JSON.stringify(this.formGroupDirective.form.value));\n  }\n\n  clearStorageForm() {\n    if (!this.idStorageKey) return;\n    localStorage.removeItem(`autosaved-form-${this.idStorageKey}`);\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { AutosaveFormDirective } from './autosave-form.directive';\nimport { AutosaveReactiveFormDirective } from './autosave-reactive-form.directive';\n\n\n\n@NgModule({\n  declarations: [AutosaveFormDirective, AutosaveReactiveFormDirective],\n  exports: [AutosaveFormDirective, AutosaveReactiveFormDirective]\n})\nexport class NgxAutosaveFormModule { }\n","/*\n * Public API Surface of ngx-autosave-form\n */\n\n\nexport * from './ngx-autosave-form.module';\nexport * from './autosave-form.directive';\nexport * from './autosave-reactive-form.directive';\nexport * from './ngxForm.interface';\nexport * from './ngxFormGroup.interface';\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}