{"version":3,"file":"mtxButton.mjs","sources":["../../../projects/extensions/button/button-loading.ts","../../../projects/extensions/button/button-module.ts","../../../projects/extensions/button/mtxButton.ts"],"sourcesContent":["import {\n  ComponentRef,\n  Directive,\n  ElementRef,\n  Input,\n  OnChanges,\n  Renderer2,\n  SimpleChanges,\n  ViewContainerRef,\n  booleanAttribute,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\n\n@Directive({\n  selector: `[mat-button][loading],\n             [mat-raised-button][loading],\n             [mat-stroked-button][loading],\n             [mat-flat-button][loading],\n             [mat-icon-button][loading],\n             [mat-fab][loading],\n             [mat-mini-fab][loading]`,\n  standalone: true,\n})\nexport class MatButtonLoading implements OnChanges {\n  private spinner!: ComponentRef<MatProgressSpinner> | null;\n\n  @Input({ transform: booleanAttribute }) loading = false;\n\n  @Input({ transform: booleanAttribute }) disabled = false;\n\n  @Input() color: ThemePalette;\n\n  constructor(\n    private _elementRef: ElementRef<HTMLButtonElement>,\n    private _viewContainerRef: ViewContainerRef,\n    private _renderer: Renderer2\n  ) {}\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (!changes.loading) {\n      return;\n    }\n    if (changes.loading.currentValue) {\n      this._elementRef.nativeElement.classList.add('mat-button-loading');\n      setTimeout(() => this._elementRef.nativeElement.setAttribute('disabled', ''));\n      this.createSpinner();\n    } else if (!changes.loading.firstChange) {\n      this._elementRef.nativeElement.classList.remove('mat-button-loading');\n      setTimeout(() => this._elementRef.nativeElement.removeAttribute('disabled'));\n      this.destroySpinner();\n    }\n  }\n\n  private createSpinner(): void {\n    if (!this.spinner) {\n      this.spinner = this._viewContainerRef.createComponent(MatProgressSpinner);\n      this.spinner.instance.color = this.color;\n      this.spinner.instance.diameter = 24;\n      this.spinner.instance.mode = 'indeterminate';\n      this._renderer.appendChild(\n        this._elementRef.nativeElement,\n        this.spinner.instance._elementRef.nativeElement\n      );\n    }\n  }\n\n  private destroySpinner(): void {\n    if (this.spinner) {\n      this.spinner.destroy();\n      this.spinner = null;\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatButtonLoading } from './button-loading';\n\n@NgModule({\n  imports: [CommonModule, MatButtonModule, MatProgressSpinnerModule, MatButtonLoading],\n  exports: [MatButtonLoading],\n})\nexport class MtxButtonModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAwBa,gBAAgB,CAAA;AAS3B,IAAA,WAAA,CACU,WAA0C,EAC1C,iBAAmC,EACnC,SAAoB,EAAA;QAFpB,IAAW,CAAA,WAAA,GAAX,WAAW,CAA+B;QAC1C,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACnC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QATU,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAEhB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAQrD;AAEJ,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,OAAO;SACR;AACD,QAAA,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE;YAChC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;AACnE,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9E,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;AAAM,aAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;YACvC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACtE,YAAA,UAAU,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,eAAe,CAAC;YAC7C,IAAI,CAAC,SAAS,CAAC,WAAW,CACxB,IAAI,CAAC,WAAW,CAAC,aAAa,EAC9B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAChD,CAAC;SACH;KACF;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;KACF;iIAhDU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;qHAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,6QAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAGP,gBAAgB,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAEhB,gBAAgB,CAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FALzB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAV5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMyB,oCAAA,CAAA;AACnC,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;sIAIyC,OAAO,EAAA,CAAA;sBAA9C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAEE,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAA;gBAE7B,KAAK,EAAA,CAAA;sBAAb,KAAK;;;MCpBK,eAAe,CAAA;iIAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;kIAAf,eAAe,EAAA,OAAA,EAAA,CAHhB,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,gBAAgB,CAAA,EAAA,OAAA,EAAA,CACzE,gBAAgB,CAAA,EAAA,CAAA,CAAA,EAAA;AAEf,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAHhB,OAAA,EAAA,CAAA,YAAY,EAAE,eAAe,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAGtD,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,eAAe,EAAE,wBAAwB,EAAE,gBAAgB,CAAC;oBACpF,OAAO,EAAE,CAAC,gBAAgB,CAAC;AAC5B,iBAAA,CAAA;;;ACVD;;AAEG;;;;"}