{"version":3,"file":"ngx-cleave-directive.mjs","sources":["../../../projects/ngx-cleave-directive/src/lib/ngx-cleave.directive.ts","../../../projects/ngx-cleave-directive/src/lib/ngx-cleave-directive.module.ts","../../../projects/ngx-cleave-directive/src/lib/index.ts","../../../projects/ngx-cleave-directive/src/lib/ngx-cleave-directive.ts"],"sourcesContent":["import {\n  Directive,\n  ElementRef,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport Cleave from 'cleave.js';\nimport { CleaveOptions } from 'cleave.js/options';\n\n@Directive({\n  selector: 'input[cleave],textarea[cleave]',\n})\nexport class NgxCleaveDirective implements OnInit, OnDestroy {\n\n  @Input('rawValue') rawValue = false;\n\n  @Input('cleave') set cleave (cleave: CleaveOptions) {\n    this._cleave = cleave;\n    this.setCleave();\n  }\n\n  get cleave () {\n    return this._cleave;\n  }\n\n  private _cleave!: CleaveOptions;\n  private cleaveInstance?: Cleave;\n  private viewToModelUpdate = this.ngControl?.viewToModelUpdate;\n\n  constructor (\n    private elementRef: ElementRef,\n    @Optional() private ngControl: NgControl,\n  ) {\n    if (!this.ngControl) {\n      throw new Error(\n        'NgxCleaveDirective: should be used with one of the following form directives — ngModel, formControl or formControlName.');\n    }\n  }\n\n  ngOnInit () {\n    if (this.ngControl) {\n      // the parameter is not used in the patched method,\n      this.ngControl.viewToModelUpdate = (_: any) => {\n        this.viewToModelUpdate?.call(\n          this.ngControl,\n          // update model with the value got from the Cleave instance\n          this.rawValue\n            ? this.cleaveInstance?.getRawValue()\n            : this.cleaveInstance?.getFormattedValue(),\n        );\n      };\n    }\n  }\n\n  ngOnDestroy () {\n    if (this.ngControl) {\n      this.ngControl.viewToModelUpdate = this.viewToModelUpdate;\n    }\n\n    this.cleaveInstance?.destroy();\n\n  }\n\n  private setCleave () {\n    this.cleaveInstance?.destroy();\n\n    this.cleaveInstance = new Cleave(\n      this.elementRef.nativeElement,\n      {\n      ...this.cleave,\n      onValueChanged: ({ target }) => {\n        // trigger the update with an empty string\n        this.ngControl.viewToModelUpdate('');\n\n        if (this.cleave.onValueChanged && typeof this.cleave.onValueChanged === 'function') {\n          this.cleave.onValueChanged({ target });\n        }\n      },\n    });\n\n    if (!this.rawValue) {\n      // initially format the value, which will trigger onValueChanged to call viewToModelUpdate\n      setTimeout(() => this.cleaveInstance?.setRawValue(this.ngControl.value), 0);\n    }\n  }\n\n}\n","import { NgModule } from '@angular/core';\nimport { NgxCleaveDirective } from './ngx-cleave.directive';\n\n@NgModule({\n  imports: [],\n  declarations: [NgxCleaveDirective],\n  exports: [NgxCleaveDirective],\n})\nexport class NgxCleaveDirectiveModule {\n}\n","/*\n * Public API Surface of ngx-cleave-directive\n */\n\nexport * from './ngx-cleave.directive';\nexport * from './ngx-cleave-directive.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAgBa,kBAAkB;IAiB7B,YACU,UAAsB,EACV,SAAoB;QADhC,eAAU,GAAV,UAAU,CAAY;QACV,cAAS,GAAT,SAAS,CAAW;QAjBvB,aAAQ,GAAG,KAAK,CAAC;QAa5B,sBAAiB,GAAG,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;QAM5D,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,MAAM,IAAI,KAAK,CACb,yHAAyH,CAAC,CAAC;SAC9H;KACF;IArBD,IAAqB,MAAM,CAAE,MAAqB;QAChD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAgBD,QAAQ;QACN,IAAI,IAAI,CAAC,SAAS,EAAE;;YAElB,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,CAAC,CAAM;gBACxC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAC1B,IAAI,CAAC,SAAS;;gBAEd,IAAI,CAAC,QAAQ;sBACT,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE;sBAClC,IAAI,CAAC,cAAc,EAAE,iBAAiB,EAAE,CAC7C,CAAC;aACH,CAAC;SACH;KACF;IAED,WAAW;QACT,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAC3D;QAED,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;KAEhC;IAEO,SAAS;QACf,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,CAAC;QAE/B,IAAI,CAAC,cAAc,GAAG,IAAI,MAAM,CAC9B,IAAI,CAAC,UAAU,CAAC,aAAa,EAC7B;YACA,GAAG,IAAI,CAAC,MAAM;YACd,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE;;gBAEzB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gBAErC,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,KAAK,UAAU,EAAE;oBAClF,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;iBACxC;aACF;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;;YAElB,UAAU,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;SAC7E;KACF;;qJAxEU,kBAAkB;yIAAlB,kBAAkB;2FAAlB,kBAAkB;kBAH9B,SAAS;mBAAC;oBACT,QAAQ,EAAE,gCAAgC;iBAC3C;;0BAoBI,QAAQ;4CAjBQ,QAAQ;sBAA1B,KAAK;uBAAC,UAAU;gBAEI,MAAM;sBAA1B,KAAK;uBAAC,QAAQ;;;MCZJ,wBAAwB;;2JAAxB,wBAAwB;4JAAxB,wBAAwB,iBAHpB,kBAAkB,aACvB,kBAAkB;4JAEjB,wBAAwB,YAJ1B,EAAE;2FAIA,wBAAwB;kBALpC,QAAQ;mBAAC;oBACR,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,CAAC,kBAAkB,CAAC;oBAClC,OAAO,EAAE,CAAC,kBAAkB,CAAC;iBAC9B;;;ACPD;;;;ACAA;;;;;;"}