@dataclouder/ngx-core 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -427,34 +427,66 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.1.1", ngImpor
427
427
  type: Output
428
428
  }] } });
429
429
 
430
+ /**
431
+ * Service for managing a loading/progress bar component in the application.
432
+ *
433
+ * This service provides methods to control the visibility, progress state, and appearance
434
+ * of a loading bar. It supports both determinate (with specific progress percentage)
435
+ * and indeterminate modes, as well as different color options.
436
+ */
430
437
  class LoadingBarService {
431
438
  constructor() {
439
+ /** Flag indicating whether the loading bar is currently visible */
432
440
  this.isShowing = false;
441
+ /** Current progress value (0-100) for determinate mode */
433
442
  this.progress = 0;
443
+ /** The current display mode of the loading bar */
434
444
  this.mode = 'indeterminate';
445
+ /** The color of the loading bar (can be a theme color name or hex value) */
435
446
  this.color = 'primary';
436
447
  }
448
+ /**
449
+ * Shows the loading bar in determinate mode with 0% progress.
450
+ * Use this method when starting a process with known progress states.
451
+ */
437
452
  showProgressBar() {
438
453
  this.isShowing = true;
439
454
  this.mode = 'determinate';
440
455
  this.progress = 0;
441
456
  }
457
+ /**
458
+ * Shows the loading bar in indeterminate mode.
459
+ * Use this method when the progress of a process cannot be determined.
460
+ */
442
461
  showIndeterminate() {
443
462
  this.isShowing = true;
444
463
  this.mode = 'indeterminate';
445
464
  this.progress = 0;
446
465
  }
466
+ /**
467
+ * Shows the loading bar in determinate mode with a specific progress value.
468
+ *
469
+ * @param progress The progress value to display (0-100)
470
+ */
447
471
  showProgressBarWithProgress(progress) {
448
472
  this.isShowing = true;
449
473
  this.mode = 'determinate';
450
474
  this.progress = progress;
451
475
  }
476
+ /**
477
+ * Hides the loading bar and resets its state.
478
+ * Call this method when a process completes or when you want to hide the loading bar.
479
+ */
452
480
  hideProgressBar() {
453
481
  this.isShowing = false;
454
482
  this.mode = null;
455
483
  this.progress = 0;
456
484
  this.color = 'primary';
457
485
  }
486
+ /**
487
+ * Shows a success state (green color, 100% progress) and then automatically hides the loading bar after a delay.
488
+ * Use this method to indicate successful completion of a process with visual feedback.
489
+ */
458
490
  successAndHide() {
459
491
  this.isShowing = true;
460
492
  this.mode = 'indeterminate';
@@ -464,7 +496,11 @@ class LoadingBarService {
464
496
  this.hideProgressBar();
465
497
  }, 1600);
466
498
  }
