@dataclouder/ngx-core 0.1.21 → 0.1.22
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.
|
@@ -485,7 +485,7 @@ class QuickTableComponent {
|
|
|
485
485
|
this._tableData.set(this.tableData());
|
|
486
486
|
this.initializeFilters();
|
|
487
487
|
}
|
|
488
|
-
if (!this.actions) {
|
|
488
|
+
if (!this.actions?.length) {
|
|
489
489
|
this.actions = [{ title: 'select', label: 'Select', icon: 'pi pi-check', severity: 'primary' }];
|
|
490
490
|
}
|
|
491
491
|
console.log('QuickTableComponent', this.actions);
|
|
@@ -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/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/lib/pipes/loadash-get.pipe.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/quick-table/quick-table.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/quick-table/quick-table.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/models/common-enums.ts","../../../../projects/dataclouder/ngx-core/src/lib/utils/utils.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/confirm.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/prompt/prompt.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/prompt/prompt.component.html","../../../../projects/dataclouder/ngx-core/src/lib/services/prompt.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/http-core.service.ts","../../../../projects/dataclouder/ngx-core/src/public-api.ts","../../../../projects/dataclouder/ngx-core/src/dataclouder-ngx-core.ts"],"sourcesContent":["import { Component, Input, input } from '@angular/core';\n\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: [],\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 public readonly mainIconSrcString = input('assets/img/empty-states/empty-box.png');\n}\n","<div class=\"grid justify-content-center\">\n <div class=\"empty-state-content\">\n @if (headingText) {\n <h5 class=\"text-center\">{{ headingText }}</h5>\n }\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString() }}\" />\n @if (subHeadingText) {\n <h6>{{ subHeadingText }}</h6>\n }\n <ng-content></ng-content>\n </div>\n</div>\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\nexport interface ListFilterBarOptions {\n showCreateButton?: boolean;\n showViewButton?: boolean;\n showActions?: boolean;\n // Add other UI behavior flags here, e.g.:\n // showSortOptions?: boolean;\n // showFilterButton?: boolean;\n // allowManualSearch?: boolean;\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, output, input, model } 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, ListFilterBarOptions } from '../../models/filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\ntype actions = 'new' | 'edit' | 'delete' | 'changeView' | (string & {});\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [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 // Signal Inputs\n public readonly items = input<MenuItem[]>([]);\n public readonly options = input<ListFilterBarOptions>({ showCreateButton: true });\n // Inputs\n @Input() public customFilters: ICustomFilter[] = [];\n\n // Outputs\n public readonly onFilterAction = output<any>();\n public readonly onChangeSort = output<any>();\n public readonly onNew = output<any>();\n\n // Internal State\n public customFilterModels = [];\n\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 console.log('createNew from core components');\n this.onNew.emit('new');\n }\n\n public search(text: string = null): void {\n if (!text) {\n this.placeholder = '';\n this.clearFilters();\n } else {\n this.doItemAction({ action: 'search', item: text });\n }\n this.isSearchVisible = false;\n }\n\n clearFilters() {\n this.filter = { ...DEFAULT_FILTERS };\n this.doItemAction({ action: 'filterChange', item: this.filter });\n }\n\n applyFilters() {\n this.doItemAction({ action: 'filterChange', item: this.filter });\n this.isFilterVisible = false;\n }\n\n public doItemAction(filterEvent: OnActionEvent) {\n this.onFilterAction.emit(filterEvent);\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 (options()?.showCreateButton) {\n <span class=\"admin\">\n <i style=\"position: absolute; right: -5px; top: -5px; z-index: 2; color: grey\" class=\"pi pi-key\"></i>\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n @if(options()?.showViewButton){\n <p-button icon=\"pi pi-objects-column\" variant=\"text\" (click)=\"doItemAction({ action: 'changeView', item: null })\" severity=\"secondary\"></p-button>\n } @if(options()?.showActions){ @for(item of items(); track $index) {\n <p-button [icon]=\"item.icon\" variant=\"text\" (click)=\"doItemAction({ action: item.title, item: item })\" severity=\"secondary\"></p-button>\n }\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n }\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","\r\nimport { Component, OnInit, Input, HostListener, inject } 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: [ButtonModule, MessageModule],\r\n})\r\nexport class ConfirmComponent implements OnInit {\n private dynamicDialogConfig = inject(DynamicDialogConfig);\n ref = inject(DynamicDialogRef);\n\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 }\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\r\n\r\n constructor() {\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\">\n <p-message severity=\"secondary\"> {{ title }}</p-message>\n\n <div style=\"text-align: center; padding: 1rem\">\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\n </div>\n\n <div>{{ message }} </div>\n\n @if (warning) {\n <p-message severity=\"warn\">\n <i class=\"pi pi-exclamation-triangle\"></i>\n {{ warning }}</p-message\n >\n }\n\n <br /><br />\n\n <div>\n <div style=\"float: right\">\n @if (oneBotton) {\n <p-button label=\"Ok\" (click)=\"confirm()\"></p-button>\n }\n </div>\n\n @if (!oneBotton) {\n <div class=\"options\">\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\n </div>\n }\n </div>\n </div>\n","\nimport { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, SimpleChanges, inject, output, input } 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, ToastModule, ProgressBarModule, Toast, ButtonModule, ProgressBar],\n})\nexport class DCProgressToastComponent implements OnChanges, OnDestroy {\n private messageService = inject(MessageService);\n private cdr = inject(ChangeDetectorRef);\n\n @Input()\n visible: boolean = false;\n\n readonly progress = input<number>(0);\n\n readonly processCompleted = output<void>();\n\n readonly processClosed = output<void>();\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {}\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\n /** Interval reference for the fake progress animation */\n private progressInterval: any;\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 // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#4BBD97';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1100);\n }\n\n public infoAndHide() {\n // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#45C8F3';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1000);\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 // Clear any existing interval first\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n }\n\n // Create interval to update progress\n this.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(this.progressInterval);\n this.progressInterval = null;\n this.showIndeterminate();\n }\n }, intervalMs);\n }\n}\n","import { Component, inject } 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, ToastModule, ProgressBarModule, ButtonModule, ProgressBar],\n})\nexport class LoadingBarComponent {\n loadingBarService = inject(LoadingBarService);\n}\n","@if (loadingBarService.isShowing) {\n<p-progressbar [color]=\"loadingBarService.color\" [mode]=\"loadingBarService.mode\" [style]=\"{ height: '4px' }\" [value]=\"loadingBarService.progress\" />\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { get } from 'lodash';\nimport { PColumn } from '../components/quick-table/quick-table';\n\n@Pipe({\n name: 'getPath',\n standalone: true,\n})\nexport class GetPathPipe implements PipeTransform {\n transform(obj: any, column: PColumn): string {\n const value = get(obj, column.field, 'No disponible');\n // debugger;\n if (column.type === 'text') {\n return value.length > 80 ? value.substring(0, 80) + '...' : value;\n }\n return value;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewChild, output, input, effect, signal, Input } from '@angular/core';\nimport { CardModule } from 'primeng/card';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { RouterModule } from '@angular/router';\nimport { SpeedDialModule } from 'primeng/speeddial';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { TableModule, Table } from 'primeng/table';\nimport { FilterMatchMode, FilterMetadata } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\n\nimport { GetPathPipe } from '../../pipes/loadash-get.pipe';\nimport { MenuItem } from 'primeng/api';\nimport { TagModule } from 'primeng/tag';\nimport { SelectModule } from 'primeng/select';\nimport { MultiSelectModule } from 'primeng/multiselect';\n\nexport interface PColumn {\n field: string;\n header: string;\n type?: 'text' | 'image' | 'tags' | 'actions';\n}\n\n@Component({\n selector: 'app-quick-table',\n imports: [\n CardModule,\n ButtonModule,\n SpeedDialModule,\n PaginatorModule,\n TableModule,\n RouterModule,\n GetPathPipe,\n InputTextModule,\n TagModule,\n SelectModule,\n MultiSelectModule,\n ],\n templateUrl: './quick-table.html',\n styleUrl: './quick-table.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class QuickTableComponent {\n // Inputs\n readonly columns = input<PColumn[]>([]);\n readonly tableData = input<any[]>([]); // This is the backup data\n // Default action is only select\n // readonly actions = input<MenuItem[]>();\n @Input() actions: MenuItem[] = [];\n\n // Outputs\n readonly onAction = output<OnActionEvent>();\n\n // Signals States\n public _columns = signal<PColumn[]>([]);\n public _tableData = signal<any[]>([]);\n public filters = signal<{ [s: string]: FilterMetadata | FilterMetadata[] }>({});\n public globalFilterFields = signal<string[]>([]);\n\n @ViewChild('tableRef') tableRef!: Table;\n\n tableColumns: any[] = [];\n\n constructor() {\n effect(() => {\n this.initializeTableColumns();\n if (this.tableData()) {\n this._tableData.set(this.tableData());\n\n this.initializeFilters();\n }\n if (!this.actions) {\n this.actions = [{ title: 'select', label: 'Select', icon: 'pi pi-check', severity: 'primary' }];\n }\n console.log('QuickTableComponent', this.actions);\n });\n }\n\n private initializeTableColumns(): void {\n if (!this.columns() || this.columns().length === 0) {\n console.warn('No columns provided. please privide columns for acuracy');\n if (this.tableData()?.[0]) {\n this.tableColumns = Object.keys(this.tableData()[0]).map((key) => ({\n field: key,\n header: key,\n sortable: true,\n }));\n console.log(this.tableColumns);\n this._columns.set(this.tableColumns);\n }\n } else {\n this._columns.set([...this.columns(), { field: 'actions', header: 'Actions', type: 'actions' }]);\n }\n }\n\n public selectItem(item: any, action: MenuItem) {\n console.log('onAction', { item, action });\n this.onAction.emit({ item, action: action.title || action.label });\n }\n\n public onGlobalFilter(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.tableRef.filterGlobal(value, FilterMatchMode.CONTAINS);\n }\n\n public getFilterType(column: PColumn): string {\n if (column.type === 'image') {\n return 'text';\n }\n return 'text';\n }\n\n private initializeFilters(): void {\n // Initialize filters\n const filterObj: Record<string, any> = {};\n const fields: string[] = [];\n\n if (this._columns()) {\n this._columns().forEach((col) => {\n if (col.type === 'text') {\n // Add field to global filter fields\n fields.push(col.field);\n\n // Initialize filter for this column\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.CONTAINS,\n };\n } else if (col.type === 'tags') {\n // First extract all posible tags.\n console.log(this.tableData());\n const tags: string[] = [];\n this.tableData().forEach((item) => {\n if (Array.isArray(item[col.field])) {\n tags.push(...item[col.field]);\n } else {\n tags.push(item[col.field]);\n }\n });\n const uniqueTags = Array.from(new Set(tags));\n\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.IN,\n options: uniqueTags,\n };\n }\n });\n }\n\n this.filters.set(filterObj);\n this.globalFilterFields.set(fields);\n }\n\n public onFilterLocal(event: any) {\n console.log(event);\n }\n\n public filterOutsideTable(type: 'tags' | 'text', column: string, value: string[]) {\n // Its complicated understand all filter insde the table i can understand if i debugg tableRef.filters but seens is not able to filter array so i build my own outside.\n if (type === 'tags') {\n if (value.length === 0) {\n this._tableData.set(this.tableData());\n return;\n }\n const filteredData = [];\n this.tableData().forEach((item: string[]) => {\n if (Array.isArray(item[column])) {\n const tags: string[] = item[column];\n if (tags.some((tag) => value.includes(tag))) {\n filteredData.push(item);\n }\n }\n });\n console.log(filteredData);\n this._tableData.set(filteredData);\n }\n }\n}\n","<p-table\n [tableStyle]=\"{ 'min-width': '20rem' }\"\n #tableRef\n [value]=\"_tableData()\"\n [columns]=\"_columns()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [filters]=\"filters()\"\n (onFilter)=\"onFilterLocal($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between align-items-center\">\n <h5 class=\"m-0\">Table Data</h5>\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onGlobalFilter($event)\" placeholder=\"Search keyword\" />\n </span>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n @for (column of columns; track column) {\n <th [pSortableColumn]=\"column.field\">{{ column.header }} <p-sortIcon [field]=\"column.field\"></p-sortIcon></th>\n }\n </tr>\n <tr>\n @for (column of columns; track column) { @if(column.type === 'tags') {\n <th>\n <p-multiselect\n [options]=\"filters()?.[column.field]?.['options']\"\n placeholder=\"Selecciona\"\n (onChange)=\"filterOutsideTable('tags', column.field, $event.value)\"\n [style]=\"{ minWidth: '14rem' }\"\n [panelStyle]=\"{ minWidth: '16rem' }\">\n <ng-template let-option #item>\n <div class=\"flex items-center gap-2\">\n <span>{{ option }}</span>\n </div>\n </ng-template>\n </p-multiselect>\n </th>\n\n } @else {\n <th>\n <p-columnFilter [type]=\"getFilterType(column)\" [field]=\"column.field\" placeholder=\"Search\" [showMenu]=\"false\"></p-columnFilter>\n </th>\n } }\n </tr>\n </ng-template>\n <!-- @if(tableData()){ -->\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\n <tr>\n @for (column of columns; track column) {\n <td>\n @if(column.type === 'image'){\n <div class=\"image-container\">\n <img [src]=\"item | getPath: column\" alt=\"Image\" class=\"image\" />\n </div>\n } @else if(column.type === 'tags') {\n <div class=\"tags-container\">\n @for (tag of item[column.field]; track tag) {\n <p-tag [rounded]=\"true\" [value]=\"tag\"></p-tag>\n }\n </div>\n } @else if(column.type === 'actions') {\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions; track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n } @else {\n <span>{{ item | getPath: column}} </span>\n }\n </td>\n }\n </tr>\n </ng-template>\n <!-- } -->\n</p-table>\n","import { InjectionToken, Provider, Type } from '@angular/core';\nimport { EModelQuality } from './common-enums';\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\n// @deprecated, moved to ngx-tts\nexport enum AudioSpeed {\n VerySlow = 'verySlow',\n Slow = 'slow',\n Regular = 'regular',\n Fast = 'fast',\n VeryFast = 'veryFast',\n}\n\nexport const AudioSpeedReverse = {\n [AudioSpeed.VerySlow]: 1,\n [AudioSpeed.Slow]: 2,\n [AudioSpeed.Regular]: 3,\n [AudioSpeed.Fast]: 4,\n [AudioSpeed.VeryFast]: 5,\n};\n\nexport class IAIModel {\n provider?: string; // First Priority\n modelName?: string; // if model is set then good, else use default. but model does not work alone. need a provider.\n quality?: EModelQuality; // Second priority if provider is not set, then get default for quality. is provider is set then look for quality defaults in server.\n id?: string; // Not sure if i'm usin this. probably i should change to label.\n}\n\n// Since it not clear if this bellows to chat AI Or user i put here.\nexport class ChatUserSettings {\n realTime: boolean; // For real time conversation chat, no need to press button to send message\n superHearing: boolean; // use whisper to get a better transcription\n repeatRecording: boolean; // depends on superhearing, if true, it will repeat the recording\n // fixGrammar: boolean; // fix grammar\n voice?: string; // first voice, when is not availible one\n // autoTranslate?: boolean; // auto translate\n highlightWords?: boolean; // highlight words\n synthVoice?: boolean; // post request to your own tts service to get audio, need resonse with standard\n model?: IAIModel; // if you want to use a specific model\n speed?: AudioSpeed; // if you want to use a specific speed variable\n speedRate?: number; // temporal for more specific speed.\n userMessageTask: boolean;\n assistantMessageTask: boolean;\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { FiltersConfig } from './filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { PColumn } from '../components/quick-table/quick-table';\nimport { Directive, output, input, Inject, inject } from '@angular/core';\n\nexport interface OnActionEvent {\n action?: string;\n item?: any;\n menuItem?: MenuItem;\n}\n\n/**\n * Abstract base class for implementing pagination functionality.\n * Provides common pagination logic, state management, and navigation handling.\n * Child classes must implement the loadData method and define columns.\n */\n@Directive()\nexport abstract class PaginationBase {\n /**\n * Available actions for items.\n * Must be implemented by child classes.\n */\n readonly actions = input<MenuItem[]>();\n /**\n * Event emitted when an action is performed on an item.\n * Emits an object containing the item and the action that was triggered.\n */\n readonly onAction = output<OnActionEvent>();\n\n /** Current first record index for the paginator */\n public paginatorFirst: number = 0;\n /** Number of rows to display per page */\n public paginatorRows: number = 10;\n /** Total number of records available */\n public totalRecords: number = 0;\n /** Current view mode, either cards or table */\n public viewMode: 'cards' | 'table' = 'table';\n /** Loading state indicator */\n public isLoading: boolean = false;\n /** Available button actions for items */\n public buttonActions: MenuItem[] = [];\n\n /**\n * Columns configuration for the table view.\n * Must be implemented by child classes.\n */\n protected abstract columns: PColumn[];\n\n /**\n * Configuration for filtering, sorting, and pagination.\n * Includes current page, rows per page, sorting criteria, and applied filters.\n */\n public filterConfig: FiltersConfig = { page: 0, rowsPerPage: this.paginatorRows, sort: { _id: -1 }, filters: {} };\n\n protected route = inject(ActivatedRoute);\n protected router = inject(Router);\n /**\n * Creates an instance of PaginationBase.\n * @param route - The ActivatedRoute for accessing route parameters\n * @param router - The Router for navigation\n */\n constructor() {\n this.initializePagination();\n }\n\n /**\n * Initializes pagination based on URL query parameters.\n * Sets the current page from the 'page' query parameter if available.\n * @private\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 /**\n * Handles pagination events from the paginator component.\n * Updates the filter configuration, loads new data, and updates the URL.\n * @param pageEvent - The page event containing page number and rows per page\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 /**\n * Updates the 'page' query parameter in the URL.\n * @param newPage - The new page number to set in the URL\n * @private\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 /**\n * Loads data for the current page configuration.\n * Must be implemented by child classes to fetch data from the appropriate source.\n * @returns A promise that resolves when data loading is complete\n */\n protected abstract loadData(): Promise<void>;\n\n /**\n * Handle actions triggered from the table or card view\n * @param param0 Object containing the item and action that was triggered\n */\n public doAction(actionEvent: OnActionEvent) {\n console.log('actionEvent on pagination', actionEvent);\n this.onAction.emit(actionEvent);\n }\n}\n","export enum EModelQuality {\n FAST = 'fast', // Prioritize speed over intelligence like flash lite\n BALANCED = 'balanced', // Equal balance like flash 2.5\n SMART = 'smart', // Prioritize intelligence over speed like gemini pro 2.5\n SMART_THINKING = 'smart-thinking', // Maximum intelligence, ignore speed enable thinking mode\n}\n\nexport const ModelQualityOptions = [\n { label: 'Fast', value: EModelQuality.FAST },\n { label: 'Balanced', value: EModelQuality.BALANCED },\n { label: 'Smart', value: EModelQuality.SMART },\n { label: 'Smart Thinking', value: EModelQuality.SMART_THINKING },\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\n/**\n * Transforms a camelCase string into a string with spaces between words,\n * with the first letter of each word capitalized.\n * e.g., \"camelCaseString\" becomes \"Camel Case String\"\n * e.g., \"characterDescription\" becomes \"Character Description\"\n *\n * @param input The camelCase string to transform.\n * @returns The transformed string with spaces and capitalized words.\n */\nexport function formatCamelCaseString(input: string): string {\n if (!input) {\n return '';\n }\n\n // Add a space before any uppercase letter, then trim leading/trailing spaces.\n const spacedString = input.replace(/([A-Z])/g, ' $1').trim();\n\n // Capitalize the first letter of the entire string and ensure other letters\n // of the first word are lowercase if they weren't part of the original camel casing.\n // Then, capitalize the first letter of each subsequent word.\n return spacedString\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n","import { Injectable, inject } 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 pdialogService = inject(DialogService);\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {}\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","import { Component, OnInit, inject, signal } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FormsModule } from '@angular/forms';\nimport { MessageModule } from 'primeng/message';\nimport { CommonModule } from '@angular/common';\nimport { TextareaModule } from 'primeng/textarea';\n\n@Component({\n selector: 'dc-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n standalone: true,\n imports: [CommonModule, ButtonModule, InputTextModule, FormsModule, MessageModule, TextareaModule],\n})\nexport class PromptComponent implements OnInit {\n ref = inject(DynamicDialogRef);\n config = inject(DynamicDialogConfig);\n\n title = signal<string>('Prompt');\n message = signal<string>('');\n acceptText = signal<string>('Accept');\n cancelText = signal<string>('Cancel');\n inputValue = signal<string>('');\n\n ngOnInit(): void {\n this.title.set(this.config.data?.title || 'Prompt');\n this.message.set(this.config.data?.message || '');\n this.acceptText.set(this.config.data?.acceptText || 'Accept');\n this.cancelText.set(this.config.data?.cancelText || 'Cancel');\n // Set initial value if provided\n this.inputValue.set(this.config.data?.initialValue || '');\n }\n\n accept(): void {\n this.ref.close(this.inputValue());\n }\n\n cancel(): void {\n this.ref.close(null);\n }\n}\n","<div class=\"form-input-card p-4\">\n <p-message severity=\"secondary\"> {{ title() }}</p-message>\n\n <div class=\"my-4\">{{ message() }}</div>\n\n <div class=\"p-field mb-4\">\n <textarea rows=\"5\" cols=\"30\" pTextarea [(ngModel)]=\"inputValue\" class=\"w-full\"></textarea>\n </div>\n\n <div class=\"flex justify-content-end gap-2\">\n <p-button [label]=\"cancelText()\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\n <p-button [label]=\"acceptText()\" (click)=\"accept()\"></p-button>\n </div>\n</div>\n","import { Injectable, inject } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { firstValueFrom } from 'rxjs';\n\nimport { PromptComponent } from '../components/prompt/prompt.component';\n\nexport interface PromptOptions {\n title?: string;\n message?: string;\n acceptText?: string;\n cancelText?: string;\n initialValue?: string; // Add initialValue property\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PromptService {\n private readonly dialogService = inject(DialogService);\n\n /**\n * Opens a prompt dialog.\n * @param options Configuration options for the prompt dialog.\n * @returns A promise that resolves with the input value if accepted, or null if canceled.\n */\n openPrompt(options: PromptOptions): Promise<string | null> {\n const dialogRef = this.dialogService.open(PromptComponent, {\n data: {\n title: options.title || 'Prompt',\n message: options.message || '',\n acceptText: options.acceptText || 'Accept',\n cancelText: options.cancelText || 'Cancel',\n initialValue: options.initialValue || '', // Pass initialValue to component data\n },\n header: options.title || 'Prompt', // Set header for accessibility and title bar\n closable: true,\n modal: true,\n width: '700px', // Optional: Adjust width as needed\n });\n\n // Return the result when the dialog closes\n return firstValueFrom(dialogRef.onClose);\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject, signal, InjectionToken, Optional, Inject } from '@angular/core';\nimport { Observable, throwError, lastValueFrom, tap, map, catchError } from 'rxjs';\n\n/**\n * Interface for HTTP error responses\n */\nexport interface HttpCoreError {\n error_message: string;\n explanation: string;\n status?: number;\n code?: string;\n}\n\n/**\n * Interface for deleted data response\n */\nexport interface DeletedData {\n acknowledged: boolean;\n deletedCount: number;\n}\n\n/**\n * Configuration for HttpCoreService\n */\nexport interface HttpCoreConfig {\n primaryUrl: string;\n secondaryUrl?: string;\n defaultHost?: 'primary' | 'secondary';\n errorHandler?: (error: HttpErrorResponse) => void;\n}\n\n/**\n * Injection token for HttpCoreService configuration\n */\nexport const HTTP_CORE_CONFIG = new InjectionToken<HttpCoreConfig>('HTTP_CORE_CONFIG');\n\n/**\n * Modern HTTP service for Angular applications\n * Provides methods for making HTTP requests with proper error handling and response transformation\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class HttpCoreService {\n private httpClient = inject(HttpClient);\n\n // Use signals for reactive state\n private isLoading = signal<boolean>(false);\n private lastError = signal<HttpCoreError | null>(null);\n\n // Configuration\n private config: HttpCoreConfig;\n\n constructor(@Optional() @Inject(HTTP_CORE_CONFIG) config: HttpCoreConfig | null) {\n if (config && config.primaryUrl) {\n this.config = {\n defaultHost: 'primary',\n ...config,\n };\n } else {\n // Initialize with a placeholder - this will be set properly with setConfig\n this.config = {\n primaryUrl: '',\n defaultHost: 'primary',\n };\n\n if (!config) {\n console.warn('HttpCoreService: No configuration provided. Use setConfig to configure the service.');\n } else if (!config.primaryUrl) {\n console.warn('HttpCoreService: primaryUrl is required in configuration. Use setConfig to set it.');\n }\n }\n }\n\n /**\n * Set the configuration for the service\n * This allows for manual configuration when not using dependency injection\n */\n setConfig(config: HttpCoreConfig): void {\n this.config = {\n ...this.config,\n ...config,\n };\n }\n\n /**\n * Get the loading state as a signal\n */\n public loading() {\n return this.isLoading;\n }\n\n /**\n * Get the last error as a signal\n */\n public error() {\n return this.lastError;\n }\n\n /**\n * Make a POST request to the specified service\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async post<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(tap(this.checkResponseStatus.bind(this)), catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a POST request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param data The data to send\n * @returns A promise with the response\n */\n public async postToUrl<T = any>(baseUrl: string, service: string, data: any): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(tap(this.checkResponseStatus.bind(this)), catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a PUT request to the specified service\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async put<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a PUT request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param data The data to send\n * @returns A promise with the response\n */\n public async putToUrl<T = any>(baseUrl: string, service: string, data: any): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a GET request to the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @param skipErrorHandling Whether to skip error handling\n * @returns A promise with the response\n */\n public async get<T = any>(service: string, host = this.config.defaultHost, skipErrorHandling = false): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient.get<T>(url).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a GET request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param skipErrorHandling Whether to skip error handling\n * @returns A promise with the response\n */\n public async getFromUrl<T = any>(baseUrl: string, service: string, skipErrorHandling = false): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n\n const response$ = this.httpClient.get<T>(url).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a DELETE request to the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async delete<T = DeletedData>(service: string, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a DELETE request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @returns A promise with the response\n */\n public async deleteFromUrl<T = DeletedData>(baseUrl: string, service: string): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Get an observable for a GET request\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public getObservable<T = any>(service: string, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n\n return this.httpClient.get<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n }\n\n /**\n * Get an observable for a POST request\n * @param service The service endpoint\n * @param data The data to send\n * @param skipErrorHandling Whether to skip error handling\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public postObservable<T = any>(service: string, data: any, skipErrorHandling = false, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n\n return this.httpClient.post<T>(url, dataPlain).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n }\n\n /**\n * Get an observable for a DELETE request\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public deleteObservable<T = DeletedData>(service: string, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n\n return this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n }\n\n /**\n * Upload a file to the specified service\n * @param service The service endpoint\n * @param file The file to upload\n * @param metadata Optional metadata to send with the file\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async uploadFile<T = any>(service: string, file: Blob, metadata: any = null, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const formData = new FormData();\n formData.append('file', file);\n\n let headers = {};\n if (metadata) {\n headers = { metadata: JSON.stringify(metadata) };\n }\n\n const response$ = this.httpClient.post<T>(url, formData, { headers });\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Download a file from the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async downloadFile(service: string, host = this.config.defaultHost) {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient\n .get(url, {\n responseType: 'blob',\n observe: 'response',\n })\n .pipe(catchError(this.handleBlobError.bind(this)));\n\n const result = await lastValueFrom(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Upload a file to the specified service and get the response as a blob\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async postFileAndGetBlob(service: string, data: any, host = this.config.defaultHost) {\n this.isLoading.set(true);\n\n try {\n let url = this.getHostUrl(host);\n if (service) {\n url += '/' + service;\n }\n\n const response$ = this.httpClient\n .post(url, data, {\n observe: 'response',\n responseType: 'blob',\n })\n .pipe(catchError(this.handleBlobError.bind(this)));\n\n const result = await lastValueFrom(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Get a file from the specified service as an observable\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public getFileObservable(service: string, host = this.config.defaultHost): Observable<Blob> {\n const url = this.getHostUrl(host) + '/' + service;\n return this.httpClient.get(url, { responseType: 'blob' });\n }\n\n /**\n * Get the URL for the specified host\n * @param host The host to use (primary or secondary)\n * @returns The URL for the specified host\n */\n private getHostUrl(host: 'primary' | 'secondary' = this.config.defaultHost): string {\n return host === 'secondary' && this.config.secondaryUrl ? this.config.secondaryUrl : this.config.primaryUrl;\n }\n\n /**\n * Handle an error from a request\n * @param error The error to handle\n * @returns An observable that throws the error\n */\n private handleRequestError(error: HttpErrorResponse): Observable<never> {\n this.isLoading.set(false);\n\n // Set the last error\n if (error.error && typeof error.error === 'object') {\n this.lastError.set({\n error_message: error.error.error_message || 'An error occurred',\n explanation: error.error.explanation || 'Please try again later',\n status: error.status,\n code: error.error.code,\n });\n } else {\n this.lastError.set({\n error_message: error.message || 'An error occurred',\n explanation: 'Please try again later',\n status: error.status,\n });\n }\n\n // Call the custom error handler if provided\n if (this.config.errorHandler) {\n this.config.errorHandler(error);\n }\n\n return throwError(() => error);\n }\n\n /**\n * Handle an error from a blob request\n * @param error The error to handle\n * @returns An observable that throws the error\n */\n private async handleBlobError(error: HttpErrorResponse): Promise<Observable<never>> {\n // Convert blob error response to JSON if possible\n if (error.error instanceof Blob) {\n try {\n const errorText = await error.error.text();\n (error as any).error = JSON.parse(errorText);\n } catch (e) {\n // If parsing fails, create a generic error\n (error as any).error = {\n error_message: 'Error processing file',\n explanation: 'Unable to process server response',\n };\n }\n }\n\n return this.handleRequestError(error);\n }\n\n /**\n * Check the status of a response\n * @param response The response to check\n */\n private checkResponseStatus(response: any): void {\n // Implement any response status checking logic here\n // For example, check for specific status codes or error messages\n }\n\n /**\n * Convert an object to a plain object\n * @param obj The object to convert\n * @returns A plain object\n */\n private toPlainObject(obj: any): any {\n if (!obj) return obj;\n\n // Handle simple types\n if (typeof obj !== 'object' || obj instanceof Blob || obj instanceof File) {\n return obj;\n }\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map((item) => this.toPlainObject(item));\n }\n\n // Handle objects\n const result: Record<string, any> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const value = obj[key];\n\n // Skip functions and undefined values\n if (typeof value === 'function' || value === undefined) {\n continue;\n }\n\n result[key] = this.toPlainObject(value);\n }\n }\n\n return result;\n }\n}\n","/*\n * Public API Surface of core-components\n */\n// Components\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/components/progress-toast/progress-toast';\nexport * from './lib/components/loading-bar/loading-bar';\nexport * from './lib/components/loading-bar/loading-bar.service';\nexport * from './lib/components/quick-table/quick-table';\n// models and classes\nexport * from './lib/models/classes';\nexport * from './lib/models/pagination.abstract';\nexport * from './lib/models/filter.models';\nexport * from './lib/models/common-enums'; // Added for EModelQuality\nexport * from './lib/utils/utils';\nexport * from './lib/pipes/loadash-get.pipe';\n// services\nexport * from './lib/services/confirm.service';\nexport * from './lib/services/prompt.service';\nexport * from './lib/services/http-core.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i5","i4"],"mappings":"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"}
|
|
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/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/lib/pipes/loadash-get.pipe.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/quick-table/quick-table.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/quick-table/quick-table.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/models/common-enums.ts","../../../../projects/dataclouder/ngx-core/src/lib/utils/utils.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/confirm.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/prompt/prompt.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/prompt/prompt.component.html","../../../../projects/dataclouder/ngx-core/src/lib/services/prompt.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/http-core.service.ts","../../../../projects/dataclouder/ngx-core/src/public-api.ts","../../../../projects/dataclouder/ngx-core/src/dataclouder-ngx-core.ts"],"sourcesContent":["import { Component, Input, input } from '@angular/core';\n\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: [],\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 public readonly mainIconSrcString = input('assets/img/empty-states/empty-box.png');\n}\n","<div class=\"grid justify-content-center\">\n <div class=\"empty-state-content\">\n @if (headingText) {\n <h5 class=\"text-center\">{{ headingText }}</h5>\n }\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString() }}\" />\n @if (subHeadingText) {\n <h6>{{ subHeadingText }}</h6>\n }\n <ng-content></ng-content>\n </div>\n</div>\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\nexport interface ListFilterBarOptions {\n showCreateButton?: boolean;\n showViewButton?: boolean;\n showActions?: boolean;\n // Add other UI behavior flags here, e.g.:\n // showSortOptions?: boolean;\n // showFilterButton?: boolean;\n // allowManualSearch?: boolean;\n}\n","import { ChangeDetectionStrategy, Component, Input, OnInit, output, input, model } 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, ListFilterBarOptions } from '../../models/filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\ntype actions = 'new' | 'edit' | 'delete' | 'changeView' | (string & {});\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [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 // Signal Inputs\n public readonly items = input<MenuItem[]>([]);\n public readonly options = input<ListFilterBarOptions>({ showCreateButton: true });\n // Inputs\n @Input() public customFilters: ICustomFilter[] = [];\n\n // Outputs\n public readonly onFilterAction = output<any>();\n public readonly onChangeSort = output<any>();\n public readonly onNew = output<any>();\n\n // Internal State\n public customFilterModels = [];\n\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 console.log('createNew from core components');\n this.onNew.emit('new');\n }\n\n public search(text: string = null): void {\n if (!text) {\n this.placeholder = '';\n this.clearFilters();\n } else {\n this.doItemAction({ action: 'search', item: text });\n }\n this.isSearchVisible = false;\n }\n\n clearFilters() {\n this.filter = { ...DEFAULT_FILTERS };\n this.doItemAction({ action: 'filterChange', item: this.filter });\n }\n\n applyFilters() {\n this.doItemAction({ action: 'filterChange', item: this.filter });\n this.isFilterVisible = false;\n }\n\n public doItemAction(filterEvent: OnActionEvent) {\n this.onFilterAction.emit(filterEvent);\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 (options()?.showCreateButton) {\n <span class=\"admin\">\n <i style=\"position: absolute; right: -5px; top: -5px; z-index: 2; color: grey\" class=\"pi pi-key\"></i>\n <p-button icon=\"pi pi-plus\" label=\"Crear Nueva\" severity=\"secondary\" (click)=\"createNew()\" />\n </span>\n }\n </div>\n\n @if(options()?.showViewButton){\n <p-button icon=\"pi pi-objects-column\" variant=\"text\" (click)=\"doItemAction({ action: 'changeView', item: null })\" severity=\"secondary\"></p-button>\n } @if(options()?.showActions){ @for(item of items(); track $index) {\n <p-button [icon]=\"item.icon\" variant=\"text\" (click)=\"doItemAction({ action: item.title, item: item })\" severity=\"secondary\"></p-button>\n }\n\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n }\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","\r\nimport { Component, OnInit, Input, HostListener, inject } 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: [ButtonModule, MessageModule],\r\n})\r\nexport class ConfirmComponent implements OnInit {\n private dynamicDialogConfig = inject(DynamicDialogConfig);\n ref = inject(DynamicDialogRef);\n\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 }\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\r\n\r\n constructor() {\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\">\n <p-message severity=\"secondary\"> {{ title }}</p-message>\n\n <div style=\"text-align: center; padding: 1rem\">\n <i style=\"font-size: 4rem; color: #ff0040\" class=\"pi {{ piIcon }}\"></i>\n </div>\n\n <div>{{ message }} </div>\n\n @if (warning) {\n <p-message severity=\"warn\">\n <i class=\"pi pi-exclamation-triangle\"></i>\n {{ warning }}</p-message\n >\n }\n\n <br /><br />\n\n <div>\n <div style=\"float: right\">\n @if (oneBotton) {\n <p-button label=\"Ok\" (click)=\"confirm()\"></p-button>\n }\n </div>\n\n @if (!oneBotton) {\n <div class=\"options\">\n <p-button [label]=\"cancelText\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\n <p-button [label]=\"acceptText\" (click)=\"confirm()\" severity=\"danger\"></p-button>\n </div>\n }\n </div>\n </div>\n","\nimport { ChangeDetectorRef, Component, Input, OnChanges, OnDestroy, SimpleChanges, inject, output, input } 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, ToastModule, ProgressBarModule, Toast, ButtonModule, ProgressBar],\n})\nexport class DCProgressToastComponent implements OnChanges, OnDestroy {\n private messageService = inject(MessageService);\n private cdr = inject(ChangeDetectorRef);\n\n @Input()\n visible: boolean = false;\n\n readonly progress = input<number>(0);\n\n readonly processCompleted = output<void>();\n\n readonly processClosed = output<void>();\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {}\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\n /** Interval reference for the fake progress animation */\n private progressInterval: any;\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 // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#4BBD97';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1100);\n }\n\n public infoAndHide() {\n // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing = true;\n this.mode = 'indeterminate';\n this.progress = 100;\n this.color = '#45C8F3';\n setTimeout(() => {\n this.hideProgressBar();\n }, 1000);\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 // Clear any existing interval first\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n }\n\n // Create interval to update progress\n this.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(this.progressInterval);\n this.progressInterval = null;\n this.showIndeterminate();\n }\n }, intervalMs);\n }\n}\n","import { Component, inject } 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, ToastModule, ProgressBarModule, ButtonModule, ProgressBar],\n})\nexport class LoadingBarComponent {\n loadingBarService = inject(LoadingBarService);\n}\n","@if (loadingBarService.isShowing) {\n<p-progressbar [color]=\"loadingBarService.color\" [mode]=\"loadingBarService.mode\" [style]=\"{ height: '4px' }\" [value]=\"loadingBarService.progress\" />\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { get } from 'lodash';\nimport { PColumn } from '../components/quick-table/quick-table';\n\n@Pipe({\n name: 'getPath',\n standalone: true,\n})\nexport class GetPathPipe implements PipeTransform {\n transform(obj: any, column: PColumn): string {\n const value = get(obj, column.field, 'No disponible');\n // debugger;\n if (column.type === 'text') {\n return value.length > 80 ? value.substring(0, 80) + '...' : value;\n }\n return value;\n }\n}\n","import { ChangeDetectionStrategy, Component, ViewChild, output, input, effect, signal, Input } from '@angular/core';\nimport { CardModule } from 'primeng/card';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\n\nimport { RouterModule } from '@angular/router';\nimport { SpeedDialModule } from 'primeng/speeddial';\nimport { PaginatorModule } from 'primeng/paginator';\nimport { TableModule, Table } from 'primeng/table';\nimport { FilterMatchMode, FilterMetadata } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\n\nimport { GetPathPipe } from '../../pipes/loadash-get.pipe';\nimport { MenuItem } from 'primeng/api';\nimport { TagModule } from 'primeng/tag';\nimport { SelectModule } from 'primeng/select';\nimport { MultiSelectModule } from 'primeng/multiselect';\n\nexport interface PColumn {\n field: string;\n header: string;\n type?: 'text' | 'image' | 'tags' | 'actions';\n}\n\n@Component({\n selector: 'app-quick-table',\n imports: [\n CardModule,\n ButtonModule,\n SpeedDialModule,\n PaginatorModule,\n TableModule,\n RouterModule,\n GetPathPipe,\n InputTextModule,\n TagModule,\n SelectModule,\n MultiSelectModule,\n ],\n templateUrl: './quick-table.html',\n styleUrl: './quick-table.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true,\n})\nexport class QuickTableComponent {\n // Inputs\n readonly columns = input<PColumn[]>([]);\n readonly tableData = input<any[]>([]); // This is the backup data\n // Default action is only select\n // readonly actions = input<MenuItem[]>();\n @Input() actions: MenuItem[] = [];\n\n // Outputs\n readonly onAction = output<OnActionEvent>();\n\n // Signals States\n public _columns = signal<PColumn[]>([]);\n public _tableData = signal<any[]>([]);\n public filters = signal<{ [s: string]: FilterMetadata | FilterMetadata[] }>({});\n public globalFilterFields = signal<string[]>([]);\n\n @ViewChild('tableRef') tableRef!: Table;\n\n tableColumns: any[] = [];\n\n constructor() {\n effect(() => {\n this.initializeTableColumns();\n if (this.tableData()) {\n this._tableData.set(this.tableData());\n\n this.initializeFilters();\n }\n if (!this.actions?.length) {\n this.actions = [{ title: 'select', label: 'Select', icon: 'pi pi-check', severity: 'primary' }];\n }\n console.log('QuickTableComponent', this.actions);\n });\n }\n\n private initializeTableColumns(): void {\n if (!this.columns() || this.columns().length === 0) {\n console.warn('No columns provided. please privide columns for acuracy');\n if (this.tableData()?.[0]) {\n this.tableColumns = Object.keys(this.tableData()[0]).map((key) => ({\n field: key,\n header: key,\n sortable: true,\n }));\n console.log(this.tableColumns);\n this._columns.set(this.tableColumns);\n }\n } else {\n this._columns.set([...this.columns(), { field: 'actions', header: 'Actions', type: 'actions' }]);\n }\n }\n\n public selectItem(item: any, action: MenuItem) {\n console.log('onAction', { item, action });\n this.onAction.emit({ item, action: action.title || action.label });\n }\n\n public onGlobalFilter(event: Event): void {\n const value = (event.target as HTMLInputElement).value;\n this.tableRef.filterGlobal(value, FilterMatchMode.CONTAINS);\n }\n\n public getFilterType(column: PColumn): string {\n if (column.type === 'image') {\n return 'text';\n }\n return 'text';\n }\n\n private initializeFilters(): void {\n // Initialize filters\n const filterObj: Record<string, any> = {};\n const fields: string[] = [];\n\n if (this._columns()) {\n this._columns().forEach((col) => {\n if (col.type === 'text') {\n // Add field to global filter fields\n fields.push(col.field);\n\n // Initialize filter for this column\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.CONTAINS,\n };\n } else if (col.type === 'tags') {\n // First extract all posible tags.\n console.log(this.tableData());\n const tags: string[] = [];\n this.tableData().forEach((item) => {\n if (Array.isArray(item[col.field])) {\n tags.push(...item[col.field]);\n } else {\n tags.push(item[col.field]);\n }\n });\n const uniqueTags = Array.from(new Set(tags));\n\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.IN,\n options: uniqueTags,\n };\n }\n });\n }\n\n this.filters.set(filterObj);\n this.globalFilterFields.set(fields);\n }\n\n public onFilterLocal(event: any) {\n console.log(event);\n }\n\n public filterOutsideTable(type: 'tags' | 'text', column: string, value: string[]) {\n // Its complicated understand all filter insde the table i can understand if i debugg tableRef.filters but seens is not able to filter array so i build my own outside.\n if (type === 'tags') {\n if (value.length === 0) {\n this._tableData.set(this.tableData());\n return;\n }\n const filteredData = [];\n this.tableData().forEach((item: string[]) => {\n if (Array.isArray(item[column])) {\n const tags: string[] = item[column];\n if (tags.some((tag) => value.includes(tag))) {\n filteredData.push(item);\n }\n }\n });\n console.log(filteredData);\n this._tableData.set(filteredData);\n }\n }\n}\n","<p-table\n [tableStyle]=\"{ 'min-width': '20rem' }\"\n #tableRef\n [value]=\"_tableData()\"\n [columns]=\"_columns()\"\n [globalFilterFields]=\"globalFilterFields()\"\n [filters]=\"filters()\"\n (onFilter)=\"onFilterLocal($event)\">\n <ng-template pTemplate=\"caption\">\n <div class=\"flex justify-content-between align-items-center\">\n <h5 class=\"m-0\">Table Data</h5>\n <span class=\"p-input-icon-left\">\n <i class=\"pi pi-search\"></i>\n <input pInputText type=\"text\" (input)=\"onGlobalFilter($event)\" placeholder=\"Search keyword\" />\n </span>\n </div>\n </ng-template>\n <ng-template pTemplate=\"header\" let-columns>\n <tr>\n @for (column of columns; track column) {\n <th [pSortableColumn]=\"column.field\">{{ column.header }} <p-sortIcon [field]=\"column.field\"></p-sortIcon></th>\n }\n </tr>\n <tr>\n @for (column of columns; track column) { @if(column.type === 'tags') {\n <th>\n <p-multiselect\n [options]=\"filters()?.[column.field]?.['options']\"\n placeholder=\"Selecciona\"\n (onChange)=\"filterOutsideTable('tags', column.field, $event.value)\"\n [style]=\"{ minWidth: '14rem' }\"\n [panelStyle]=\"{ minWidth: '16rem' }\">\n <ng-template let-option #item>\n <div class=\"flex items-center gap-2\">\n <span>{{ option }}</span>\n </div>\n </ng-template>\n </p-multiselect>\n </th>\n\n } @else {\n <th>\n <p-columnFilter [type]=\"getFilterType(column)\" [field]=\"column.field\" placeholder=\"Search\" [showMenu]=\"false\"></p-columnFilter>\n </th>\n } }\n </tr>\n </ng-template>\n <!-- @if(tableData()){ -->\n <ng-template pTemplate=\"body\" let-item let-columns=\"columns\">\n <tr>\n @for (column of columns; track column) {\n <td>\n @if(column.type === 'image'){\n <div class=\"image-container\">\n <img [src]=\"item | getPath: column\" alt=\"Image\" class=\"image\" />\n </div>\n } @else if(column.type === 'tags') {\n <div class=\"tags-container\">\n @for (tag of item[column.field]; track tag) {\n <p-tag [rounded]=\"true\" [value]=\"tag\"></p-tag>\n }\n </div>\n } @else if(column.type === 'actions') {\n <div style=\"display: flex; gap: 2px\">\n @for (actionBtn of actions; track actionBtn) {\n <p-button (click)=\"selectItem(item, actionBtn)\" [icon]=\"actionBtn.icon\" [severity]=\"actionBtn['severity']\" />\n }\n </div>\n } @else {\n <span>{{ item | getPath: column}} </span>\n }\n </td>\n }\n </tr>\n </ng-template>\n <!-- } -->\n</p-table>\n","import { InjectionToken, Provider, Type } from '@angular/core';\nimport { EModelQuality } from './common-enums';\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\n// @deprecated, moved to ngx-tts\nexport enum AudioSpeed {\n VerySlow = 'verySlow',\n Slow = 'slow',\n Regular = 'regular',\n Fast = 'fast',\n VeryFast = 'veryFast',\n}\n\nexport const AudioSpeedReverse = {\n [AudioSpeed.VerySlow]: 1,\n [AudioSpeed.Slow]: 2,\n [AudioSpeed.Regular]: 3,\n [AudioSpeed.Fast]: 4,\n [AudioSpeed.VeryFast]: 5,\n};\n\nexport class IAIModel {\n provider?: string; // First Priority\n modelName?: string; // if model is set then good, else use default. but model does not work alone. need a provider.\n quality?: EModelQuality; // Second priority if provider is not set, then get default for quality. is provider is set then look for quality defaults in server.\n id?: string; // Not sure if i'm usin this. probably i should change to label.\n}\n\n// Since it not clear if this bellows to chat AI Or user i put here.\nexport class ChatUserSettings {\n realTime: boolean; // For real time conversation chat, no need to press button to send message\n superHearing: boolean; // use whisper to get a better transcription\n repeatRecording: boolean; // depends on superhearing, if true, it will repeat the recording\n // fixGrammar: boolean; // fix grammar\n voice?: string; // first voice, when is not availible one\n // autoTranslate?: boolean; // auto translate\n highlightWords?: boolean; // highlight words\n synthVoice?: boolean; // post request to your own tts service to get audio, need resonse with standard\n model?: IAIModel; // if you want to use a specific model\n speed?: AudioSpeed; // if you want to use a specific speed variable\n speedRate?: number; // temporal for more specific speed.\n userMessageTask: boolean;\n assistantMessageTask: boolean;\n}\n","import { ActivatedRoute, Router } from '@angular/router';\nimport { FiltersConfig } from './filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { PColumn } from '../components/quick-table/quick-table';\nimport { Directive, output, input, Inject, inject } from '@angular/core';\n\nexport interface OnActionEvent {\n action?: string;\n item?: any;\n menuItem?: MenuItem;\n}\n\n/**\n * Abstract base class for implementing pagination functionality.\n * Provides common pagination logic, state management, and navigation handling.\n * Child classes must implement the loadData method and define columns.\n */\n@Directive()\nexport abstract class PaginationBase {\n /**\n * Available actions for items.\n * Must be implemented by child classes.\n */\n readonly actions = input<MenuItem[]>();\n /**\n * Event emitted when an action is performed on an item.\n * Emits an object containing the item and the action that was triggered.\n */\n readonly onAction = output<OnActionEvent>();\n\n /** Current first record index for the paginator */\n public paginatorFirst: number = 0;\n /** Number of rows to display per page */\n public paginatorRows: number = 10;\n /** Total number of records available */\n public totalRecords: number = 0;\n /** Current view mode, either cards or table */\n public viewMode: 'cards' | 'table' = 'table';\n /** Loading state indicator */\n public isLoading: boolean = false;\n /** Available button actions for items */\n public buttonActions: MenuItem[] = [];\n\n /**\n * Columns configuration for the table view.\n * Must be implemented by child classes.\n */\n protected abstract columns: PColumn[];\n\n /**\n * Configuration for filtering, sorting, and pagination.\n * Includes current page, rows per page, sorting criteria, and applied filters.\n */\n public filterConfig: FiltersConfig = { page: 0, rowsPerPage: this.paginatorRows, sort: { _id: -1 }, filters: {} };\n\n protected route = inject(ActivatedRoute);\n protected router = inject(Router);\n /**\n * Creates an instance of PaginationBase.\n * @param route - The ActivatedRoute for accessing route parameters\n * @param router - The Router for navigation\n */\n constructor() {\n this.initializePagination();\n }\n\n /**\n * Initializes pagination based on URL query parameters.\n * Sets the current page from the 'page' query parameter if available.\n * @private\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 /**\n * Handles pagination events from the paginator component.\n * Updates the filter configuration, loads new data, and updates the URL.\n * @param pageEvent - The page event containing page number and rows per page\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 /**\n * Updates the 'page' query parameter in the URL.\n * @param newPage - The new page number to set in the URL\n * @private\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 /**\n * Loads data for the current page configuration.\n * Must be implemented by child classes to fetch data from the appropriate source.\n * @returns A promise that resolves when data loading is complete\n */\n protected abstract loadData(): Promise<void>;\n\n /**\n * Handle actions triggered from the table or card view\n * @param param0 Object containing the item and action that was triggered\n */\n public doAction(actionEvent: OnActionEvent) {\n console.log('actionEvent on pagination', actionEvent);\n this.onAction.emit(actionEvent);\n }\n}\n","export enum EModelQuality {\n FAST = 'fast', // Prioritize speed over intelligence like flash lite\n BALANCED = 'balanced', // Equal balance like flash 2.5\n SMART = 'smart', // Prioritize intelligence over speed like gemini pro 2.5\n SMART_THINKING = 'smart-thinking', // Maximum intelligence, ignore speed enable thinking mode\n}\n\nexport const ModelQualityOptions = [\n { label: 'Fast', value: EModelQuality.FAST },\n { label: 'Balanced', value: EModelQuality.BALANCED },\n { label: 'Smart', value: EModelQuality.SMART },\n { label: 'Smart Thinking', value: EModelQuality.SMART_THINKING },\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\n/**\n * Transforms a camelCase string into a string with spaces between words,\n * with the first letter of each word capitalized.\n * e.g., \"camelCaseString\" becomes \"Camel Case String\"\n * e.g., \"characterDescription\" becomes \"Character Description\"\n *\n * @param input The camelCase string to transform.\n * @returns The transformed string with spaces and capitalized words.\n */\nexport function formatCamelCaseString(input: string): string {\n if (!input) {\n return '';\n }\n\n // Add a space before any uppercase letter, then trim leading/trailing spaces.\n const spacedString = input.replace(/([A-Z])/g, ' $1').trim();\n\n // Capitalize the first letter of the entire string and ensure other letters\n // of the first word are lowercase if they weren't part of the original camel casing.\n // Then, capitalize the first letter of each subsequent word.\n return spacedString\n .split(' ')\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n}\n","import { Injectable, inject } 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 pdialogService = inject(DialogService);\n\n /** Inserted by Angular inject() migration for backwards compatibility */\n constructor(...args: unknown[]);\n\n constructor() {}\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","import { Component, OnInit, inject, signal } from '@angular/core';\nimport { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { FormsModule } from '@angular/forms';\nimport { MessageModule } from 'primeng/message';\nimport { CommonModule } from '@angular/common';\nimport { TextareaModule } from 'primeng/textarea';\n\n@Component({\n selector: 'dc-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n standalone: true,\n imports: [CommonModule, ButtonModule, InputTextModule, FormsModule, MessageModule, TextareaModule],\n})\nexport class PromptComponent implements OnInit {\n ref = inject(DynamicDialogRef);\n config = inject(DynamicDialogConfig);\n\n title = signal<string>('Prompt');\n message = signal<string>('');\n acceptText = signal<string>('Accept');\n cancelText = signal<string>('Cancel');\n inputValue = signal<string>('');\n\n ngOnInit(): void {\n this.title.set(this.config.data?.title || 'Prompt');\n this.message.set(this.config.data?.message || '');\n this.acceptText.set(this.config.data?.acceptText || 'Accept');\n this.cancelText.set(this.config.data?.cancelText || 'Cancel');\n // Set initial value if provided\n this.inputValue.set(this.config.data?.initialValue || '');\n }\n\n accept(): void {\n this.ref.close(this.inputValue());\n }\n\n cancel(): void {\n this.ref.close(null);\n }\n}\n","<div class=\"form-input-card p-4\">\n <p-message severity=\"secondary\"> {{ title() }}</p-message>\n\n <div class=\"my-4\">{{ message() }}</div>\n\n <div class=\"p-field mb-4\">\n <textarea rows=\"5\" cols=\"30\" pTextarea [(ngModel)]=\"inputValue\" class=\"w-full\"></textarea>\n </div>\n\n <div class=\"flex justify-content-end gap-2\">\n <p-button [label]=\"cancelText()\" (click)=\"cancel()\" severity=\"secondary\"></p-button>\n <p-button [label]=\"acceptText()\" (click)=\"accept()\"></p-button>\n </div>\n</div>\n","import { Injectable, inject } from '@angular/core';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { firstValueFrom } from 'rxjs';\n\nimport { PromptComponent } from '../components/prompt/prompt.component';\n\nexport interface PromptOptions {\n title?: string;\n message?: string;\n acceptText?: string;\n cancelText?: string;\n initialValue?: string; // Add initialValue property\n}\n\n@Injectable({\n providedIn: 'root',\n})\nexport class PromptService {\n private readonly dialogService = inject(DialogService);\n\n /**\n * Opens a prompt dialog.\n * @param options Configuration options for the prompt dialog.\n * @returns A promise that resolves with the input value if accepted, or null if canceled.\n */\n openPrompt(options: PromptOptions): Promise<string | null> {\n const dialogRef = this.dialogService.open(PromptComponent, {\n data: {\n title: options.title || 'Prompt',\n message: options.message || '',\n acceptText: options.acceptText || 'Accept',\n cancelText: options.cancelText || 'Cancel',\n initialValue: options.initialValue || '', // Pass initialValue to component data\n },\n header: options.title || 'Prompt', // Set header for accessibility and title bar\n closable: true,\n modal: true,\n width: '700px', // Optional: Adjust width as needed\n });\n\n // Return the result when the dialog closes\n return firstValueFrom(dialogRef.onClose);\n }\n}\n","import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject, signal, InjectionToken, Optional, Inject } from '@angular/core';\nimport { Observable, throwError, lastValueFrom, tap, map, catchError } from 'rxjs';\n\n/**\n * Interface for HTTP error responses\n */\nexport interface HttpCoreError {\n error_message: string;\n explanation: string;\n status?: number;\n code?: string;\n}\n\n/**\n * Interface for deleted data response\n */\nexport interface DeletedData {\n acknowledged: boolean;\n deletedCount: number;\n}\n\n/**\n * Configuration for HttpCoreService\n */\nexport interface HttpCoreConfig {\n primaryUrl: string;\n secondaryUrl?: string;\n defaultHost?: 'primary' | 'secondary';\n errorHandler?: (error: HttpErrorResponse) => void;\n}\n\n/**\n * Injection token for HttpCoreService configuration\n */\nexport const HTTP_CORE_CONFIG = new InjectionToken<HttpCoreConfig>('HTTP_CORE_CONFIG');\n\n/**\n * Modern HTTP service for Angular applications\n * Provides methods for making HTTP requests with proper error handling and response transformation\n */\n@Injectable({\n providedIn: 'root',\n})\nexport class HttpCoreService {\n private httpClient = inject(HttpClient);\n\n // Use signals for reactive state\n private isLoading = signal<boolean>(false);\n private lastError = signal<HttpCoreError | null>(null);\n\n // Configuration\n private config: HttpCoreConfig;\n\n constructor(@Optional() @Inject(HTTP_CORE_CONFIG) config: HttpCoreConfig | null) {\n if (config && config.primaryUrl) {\n this.config = {\n defaultHost: 'primary',\n ...config,\n };\n } else {\n // Initialize with a placeholder - this will be set properly with setConfig\n this.config = {\n primaryUrl: '',\n defaultHost: 'primary',\n };\n\n if (!config) {\n console.warn('HttpCoreService: No configuration provided. Use setConfig to configure the service.');\n } else if (!config.primaryUrl) {\n console.warn('HttpCoreService: primaryUrl is required in configuration. Use setConfig to set it.');\n }\n }\n }\n\n /**\n * Set the configuration for the service\n * This allows for manual configuration when not using dependency injection\n */\n setConfig(config: HttpCoreConfig): void {\n this.config = {\n ...this.config,\n ...config,\n };\n }\n\n /**\n * Get the loading state as a signal\n */\n public loading() {\n return this.isLoading;\n }\n\n /**\n * Get the last error as a signal\n */\n public error() {\n return this.lastError;\n }\n\n /**\n * Make a POST request to the specified service\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async post<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(tap(this.checkResponseStatus.bind(this)), catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a POST request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param data The data to send\n * @returns A promise with the response\n */\n public async postToUrl<T = any>(baseUrl: string, service: string, data: any): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(tap(this.checkResponseStatus.bind(this)), catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a PUT request to the specified service\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async put<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a PUT request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param data The data to send\n * @returns A promise with the response\n */\n public async putToUrl<T = any>(baseUrl: string, service: string, data: any): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n const dataPlain = this.toPlainObject(data);\n\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a GET request to the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @param skipErrorHandling Whether to skip error handling\n * @returns A promise with the response\n */\n public async get<T = any>(service: string, host = this.config.defaultHost, skipErrorHandling = false): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient.get<T>(url).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a GET request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @param skipErrorHandling Whether to skip error handling\n * @returns A promise with the response\n */\n public async getFromUrl<T = any>(baseUrl: string, service: string, skipErrorHandling = false): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n\n const response$ = this.httpClient.get<T>(url).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a DELETE request to the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async delete<T = DeletedData>(service: string, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Make a DELETE request to a specific URL\n * @param baseUrl The base URL\n * @param service The service endpoint\n * @returns A promise with the response\n */\n public async deleteFromUrl<T = DeletedData>(baseUrl: string, service: string): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = `${baseUrl}/${service}`;\n\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Get an observable for a GET request\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public getObservable<T = any>(service: string, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n\n return this.httpClient.get<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n }\n\n /**\n * Get an observable for a POST request\n * @param service The service endpoint\n * @param data The data to send\n * @param skipErrorHandling Whether to skip error handling\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public postObservable<T = any>(service: string, data: any, skipErrorHandling = false, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n\n return this.httpClient.post<T>(url, dataPlain).pipe(\n catchError((err) => {\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n }\n\n /**\n * Get an observable for a DELETE request\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public deleteObservable<T = DeletedData>(service: string, host = this.config.defaultHost): Observable<T> {\n const url = this.getHostUrl(host) + '/' + service;\n\n return this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\n }\n\n /**\n * Upload a file to the specified service\n * @param service The service endpoint\n * @param file The file to upload\n * @param metadata Optional metadata to send with the file\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async uploadFile<T = any>(service: string, file: Blob, metadata: any = null, host = this.config.defaultHost): Promise<T> {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const formData = new FormData();\n formData.append('file', file);\n\n let headers = {};\n if (metadata) {\n headers = { metadata: JSON.stringify(metadata) };\n }\n\n const response$ = this.httpClient.post<T>(url, formData, { headers });\n const result = await lastValueFrom<T>(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Download a file from the specified service\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async downloadFile(service: string, host = this.config.defaultHost) {\n this.isLoading.set(true);\n\n try {\n const url = this.getHostUrl(host) + '/' + service;\n\n const response$ = this.httpClient\n .get(url, {\n responseType: 'blob',\n observe: 'response',\n })\n .pipe(catchError(this.handleBlobError.bind(this)));\n\n const result = await lastValueFrom(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Upload a file to the specified service and get the response as a blob\n * @param service The service endpoint\n * @param data The data to send\n * @param host The host to use (primary or secondary)\n * @returns A promise with the response\n */\n public async postFileAndGetBlob(service: string, data: any, host = this.config.defaultHost) {\n this.isLoading.set(true);\n\n try {\n let url = this.getHostUrl(host);\n if (service) {\n url += '/' + service;\n }\n\n const response$ = this.httpClient\n .post(url, data, {\n observe: 'response',\n responseType: 'blob',\n })\n .pipe(catchError(this.handleBlobError.bind(this)));\n\n const result = await lastValueFrom(response$);\n this.isLoading.set(false);\n return result;\n } catch (error) {\n this.isLoading.set(false);\n throw error;\n }\n }\n\n /**\n * Get a file from the specified service as an observable\n * @param service The service endpoint\n * @param host The host to use (primary or secondary)\n * @returns An observable with the response\n */\n public getFileObservable(service: string, host = this.config.defaultHost): Observable<Blob> {\n const url = this.getHostUrl(host) + '/' + service;\n return this.httpClient.get(url, { responseType: 'blob' });\n }\n\n /**\n * Get the URL for the specified host\n * @param host The host to use (primary or secondary)\n * @returns The URL for the specified host\n */\n private getHostUrl(host: 'primary' | 'secondary' = this.config.defaultHost): string {\n return host === 'secondary' && this.config.secondaryUrl ? this.config.secondaryUrl : this.config.primaryUrl;\n }\n\n /**\n * Handle an error from a request\n * @param error The error to handle\n * @returns An observable that throws the error\n */\n private handleRequestError(error: HttpErrorResponse): Observable<never> {\n this.isLoading.set(false);\n\n // Set the last error\n if (error.error && typeof error.error === 'object') {\n this.lastError.set({\n error_message: error.error.error_message || 'An error occurred',\n explanation: error.error.explanation || 'Please try again later',\n status: error.status,\n code: error.error.code,\n });\n } else {\n this.lastError.set({\n error_message: error.message || 'An error occurred',\n explanation: 'Please try again later',\n status: error.status,\n });\n }\n\n // Call the custom error handler if provided\n if (this.config.errorHandler) {\n this.config.errorHandler(error);\n }\n\n return throwError(() => error);\n }\n\n /**\n * Handle an error from a blob request\n * @param error The error to handle\n * @returns An observable that throws the error\n */\n private async handleBlobError(error: HttpErrorResponse): Promise<Observable<never>> {\n // Convert blob error response to JSON if possible\n if (error.error instanceof Blob) {\n try {\n const errorText = await error.error.text();\n (error as any).error = JSON.parse(errorText);\n } catch (e) {\n // If parsing fails, create a generic error\n (error as any).error = {\n error_message: 'Error processing file',\n explanation: 'Unable to process server response',\n };\n }\n }\n\n return this.handleRequestError(error);\n }\n\n /**\n * Check the status of a response\n * @param response The response to check\n */\n private checkResponseStatus(response: any): void {\n // Implement any response status checking logic here\n // For example, check for specific status codes or error messages\n }\n\n /**\n * Convert an object to a plain object\n * @param obj The object to convert\n * @returns A plain object\n */\n private toPlainObject(obj: any): any {\n if (!obj) return obj;\n\n // Handle simple types\n if (typeof obj !== 'object' || obj instanceof Blob || obj instanceof File) {\n return obj;\n }\n\n // Handle arrays\n if (Array.isArray(obj)) {\n return obj.map((item) => this.toPlainObject(item));\n }\n\n // Handle objects\n const result: Record<string, any> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n const value = obj[key];\n\n // Skip functions and undefined values\n if (typeof value === 'function' || value === undefined) {\n continue;\n }\n\n result[key] = this.toPlainObject(value);\n }\n }\n\n return result;\n }\n}\n","/*\n * Public API Surface of core-components\n */\n// Components\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/components/progress-toast/progress-toast';\nexport * from './lib/components/loading-bar/loading-bar';\nexport * from './lib/components/loading-bar/loading-bar.service';\nexport * from './lib/components/quick-table/quick-table';\n// models and classes\nexport * from './lib/models/classes';\nexport * from './lib/models/pagination.abstract';\nexport * from './lib/models/filter.models';\nexport * from './lib/models/common-enums'; // Added for EModelQuality\nexport * from './lib/utils/utils';\nexport * from './lib/pipes/loadash-get.pipe';\n// services\nexport * from './lib/services/confirm.service';\nexport * from './lib/services/prompt.service';\nexport * from './lib/services/http-core.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1","i3","i5","i4"],"mappings":"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"}
|