{"version":3,"file":"catrx-ui-loader-page.mjs","sources":["../../../../projects/catrx/ui/loader-page/src/loader-page.component.ts","../../../../projects/catrx/ui/loader-page/src/cat-loader-page.service.ts","../../../../projects/catrx/ui/loader-page/catrx-ui-loader-page.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Inject } from '@angular/core';\nimport { CatLoaderModule } from '@catrx/ui/loader';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { CAT_LOADER_PAGE_CONFIG } from './cat-loader-page.service';\n\nexport interface CatLoaderPageConfig {\n  progress$?: BehaviorSubject<number>;\n}\n\n@Component({\n  selector: 'cat-loader-page',\n  template: `<div class=\"cat-loader-page-container\">\n    <cat-loader></cat-loader>\n    <ng-container *ngIf=\"config?.progress$ | async as progress\">\n      <div\n        *ngIf=\"progress !== null && progress >= 0\"\n        class=\"cat-progress-bar-container\"\n      >\n        <div class=\"cat-progress-bar\" [style.width]=\"progress + '%'\"></div>\n      </div>\n    </ng-container>\n  </div>`,\n  standalone: true,\n  imports: [CommonModule, CatLoaderModule],\n})\nexport class LoaderPageComponent {\n  constructor(\n    @Inject(CAT_LOADER_PAGE_CONFIG) public config?: CatLoaderPageConfig\n  ) {}\n}\n","import { LoaderPageComponent } from './loader-page.component';\nimport {\n  ApplicationRef,\n  ComponentFactoryResolver,\n  EmbeddedViewRef,\n  Injectable,\n  InjectionToken,\n  Injector,\n} from '@angular/core';\nimport { randomString } from '@koalarx/utils/operators/string';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\n\nexport const CAT_LOADER_PAGE_CONFIG = new InjectionToken('CatLoaderPageConfig');\n\n@Injectable({ providedIn: 'root' })\nexport class CatLoaderPageService {\n  private elementId: string;\n  private progress$: BehaviorSubject<number>;\n\n  constructor(\n    private componentFactoryResolver: ComponentFactoryResolver,\n    private appRef: ApplicationRef\n  ) {}\n\n  public show() {\n    this.elementId = this.generateElementId();\n    this.progress$ = new BehaviorSubject<number>(null);\n    const main = document.querySelector('main');\n    const componentRef = this.componentFactoryResolver\n      .resolveComponentFactory(LoaderPageComponent)\n      .create(\n        Injector.create({\n          providers: [\n            {\n              provide: CAT_LOADER_PAGE_CONFIG,\n              useValue: { progress$: this.progress$ },\n            },\n          ],\n        })\n      );\n\n    this.appRef.attachView(componentRef.hostView);\n\n    const elDialog = (componentRef.hostView as EmbeddedViewRef<any>)\n      .rootNodes[0] as HTMLElement;\n    elDialog.id = this.elementId;\n\n    main.appendChild(elDialog);\n\n    const elDialogContent = document.querySelector(\n      `#${this.elementId} .cat-loader-page-container`\n    );\n    elDialogContent?.classList.add('animate__animated');\n    elDialogContent?.classList.add('animate__fadeIn');\n  }\n\n  public dismiss() {\n    const elDialog = document.getElementById(this.elementId);\n    if (elDialog) {\n      const elDialogContent = document.querySelector(\n        `#${this.elementId} .cat-loader-page-container`\n      );\n      elDialogContent?.classList.add('animate__animated');\n      elDialogContent?.classList.add('animate__fadeOut');\n      setTimeout(() => {\n        elDialog.remove();\n        this.progress$.unsubscribe();\n      }, 200);\n    }\n  }\n\n  public setProgress(progress: number) {\n    this.progress$.next(progress);\n  }\n\n  private generateElementId() {\n    let elementId: string;\n\n    do {\n      elementId = randomString(50, {\n        numbers: false,\n        lowercase: true,\n        uppercase: true,\n        specialCharacters: false,\n      });\n    } while (document.getElementById(elementId));\n\n    return elementId;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}