467
- exampleProgress() {
499
+ /**
500
+ * Demonstrates the loading bar by simulating progress from 0% to 100% over 5 seconds.
501
+ * This is a test/demo method to visualize how the loading bar works.
502
+ */
503
+ testProgressBar() {
468
504
  this.showProgressBarWithProgress(0);
469
505
  setTimeout(() => {
470
506
  this.showProgressBarWithProgress(20);
@@ -482,6 +518,30 @@ class LoadingBarService {
482
518
  this.showProgressBarWithProgress(100);
483
519
  }, 5000);
484
520
  }
521
+ /**
522
+ * Animates the progress bar from 0 to 100 over a specified time period
523
+ * use when you dont know the duration of the process
524
+ * if your process finish before the time ends call successAndHide()
525
+ * @param durationInSeconds The total duration of the animation in seconds (default: 20)
526
+ */
527
+ fakeProgressWithTime(durationInSeconds = 20) {
528
+ // Reset progress to 0
529
+ this.showProgressBarWithProgress(0);
530
+ // Calculate how often to update based on the duration
531
+ const totalSteps = 50; // 0 to 100
532
+ const intervalMs = (durationInSeconds * 1000) / totalSteps;
533
+ let currentProgress = 0;
534
+ // Create interval to update progress
535
+ const progressInterval = setInterval(() => {
536
+ currentProgress += 2;
537
+ this.showProgressBarWithProgress(currentProgress);
538
+ // Clear interval when we reach local state or global
539
+ if (currentProgress >= 100 || this.progress >= 100) {
540
+ clearInterval(progressInterval);
541
+ this.showIndeterminate();
542
+ }
543
+ }, intervalMs);
544
+ }
485
545
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: LoadingBarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
486
546
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.1.1", ngImport: i0, type: LoadingBarService, providedIn: 'root' }); }
487
547
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dataclouder-ngx-core.mjs","sources":["../../../../projects/dataclouder/ngx-core/src/lib/components/empty-state/empty-state.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/empty-state/empty-state.component.html","../../../../projects/dataclouder/ngx-core/src/lib/models/filter.models.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-bar.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-bar.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/confirm/confirm.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/confirm/confirm.component.html","../../../../projects/dataclouder/ngx-core/src/lib/models/classes.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/pagination.abstract.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/confirm.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/utils/utils.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/progress-toast/progress-toast.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/progress-toast/progress-toast.html","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.html","../../../../projects/dataclouder/ngx-core/src/public-api.ts","../../../../projects/dataclouder/ngx-core/src/dataclouder-ngx-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'dc-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n standalone: true,\n imports: [NgIf],\n})\nexport class EmptyStateComponent {\n @Input()\n public headingText = 'No existe el recurso que buscas';\n @Input()\n public subHeadingText = 'Intenta más tarde';\n @Input()\n public mainIconSrcString = 'assets/img/empty-states/empty-box.png';\n}\n","<div class=\"grid justify-content-center\">\r\n <div class=\"empty-state-content\">\r\n <h5 class=\"text-center\" *ngIf=\"headingText\">{{ headingText }}</h5>\r\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString }}\" />\r\n <h6 *ngIf=\"subHeadingText\">{{ subHeadingText }}</h6>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","export interface SortOption {\n label: string;\n value: string;\n}\n\nexport const availibleFilters = [\n { name: 'Tomadas', code: 'taken' },\n { name: 'Recomendadas', code: 'suggested' },\n { name: 'Nivel Básico', code: 'basicLevel' },\n { name: 'Nivel Intermedio', code: 'mediumLevel' },\n { name: 'Nivel Avanzado', code: 'advancedLevel' },\n];\n\nexport enum OptionValue {\n Newest = 'newest',\n Oldest = 'oldest',\n Alphabetical = 'alphabetical',\n ReverseAlphabetical = 'reverseAlphabetical',\n}\n\nexport const sortOptions: SortOption[] = [\n { label: 'Más reciente', value: OptionValue.Newest },\n { label: 'Más antiguo', value: OptionValue.Oldest },\n { label: 'A-Z', value: OptionValue.Alphabetical },\n { label: 'Z-A', value: OptionValue.ReverseAlphabetical },\n];\n\nexport const sortTypes = [\n { name: 'Recientes', code: 'newest', sort: { createdDate: -1 } },\n { name: 'Antiguas', code: 'oldest', sort: { createdDate: 1 } },\n { name: 'Populares', code: 'popular', sort: { takenCount: -1 } },\n];\n\nexport interface ICustomFilter {\n name: string;\n type: 'string' | 'number' | 'boolean' | 'date' | 'select';\n options?: any[];\n}\n\nexport interface FiltersConfig {\n page?: number;\n rowsPerPage?: number;\n sort?: { [key: string]: number };\n filters?: { [key: string]: any };\n text?: string;\n returnProps?: Record<string, 0 | 1>;\n}\n\nexport interface IFilterQueryResponse<T> {\n rows: T[];\n count: number;\n skip: number;\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { SelectModule } from 'primeng/select';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { CalendarModule } from 'primeng/calendar';\nimport { availibleFilters, FiltersConfig, ICustomFilter, SortOption, sortOptions } from '../../models/filter.models';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\n\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [CommonModule, FormsModule, ButtonModule, DialogModule, SelectModule, MultiSelectModule, CalendarModule],\n templateUrl: './dc-list-filter-bar.component.html',\n styleUrl: './dc-list-filter-bar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DCFilterBarComponent implements OnInit {\n @Input() public isAdmin: any = true; // TODO: create a solution for is admin\n @Input() public customFilters: ICustomFilter[] = [];\n @Output() public onChangeSort: any = new EventEmitter();\n @Output() public onNew: any = new EventEmitter();\n @Output() public onSearch: any = new EventEmitter();\n @Output() public onFilterChange = new EventEmitter<FiltersConfig>();\n\n public customFilterModels = [];\n constructor() {}\n ngOnInit(): void {\n console.log('customFilters', this.customFilters);\n\n if (this.customFilters.length > 0) {\n console.log('customFilters', this.customFilters);\n for (const filter of this.customFilters) {\n console.log('Deberia agregar un filtro nuevo', filter);\n // this.availibleFilters.push({\n // name: filter.name,\n // type: filter.type,\n // options: filter.options,\n // });\n }\n }\n }\n\n public availibleFilters = availibleFilters;\n public sortOptions = sortOptions;\n\n public isSearchVisible = false;\n public isFilterVisible = false;\n public placeholder = '';\n\n public filter: FiltersConfig = { ...DEFAULT_FILTERS };\n\n selectedFilters: (typeof availibleFilters)[] = [];\n selectedSort: SortOption | null = null;\n dateRange: Date[] = [];\n\n public changeFilter(event) {\n console.log('Filter changed');\n }\n\n public changeSort(event) {\n console.log('Sort changed', event.value);\n this.onChangeSort.emit(event.value);\n }\n\n public createNew() {\n // this.router.navigate(['edit/'], { relativeTo: this.route });\n console.log('createNew from core components');\n this.onNew.emit();\n }\n\n public search(text: string = null): void {\n if (!text) {\n this.placeholder = '';\n this.clearFilters();\n } else {\n this.onSearch.emit(text);\n }\n this.isSearchVisible = false;\n }\n\n clearFilters() {\n this.filter = { ...DEFAULT_FILTERS };\n this.onFilterChange.emit(this.filter);\n }\n\n applyFilters() {\n this.onFilterChange.emit(this.filter);\n this.isFilterVisible = false;\n }\n}\n","<div class=\"background-bar\">\n <div class=\"button-flex\">\n <div>\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n </div>\n\n @if (isAdmin) {\n <span class=\"admin\">\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <p>Haz una búsqueda (Enter)</p>\n <div>\n <span>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n </span>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros Rápidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-calendar\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-calendar>\n </div>\n\n @if (customFilters?.length > 0) {\n <h4>Filtros Personalizados (No terminado...) </h4>\n <h6>Encontrar la forma de que cada custom filter se renderize como un nuevo form.</h6>\n @for (filter of customFilters; track filter.name) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ filter.name }}</label>\n </div>\n } }\n\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n","import { NgIf } from '@angular/common';\r\nimport { Component, OnInit, Input, HostListener } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { MessageModule } from 'primeng/message';\r\n\r\n@Component({\r\n selector: 'app-confirm',\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.scss'],\r\n standalone: true,\r\n imports: [NgIf, ButtonModule, MessageModule],\r\n})\r\nexport class ConfirmComponent implements OnInit {\r\n @Input() title: string = 'Confirmación';\r\n @Input() message: string;\r\n @Input() warning: string;\r\n\r\n @Input() oneBotton: boolean;\r\n\r\n @Input() acceptText: string;\r\n @Input() cancelText: string;\r\n\r\n @Input() piIcon: string;\r\n\r\n @HostListener('window:keyup.enter', ['$event'])\r\n onEnter(_event: any) {\r\n this.confirm();\r\n }\r\n\r\n @HostListener('window:keyup.escape', ['$event'])\r\n onEscapte(_event: any) {\r\n this.cancel();\r\n }\r\n\r\n constructor(private dynamicDialogConfig: DynamicDialogConfig, public ref: DynamicDialogRef) {\r\n if (this.dynamicDialogConfig.data) {\r\n this.title = this.dynamicDialogConfig.data.title;\r\n this.message = this.dynamicDialogConfig.data.message;\r\n this.warning = this.dynamicDialogConfig.data.warning;\r\n this.oneBotton = this.dynamicDialogConfig.data.oneBotton;\r\n this.acceptText = this.dynamicDialogConfig.data.acceptText ?? 'Aceptar';\r\n this.cancelText = this.dynamicDialogConfig.data.cancelText ?? 'Cancelar';\r\n this.piIcon = this.dynamicDialogConfig.data.piIcon;\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n public cancel(): void {\r\n this.ref.close(false);\r\n }\r\n\r\n public confirm(): void {\r\n this.ref.close(true);\r\n }\r\n}\r\n","<div class=\"form-input-card\">\r\n <p-message severity=\"secondary\"> {{ title }}</p-message>\r\n\r\n <div style=\"text-align: center; padding: 1rem\">\r\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\r\n </div>\r\n\r\n <div>{{ message }} </div>\r\n\r\n @if (warning) {\r\n <p-message severity=\"warn\">\r\n <i class=\"pi pi-exclamation-triangle\"></i>\r\n {{ warning }}</p-message\r\n >\r\n }\r\n\r\n <br /><br />\r\n\r\n <div>\r\n <div style=\"float: right\">\r\n <p-button *ngIf=\"oneBotton\" label=\"Ok\" (click)=\"confirm()\"></p-button>\r\n </div>\r\n\r\n <div *ngIf=\"!oneBotton\" class=\"options\">\r\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\r\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\n\nexport const TOAST_ALERTS_TOKEN = new InjectionToken<ToastAlertsAbstractService>('Toast alerts Service');\n\nexport interface ToastData {\n title: string;\n subtitle: string;\n}\n\nexport abstract class ToastAlertsAbstractService {\n abstract success(data: ToastData): void;\n abstract info(data: ToastData): void;\n abstract warn(data: ToastData): void;\n abstract error(data: ToastData): void;\n}\n\nexport function provideToastAlert(serviceImplementation: Type<ToastAlertsAbstractService>): Provider[] {\n return [\n {\n provide: TOAST_ALERTS_TOKEN,\n useExisting: serviceImplementation,\n },\n ];\n}\n\nexport enum AudioSpeed {\n VerySlow = 'verySlow',\n Slow = 'slow',\n Regular = 'regular',\n Fast = 'fast',\n VeryFast = 'veryFast',\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { FiltersConfig } from './filter.models';\n\nexport abstract class PaginationBase {\n public paginatorFirst: number = 0;\n public paginatorRows: number = 10;\n public totalRecords: number = 0;\n\n public filterConfig: FiltersConfig = { page: 0, rowsPerPage: this.paginatorRows, sort: { _id: -1 }, filters: {} };\n\n constructor(protected route: ActivatedRoute, protected router: Router) {\n this.initializePagination();\n }\n\n private initializePagination(): void {\n const page = this.route.snapshot.queryParamMap.get('page');\n if (page) {\n this.filterConfig.page = +page - 1;\n this.paginatorFirst = this.filterConfig.page * this.paginatorRows;\n }\n }\n\n public async onPageChange(pageEvent: any) {\n this.paginatorRows = pageEvent.rows;\n this.filterConfig = {\n ...this.filterConfig,\n page: pageEvent.page,\n rowsPerPage: this.paginatorRows,\n };\n\n await this.loadData();\n this.updatePageParam(pageEvent.page + 1);\n }\n\n private updatePageParam(newPage: number) {\n const queryParams = { page: newPage };\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n });\n }\n\n // Abstract method that needs to be implemented by child classes\n protected abstract loadData(): Promise<void>;\n}\n","import { Injectable } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\n\nimport { ConfirmComponent } from '../components/confirm/confirm.component';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface ConfirmOptions {\n title?: string;\n message?: string;\n acceptText?: string;\n cancelText?: string;\n warning?: string;\n oneBotton?: boolean;\n piIcon?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfirmService {\n constructor(public pdialogService: DialogService) {}\n\n openConfirm(title: string = '', message: string = '', acceptText: string = 'Aceptar') {\n const dialogRef = this.pdialogService.open(ConfirmComponent, {\n data: {\n message: message,\n title: title,\n acceptText,\n },\n closable: true,\n modal: true,\n });\n\n return dialogRef.onClose;\n }\n\n confirm(options: ConfirmOptions) {\n const dialogRef = this.pdialogService.open(ConfirmComponent, {\n data: {\n message: options.message || '',\n title: options.title || 'Confirmación',\n acceptText: options.acceptText || 'Aceptar',\n cancelText: options.cancelText || 'Cancelar',\n warning: options.warning || null,\n oneBotton: options.oneBotton || false,\n piIcon: options.piIcon || null,\n },\n closable: true,\n modal: true,\n });\n\n return firstValueFrom(dialogRef.onClose);\n }\n}\n","/**\n * Extracts and parses the first JSON object or array found within a string.\n *\n * @param content - The input string that may contain JSON data\n * @returns {any} The parsed JSON data if found and valid, or null if:\n * - No JSON object/array is found in the string\n * - The found JSON is invalid and cannot be parsed\n *\n * @example\n * // Returns {name: \"John\"}\n * extractJsonFromString('Some text {\"name\": \"John\"} more text');\n *\n * // Returns [1, 2, 3]\n * extractJsonFromString('Before [1,2,3] after');\n *\n * // Returns null\n * extractJsonFromString('No JSON here');\n */\nexport function extractJsonFromString(content: string): any {\n console.log(content);\n try {\n // First try to parse the entire string as JSON\n return JSON.parse(content);\n } catch {\n try {\n // If that fails, try to find the first valid JSON object or array in the string\n const matches = content.match(/(\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])/g);\n if (!matches) return null;\n\n // Try each matched potential JSON string until we find a valid one\n for (const match of matches) {\n try {\n return JSON.parse(match);\n } catch {\n continue;\n }\n }\n return null;\n } catch (error) {\n console.error('Error parsing JSON:', error);\n return null;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { ProgressBar, ProgressBarModule } from 'primeng/progressbar';\nimport { Toast, ToastModule } from 'primeng/toast';\n\n@Component({\n selector: 'dc-progress-toast',\n templateUrl: './progress-toast.html',\n styleUrls: ['./progress-toast.css'],\n standalone: true,\n providers: [MessageService],\n imports: [ButtonModule, CommonModule, ToastModule, ProgressBarModule, Toast, ButtonModule, ProgressBar],\n})\nexport class DCProgressToastComponent implements OnChanges, OnDestroy {\n @Input()\n visible: boolean = false;\n\n @Input()\n progress: number = 0;\n\n @Output()\n processCompleted = new EventEmitter<void>();\n\n @Output()\n processClosed = new EventEmitter<void>();\n\n constructor(private messageService: MessageService, private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['visible'] && changes['visible'].currentValue) {\n this.showConfirm();\n } else if (changes['visible'] && !changes['visible'].currentValue) {\n this.onClose();\n }\n\n // Handle progress changes\n if (changes['progress']) {\n if (this.progress >= 100) {\n this.onComplete();\n }\n this.cdr.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this.messageService.clear('confirm');\n }\n\n private showConfirm() {\n if (this.visible) {\n this.messageService.add({ key: 'confirm', sticky: true, severity: 'info', summary: 'Working on it...' });\n }\n }\n\n private onComplete() {\n this.messageService.clear('confirm');\n this.messageService.add({\n severity: 'success',\n summary: 'Process Completed',\n detail: 'The process has finished successfully!',\n life: 3000,\n });\n this.processCompleted.emit();\n this.visible = false;\n }\n\n public onClose() {\n this.visible = false;\n this.messageService.add({\n severity: 'info',\n summary: 'Process Cancelled',\n detail: 'The process was cancelled by the user',\n life: 3000,\n });\n this.messageService.clear('confirm');\n this.processClosed.emit();\n }\n}\n","<div class=\"card flex justify-center\">\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onClose()\" [baseZIndex]=\"9000\">\n <ng-template let-message #headless let-closeFn=\"closeFn\">\n <section style=\"padding: 15px\">\n <div>\n <i class=\"pi pi-cloud-upload\"></i>\n <span>{{ message.summary }}</span>\n </div>\n <div>\n <p-progressbar [value]=\"progress\" [showValue]=\"false\" [style]=\"{ height: '6px' }\" />\n\n <label style=\"color: beige\">{{ progress }}% uploaded</label>\n </div>\n <div>\n <p-button label=\"Another Upload?\" (click)=\"closeFn($event)\" size=\"small\" />\n <p-button label=\"Cancel\" (click)=\"closeFn($event)\" size=\"small\" />\n </div>\n </section>\n </ng-template>\n </p-toast>\n</div>\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingBarService {\n public isShowing: boolean = false;\n public progress: number = 0;\n public mode: 'indeterminate' | 'determinate' = 'indeterminate';\n public color: string = 'primary';\n constructor() {}\n\n public showProgressBar() {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = 0;\n }\n\n public showIndeterminate() {\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 0;\n }\n\n public showProgressBarWithProgress(progress: number) {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = progress;\n }\n\n public hideProgressBar() {\n this.isShowing = false;\n this.mode = null;\n this.progress = 0;\n this.color = 'primary';\n }\n\n public successAndHide() {\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#4BBD97';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1600);\n }\n\n public exampleProgress() {\n this.showProgressBarWithProgress(0);\n setTimeout(() => {\n this.showProgressBarWithProgress(20);\n }, 1000);\n setTimeout(() => {\n this.showProgressBarWithProgress(40);\n }, 2000);\n setTimeout(() => {\n this.showProgressBarWithProgress(60);\n }, 3000);\n setTimeout(() => {\n this.showProgressBarWithProgress(80);\n }, 4000);\n setTimeout(() => {\n this.showProgressBarWithProgress(100);\n }, 5000);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { ProgressBar, ProgressBarModule } from 'primeng/progressbar';\nimport { ToastModule } from 'primeng/toast';\nimport { LoadingBarService } from './loading-bar.service';\n\n@Component({\n selector: 'dc-loading-bar',\n templateUrl: './loading-bar.html',\n styleUrls: ['./loading-bar.css'],\n standalone: true,\n providers: [MessageService],\n imports: [ButtonModule, CommonModule, ToastModule, ProgressBarModule, ButtonModule, ProgressBar],\n})\nexport class LoadingBarComponent {\n constructor(public loadingBarService: LoadingBarService) {}\n}\n","@if (loadingBarService.isShowing) {\n<p-progressbar [color]=\"loadingBarService.color\" [mode]=\"loadingBarService.mode\" [style]=\"{ height: '4px' }\" [value]=\"loadingBarService.progress\" />\n}\n","/*\n * Public API Surface of core-components\n */\n\nexport * from './lib/components/empty-state/empty-state.component';\nexport * from './lib/components/list-filter-bar/dc-list-filter-bar.component';\nexport * from './lib/components/confirm/confirm.component';\nexport * from './lib/models/classes';\nexport * from './lib/models/pagination.abstract';\nexport * from './lib/models/filter.models';\nexport * from './lib/services/confirm.service';\nexport * from './lib/utils/utils';\nexport * from './lib/components/progress-toast/progress-toast';\nexport * from './lib/components/loading-bar/loading-bar';\nexport * from './lib/components/loading-bar/loading-bar.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1","i4","i1.LoadingBarService","i2"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;MAUa,mBAAmB,CAAA;AAPhC,IAAA,WAAA,GAAA;QASS,IAAW,CAAA,WAAA,GAAG,iCAAiC;QAE/C,IAAc,CAAA,cAAA,GAAG,mBAAmB;QAEpC,IAAiB,CAAA,iBAAA,GAAG,uCAAuC;AACnE;8GAPY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVhC,wXAQA,EAAA,MAAA,EAAA,CAAA,yHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAY,IAAI,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEH,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAGd,UAAA,EAAA,IAAI,EACP,OAAA,EAAA,CAAC,IAAI,CAAC,EAAA,QAAA,EAAA,wXAAA,EAAA,MAAA,EAAA,CAAA,yHAAA,CAAA,EAAA;8BAIR,WAAW,EAAA,CAAA;sBADjB;gBAGM,cAAc,EAAA,CAAA;sBADpB;gBAGM,iBAAiB,EAAA,CAAA;sBADvB;;;AEVU,MAAA,gBAAgB,GAAG;AAC9B,IAAA,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE;AAClC,IAAA,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,EAAE;AAC3C,IAAA,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE;AACjD,IAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE;;IAGvC;AAAZ,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,WAAA,CAAA,QAAA,CAAA,GAAA,QAAiB;AACjB,IAAA,WAAA,CAAA,cAAA,CAAA,GAAA,cAA6B;AAC7B,IAAA,WAAA,CAAA,qBAAA,CAAA,GAAA,qBAA2C;AAC7C,CAAC,EALW,WAAW,KAAX,WAAW,GAKtB,EAAA,CAAA,CAAA;AAEY,MAAA,WAAW,GAAiB;IACvC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE;IACpD,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE;IACnD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,YAAY,EAAE;IACjD,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,CAAC,mBAAmB,EAAE;;AAG7C,MAAA,SAAS,GAAG;AACvB,IAAA,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE;AAChE,IAAA,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;AAC9D,IAAA,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;;;ACpBlE,MAAM,eAAe,GAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE;MAUtF,oBAAoB,CAAA;AAS/B,IAAA,WAAA,GAAA;AARgB,QAAA,IAAA,CAAA,OAAO,GAAQ,IAAI,CAAC;QACpB,IAAa,CAAA,aAAA,GAAoB,EAAE;AAClC,QAAA,IAAA,CAAA,YAAY,GAAQ,IAAI,YAAY,EAAE;AACtC,QAAA,IAAA,CAAA,KAAK,GAAQ,IAAI,YAAY,EAAE;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAQ,IAAI,YAAY,EAAE;AAClC,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAiB;QAE5D,IAAkB,CAAA,kBAAA,GAAG,EAAE;QAkBvB,IAAgB,CAAA,gBAAA,GAAG,gBAAgB;QACnC,IAAW,CAAA,WAAA,GAAG,WAAW;QAEzB,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAe,CAAA,eAAA,GAAG,KAAK;QACvB,IAAW,CAAA,WAAA,GAAG,EAAE;AAEhB,QAAA,IAAA,CAAA,MAAM,GAAkB,EAAE,GAAG,eAAe,EAAE;QAErD,IAAe,CAAA,eAAA,GAAgC,EAAE;QACjD,IAAY,CAAA,YAAA,GAAsB,IAAI;QACtC,IAAS,CAAA,SAAA,GAAW,EAAE;;IA3BtB,QAAQ,GAAA;QACN,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC;QAEhD,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC;AAChD,YAAA,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE;AACvC,gBAAA,OAAO,CAAC,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC;;;;;;;;;AAuBrD,IAAA,YAAY,CAAC,KAAK,EAAA;AACvB,QAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;;AAGxB,IAAA,UAAU,CAAC,KAAK,EAAA;QACrB,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC;QACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;IAG9B,SAAS,GAAA;;AAEd,QAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC;AAC7C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;;IAGZ,MAAM,CAAC,OAAe,IAAI,EAAA;QAC/B,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE;YACrB,IAAI,CAAC,YAAY,EAAE;;aACd;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;;AAE1B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;IAG9B,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,eAAe,EAAE;QACpC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;;IAGvC,YAAY,GAAA;QACV,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACrC,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;8GAvEnB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,ECpBjC,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,w5FA+EA,EDhEY,MAAA,EAAA,CAAA,4bAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,8BAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,OAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,aAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,YAAA,EAAA,YAAA,EAAA,MAAA,EAAA,MAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,OAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,eAAA,EAAA,cAAA,EAAA,aAAA,EAAA,WAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,cAAA,EAAA,QAAA,EAAA,MAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,aAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,cAAA,EAAA,SAAA,EAAA,aAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,WAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,MAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,aAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAA,EAAA,QAAA,EAAA,SAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAiB,g5CAAE,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,YAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,UAAA,EAAA,6BAAA,EAAA,WAAA,EAAA,UAAA,EAAA,eAAA,EAAA,cAAA,EAAA,eAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,eAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAA,EAAA,cAAA,EAAA,WAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,SAAA,EAAA,cAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;2FAKrG,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBARhC,SAAS;+BACE,eAAe,EAAA,UAAA,EACb,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,CAAC,EAAA,eAAA,EAGhG,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,w5FAAA,EAAA,MAAA,EAAA,CAAA,4bAAA,CAAA,EAAA;wDAG/B,OAAO,EAAA,CAAA;sBAAtB;gBACe,aAAa,EAAA,CAAA;sBAA5B;gBACgB,YAAY,EAAA,CAAA;sBAA5B;gBACgB,KAAK,EAAA,CAAA;sBAArB;gBACgB,QAAQ,EAAA,CAAA;sBAAxB;gBACgB,cAAc,EAAA,CAAA;sBAA9B;;;MEbU,gBAAgB,CAAA;AAa3B,IAAA,OAAO,CAAC,MAAW,EAAA;QACjB,IAAI,CAAC,OAAO,EAAE;;AAIhB,IAAA,SAAS,CAAC,MAAW,EAAA;QACnB,IAAI,CAAC,MAAM,EAAE;;IAGf,WAAoB,CAAA,mBAAwC,EAAS,GAAqB,EAAA;QAAtE,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB;QAA8B,IAAG,CAAA,GAAA,GAAH,GAAG;QArB/D,IAAK,CAAA,KAAA,GAAW,cAAc;AAsBrC,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK;YAChD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO;YACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO;YACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS;AACxD,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,IAAI,SAAS;AACvE,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,IAAI,UAAU;YACxE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM;;;AAItD,IAAA,QAAQ;IAED,MAAM,GAAA;AACX,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;;IAGhB,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;;8GAzCX,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,uVCb7B,24BA6BA,EAAA,MAAA,EAAA,CAAA,qJAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBY,IAAI,EAAE,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,ibAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEhC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,aAAa,EAAA,UAAA,EAGX,IAAI,EACP,OAAA,EAAA,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,24BAAA,EAAA,MAAA,EAAA,CAAA,qJAAA,CAAA,EAAA;2HAGnC,KAAK,EAAA,CAAA;sBAAb;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBACQ,OAAO,EAAA,CAAA;sBAAf;gBAEQ,SAAS,EAAA,CAAA;sBAAjB;gBAEQ,UAAU,EAAA,CAAA;sBAAlB;gBACQ,UAAU,EAAA,CAAA;sBAAlB;gBAEQ,MAAM,EAAA,CAAA;sBAAd;gBAGD,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC;gBAM9C,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC;;;ME5BpC,kBAAkB,GAAG,IAAI,cAAc,CAA6B,sBAAsB;MAOjF,0BAA0B,CAAA;AAK/C;AAEK,SAAU,iBAAiB,CAAC,qBAAuD,EAAA;IACvF,OAAO;AACL,QAAA;AACE,YAAA,OAAO,EAAE,kBAAkB;AAC3B,YAAA,WAAW,EAAE,qBAAqB;AACnC,SAAA;KACF;AACH;IAEY;AAAZ,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACrB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,SAAA,CAAA,GAAA,SAAmB;AACnB,IAAA,UAAA,CAAA,MAAA,CAAA,GAAA,MAAa;AACb,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB;AACvB,CAAC,EANW,UAAU,KAAV,UAAU,GAMrB,EAAA,CAAA,CAAA;;MC5BqB,cAAc,CAAA;IAOlC,WAAsB,CAAA,KAAqB,EAAY,MAAc,EAAA;QAA/C,IAAK,CAAA,KAAA,GAAL,KAAK;QAA4B,IAAM,CAAA,MAAA,GAAN,MAAM;QANtD,IAAc,CAAA,cAAA,GAAW,CAAC;QAC1B,IAAa,CAAA,aAAA,GAAW,EAAE;QAC1B,IAAY,CAAA,YAAA,GAAW,CAAC;QAExB,IAAY,CAAA,YAAA,GAAkB,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;QAG/G,IAAI,CAAC,oBAAoB,EAAE;;IAGrB,oBAAoB,GAAA;AAC1B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC;QAC1D,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;AAClC,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa;;;IAI9D,MAAM,YAAY,CAAC,SAAc,EAAA;AACtC,QAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI;QACnC,IAAI,CAAC,YAAY,GAAG;YAClB,GAAG,IAAI,CAAC,YAAY;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,WAAW,EAAE,IAAI,CAAC,aAAa;SAChC;AAED,QAAA,MAAM,IAAI,CAAC,QAAQ,EAAE;QACrB,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;;AAGlC,IAAA,eAAe,CAAC,OAAe,EAAA;AACrC,QAAA,MAAM,WAAW,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE;AACrC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,YAAA,WAAW,EAAE,WAAW;AACxB,YAAA,mBAAmB,EAAE,OAAO;AAC7B,SAAA,CAAC;;AAKL;;MC1BY,cAAc,CAAA;AACzB,IAAA,WAAA,CAAmB,cAA6B,EAAA;QAA7B,IAAc,CAAA,cAAA,GAAd,cAAc;;IAEjC,WAAW,CAAC,QAAgB,EAAE,EAAE,UAAkB,EAAE,EAAE,aAAqB,SAAS,EAAA;QAClF,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC3D,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,KAAK,EAAE,KAAK;gBACZ,UAAU;AACX,aAAA;AACD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;QAEF,OAAO,SAAS,CAAC,OAAO;;AAG1B,IAAA,OAAO,CAAC,OAAuB,EAAA;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC3D,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;AAC9B,gBAAA,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,cAAc;AACtC,gBAAA,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,SAAS;AAC3C,gBAAA,UAAU,EAAE,OAAO,CAAC,UAAU,IAAI,UAAU;AAC5C,gBAAA,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;AAChC,gBAAA,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,KAAK;AACrC,gBAAA,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI;AAC/B,aAAA;AACD,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,KAAK,EAAE,IAAI;AACZ,SAAA,CAAC;AAEF,QAAA,OAAO,cAAc,CAAC,SAAS,CAAC,OAAO,CAAC;;8GAhC/B,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;2FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;AClBD;;;;;;;;;;;;;;;;;AAiBG;AACG,SAAU,qBAAqB,CAAC,OAAe,EAAA;AACnD,IAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;AACpB,IAAA,IAAI;;AAEF,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;AAC1B,IAAA,MAAM;AACN,QAAA,IAAI;;YAEF,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC;AAC3D,YAAA,IAAI,CAAC,OAAO;AAAE,gBAAA,OAAO,IAAI;;AAGzB,YAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AAC3B,gBAAA,IAAI;AACF,oBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;;AACxB,gBAAA,MAAM;oBACN;;;AAGJ,YAAA,OAAO,IAAI;;QACX,OAAO,KAAK,EAAE;AACd,YAAA,OAAO,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC3C,YAAA,OAAO,IAAI;;;AAGjB;;MC5Ba,wBAAwB,CAAA;IAanC,WAAoB,CAAA,cAA8B,EAAU,GAAsB,EAAA;QAA9D,IAAc,CAAA,cAAA,GAAd,cAAc;QAA0B,IAAG,CAAA,GAAA,GAAH,GAAG;QAX/D,IAAO,CAAA,OAAA,GAAY,KAAK;QAGxB,IAAQ,CAAA,QAAA,GAAW,CAAC;AAGpB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAQ;AAG3C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAQ;;AAIxC,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE;YACzD,IAAI,CAAC,WAAW,EAAE;;AACb,aAAA,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,YAAY,EAAE;YACjE,IAAI,CAAC,OAAO,EAAE;;;AAIhB,QAAA,IAAI,OAAO,CAAC,UAAU,CAAC,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,EAAE;gBACxB,IAAI,CAAC,UAAU,EAAE;;AAEnB,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;;;IAI3B,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;;IAG9B,WAAW,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;;;IAIpG,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;AACpC,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,YAAA,QAAQ,EAAE,SAAS;AACnB,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,MAAM,EAAE,wCAAwC;AAChD,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;;IAGf,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtB,YAAA,QAAQ,EAAE,MAAM;AAChB,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,MAAM,EAAE,uCAAuC;AAC/C,YAAA,IAAI,EAAE,IAAI;AACX,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC;AACpC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;;8GA9DhB,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EAHxB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EAAA,CAAC,cAAc,CAAC,ECZ7B,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,m1BAqBA,EDRY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,OAAA,EAAA,UAAA,EAAA,SAAA,EAAA,aAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,SAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,OAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,EAAA,SAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,yWAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEzD,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;+BACE,mBAAmB,EAAA,UAAA,EAGjB,IAAI,EACL,SAAA,EAAA,CAAC,cAAc,CAAC,EAAA,OAAA,EAClB,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,m1BAAA,EAAA;qHAIvG,OAAO,EAAA,CAAA;sBADN;gBAID,QAAQ,EAAA,CAAA;sBADP;gBAID,gBAAgB,EAAA,CAAA;sBADf;gBAID,aAAa,EAAA,CAAA;sBADZ;;;MEpBU,iBAAiB,CAAA;AAK5B,IAAA,WAAA,GAAA;QAJO,IAAS,CAAA,SAAA,GAAY,KAAK;QAC1B,IAAQ,CAAA,QAAA,GAAW,CAAC;QACpB,IAAI,CAAA,IAAA,GAAoC,eAAe;QACvD,IAAK,CAAA,KAAA,GAAW,SAAS;;IAGzB,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;IAGZ,iBAAiB,GAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,eAAe;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;;AAGZ,IAAA,2BAA2B,CAAC,QAAgB,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,aAAa;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;;IAGnB,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI;AAChB,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;;IAGjB,cAAc,GAAA;AACnB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,IAAI,GAAG,eAAe;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,SAAS;QACtB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,eAAe,EAAE;SACvB,EAAE,IAAI,CAAC;;IAGH,eAAe,GAAA;AACpB,QAAA,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC;QACnC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;SACrC,EAAE,IAAI,CAAC;QACR,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;SACrC,EAAE,IAAI,CAAC;QACR,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;SACrC,EAAE,IAAI,CAAC;QACR,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,2BAA2B,CAAC,EAAE,CAAC;SACrC,EAAE,IAAI,CAAC;QACR,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC;SACtC,EAAE,IAAI,CAAC;;8GA1DC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;2FAEP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA;;;MCYY,mBAAmB,CAAA;AAC9B,IAAA,WAAA,CAAmB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB;;8GADzB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAHnB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,CAAC,cAAc,CAAC,ECb7B,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,wMAGA,EDWY,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,YAAY,EAAE,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,WAAW,8BAAE,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAEzD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,cAGd,IAAI,EAAA,SAAA,EACL,CAAC,cAAc,CAAC,WAClB,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,WAAW,CAAC,EAAA,QAAA,EAAA,wMAAA,EAAA;;;AEdlG;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"dataclouder-ngx-core.mjs","sources":["../../../../projects/dataclouder/ngx-core/src/lib/components/empty-state/empty-state.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/empty-state/empty-state.component.html","../../../../projects/dataclouder/ngx-core/src/lib/models/filter.models.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-bar.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-bar.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/confirm/confirm.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/confirm/confirm.component.html","../../../../projects/dataclouder/ngx-core/src/lib/models/classes.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/pagination.abstract.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/confirm.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/utils/utils.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/progress-toast/progress-toast.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/progress-toast/progress-toast.html","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/loading-bar/loading-bar.html","../../../../projects/dataclouder/ngx-core/src/public-api.ts","../../../../projects/dataclouder/ngx-core/src/dataclouder-ngx-core.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { NgIf } from '@angular/common';\n\n@Component({\n selector: 'dc-empty-state',\n templateUrl: './empty-state.component.html',\n styleUrls: ['./empty-state.component.scss'],\n standalone: true,\n imports: [NgIf],\n})\nexport class EmptyStateComponent {\n @Input()\n public headingText = 'No existe el recurso que buscas';\n @Input()\n public subHeadingText = 'Intenta más tarde';\n @Input()\n public mainIconSrcString = 'assets/img/empty-states/empty-box.png';\n}\n","<div class=\"grid justify-content-center\">\r\n <div class=\"empty-state-content\">\r\n <h5 class=\"text-center\" *ngIf=\"headingText\">{{ headingText }}</h5>\r\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString }}\" />\r\n <h6 *ngIf=\"subHeadingText\">{{ subHeadingText }}</h6>\r\n <ng-content></ng-content>\r\n </div>\r\n</div>\r\n","export interface SortOption {\n label: string;\n value: string;\n}\n\nexport const availibleFilters = [\n { name: 'Tomadas', code: 'taken' },\n { name: 'Recomendadas', code: 'suggested' },\n { name: 'Nivel Básico', code: 'basicLevel' },\n { name: 'Nivel Intermedio', code: 'mediumLevel' },\n { name: 'Nivel Avanzado', code: 'advancedLevel' },\n];\n\nexport enum OptionValue {\n Newest = 'newest',\n Oldest = 'oldest',\n Alphabetical = 'alphabetical',\n ReverseAlphabetical = 'reverseAlphabetical',\n}\n\nexport const sortOptions: SortOption[] = [\n { label: 'Más reciente', value: OptionValue.Newest },\n { label: 'Más antiguo', value: OptionValue.Oldest },\n { label: 'A-Z', value: OptionValue.Alphabetical },\n { label: 'Z-A', value: OptionValue.ReverseAlphabetical },\n];\n\nexport const sortTypes = [\n { name: 'Recientes', code: 'newest', sort: { createdDate: -1 } },\n { name: 'Antiguas', code: 'oldest', sort: { createdDate: 1 } },\n { name: 'Populares', code: 'popular', sort: { takenCount: -1 } },\n];\n\nexport interface ICustomFilter {\n name: string;\n type: 'string' | 'number' | 'boolean' | 'date' | 'select';\n options?: any[];\n}\n\nexport interface FiltersConfig {\n page?: number;\n rowsPerPage?: number;\n sort?: { [key: string]: number };\n filters?: { [key: string]: any };\n text?: string;\n returnProps?: Record<string, 0 | 1>;\n}\n\nexport interface IFilterQueryResponse<T> {\n rows: T[];\n count: number;\n skip: number;\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { SelectModule } from 'primeng/select';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { CalendarModule } from 'primeng/calendar';\nimport { availibleFilters, FiltersConfig, ICustomFilter, SortOption, sortOptions } from '../../models/filter.models';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\n\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [CommonModule, FormsModule, ButtonModule, DialogModule, SelectModule, MultiSelectModule, CalendarModule],\n templateUrl: './dc-list-filter-bar.component.html',\n styleUrl: './dc-list-filter-bar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DCFilterBarComponent implements OnInit {\n @Input() public isAdmin: any = true; // TODO: create a solution for is admin\n @Input() public customFilters: ICustomFilter[] = [];\n @Output() public onChangeSort: any = new EventEmitter();\n @Output() public onNew: any = new EventEmitter();\n @Output() public onSearch: any = new EventEmitter();\n @Output() public onFilterChange = new EventEmitter<FiltersConfig>();\n\n public customFilterModels = [];\n constructor() {}\n ngOnInit(): void {\n console.log('customFilters', this.customFilters);\n\n if (this.customFilters.length > 0) {\n console.log('customFilters', this.customFilters);\n for (const filter of this.customFilters) {\n console.log('Deberia agregar un filtro nuevo', filter);\n // this.availibleFilters.push({\n // name: filter.name,\n // type: filter.type,\n // options: filter.options,\n // });\n }\n }\n }\n\n public availibleFilters = availibleFilters;\n public sortOptions = sortOptions;\n\n public isSearchVisible = false;\n public isFilterVisible = false;\n public placeholder = '';\n\n public filter: FiltersConfig = { ...DEFAULT_FILTERS };\n\n selectedFilters: (typeof availibleFilters)[] = [];\n selectedSort: SortOption | null = null;\n dateRange: Date[] = [];\n\n public changeFilter(event) {\n console.log('Filter changed');\n }\n\n public changeSort(event) {\n console.log('Sort changed', event.value);\n this.onChangeSort.emit(event.value);\n }\n\n public createNew() {\n // this.router.navigate(['edit/'], { relativeTo: this.route });\n console.log('createNew from core components');\n this.onNew.emit();\n }\n\n public search(text: string = null): void {\n if (!text) {\n this.placeholder = '';\n this.clearFilters();\n } else {\n this.onSearch.emit(text);\n }\n this.isSearchVisible = false;\n }\n\n clearFilters() {\n this.filter = { ...DEFAULT_FILTERS };\n this.onFilterChange.emit(this.filter);\n }\n\n applyFilters() {\n this.onFilterChange.emit(this.filter);\n this.isFilterVisible = false;\n }\n}\n","<div class=\"background-bar\">\n <div class=\"button-flex\">\n <div>\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n </div>\n\n @if (isAdmin) {\n <span class=\"admin\">\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <p>Haz una búsqueda (Enter)</p>\n <div>\n <span>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n </span>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros Rápidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-calendar\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-calendar>\n </div>\n\n @if (customFilters?.length > 0) {\n <h4>Filtros Personalizados (No terminado...) </h4>\n <h6>Encontrar la forma de que cada custom filter se renderize como un nuevo form.</h6>\n @for (filter of customFilters; track filter.name) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ filter.name }}</label>\n </div>\n } }\n\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n","import { NgIf } from '@angular/common';\r\nimport { Component, OnInit, Input, HostListener } from '@angular/core';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\r\nimport { MessageModule } from 'primeng/message';\r\n\r\n@Component({\r\n selector: 'app-confirm',\r\n templateUrl: './confirm.component.html',\r\n styleUrls: ['./confirm.component.scss'],\r\n standalone: true,\r\n imports: [NgIf, ButtonModule, MessageModule],\r\n})\r\nexport class ConfirmComponent implements OnInit {\r\n @Input() title: string = 'Confirmación';\r\n @Input() message: string;\r\n @Input() warning: string;\r\n\r\n @Input() oneBotton: boolean;\r\n\r\n @Input() acceptText: string;\r\n @Input() cancelText: string;\r\n\r\n @Input() piIcon: string;\r\n\r\n @HostListener('window:keyup.enter', ['$event'])\r\n onEnter(_event: any) {\r\n this.confirm();\r\n }\r\n\r\n @HostListener('window:keyup.escape', ['$event'])\r\n onEscapte(_event: any) {\r\n this.cancel();\r\n }\r\n\r\n constructor(private dynamicDialogConfig: DynamicDialogConfig, public ref: DynamicDialogRef) {\r\n if (this.dynamicDialogConfig.data) {\r\n this.title = this.dynamicDialogConfig.data.title;\r\n this.message = this.dynamicDialogConfig.data.message;\r\n this.warning = this.dynamicDialogConfig.data.warning;\r\n this.oneBotton = this.dynamicDialogConfig.data.oneBotton;\r\n this.acceptText = this.dynamicDialogConfig.data.acceptText ?? 'Aceptar';\r\n this.cancelText = this.dynamicDialogConfig.data.cancelText ?? 'Cancelar';\r\n this.piIcon = this.dynamicDialogConfig.data.piIcon;\r\n }\r\n }\r\n\r\n ngOnInit(): void {}\r\n\r\n public cancel(): void {\r\n this.ref.close(false);\r\n }\r\n\r\n public confirm(): void {\r\n this.ref.close(true);\r\n }\r\n}\r\n","<div class=\"form-input-card\">\r\n <p-message severity=\"secondary\"> {{ title }}</p-message>\r\n\r\n <div style=\"text-align: center; padding: 1rem\">\r\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\r\n </div>\r\n\r\n <div>{{ message }} </div>\r\n\r\n @if (warning) {\r\n <p-message severity=\"warn\">\r\n <i class=\"pi pi-exclamation-triangle\"></i>\r\n {{ warning }}</p-message\r\n >\r\n }\r\n\r\n <br /><br />\r\n\r\n <div>\r\n <div style=\"float: right\">\r\n <p-button *ngIf=\"oneBotton\" label=\"Ok\" (click)=\"confirm()\"></p-button>\r\n </div>\r\n\r\n <div *ngIf=\"!oneBotton\" class=\"options\">\r\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\r\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\r\n </div>\r\n </div>\r\n</div>\r\n","import { InjectionToken, Provider, Type } from '@angular/core';\n\nexport const TOAST_ALERTS_TOKEN = new InjectionToken<ToastAlertsAbstractService>('Toast alerts Service');\n\nexport interface ToastData {\n title: string;\n subtitle: string;\n}\n\nexport abstract class ToastAlertsAbstractService {\n abstract success(data: ToastData): void;\n abstract info(data: ToastData): void;\n abstract warn(data: ToastData): void;\n abstract error(data: ToastData): void;\n}\n\nexport function provideToastAlert(serviceImplementation: Type<ToastAlertsAbstractService>): Provider[] {\n return [\n {\n provide: TOAST_ALERTS_TOKEN,\n useExisting: serviceImplementation,\n },\n ];\n}\n\nexport enum AudioSpeed {\n VerySlow = 'verySlow',\n Slow = 'slow',\n Regular = 'regular',\n Fast = 'fast',\n VeryFast = 'veryFast',\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { FiltersConfig } from './filter.models';\n\nexport abstract class PaginationBase {\n public paginatorFirst: number = 0;\n public paginatorRows: number = 10;\n public totalRecords: number = 0;\n\n public filterConfig: FiltersConfig = { page: 0, rowsPerPage: this.paginatorRows, sort: { _id: -1 }, filters: {} };\n\n constructor(protected route: ActivatedRoute, protected router: Router) {\n this.initializePagination();\n }\n\n private initializePagination(): void {\n const page = this.route.snapshot.queryParamMap.get('page');\n if (page) {\n this.filterConfig.page = +page - 1;\n this.paginatorFirst = this.filterConfig.page * this.paginatorRows;\n }\n }\n\n public async onPageChange(pageEvent: any) {\n this.paginatorRows = pageEvent.rows;\n this.filterConfig = {\n ...this.filterConfig,\n page: pageEvent.page,\n rowsPerPage: this.paginatorRows,\n };\n\n await this.loadData();\n this.updatePageParam(pageEvent.page + 1);\n }\n\n private updatePageParam(newPage: number) {\n const queryParams = { page: newPage };\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: queryParams,\n queryParamsHandling: 'merge',\n });\n }\n\n // Abstract method that needs to be implemented by child classes\n protected abstract loadData(): Promise<void>;\n}\n","import { Injectable } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\n\nimport { ConfirmComponent } from '../components/confirm/confirm.component';\nimport { firstValueFrom } from 'rxjs';\n\nexport interface ConfirmOptions {\n title?: string;\n message?: string;\n acceptText?: string;\n cancelText?: string;\n warning?: string;\n oneBotton?: boolean;\n piIcon?: string;\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ConfirmService {\n constructor(public pdialogService: DialogService) {}\n\n openConfirm(title: string = '', message: string = '', acceptText: string = 'Aceptar') {\n const dialogRef = this.pdialogService.open(ConfirmComponent, {\n data: {\n message: message,\n title: title,\n acceptText,\n },\n closable: true,\n modal: true,\n });\n\n return dialogRef.onClose;\n }\n\n confirm(options: ConfirmOptions) {\n const dialogRef = this.pdialogService.open(ConfirmComponent, {\n data: {\n message: options.message || '',\n title: options.title || 'Confirmación',\n acceptText: options.acceptText || 'Aceptar',\n cancelText: options.cancelText || 'Cancelar',\n warning: options.warning || null,\n oneBotton: options.oneBotton || false,\n piIcon: options.piIcon || null,\n },\n closable: true,\n modal: true,\n });\n\n return firstValueFrom(dialogRef.onClose);\n }\n}\n","/**\n * Extracts and parses the first JSON object or array found within a string.\n *\n * @param content - The input string that may contain JSON data\n * @returns {any} The parsed JSON data if found and valid, or null if:\n * - No JSON object/array is found in the string\n * - The found JSON is invalid and cannot be parsed\n *\n * @example\n * // Returns {name: \"John\"}\n * extractJsonFromString('Some text {\"name\": \"John\"} more text');\n *\n * // Returns [1, 2, 3]\n * extractJsonFromString('Before [1,2,3] after');\n *\n * // Returns null\n * extractJsonFromString('No JSON here');\n */\nexport function extractJsonFromString(content: string): any {\n console.log(content);\n try {\n // First try to parse the entire string as JSON\n return JSON.parse(content);\n } catch {\n try {\n // If that fails, try to find the first valid JSON object or array in the string\n const matches = content.match(/(\\{[\\s\\S]*\\}|\\[[\\s\\S]*\\])/g);\n if (!matches) return null;\n\n // Try each matched potential JSON string until we find a valid one\n for (const match of matches) {\n try {\n return JSON.parse(match);\n } catch {\n continue;\n }\n }\n return null;\n } catch (error) {\n console.error('Error parsing JSON:', error);\n return null;\n }\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnChanges, OnDestroy, Output, SimpleChanges } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { ProgressBar, ProgressBarModule } from 'primeng/progressbar';\nimport { Toast, ToastModule } from 'primeng/toast';\n\n@Component({\n selector: 'dc-progress-toast',\n templateUrl: './progress-toast.html',\n styleUrls: ['./progress-toast.css'],\n standalone: true,\n providers: [MessageService],\n imports: [ButtonModule, CommonModule, ToastModule, ProgressBarModule, Toast, ButtonModule, ProgressBar],\n})\nexport class DCProgressToastComponent implements OnChanges, OnDestroy {\n @Input()\n visible: boolean = false;\n\n @Input()\n progress: number = 0;\n\n @Output()\n processCompleted = new EventEmitter<void>();\n\n @Output()\n processClosed = new EventEmitter<void>();\n\n constructor(private messageService: MessageService, private cdr: ChangeDetectorRef) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['visible'] && changes['visible'].currentValue) {\n this.showConfirm();\n } else if (changes['visible'] && !changes['visible'].currentValue) {\n this.onClose();\n }\n\n // Handle progress changes\n if (changes['progress']) {\n if (this.progress >= 100) {\n this.onComplete();\n }\n this.cdr.markForCheck();\n }\n }\n\n ngOnDestroy(): void {\n this.messageService.clear('confirm');\n }\n\n private showConfirm() {\n if (this.visible) {\n this.messageService.add({ key: 'confirm', sticky: true, severity: 'info', summary: 'Working on it...' });\n }\n }\n\n private onComplete() {\n this.messageService.clear('confirm');\n this.messageService.add({\n severity: 'success',\n summary: 'Process Completed',\n detail: 'The process has finished successfully!',\n life: 3000,\n });\n this.processCompleted.emit();\n this.visible = false;\n }\n\n public onClose() {\n this.visible = false;\n this.messageService.add({\n severity: 'info',\n summary: 'Process Cancelled',\n detail: 'The process was cancelled by the user',\n life: 3000,\n });\n this.messageService.clear('confirm');\n this.processClosed.emit();\n }\n}\n","<div class=\"card flex justify-center\">\n <p-toast position=\"top-center\" key=\"confirm\" (onClose)=\"onClose()\" [baseZIndex]=\"9000\">\n <ng-template let-message #headless let-closeFn=\"closeFn\">\n <section style=\"padding: 15px\">\n <div>\n <i class=\"pi pi-cloud-upload\"></i>\n <span>{{ message.summary }}</span>\n </div>\n <div>\n <p-progressbar [value]=\"progress\" [showValue]=\"false\" [style]=\"{ height: '6px' }\" />\n\n <label style=\"color: beige\">{{ progress }}% uploaded</label>\n </div>\n <div>\n <p-button label=\"Another Upload?\" (click)=\"closeFn($event)\" size=\"small\" />\n <p-button label=\"Cancel\" (click)=\"closeFn($event)\" size=\"small\" />\n </div>\n </section>\n </ng-template>\n </p-toast>\n</div>\n","import { Injectable } from '@angular/core';\n\n/**\n * Service for managing a loading/progress bar component in the application.\n * \n * This service provides methods to control the visibility, progress state, and appearance\n * of a loading bar. It supports both determinate (with specific progress percentage) \n * and indeterminate modes, as well as different color options.\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class LoadingBarService {\n /** Flag indicating whether the loading bar is currently visible */\n public isShowing: boolean = false;\n \n /** Current progress value (0-100) for determinate mode */\n public progress: number = 0;\n \n /** The current display mode of the loading bar */\n public mode: 'indeterminate' | 'determinate' = 'indeterminate';\n \n /** The color of the loading bar (can be a theme color name or hex value) */\n public color: string = 'primary';\n constructor() {}\n\n /**\n * Shows the loading bar in determinate mode with 0% progress.\n * Use this method when starting a process with known progress states.\n */\n public showProgressBar() {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = 0;\n }\n\n /**\n * Shows the loading bar in indeterminate mode.\n * Use this method when the progress of a process cannot be determined.\n */\n public showIndeterminate() {\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 0;\n }\n\n /**\n * Shows the loading bar in determinate mode with a specific progress value.\n * \n * @param progress The progress value to display (0-100)\n */\n public showProgressBarWithProgress(progress: number) {\n this.isShowing = true;\n this.mode = 'determinate';\n this.progress = progress;\n }\n\n /**\n * Hides the loading bar and resets its state.\n * Call this method when a process completes or when you want to hide the loading bar.\n */\n public hideProgressBar() {\n this.isShowing = false;\n this.mode = null;\n this.progress = 0;\n this.color = 'primary';\n }\n\n /**\n * Shows a success state (green color, 100% progress) and then automatically hides the loading bar after a delay.\n * Use this method to indicate successful completion of a process with visual feedback.\n */\n public successAndHide() {\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#4BBD97';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1600);\n }\n\n /**\n * Demonstrates the loading bar by simulating progress from 0% to 100% over 5 seconds.\n * This is a test/demo method to visualize how the loading bar works.\n */\n public testProgressBar() {\n this.showProgressBarWithProgress(0);\n setTimeout(() => {\n this.showProgressBarWithProgress(20);\n }, 1000);\n setTimeout(() => {\n this.showProgressBarWithProgress(40);\n }, 2000);\n setTimeout(() => {\n this.showProgressBarWithProgress(60);\n }, 3000);\n setTimeout(() => {\n this.showProgressBarWithProgress(80);\n }, 4000);\n setTimeout(() => {\n this.showProgressBarWithProgress(100);\n }, 5000);\n }\n\n /**\n * Animates the progress bar from 0 to 100 over a specified time period\n * use when you dont know the duration of the process\n * if your process finish before the time ends call successAndHide()\n * @param durationInSeconds The total duration of the animation in seconds (default: 20)\n */\n public fakeProgressWithTime(durationInSeconds: number = 20): void {\n // Reset progress to 0\n this.showProgressBarWithProgress(0);\n\n // Calculate how often to update based on the duration\n const totalSteps = 50; // 0 to 100\n const intervalMs = (durationInSeconds * 1000) / totalSteps;\n let currentProgress = 0;\n\n // Create interval to update progress\n const progressInterval = setInterval(() => {\n currentProgress += 2;\n this.showProgressBarWithProgress(currentProgress);\n\n // Clear interval when we reach local state or global\n if (currentProgress >= 100 || this.progress >= 100) {\n clearInterval(progressInterval);\n this.showIndeterminate();\n }\n }, intervalMs);\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { Component } from '@angular/core';\nimport { MessageService } from 'primeng/api';\nimport { ButtonModule } from 'primeng/button';\nimport { ProgressBar, ProgressBarModule } from 'primeng/progressbar';\nimport { ToastModule } from 'primeng/toast';\nimport { LoadingBarService } from './loading-bar.service';\n\n@Component({\n selector: 'dc-loading-bar',\n templateUrl: './loading-bar.html',\n styleUrls: ['./loading-bar.css'],\n standalone: true,\n providers: [MessageService],\n imports: [ButtonModule, CommonModule, ToastModule, ProgressBarModule, ButtonModule, ProgressBar],\n})\nexport class LoadingBarComponent {\n constructor(public loadingBarService: LoadingBarService) {}\n}\n","@if (loadingBarService.isShowing) {\n<p-progressbar [color]=\"loadingBarService.color\" [mode]=\"loadingBarService.mode\" [style]=\"{ height: '4px' }\" [value]=\"loadingBarService.progress\" />\n}\n","/*\n * Public API Surface of core-components\n */\n\nexport * from './lib/components/empty-state/empty-state.component';\nexport * from './lib/components/list-filter-bar/dc-list-filter-bar.component';\nexport * from './lib/components/confirm/confirm.component';\nexport * from './lib/models/classes';\nexport * from './lib/models/pagination.abstract';\nexport * from './lib/models/filter.models';\nexport * from './lib/services/confirm.service';\nexport * from './lib/utils/utils';\nexport * from './lib/components/progress-toast/progress-toast';\nexport * from './lib/components/loading-bar/loading-bar';\nexport * from './lib/components/loading-bar/loading-bar.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i1","i4","i1.LoadingBarService","i2"],"mappings":"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"}
@@ -1,16 +1,59 @@
1
1
  import * as i0 from "@angular/core";
2
+ /**
3
+ * Service for managing a loading/progress bar component in the application.
4
+ *
5
+ * This service provides methods to control the visibility, progress state, and appearance
6
+ * of a loading bar. It supports both determinate (with specific progress percentage)
7
+ * and indeterminate modes, as well as different color options.
8
+ */
2
9
  export declare class LoadingBarService {
10
+ /** Flag indicating whether the loading bar is currently visible */
3
11
  isShowing: boolean;
12
+ /** Current progress value (0-100) for determinate mode */
4
13
  progress: number;
14
+ /** The current display mode of the loading bar */
5
15
  mode: 'indeterminate' | 'determinate';
16
+ /** The color of the loading bar (can be a theme color name or hex value) */
6
17
  color: string;
7
18
  constructor();
19
+ /**
20
+ * Shows the loading bar in determinate mode with 0% progress.
21
+ * Use this method when starting a process with known progress states.
22
+ */
8
23
  showProgressBar(): void;
24
+ /**
25
+ * Shows the loading bar in indeterminate mode.
26
+ * Use this method when the progress of a process cannot be determined.
27
+ */
9
28
  showIndeterminate(): void;
29
+ /**
30
+ * Shows the loading bar in determinate mode with a specific progress value.
31
+ *
32
+ * @param progress The progress value to display (0-100)
33
+ */
10
34
  showProgressBarWithProgress(progress: number): void;
35
+ /**
36
+ * Hides the loading bar and resets its state.
37
+ * Call this method when a process completes or when you want to hide the loading bar.
38
+ */
11
39
  hideProgressBar(): void;
40
+ /**
41
+ * Shows a success state (green color, 100% progress) and then automatically hides the loading bar after a delay.
42
+ * Use this method to indicate successful completion of a process with visual feedback.
43
+ */
12
44
  successAndHide(): void;
13
- exampleProgress(): void;
45
+ /**
46
+ * Demonstrates the loading bar by simulating progress from 0% to 100% over 5 seconds.
47
+ * This is a test/demo method to visualize how the loading bar works.
48
+ */
49
+ testProgressBar(): void;
50
+ /**
51
+ * Animates the progress bar from 0 to 100 over a specified time period
52
+ * use when you dont know the duration of the process
53
+ * if your process finish before the time ends call successAndHide()
54
+ * @param durationInSeconds The total duration of the animation in seconds (default: 20)
55
+ */
56
+ fakeProgressWithTime(durationInSeconds?: number): void;
14
57
  static ɵfac: i0.ɵɵFactoryDeclaration<LoadingBarService, never>;
15
58
  static ɵprov: i0.ɵɵInjectableDeclaration<LoadingBarService>;
16
59
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dataclouder/ngx-core",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "description": "Angular core components library for DataClouder applications, only for internal use",
5
5
  "author": {
6
6
  "name": "dataclouder",