{"version":3,"file":"catrx-ui-common.mjs","sources":["../../../../projects/catrx/ui/common/src/cat-menu-context.ts","../../../../projects/catrx/ui/common/src/abstractions/cat-component.base.ts","../../../../projects/catrx/ui/common/src/abstractions/cat-form.base.ts","../../../../projects/catrx/ui/common/src/components/dialog-form/cat-dialog-form.component.ts","../../../../projects/catrx/ui/common/src/environments/cat-environment.ts","../../../../projects/catrx/ui/common/src/abstractions/cat-service.base.ts","../../../../projects/catrx/ui/common/src/abstractions/cat-crud-component.base.ts","../../../../projects/catrx/ui/common/src/abstractions/cat-input-file-selected-list.base.ts","../../../../projects/catrx/ui/common/catrx-ui-common.ts"],"sourcesContent":["import { CatToolbarConfig } from '@catrx/ui/toolbar';\n\nexport class CatMenuContext {\n  static context: CatToolbarConfig;\n}\n","import { Directive } from '@angular/core';\nimport { CatMenuContext } from '../cat-menu-context';\n\n@Directive()\nexport abstract class CatComponentBase {\n  public getToolbarInfo(withoutTitle = true) {\n    const context = Object.assign(CatMenuContext.context ?? {});\n\n    if (withoutTitle) {\n      delete context.title;\n      delete context.icon;\n    }\n\n    return context;\n  }\n}\n","import { Directive, ViewChild, OnInit, OnDestroy } from '@angular/core';\nimport { FormComponent } from '@catrx/ui/form';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { takeUntil } from 'rxjs/internal/operators/takeUntil';\nimport { Subject } from 'rxjs/internal/Subject';\nimport { CatComponentBase } from './cat-component.base';\n\n@Directive()\nexport abstract class CatFormBase\n  extends CatComponentBase\n  implements OnInit, OnDestroy\n{\n  public submitLoader$ = new BehaviorSubject<boolean>(false);\n\n  private destroySubscriptions$ = new Subject<boolean>();\n\n  @ViewChild('form', { static: true }) protected elForm?: FormComponent;\n\n  ngOnDestroy(): void {\n    this.destroySubscriptions$.next(true);\n  }\n\n  ngOnInit(): void {\n    this.elForm.submitted\n      .pipe(takeUntil(this.destroySubscriptions$))\n      .subscribe((submitted) => {\n        if (submitted) {\n          this.submit();\n        }\n      });\n  }\n\n  public submit(event?: Event) {\n    event?.preventDefault();\n    this.elForm?.submit(\n      () => this.submitLoader$.next(true),\n      () => this.submitLoader$.next(false),\n      () => this.submitLoader$.next(false)\n    );\n  }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject } from '@angular/core';\nimport {\n  CatDialogRef,\n  CAT_DIALOG_DATA,\n  CatDialogComponent,\n} from '@catrx/ui/dialog';\nimport { CatFormModule } from '@catrx/ui/form';\nimport { CatDialogFormConfig } from './cat-dialog-form.interface';\nimport { CatSnackbarService } from '@catrx/ui/snackbar';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { CatFormBase } from '../../abstractions/cat-form.base';\nimport { CatButtonModule } from '@catrx/ui/button';\n\n@Component({\n  standalone: true,\n  imports: [CommonModule, CatDialogComponent, CatFormModule, CatButtonModule],\n  template: `\n    <form (submit)=\"submit($event)\">\n      <cat-dialog>\n        <div header>\n          <i\n            [ngClass]=\"{\n              'fa-pen': config?.isEdit,\n              'fa-circle-plus': !config?.isEdit\n            }\"\n            class=\"fa-solid mr-8\"\n          >\n          </i>\n          {{\n            (config?.isEdit ? 'Editar ' : 'Incluir ') +\n              (config?.title ? config?.title : '')\n          }}\n        </div>\n        <div content>\n          <cat-form #form [config]=\"config?.formConfig\"></cat-form>\n        </div>\n        <div actions>\n          <button\n            catButton=\"secondary\"\n            type=\"button\"\n            (click)=\"dialogRef.close()\"\n            [disabled]=\"submitLoader$ | async\"\n            [style.marginRight]=\"'5px'\">\n            Cancelar\n          </button>\n          <button\n            catButton=\"primary\"\n            type=\"submit\"\n            [showLoader]=\"submitLoader$ | async\">\n            Salvar\n          </button>\n        </div>\n      </cat-dialog>\n    </form>\n  `,\n})\nexport class CatDialogFormComponent extends CatFormBase {\n  constructor(\n    @Inject(CAT_DIALOG_DATA) public config: CatDialogFormConfig,\n    public dialogRef: CatDialogRef,\n    private snackbarService: CatSnackbarService\n  ) {\n    super();\n  }\n\n  public override submit(event?: Event) {\n    event?.preventDefault();\n    this.elForm?.submit(\n      () => this.submitLoader$.next(true),\n      () => {\n        this.snackbarService.open({\n          type: 'success',\n          openedTime: 5000,\n          title: `Registro ${\n            this.config.isEdit ? 'atualizado' : 'incluído'\n          } com sucesso!`,\n        });\n        this.dialogRef.close('reloadList');\n      },\n      (err: HttpErrorResponse) => this.submitLoader$.next(false)\n    );\n  }\n}\n","import { CatOAuth2ConfigInterface } from '../interfaces/cat-oauth2-config.interface';\n\nexport interface CatEnvironmentOAuthInterface extends CatOAuth2ConfigInterface {\n  name: string;\n}\n\nexport interface CatEnvironmentInterface {\n  production: boolean;\n  storageTokenName?: string;\n  storageOpenIDTypeName?: string;\n  hostApi?: string;\n  oauthConfig?: CatEnvironmentOAuthInterface[];\n}\n\n// @dynamic\nexport class CatEnvironment {\n  public static environment: CatEnvironmentInterface;\n}\n","import { Injectable } from '@angular/core';\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\nimport { debounceTime, first } from 'rxjs/operators';\nimport { CatDatatableDataHttpResponse } from '@catrx/ui/datatable';\nimport { Observable } from 'rxjs/internal/Observable';\nimport { forkJoin } from 'rxjs/internal/observable/forkJoin';\nimport { lastValueFrom } from 'rxjs/internal/lastValueFrom';\nimport { CatEnvironment } from '../environments/cat-environment';\nimport { klArray } from '@koalarx/utils/operators/array';\n\nclass CatDatabaseMockup {\n  static database: { [key: string]: any[] } = {};\n}\n\nclass CatServiceMockup {\n  constructor(private resourceName: string) {\n    if (!CatDatabaseMockup.database[resourceName])\n      CatDatabaseMockup.database[resourceName] = [];\n  }\n\n  getById<EntityType = any>(id: number | string) {\n    return new Observable<EntityType>((observe) => {\n      setTimeout(() => {\n        const index = klArray(this.getDatabase()).getIndex('id', id);\n        if (index >= 0) {\n          observe.next(this.getDatabase()[index]);\n        } else {\n          observe.error(\n            new HttpErrorResponse({\n              status: 404,\n              statusText: 'Not Found',\n            })\n          );\n        }\n        observe.complete();\n      }, 1000);\n    }).pipe(first());\n  }\n\n  getAll<ListType = any>() {\n    return new Observable<ListType>((observe) => {\n      setTimeout(() => observe.next(this.getDatabase() as ListType), 1000);\n    }).pipe(first());\n  }\n\n  save<ListType = any>(item: ListType, id?: number | string) {\n    return new Observable((observe) => {\n      setTimeout(() => {\n        if (id) {\n          const index = klArray(this.getDatabase()).getIndex('id', id);\n          item['id'] = id;\n          if (index >= 0) this.getDatabase()[index] = item;\n        } else {\n          item['id'] = this.getNextId();\n          this.getDatabase().push(item);\n        }\n        observe.next();\n        observe.complete();\n      }, 1000);\n    }).pipe(first());\n  }\n\n  delete(id: number | string) {\n    return new Observable((observe) => {\n      setTimeout(() => {\n        const index = klArray(this.getDatabase()).getIndex('id', id);\n        if (index >= 0) this.getDatabase().splice(index, 1);\n        observe.next();\n        observe.complete();\n      }, 1000);\n    }).pipe(first());\n  }\n\n  private getDatabase() {\n    return CatDatabaseMockup.database[this.resourceName];\n  }\n\n  private getNextId() {\n    const lastId = this.getDatabase()\n      .map((item) => item.id)\n      .reduce((a, b) => Math.max(a, b), 0);\n    return lastId + 1;\n  }\n}\n\nexport interface CatServiceOptions<EntityType = any> {\n  customHost?: string;\n  useMockup?: boolean;\n  mockupStartBase?: EntityType[];\n}\n\n@Injectable()\nexport abstract class CatServiceBase<\n  FilterType = any,\n  GetAllResponseType = any,\n  EntityType = any\n> {\n  protected host = CatEnvironment.environment.hostApi;\n\n  constructor(\n    protected readonly httpClient: HttpClient,\n    protected readonly mainResource: string,\n    protected readonly options?: CatServiceOptions<EntityType>\n  ) {\n    if (options?.customHost) {\n      this.host = options.customHost;\n    }\n    if (options?.useMockup && options?.mockupStartBase) {\n      CatDatabaseMockup.database[mainResource] = options.mockupStartBase;\n    }\n  }\n\n  public deleteMany(ids: (number | string)[]) {\n    return forkJoin(ids.map((id) => this.delete(id))).pipe(first());\n  }\n\n  public delete(id: number | string) {\n    if (this.options?.useMockup) {\n      return new CatServiceMockup(this.mainResource).delete(id);\n    } else {\n      return this.httpClient\n        .delete(`${this.host}/${this.mainResource}/${id}`)\n        .pipe(first());\n    }\n  }\n\n  public save(data: EntityType, id?: number | string) {\n    if (this.options?.useMockup) {\n      return new CatServiceMockup(this.mainResource).save(data, id);\n    } else {\n      const url = `${this.host}/${this.mainResource}${id ? '/' + id : ''}`;\n      if (id) {\n        return this.httpClient.put(url, data).pipe(first());\n      } else {\n        return this.httpClient.post(url, data).pipe(first());\n      }\n    }\n  }\n\n  public getAll(filter?: FilterType) {\n    if (this.options?.useMockup) {\n      return new CatServiceMockup(this.mainResource)\n        .getAll<GetAllResponseType>()\n        .pipe(debounceTime(1000), first());\n    } else {\n      return this.httpClient\n        .get<GetAllResponseType>(`${this.host}/${this.mainResource}`, {\n          params: filter ?? {},\n        })\n        .pipe(first());\n    }\n  }\n\n  public getById(id: number | string) {\n    if (this.options?.useMockup) {\n      return new CatServiceMockup(this.mainResource)\n        .getById<EntityType>(id)\n        .pipe(debounceTime(1000), first());\n    } else {\n      return this.httpClient\n        .get<EntityType>(`${this.host}/${this.mainResource}/${id}`)\n        .pipe(first());\n    }\n  }\n\n  public exportByService<ItemType = any>(\n    service: (\n      page: number\n    ) => Observable<CatDatatableDataHttpResponse<ItemType>>\n  ) {\n    return new Observable<number | ItemType[]>((observe) => {\n      (async () => {\n        let items: ItemType[] = [];\n        let totalItems: number;\n        let page = 0;\n        let error: HttpErrorResponse;\n\n        do {\n          const response = (await lastValueFrom(service(page)).catch((err) => {\n            error = err;\n            return null;\n          })) as CatDatatableDataHttpResponse<ItemType>;\n\n          if (response) {\n            if (!totalItems) totalItems = response.count;\n            items = klArray(items).merge(response.items).getValue();\n            observe.next(Math.ceil((items.length * 100) / totalItems));\n            page++;\n          }\n        } while (items.length < totalItems && !error);\n\n        if (!error) {\n          return items;\n        } else {\n          throw error;\n        }\n      })()\n        .then((items) => {\n          observe.next(items);\n          observe.complete();\n        })\n        .catch((err) => {\n          observe.error(err);\n          observe.complete();\n        });\n    });\n  }\n\n  public abstract getDatatable(\n    filter: FilterType\n  ): Observable<CatDatatableDataHttpResponse<EntityType>>;\n}\n","import { Directive } from '@angular/core';\nimport {\n  CatDatatableSelection,\n  CatDatatableService,\n  DatatableConfig,\n} from '@catrx/ui/datatable';\nimport { CatFormConfig, CatFormService } from '@catrx/ui/form';\nimport { CatComponentBase } from './cat-component.base';\nimport { CatServiceBase } from './cat-service.base';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { CatDialogService, CatDialogSize } from '@catrx/ui/dialog';\nimport { CatDialogFormComponent } from '../components/dialog-form/cat-dialog-form.component';\nimport { CatDialogFormConfig } from '../components/dialog-form/cat-dialog-form.interface';\nimport { CatConfirmService } from '@catrx/ui/confirm';\nimport { CatCsvService } from '@catrx/ui/utils/csv';\nimport { CatXlsxService } from '@catrx/ui/utils/xlsx';\nimport { CatLoaderPageService } from '@catrx/ui/loader-page';\nimport { CatSnackbarService } from '@catrx/ui/snackbar';\nimport { HttpErrorResponse } from '@angular/common/http';\nimport { Observable } from 'rxjs/internal/Observable';\n\ninterface DialogFormOptions {\n  size?: CatDialogSize;\n  title?: string;\n}\n\n@Directive()\nexport abstract class CatCRUDComponentBase<\n  FilterDataType = any,\n  EntityType = any\n> extends CatComponentBase {\n  protected filterFormBuilder = this.formService.build<FilterDataType>();\n  protected filterValueChanges$ = new BehaviorSubject<any>(null);\n  protected selection?: CatDatatableSelection<EntityType>;\n  protected datasource?: EntityType[];\n  public abstract listConfig: DatatableConfig<EntityType>;\n\n  constructor(\n    protected readonly formService: CatFormService,\n    protected readonly datatableService: CatDatatableService,\n    protected readonly service: CatServiceBase,\n    protected readonly loaderService?: CatLoaderPageService,\n    protected readonly snackbarService?: CatSnackbarService,\n    protected readonly dialogService?: CatDialogService,\n    protected readonly confirmService?: CatConfirmService,\n    protected readonly exportService?: {\n      csv?: CatCsvService;\n      xlsx?: CatXlsxService;\n    }\n  ) {\n    super();\n  }\n\n  deleteSelected() {\n    if (this.confirmService) {\n      this.confirmService.ask(\n        'Você realmente deseja excluir os itens selecionados?',\n        () => {\n          this.loaderService?.show();\n          this.service\n            .deleteMany(\n              this.selection?.selected?.map((item) => item.item['id'])\n            )\n            .subscribe({\n              next: () => {\n                this.reloadList(false);\n                this.snackbarService?.open({\n                  type: 'success',\n                  openedTime: 5000,\n                  title: 'Os itens selecionados foram removidos com sucesso!',\n                });\n                this.loaderService?.dismiss();\n              },\n              error: (err: HttpErrorResponse) => {\n                this.snackbarService?.open({\n                  type: err?.statusText?.startsWith('4') ? 'warning' : 'error',\n                  title: 'Algo inesperado ocorreu...',\n                  message: err?.message ?? 'Ocorreu um problema desconhecido.',\n                });\n                this.loaderService?.dismiss();\n              },\n            });\n        }\n      );\n    }\n  }\n\n  abstract export(filename: string): void;\n\n  protected exportByService(\n    settings: {\n      csv?: { filename: string };\n      xlsx?: { filename: string; sheetName: string };\n    },\n    service: Observable<number | any[]>\n  ) {\n    this.loaderService?.show();\n    const exportSubscription = service.subscribe((response) => {\n      if (Array.isArray(response)) {\n        this.loaderService?.dismiss();\n        exportSubscription.unsubscribe();\n        if (response.length > 0) {\n          if (settings.csv) {\n            this.exportCsv((item) => item, settings.csv.filename, response);\n          } else if (settings.xlsx) {\n            this.exportXlsx(\n              (item) => item,\n              settings.xlsx.filename,\n              settings.xlsx.sheetName,\n              response\n            );\n          }\n        }\n      } else {\n        this.loaderService?.setProgress(response);\n      }\n    });\n  }\n\n  protected exportCsv(\n    mapItem: (item: EntityType) => any,\n    filename: string,\n    customDatasource?: any[]\n  ) {\n    if (this.exportService?.csv) {\n      if (this.datasource || customDatasource) {\n        this.exportService.csv.convertJsonToCsv(\n          (customDatasource ?? this.datasource).map(mapItem),\n          filename\n        );\n      }\n    }\n  }\n\n  protected exportXlsx(\n    mapItem: (item: EntityType) => any,\n    filename: string,\n    sheetName: string,\n    customDatasource?: any[]\n  ) {\n    if (this.exportService?.xlsx) {\n      if (this.datasource || customDatasource) {\n        this.exportService.xlsx.convertJsonToXlsx(\n          [\n            {\n              sheetName,\n              json: (customDatasource ?? this.datasource).map(mapItem),\n            },\n          ],\n          filename\n        );\n      }\n    }\n  }\n\n  protected openFormDialog(\n    formConfig: CatFormConfig<EntityType>,\n    isEdit: boolean,\n    options?: DialogFormOptions\n  ) {\n    if (this.dialogService) {\n      this.dialogService.open(CatDialogFormComponent, {\n        size: options?.size ?? 'small',\n        data: {\n          formConfig,\n          isEdit,\n          title: options?.title,\n        } as CatDialogFormConfig,\n        closeTrigger: 'reloadList',\n        callbackCloseTrigger: () => this.reloadList(),\n      });\n    }\n  }\n\n  protected reloadList(preservePagination = false) {\n    this.listConfig?.reloadList?.next({\n      preservePagination,\n      reload: true,\n    });\n  }\n}\n","import { Directive, OnDestroy, OnInit } from '@angular/core';\nimport { CatDynamicComponentDataInterface } from '@catrx/ui/dynamic-component';\nimport { CatFormCustomSelectedFileList } from '@catrx/ui/form';\nimport { CatFileInterface } from '@catrx/ui/utils';\nimport { BehaviorSubject } from 'rxjs/internal/BehaviorSubject';\nimport { Subject } from 'rxjs/internal/Subject';\n\n@Directive()\nexport abstract class CatInputFileSelectedListBase<\n  SelectItemType = CatFileInterface\n> implements CatDynamicComponentDataInterface, OnInit, OnDestroy\n{\n  data?: CatFormCustomSelectedFileList<SelectItemType[]>;\n  protected destroySubscriptions$ = new Subject<boolean>();\n\n  selectedFiles$ = new BehaviorSubject<SelectItemType[]>([]);\n\n  ngOnDestroy(): void {\n    this.destroySubscriptions$.next(true);\n  }\n\n  ngOnInit(): void {\n    this.selectedFiles$.next(this.data?.data ?? []);\n  }\n\n  getBase64ImageURL(image: SelectItemType) {\n    return `data:${image['type']};base64,${image['base64']}`;\n  }\n\n  removeImage(index: number) {\n    this.data?.remove(index);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}