@dataclouder/ngx-core 0.1.53 → 0.2.0

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.
@@ -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/services/filter.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-dialog.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-dialog.component.html","../../../../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/components/forms/dc-auditable-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-extensions-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-learnable-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-manageable-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-reactions-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-manageable-form/dc-manageable-form.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-manageable-form/dc-manageable-form.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-tags-form/dc-tags-form.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-tags-form/dc-tags-form.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-learnable-form/dc-learnable-form.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-learnable-form/dc-learnable-form.component.html","../../../../projects/dataclouder/ngx-core/src/lib/models/pagination.abstract.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/base-list/entity-base-list.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/base-list/entity-base-list-v2.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/classes.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/base-form/entity-base-form.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/models/extension.model.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/languages.model.ts","../../../../projects/dataclouder/ngx-core/src/lib/pipes/lang.pipe.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/lib/services/entity-cominication.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/ui-state.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/form-utils.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/app-config.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/audio-notification.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/mobile.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/character-models.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/character-actions.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@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 public headingText = input('No existe el recurso que buscas');\n public subHeadingText = input('Intenta más tarde');\n public mainIconSrcString = input('assets/img/empty-states/empty-box.png');\n}\n","<div class=\"empty-state-container\">\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 class=\"text-center\">{{ subHeadingText() }}</h6>\n }\n <ng-content></ng-content>\n</div>\n","export interface SortOption {\n label: string;\n value: string;\n mongoSort?: Record<string, 1 | -1>;\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: 'Actualizado Recientemente', value: 'lastUpdated' },\n { label: 'Alfabético A-Z', value: OptionValue.Alphabetical },\n { label: 'Alfabético Inverso 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; // Display name for the filter\n field: string; // The property name for the query (e.g., 'agentType')\n type: 'string' | 'number' | 'boolean' | 'date' | 'select' | 'multi-select';\n operator?: '$eq' | '$ne' | '$in' | '$nin' | '$regex' | '$gt' | '$lt' | '$gte' | '$lte' | '$exists' | '$not_null' | 'range'; // MongoDB operators\n options?: { label: string; value: any }[]; // For 'select' type\n defaultValue?: any; // An optional default value for the filter\n}\n\nexport interface FiltersConfig {\n page?: number;\n rowsPerPage?: number;\n sort?: { [key: string]: number };\n seed?: 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 { Injectable } from '@angular/core';\nimport { ICustomFilter } from '../models/filter.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FilterService {\n private readonly STORAGE_PREFIX = 'dc_filter_state_';\n\n /**\n * Saves the UI state of the filters to localStorage.\n * @param key Unique key for the component/list\n * @param state The UI state object (form values)\n */\n saveState(key: string, state: any): void {\n try {\n localStorage.setItem(`${this.STORAGE_PREFIX}${key}`, JSON.stringify(state));\n } catch (e) {\n console.error('Error saving filter state', e);\n }\n }\n\n /**\n * Loads the UI state of the filters from localStorage.\n * @param key Unique key for the component/list\n * @returns The UI state object or null if not found\n */\n loadState(key: string): any | null {\n try {\n const item = localStorage.getItem(`${this.STORAGE_PREFIX}${key}`);\n return item ? JSON.parse(item) : null;\n } catch (e) {\n console.error('Error loading filter state', e);\n return null;\n }\n }\n\n /**\n * Builds a MongoDB-compatible query object from the UI filter values and definitions.\n * @param uiFilters The raw values from the form\n * @param customFilters The definitions of the filters\n * @returns A MongoDB query object\n */\n buildQuery(uiFilters: Record<string, any>, customFilters: ICustomFilter[]): Record<string, any> {\n const query: Record<string, any> = {};\n\n for (const filterDef of customFilters) {\n const value = uiFilters[filterDef.field];\n\n // Skip empty values\n if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) {\n continue;\n }\n\n // Use defined operator or infer from type\n const operator = filterDef.operator || this.inferOperator(filterDef.type);\n\n switch (operator) {\n case '$eq':\n query[filterDef.field] = value;\n break;\n case '$ne':\n query[filterDef.field] = { $ne: value };\n break;\n case '$regex':\n query[filterDef.field] = { $regex: value, $options: 'i' };\n break;\n case '$in':\n query[filterDef.field] = { $in: Array.isArray(value) ? value : [value] };\n break;\n case '$nin':\n query[filterDef.field] = { $nin: Array.isArray(value) ? value : [value] };\n break;\n case '$gt':\n query[filterDef.field] = { $gt: value };\n break;\n case '$gte':\n query[filterDef.field] = { $gte: value };\n break;\n case '$lt':\n query[filterDef.field] = { $lt: value };\n break;\n case '$lte':\n query[filterDef.field] = { $lte: value };\n break;\n case 'range':\n if (Array.isArray(value) && value.length === 2 && value[0] && value[1]) {\n query[filterDef.field] = { $gte: value[0], $lte: value[1] };\n }\n break;\n case '$exists':\n query[filterDef.field] = { $exists: value };\n break;\n case '$not_null':\n query[filterDef.field] = { $ne: null };\n break;\n default:\n // Default fallback\n query[filterDef.field] = value;\n }\n }\n\n return query;\n }\n\n private inferOperator(type: string): string {\n switch (type) {\n case 'string':\n return '$regex';\n case 'select':\n case 'boolean':\n case 'number':\n return '$eq';\n case 'multi-select':\n return '$in';\n case 'date':\n return 'range'; // Assuming date picker returns a range usually, or exact match if single\n default:\n return '$eq';\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { SelectModule } from 'primeng/select';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { availibleFilters, ICustomFilter, SortOption, sortOptions } from '../../models/filter.models';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { FilterService } from '../../services/filter.service';\n\n@Component({\n selector: 'dc-list-filter-dialog',\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, ButtonModule, DialogModule, SelectModule, MultiSelectModule, DatePickerModule],\n templateUrl: './dc-list-filter-dialog.component.html',\n styleUrl: './dc-list-filter-dialog.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DcListFilterDialogComponent {\n private readonly fb = inject(FormBuilder);\n private readonly filterService = inject(FilterService);\n public readonly ref = inject(DynamicDialogRef);\n public readonly config = inject(DynamicDialogConfig);\n\n public customFilters: ICustomFilter[] = this.config.data.customFilters || [];\n public customSortOptions: SortOption[] = this.config.data.customSortOptions || [];\n public initialUiState: any = this.config.data.uiState || {};\n public customFiltersForm: FormGroup;\n\n public availibleFilters = availibleFilters;\n public sortOptions = [...sortOptions, ...this.customSortOptions];\n\n selectedFilters: (typeof availibleFilters)[] = [];\n selectedSort: SortOption | null = null;\n dateRange: Date[] = [];\n\n constructor() {\n this.buildCustomFiltersForm();\n this.restoreState();\n }\n\n private buildCustomFiltersForm(): void {\n const formControls = {};\n for (const filter of this.customFilters) {\n formControls[filter.field] = [filter.defaultValue || null];\n }\n this.customFiltersForm = this.fb.group(formControls);\n }\n\n private restoreState(): void {\n if (this.initialUiState) {\n if (this.initialUiState.customFilters) {\n this.customFiltersForm.patchValue(this.initialUiState.customFilters);\n }\n if (this.initialUiState.sort) {\n this.selectedSort = this.initialUiState.sort;\n }\n if (this.initialUiState.dateRange) {\n // Ensure dates are Date objects\n this.dateRange = this.initialUiState.dateRange.map((d: string) => new Date(d));\n }\n if (this.initialUiState.quickFilters) {\n this.selectedFilters = this.initialUiState.quickFilters;\n }\n }\n }\n\n clearFilters() {\n this.ref.close({ action: 'clear' });\n }\n\n applyFilters() {\n const customFilterValues = this.customFiltersForm.value;\n\n // Build MongoDB Query\n const mongoQuery = this.filterService.buildQuery(customFilterValues, this.customFilters);\n\n // Add Date Range to Query\n if (this.dateRange && this.dateRange.length === 2 && this.dateRange[0] && this.dateRange[1]) {\n mongoQuery['createdAt'] = { $gte: this.dateRange[0], $lte: this.dateRange[1] };\n }\n\n // Capture UI State for persistence\n const uiState = {\n customFilters: customFilterValues,\n sort: this.selectedSort,\n dateRange: this.dateRange,\n quickFilters: this.selectedFilters,\n };\n\n this.ref.close({\n action: 'apply',\n filters: mongoQuery, // The actual query for the backend\n uiState: uiState, // The state to save for the UI\n sort: this.selectedSort,\n dateRange: this.dateRange,\n quickFilters: this.selectedFilters,\n });\n }\n}\n","<div class=\"filter-dialog-content flex flex-col justify-between h-full\">\n <!-- Filters Content -->\n <div>\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 [options]=\"availibleFilters\" [(ngModel)]=\"selectedFilters\" optionLabel=\"name\" placeholder=\"Filtros Rápidos\" [maxSelectedLabels]=\"3\" /> -->\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-datepicker\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-datepicker>\n </div>\n\n @if (customFilters?.length > 0) {\n <form [formGroup]=\"customFiltersForm\">\n <h4>Filtros Personalizados</h4>\n @for (customFilter of customFilters; track customFilter.field) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ customFilter.name }}</label>\n @switch (customFilter.type) { @case ('select') {\n <p-select\n [options]=\"customFilter.options\"\n [formControlName]=\"customFilter.field\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [showClear]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar {{ customFilter.name }}\" />\n } @case ('string') {\n <input type=\"text\" pInputText [formControlName]=\"customFilter.field\" class=\"w-full\" />\n } @case ('date') {\n <p-datepicker [formControlName]=\"customFilter.field\" [style]=\"{ width: '100%' }\" dateFormat=\"dd/mm/yy\"></p-datepicker>\n } }\n </div>\n }\n </form>\n }\n </div>\n\n <!-- Action Buttons -->\n <div>\n <div class=\"flex justify-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 </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, output, input, inject, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { FiltersConfig, ICustomFilter, ListFilterBarOptions, SortOption } from '../../models/filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { DcListFilterDialogComponent } from './dc-list-filter-dialog.component';\nimport { FilterService } from '../../services/filter.service';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\n\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [FormsModule, ButtonModule, DialogModule, InputTextModule, InputGroupModule, InputGroupAddonModule],\n templateUrl: './dc-list-filter-bar.component.html',\n styleUrl: './dc-list-filter-bar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DialogService],\n})\nexport class DCFilterBarComponent implements OnInit {\n private readonly dialogService = inject(DialogService);\n private readonly filterService = inject(FilterService);\n\n // Signal Inputs\n public readonly items = input<MenuItem[]>([]);\n public readonly options = input<ListFilterBarOptions>({ showCreateButton: true });\n\n // Inputs\n @Input() public customFilters: ICustomFilter[] = [];\n @Input() public customSortOptions: SortOption[] = [];\n @Input() public isAdmin: boolean = false;\n @Input() public persistenceKey: string = ''; // Key for saving/loading filters\n\n // Outputs\n public readonly onFilterAction = output<any>();\n public readonly onNew = output<any>();\n\n // Internal State\n public isSearchVisible = false;\n public placeholder = '';\n public filter: FiltersConfig = { ...DEFAULT_FILTERS };\n private uiState: any = null; // Store UI state separately\n\n ngOnInit(): void {\n //\n if (this.persistenceKey) {\n this.loadSavedFilters();\n }\n }\n\n private loadSavedFilters(): void {\n const savedState = this.filterService.loadState(this.persistenceKey);\n if (savedState) {\n this.uiState = savedState;\n // Re-construct the query from the saved UI state\n if (savedState.customFilters) {\n const mongoQuery = this.filterService.buildQuery(savedState.customFilters, this.customFilters);\n this.filter = { ...this.filter, filters: mongoQuery };\n // Emit initial filter change so the list loads with these filters\n // We use setTimeout to ensure the parent component is ready\n setTimeout(() => {\n this.doItemAction({ action: 'filterChange', item: this.filter });\n });\n }\n }\n }\n\n public createNew() {\n this.onNew.emit('new');\n }\n\n public search(text: string | null): void {\n if (!text) {\n this.placeholder = '';\n this.doItemAction({ action: 'search', item: null });\n } else {\n this.doItemAction({ action: 'search', item: text });\n }\n this.isSearchVisible = false;\n }\n\n public openFilterDialog(): void {\n const ref = this.dialogService.open(DcListFilterDialogComponent, {\n header: 'Filtros',\n width: '70vw',\n height: '70vh',\n contentStyle: { 'max-height': '90vh', overflow: 'auto', 'min-height': '500px', height: '100%' },\n data: {\n customFilters: this.customFilters,\n customSortOptions: this.customSortOptions,\n uiState: this.uiState, // Pass current UI state to dialog\n },\n closable: true,\n modal: true,\n maximizable: true,\n });\n\n ref.onClose.subscribe((result) => {\n if (result) {\n if (result.action === 'clear') {\n this.clearFilters();\n } else if (result.action === 'apply') {\n this.applyFilters(result);\n }\n }\n });\n }\n\n private applyFilters(result: any): void {\n // result.filters is now the Mongo Query\n // We replace the filters entirely with the result from the dialog,\n // instead of merging, to ensure removed filters are cleared.\n const newFilters = { ...result.filters };\n\n let newSort = this.filter.sort;\n if (result.sort) {\n if (result.sort.mongoSort) {\n newSort = result.sort.mongoSort;\n } else {\n switch (result.sort.value) {\n case 'newest':\n newSort = { createdAt: -1 };\n break;\n case 'oldest':\n newSort = { createdAt: 1 };\n break;\n case 'alphabetical':\n newSort = { name: 1 };\n break;\n case 'reverseAlphabetical':\n newSort = { name: -1 };\n break;\n case 'lastUpdated':\n newSort = { updatedAt: -1 };\n break;\n }\n }\n }\n\n this.filter = { ...this.filter, filters: newFilters, sort: newSort };\n\n // Update UI state\n this.uiState = result.uiState;\n\n // Save to persistence\n if (this.persistenceKey && this.uiState) {\n this.filterService.saveState(this.persistenceKey, this.uiState);\n }\n\n // Handle other filter types from result if necessary (sort, dateRange, etc.)\n this.doItemAction({ action: 'filterChange', item: this.filter });\n }\n\n public clearFilters(): void {\n this.filter = { ...DEFAULT_FILTERS };\n this.uiState = null;\n if (this.persistenceKey) {\n this.filterService.saveState(this.persistenceKey, null);\n }\n this.doItemAction({ action: 'filterChange', item: this.filter });\n }\n\n public doItemAction(filterEvent: OnActionEvent): void {\n this.onFilterAction.emit(filterEvent);\n }\n}\n","<div class=\"background-bar\">\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n\n @if (isAdmin) {\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 (isAdmin) {\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 <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"openFilterDialog()\" />\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 <h4>Qué vamos a buscar? (Enter)</h4>\n <div>\n <p-inputgroup>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n\n <p-button label=\"Buscar\" icon=\"pi pi-search\" (click)=\"search(placeholder)\" />\n </p-inputgroup>\n </div>\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, signal } 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 = signal<boolean>(false);\n\n /** Current progress value (0-100) for determinate mode */\n public progress = signal<number>(0);\n\n /** The current display mode of the loading bar */\n public mode = signal<'indeterminate' | 'determinate'>(null);\n\n /** The color of the loading bar (can be a theme color name or hex value) */\n public color = signal<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.set(true);\n this.mode.set('determinate');\n this.progress.set(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.set(true);\n this.mode.set('indeterminate');\n this.progress.set(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.set(true);\n this.mode.set('determinate');\n this.progress.set(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.set(false);\n this.mode.set(null);\n this.progress.set(0);\n this.color.set('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.set(true);\n this.mode.set('indeterminate');\n this.progress.set(100);\n this.color.set('#4BBD97');\n setTimeout(() => {\n this.hideProgressBar();\n }, 1100);\n }\n\n public errorAndHide() {\n // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing.set(true);\n this.mode.set('indeterminate');\n this.progress.set(100);\n this.color.set('#FF0000');\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.set(true);\n this.mode.set('indeterminate');\n this.progress.set(100);\n this.color.set('#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';\nimport { get } from 'es-toolkit/compat';\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 //\n if (column.type === 'text') {\n return value.length > 80 ? value.substring(0, 80) + '...' : value;\n }\n return value;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { 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' | 'select' | 'boolean' | 'numeric';\n options?: { label: string; value: any }[];\n reverse?: boolean; // only for boolean\n}\n\n/*\nREAD the Quick Table MD to more info how to use\nInputs \n columns: PColumn[];\n tableData: any[];\n actions: MenuItem[];\nOutputs\n onAction: OnActionEvent;\n*/\n\n@Component({\n selector: 'app-quick-table',\n imports: [\n CommonModule,\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\n // Outputs\n readonly onAction = output<OnActionEvent>();\n\n // Signals States\n public _columns = signal<PColumn[]>([]);\n public _tableData = signal<any[]>([]);\n public _actions = signal<MenuItem[]>([]);\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 > 0) {\n this._actions.set(this.actions());\n } else {\n this._actions.set([{ title: 'select', label: 'Select', icon: 'pi pi-check', severity: 'primary' }]);\n }\n console.log('QuickTableComponent actions', 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 } else if (col.type === 'select') {\n let options = col.options;\n if (!options) {\n const uniqueOptions = Array.from(new Set(this.tableData().map((item) => item[col.field])));\n options = uniqueOptions.map((option) => ({ label: option, value: option }));\n }\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.EQUALS,\n options: options,\n };\n } else if (col.type === 'boolean') {\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.EQUALS,\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' | 'select', column: string, value: any) {\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 } else if (type === 'select') {\n if (!value) {\n this._tableData.set(this.tableData());\n return;\n }\n const filteredData = this.tableData().filter((item) => item[column] === value);\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 if(column.type === 'select') {\n <th>\n <p-select\n [options]=\"filters()?.[column.field]?.['options']\"\n placeholder=\"Selecciona\"\n (onChange)=\"filterOutsideTable('select', column.field, $event.value)\"\n [style]=\"{ minWidth: '14rem' }\"\n [showClear]=\"true\"></p-select>\n </th>\n } @else if(column.type === 'boolean') {\n <th>\n <p-columnFilter [type]=\"'boolean'\" [field]=\"column.field\"></p-columnFilter>\n </th>\n } @else if(column.type === 'numeric') {\n <th>\n <!-- <p-columnFilter [type]=\"'numeric'\" [field]=\"column.field\"></p-columnFilter> -->\n </th>\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 if(column.type === 'boolean') {\n <i\n class=\"pi\"\n [ngClass]=\"{\n 'text-green-500 pi-check-circle': column.reverse ? !(item | getPath: column) : (item | getPath: column),\n 'text-red-500 pi-times-circle': column.reverse ? (item | getPath: column) : !(item | getPath: column)\n }\"></i>\n } @else {\n <span>{{ item | getPath: column}} </span>\n }\n </td>\n }\n </tr>\n </ng-template>\n <!-- } -->\n</p-table>\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IAuditable } from '../../models/extension.model';\nimport { FieldsetModule } from 'primeng/fieldset';\nimport { TagModule } from 'primeng/tag';\nimport { ChipModule } from 'primeng/chip';\nimport { AvatarModule } from 'primeng/avatar';\n\n@Component({\n selector: 'dc-auditable-viewer',\n template: `\n @if (data(); as audit) {\n <p-fieldset legend=\"Audit Information\" [toggleable]=\"true\" [collapsed]=\"true\">\n <div class=\"grid text-sm\">\n <div class=\"col-12 md:col-6 flex flex-column gap-2\">\n <label class=\"font-semibold\">Author</label>\n <p-chip [label]=\"audit.authorEmail\" [image]=\"'https://i.pravatar.cc/40?u=' + audit.createdBy\" />\n </div>\n\n <div class=\"col-12 md:col-6 flex flex-column gap-2\">\n <label class=\"font-semibold\">Last update by</label>\n <p-chip [label]=\"audit.updatedBy\" [image]=\"'https://i.pravatar.cc/40?u=' + audit.updatedBy\" />\n </div>\n\n <div class=\"col-12 md:col-6 flex flex-column gap-2\">\n <label class=\"font-semibold\">Creation date</label>\n <span>{{ audit.createdAt | date : 'medium' }}</span>\n </div>\n\n <div class=\"col-12 md:col-6 flex flex-column gap-2\">\n <label class=\"font-semibold\">Last update date</label>\n <span>{{ audit.updatedAt | date : 'medium' }}</span>\n </div>\n\n @if(audit.generatedByIA) {\n <div class=\"col-12 mt-2\">\n <p-tag severity=\"info\">\n <div class=\"flex align-items-center gap-2\">\n <i class=\"pi pi-sparkles\"></i>\n <span>Generated by AI</span>\n </div>\n </p-tag>\n </div>\n @if(audit.prompt) {\n <div class=\"col-12 mt-2\">\n <div class=\"flex flex-column gap-2\">\n <label class=\"font-semibold\">Prompt</label>\n <p class=\"m-0 surface-100 p-2 border-round\" style=\"white-space: pre-wrap;\">\n {{ audit.prompt }}\n </p>\n </div>\n </div>\n } }\n </div>\n </p-fieldset>\n }\n `,\n standalone: true,\n imports: [CommonModule, FieldsetModule, TagModule, ChipModule, AvatarModule],\n})\nexport class DcAuditableViewerComponent {\n data = input.required<IAuditable>();\n}\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IExtensionable } from '../../models/extension.model';\n\n@Component({\n selector: 'dc-extensions-viewer',\n template: `<pre>{{ data() | json }}</pre>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class DcExtensionsViewerComponent {\n data = input.required<IExtensionable>();\n}\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ILearnable } from '../../models/extension.model';\n\n@Component({\n selector: 'dc-learnable-viewer',\n template: `<pre>{{ data() | json }}</pre>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class DcLearnableViewerComponent {\n data = input.required<ILearnable>();\n}\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IManageable } from '../../models/extension.model';\n\n@Component({\n selector: 'dc-manageable-viewer',\n template: `<pre>{{ data() | json }}</pre>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class DcManageableViewerComponent {\n data = input.required<IManageable>();\n}\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IReactable } from '../../models/extension.model';\n\n@Component({\n selector: 'dc-reactions-viewer',\n template: `<pre>{{ data() | json }}</pre>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class DcReactionsViewerComponent {\n data = input.required<IReactable>();\n}\n","import { Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { CardModule } from 'primeng/card';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { SelectModule } from 'primeng/select';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'dc-manageable-form',\n standalone: true,\n imports: [ReactiveFormsModule, CardModule, CheckboxModule, SelectModule, TooltipModule],\n templateUrl: './dc-manageable-form.component.html',\n})\nexport class DcManageableFormComponent {\n form = input.required<FormGroup>();\n\n statusOptions = [\n { label: '✍️ Borrador', value: 'draft' },\n { label: '📝 En Revisión', value: 'review' },\n { label: '👍 Publicado', value: 'published' },\n { label: '🗑️ Archivado', value: 'archived' },\n ];\n}\n","<div [formGroup]=\"form()\">\n <div style=\"display: flex; justify-content: space-between\">\n <div class=\"form-field checkbox\">\n <label>\n <p-checkbox [binary]=\"true\" formControlName=\"isPublic\" />\n Public <span pTooltip=\"Is this content visible to all users?\">ℹ️</span>\n </label>\n </div>\n\n <div class=\"form-field\">\n <label for=\"status\">Status <span pTooltip=\"Status of the content\">ℹ️</span></label>\n <p-select\n id=\"status\"\n [options]=\"statusOptions\"\n formControlName=\"status\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [placeholder]=\"'Select Status'\"></p-select>\n </div>\n </div>\n</div>\n","import { Component, computed, inject, input, OnInit } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, ReactiveFormsModule, ControlContainer, FormGroupDirective } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ChipModule } from 'primeng/chip';\n\n@Component({\n selector: 'dc-tags-form',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, ButtonModule, InputTextModule, ChipModule],\n templateUrl: './dc-tags-form.component.html',\n styleUrl: './dc-tags-form.component.scss',\n viewProviders: [\n {\n provide: ControlContainer,\n useFactory: () => inject(ControlContainer, { skipSelf: true }),\n },\n ],\n})\nexport class DcTagsFormComponent {\n form = input.required<FormGroup>();\n public newTagControl = new FormControl('');\n\n public get arrayForm() {\n return this.form().get('tags') as FormArray;\n }\n\n addTag(): void {\n const newTag = this.newTagControl.value?.trim();\n if (newTag) {\n this.arrayForm.push(new FormControl(newTag));\n this.newTagControl.reset();\n }\n }\n\n removeTag(index: number): void {\n this.arrayForm.removeAt(index);\n }\n}\n","<div [formGroup]=\"form()\">\n <div formArrayName=\"tags\">\n <div class=\"flex flex-wrap gap-2\">\n @for (tagControl of arrayForm.controls; track tagControl; let i = $index) {\n <p-chip [label]=\"tagControl.value\" [removable]=\"true\" (onRemove)=\"removeTag(i)\"></p-chip>\n }\n </div>\n </div>\n</div>\n\n<div class=\"flex mt-2\">\n <input pInputText type=\"text\" [formControl]=\"newTagControl\" placeholder=\"New tag\" (keydown.enter)=\"addTag(); $event.preventDefault()\" />\n <p-button label=\"Add Tag\" icon=\"pi pi-plus\" (click)=\"addTag()\" [disabled]=\"!newTagControl.value\"></p-button>\n</div>\n","import { Component, input } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CardModule } from 'primeng/card';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { DcTagsFormComponent } from '../dc-tags-form/dc-tags-form.component';\nimport { LearnableForm } from '../../../services/form-utils.service';\n\n@Component({\n selector: 'dc-learnable-form',\n standalone: true,\n imports: [ReactiveFormsModule, CardModule, InputNumberModule, TooltipModule, DcTagsFormComponent],\n templateUrl: './dc-learnable-form.component.html',\n styleUrls: ['./dc-learnable-form.component.scss'],\n})\nexport class DcLearnableFormComponent {\n form = input.required<LearnableForm>();\n}\n","<div [formGroup]=\"form()\">\n <div class=\"form-grid\">\n <div class=\"row\">\n <div class=\"form-field\">\n <label for=\"level\">Level <span pTooltip=\"Difficulty level\">ℹ️</span></label>\n <p-inputNumber id=\"level\" formControlName=\"level\" [min]=\"0\" [max]=\"10\"></p-inputNumber>\n </div>\n <div class=\"form-field\">\n <label for=\"takenCount\">Taken Count <span pTooltip=\"How many times this has been taken\">ℹ️</span></label>\n <p-inputNumber id=\"takenCount\" formControlName=\"takenCount\" [min]=\"0\"></p-inputNumber>\n </div>\n </div>\n <div class=\"form-field\">\n <label for=\"tags\">Tags <span pTooltip=\"Relevant tags for this content\">ℹ️</span></label>\n <dc-tags-form [form]=\"form()\" />\n </div>\n </div>\n</div>\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, signal, WritableSignal } 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 first: WritableSignal<number> = signal(0);\n /** Number of rows to display per page */\n public rows: WritableSignal<number> = signal(10);\n /** Total number of records available */\n public totalRecords: WritableSignal<number> = signal(0);\n /** Current view mode, either cards or table */\n public viewMode: WritableSignal<'cards' | 'table'> = signal('table');\n /** Loading state indicator */\n public isLoading: WritableSignal<boolean> = signal(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: WritableSignal<FiltersConfig> = signal({ \n page: 0, \n rowsPerPage: 10, \n sort: { _id: -1 }, \n filters: {} \n });\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 const pageNum = +page - 1;\n this.filterConfig.update(config => ({\n ...config,\n page: pageNum\n }));\n this.first.set(pageNum * this.rows());\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.rows.set(pageEvent.rows);\n this.filterConfig.update(config => ({\n ...config,\n page: pageEvent.page,\n rowsPerPage: pageEvent.rows,\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","import { Directive, OnInit, WritableSignal, effect, inject, input, output, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent, PaginationBase } from '../../models/pagination.abstract';\nimport { IFilterQueryResponse, ListFilterBarOptions } from '../../models/filter.models';\nimport { EntityCommunicationService } from '../../services/entity-cominication.service';\n\n@Directive()\nexport abstract class EntityBaseListComponent<T> extends PaginationBase implements OnInit {\n // Services\n protected override router = inject(Router);\n protected override route = inject(ActivatedRoute);\n\n // Abstract properties to be implemented by child classes\n protected abstract entityCommunicationService: EntityCommunicationService<T>;\n public abstract getCustomButtons(item: T): MenuItem[];\n\n // Inputs & Outputs\n readonly initialViewType = input<'table' | 'card'>('card');\n readonly onlyView = input<boolean>(false);\n // Outputs\n readonly onSelect = output<T>();\n\n // Writable Signals for component state\n public items: WritableSignal<T[]> = signal([]);\n public viewType: WritableSignal<'table' | 'card'>;\n public totalRecordsSignal: WritableSignal<number> = signal(0);\n\n // Public properties for configuration\n public filterBarOptions: ListFilterBarOptions = { showActions: true, showCreateButton: true, showViewButton: true };\n public columns: any[] = [];\n\n constructor() {\n super();\n this.viewType = signal(this.initialViewType());\n effect(() => {\n // Keep the parent's totalRecords in sync with our signal\n this.totalRecords.set(this.totalRecordsSignal());\n });\n }\n\n async ngOnInit(): Promise<void> {\n await this.loadData();\n }\n\n protected override async loadData(): Promise<void> {\n try {\n this.isLoading.set(true);\n const response: IFilterQueryResponse<T> = await this.entityCommunicationService.query(this.filterConfig());\n this.items.set(response.rows);\n\n this.totalRecordsSignal.set(response.count);\n } catch (error) {\n console.error('Error loading data', error);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n public onNew(): void {\n this.router.navigate(['./edit'], { relativeTo: this.route });\n }\n\n public toggleView(): void {\n this.viewType.update((v) => (v === 'card' ? 'table' : 'card'));\n }\n\n public override async doAction(actionEvent: OnActionEvent): Promise<void> {\n const { item, action } = actionEvent;\n\n if (!item) {\n return;\n }\n const id = item?._id || item?.id;\n\n switch (action) {\n case 'view':\n this.router.navigate(['./details', id], { relativeTo: this.route });\n break;\n case 'edit':\n this.router.navigate(['./edit', id], { relativeTo: this.route });\n break;\n case 'delete':\n const confirmed = confirm(`Are you sure you want to delete this item?`);\n if (confirmed) {\n try {\n await this.entityCommunicationService.remove(id);\n } catch (error) {\n console.error('Error deleting item', error);\n } finally {\n await this.loadData(); // Refresh list\n }\n }\n break;\n case 'clone':\n await this.entityCommunicationService.clone(id);\n await this.loadData(); // Refresh list\n break;\n case 'search':\n this.filterConfig.update(config => ({\n ...config,\n text: item\n }));\n this.loadData();\n break;\n default:\n // this.handleCustomAction(actionEvent);\n }\n }\n}\n","import { Directive, OnInit, WritableSignal, effect, inject, input, output, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent, PaginationBase } from '../../models/pagination.abstract';\nimport { EntityCommunicationService } from '../../services/entity-cominication.service';\nimport { ListFilterBarOptions } from '../../models/filter.models';\n\nexport interface MongoState {\n query: any;\n projection: any;\n options: {\n sort?: any;\n limit?: number;\n skip?: number;\n [key: string]: any;\n };\n payload: any;\n}\n\n@Directive()\nexport abstract class EntityBaseListV2Component<T> extends PaginationBase implements OnInit {\n // Services\n protected override router = inject(Router);\n protected override route = inject(ActivatedRoute);\n\n // Abstract properties to be implemented by child classes\n protected abstract entityCommunicationService: EntityCommunicationService<T>;\n public abstract getCustomButtons(item: T): MenuItem[];\n\n // Inputs & Outputs\n readonly initialViewType = input<'table' | 'card'>('card');\n readonly onlyView = input<boolean>(false);\n // Outputs\n readonly onSelect = output<T>();\n\n // Writable Signals for component state\n public items: WritableSignal<T[]> = signal([]);\n public viewType: WritableSignal<'table' | 'card'>;\n public totalRecordsSignal: WritableSignal<number> = signal(0);\n\n // Public properties for configuration\n public filterBarOptions: ListFilterBarOptions = { showActions: true, showCreateButton: true, showViewButton: true };\n public columns: any[] = [];\n public fixedQuery: Record<string, any> = {};\n\n // New State Management\n public mongoState: MongoState = {\n query: {},\n projection: {},\n options: {\n sort: { _id: -1 },\n limit: 10,\n skip: 0,\n },\n payload: {},\n };\n\n constructor() {\n super();\n this.viewType = signal(this.initialViewType());\n effect(() => {\n // Keep the parent's totalRecords in sync with our signal\n this.totalRecords.set(this.totalRecordsSignal());\n });\n }\n\n async ngOnInit(): Promise<void> {\n // Initialize mongoState from PaginationBase defaults if needed\n this.mongoState.options.limit = this.rows();\n this.mongoState.options.skip = this.first();\n\n await this.loadData();\n }\n\n protected override async loadData(): Promise<void> {\n try {\n this.isLoading.set(true);\n\n this.mongoState.options.limit = this.rows();\n this.mongoState.options.skip = this.first();\n\n const effectiveQuery = { ...this.mongoState.query, ...this.fixedQuery };\n\n const response = await this.entityCommunicationService.operation({\n action: 'find',\n query: effectiveQuery,\n projection: this.mongoState.projection,\n options: this.mongoState.options,\n payload: this.mongoState.payload,\n });\n\n this.items.set(response);\n\n // We need total records for pagination.\n // Use aggregate to count since 'count' action might not be explicitly supported or to be safe\n const countResult = await this.entityCommunicationService.operation({\n action: 'aggregate',\n payload: [{ $match: effectiveQuery }, { $count: 'total' }],\n });\n\n const count = countResult && countResult.length > 0 ? countResult[0].total : 0;\n this.totalRecordsSignal.set(count);\n } catch (error) {\n console.error('Error loading data', error);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n // Override onPageChange to update mongoState\n public override async onPageChange(pageEvent: any) {\n this.rows.set(pageEvent.rows);\n this.first.set(pageEvent.page * this.rows());\n\n this.mongoState.options.limit = this.rows();\n this.mongoState.options.skip = this.first();\n\n await this.loadData();\n // We can still update URL param if we want, calling super or copying logic\n // super.updatePageParam(pageEvent.page + 1); // private in super\n // We'll leave URL update for now or implement if needed.\n }\n\n public onNew(): void {\n this.router.navigate(['./edit'], { relativeTo: this.route });\n }\n\n public toggleView(): void {\n this.viewType.update((v) => (v === 'card' ? 'table' : 'card'));\n }\n\n public override async doAction(actionEvent: OnActionEvent): Promise<void> {\n const { item, action } = actionEvent;\n\n const id = item?._id || item?.id;\n\n switch (action) {\n case 'view':\n if (id) this.router.navigate(['./details', id], { relativeTo: this.route });\n break;\n case 'edit':\n if (id) this.router.navigate(['./edit', id], { relativeTo: this.route });\n break;\n case 'delete':\n if (!id) return;\n const confirmed = confirm(`Are you sure you want to delete this item?`);\n if (confirmed) {\n try {\n await this.entityCommunicationService.operation({\n action: 'deleteOne',\n query: { _id: id },\n });\n } catch (error) {\n console.error('Error deleting item', error);\n } finally {\n await this.loadData(); // Refresh list\n }\n }\n break;\n case 'clone':\n if (!id) return;\n // Clone usually requires specific logic, maybe 'create' with modified data\n // Or if backend supports 'clone' action via operation?\n // The user listed: 'findOne', 'find', 'create', 'updateOne', 'updateMany', 'deleteOne', 'deleteMany', 'aggregate'.\n // No 'clone'. So we might need to fetch, remove _id, and create.\n const original = await this.entityCommunicationService.operation({ action: 'findOne', query: { _id: id } });\n if (original) {\n const { _id, ...rest } = original;\n // Maybe add 'Copy' to name?\n await this.entityCommunicationService.operation({ action: 'create', payload: { ...rest, name: rest.name + ' (Copy)' } }); // Assumption on 'name'\n await this.loadData();\n }\n break;\n case 'search':\n if (item) {\n this.mongoState.query = { ...this.mongoState.query, $text: { $search: item } };\n } else {\n const { $text, ...rest } = this.mongoState.query;\n this.mongoState.query = rest;\n }\n this.first.set(0);\n this.mongoState.options.skip = 0;\n await this.loadData();\n break;\n case 'changeView':\n this.toggleView();\n break;\n case 'filterChange':\n this.updateQueryFromFilter(item);\n break;\n default:\n // this.handleCustomAction(actionEvent);\n }\n }\n\n // Helper to update query from filter bar\n public updateQueryFromFilter(filterConfig: any) {\n // Map filterConfig.filters to mongoState.query\n // The filter bar returns { filters: { ... }, sort: ... }\n\n if (filterConfig.filters) {\n // Preserve $text search if it exists, as it is managed separately via 'search' action\n const textQuery = this.mongoState.query.$text ? { $text: this.mongoState.query.$text } : {};\n this.mongoState.query = { ...textQuery, ...filterConfig.filters };\n }\n if (filterConfig.sort) {\n this.mongoState.options.sort = filterConfig.sort;\n }\n if (filterConfig.text) {\n // Handle text search if needed, or let child handle it\n }\n\n // Reset pagination on filter change\n this.first.set(0);\n this.mongoState.options.skip = 0;\n\n this.loadData();\n }\n}\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-vertex\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 saveConversations: boolean;\n multilingualHearing: boolean;\n}\n\nexport interface AppException {\n error_message?: string;\n explanation?: string;\n path?: string;\n statusCode?: number;\n method?: string;\n obj?: any;\n exception?: any;\n suggestion?: string;\n type?: string;\n}\n","import { computed, Directive, effect, EventEmitter, inject, input, output, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormArray, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { EntityCommunicationService } from '../../services/entity-cominication.service';\nimport { TOAST_ALERTS_TOKEN } from '../../models/classes';\n\n// Como funciona esta clase y beneficos de extender\n// el objeto principal ahora se llama entity\n// sabe buscar el objeto directamente desde el id en un efecto en esta clase.\n// Es tu deber implementar el patch, como se crear el form cuando se tiene el objeto.\n\n@Directive()\nexport abstract class EntityBaseFormComponent<T extends { _id?: string }> {\n protected route = inject(ActivatedRoute);\n protected router = inject(Router);\n\n public toastService = inject(TOAST_ALERTS_TOKEN, { optional: true });\n\n public id = input<string | undefined>();\n public entityInput = input<T | undefined>(undefined, { alias: 'entity' });\n public entity = signal<T | undefined>(undefined);\n private entityIdFromUrl = toSignal(this.route.paramMap.pipe(map((params: ParamMap) => params.get('id'))));\n public entityId = computed(() => this.id() ?? this.entityIdFromUrl());\n public useFakeSave = input(false); // dont actually save if the father component that is in charge of save.\n public fakeSaved = output<T>();\n\n public abstract form: FormGroup;\n protected abstract entityCommunicationService: EntityCommunicationService<T>;\n protected abstract patchForm(entity: T): void;\n\n public async save(): Promise<T | undefined> {\n if (this.form.invalid) {\n this.toastService?.error({ title: 'Error', subtitle: 'Form is invalid' });\n return undefined;\n }\n\n const entityData = { ...this.form.value, _id: this.entityId() };\n\n if (this.useFakeSave()) {\n this.toastService?.success({ title: 'info', subtitle: 'Se emitio el evento guardado' });\n\n this.fakeSaved.emit(entityData);\n return entityData;\n }\n\n const result = await this.entityCommunicationService.createOrUpdate(entityData);\n\n this.toastService?.success({ title: 'Success', subtitle: 'Entity saved successfully' });\n\n this.entity.set(result);\n this.patchForm(result);\n return result;\n }\n public reload(): void {\n const id = this.entityId();\n if (id) {\n this.loadEntityById(id);\n }\n }\n\n public getDirtyValues(form: FormGroup | FormArray): { [key: string]: unknown } {\n const dirtyValues = {};\n Object.keys(form.controls).forEach((key) => {\n const currentControl = form.get(key);\n\n if (!currentControl?.dirty) {\n return;\n }\n\n if (currentControl instanceof FormGroup) {\n const nestedDirtyValues = this.getDirtyValues(currentControl);\n if (Object.keys(nestedDirtyValues).length > 0) {\n dirtyValues[key] = nestedDirtyValues;\n }\n } else if (currentControl instanceof FormArray) {\n dirtyValues[key] = currentControl.getRawValue();\n } else {\n dirtyValues[key] = currentControl.value;\n }\n });\n return dirtyValues;\n }\n\n public saveDirtyValues() {\n const dirtyValues = this.getDirtyValues(this.form);\n return this.entityCommunicationService.partialUpdate(this.entityId()!, dirtyValues as Partial<T>);\n }\n\n private loadEntityEffect = effect(\n () => {\n const entityFromInput = this.entityInput();\n if (entityFromInput) {\n this.entity.set(entityFromInput);\n this.patchForm(entityFromInput);\n return;\n }\n\n const id = this.entityId();\n if (id) {\n this.loadEntityById(id);\n } else if (!this.useFakeSave()) {\n this.createNewEntity();\n }\n },\n { allowSignalWrites: true },\n );\n\n private async loadEntityById(id: string): Promise<void> {\n try {\n const entity = await this.entityCommunicationService.findOne(id);\n if (entity) {\n this.entity.set(entity);\n this.patchForm(entity);\n }\n } catch (err) {\n this.toastService?.error({ title: 'Error', subtitle: 'Error loading entity' });\n console.error('Error loading entity', err);\n }\n }\n\n protected defaultNewObject: Partial<T> = {} as Partial<T>;\n\n private async createNewEntity(): Promise<void> {\n // object is always empty, if you want a default data, set defaultNewObject\n try {\n const newEntity = await this.entityCommunicationService.createOrUpdate(this.defaultNewObject);\n const id = newEntity?._id || newEntity?.['id'];\n if (id) {\n // we replace the url to avoid creating a new entity when the user goes back\n this.router.navigate([id], { relativeTo: this.route, replaceUrl: true });\n }\n } catch (err) {\n this.toastService?.error({ title: 'Error', subtitle: 'Error creating new entity' });\n console.error('Error creating new entity', err);\n }\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","// Entity extension that add extra features to the entity\n// * Auditable: Ability to track who created and updated the entity\n// * Learnable: Ability to track who created and updated the entity\n// * IManageable: Ability to say is the entity is public or private, or published or draft\n// * IReactable: Ability to give likes, dislikes, etc. hearts etc.\n// * Extensionable: Ability to add extra features to the entity\n// * ❗️ PENDING IMediable: this add media songs and videos and more only thinking for lessons or content interactions.\n\nexport type IExtensionable = Record<string, any>;\n\nexport interface IAuditable {\n createdBy: string; // User id\n updatedBy: string; // User id\n\n authorEmail: string;\n\n generatedByIA: boolean; // Then author id is the ia model id\n prompt?: string;\n\n createdAt?: Date;\n updatedAt?: Date;\n}\n\nexport interface ILearnable {\n level: number; // Difficulty level (e.g., 1-10)\n takenCount: number; // How many times has this been started?\n\n // --- Suggested New Fields ---\n tags: string[]; // For categorization (e.g., \"grammar\", \"beginner\", \"phrasal-verb\")\n avgRating?: number; // Average user rating (e.g., 1-5 stars)\n ratingsCount?: number; // Total number of ratings received\n estimatedDuration?: number; // Estimated time to complete in seconds\n successRate?: number; // Percentage of completions vs. attempts\n}\n\nexport interface IManageable {\n isPublic: boolean; // Is this content visible to all users?\n status?: 'draft' | 'review' | 'published' | 'archived'; // Status of the content\n}\n\nexport interface IReactable {\n reactionsCount?: {\n [reactionType: string]: number; // e.g., { likes: 10, dislikes: 2 }\n };\n}\n","export interface ILangTranslation {\n en: string;\n es: string;\n}\n\nexport const SUPPORTED_LANGUAGES = [\n 'en',\n 'es',\n 'de',\n 'fr',\n 'zh',\n 'it',\n 'pt',\n 'ja',\n 'nl',\n 'ru',\n 'ko',\n 'pl',\n 'sv',\n 'tr',\n 'ar',\n 'vi',\n 'id',\n 'da',\n 'no',\n 'fi',\n 'cs',\n 'el',\n 'hu',\n 'ro',\n 'uk',\n 'he',\n 'th',\n 'hi',\n 'ca',\n 'bg',\n];\n\nexport interface ILanguageData {\n nativeName: string;\n flag: string;\n code: string;\n defaultLocale: string;\n i: number;\n llmKnowledge: number;\n countries: string[];\n translations: ILangTranslation;\n flagImg?: string;\n status: 'ready' | 'commingsoon' | 'almostready';\n speakers: number;\n releaseDate?: string;\n}\n\nexport const LANGUAGES: Record<string, ILanguageData> = {\n en: {\n nativeName: 'English',\n flag: '🇺🇸', // Using US flag as a primary example\n flagImg: 'assets/flags/us.svg',\n code: 'en',\n defaultLocale: 'en-US',\n i: 1,\n llmKnowledge: 100,\n countries: ['United Kingdom', 'United States', 'Canada', 'Australia', 'New Zealand', 'Ireland', 'South Africa', 'India', 'and many others.'],\n translations: {\n en: 'English',\n es: 'Inglés',\n },\n status: 'ready',\n speakers: 1500000000,\n },\n es: {\n nativeName: 'Español',\n flag: '🇪🇸', // Using Spain flag as a primary example\n flagImg: 'assets/flags/es.svg',\n code: 'es',\n defaultLocale: 'es-ES',\n i: 2,\n llmKnowledge: 99,\n countries: [\n 'Spain',\n 'Mexico',\n 'Argentina',\n 'Colombia',\n 'Peru',\n 'Chile',\n 'Venezuela',\n 'Ecuador',\n 'Guatemala',\n 'Cuba',\n 'Bolivia',\n 'Dominican Republic',\n 'Honduras',\n 'El Salvador',\n 'Nicaragua',\n 'Paraguay',\n 'Costa Rica',\n 'Puerto Rico',\n 'Uruguay',\n 'Equatorial Guinea.',\n ],\n translations: {\n en: 'Spanish',\n es: 'Español',\n },\n status: 'ready',\n speakers: 592000000,\n },\n de: {\n nativeName: 'Deutsch',\n flag: '🇩🇪',\n flagImg: 'assets/flags/de.svg',\n code: 'de',\n defaultLocale: 'de-DE',\n i: 3,\n llmKnowledge: 97,\n countries: ['Germany', 'Austria', 'Switzerland', 'Belgium', 'Luxembourg', 'Liechtenstein.'],\n translations: {\n en: 'German',\n es: 'Alemán',\n },\n status: 'almostready',\n speakers: 135000000,\n },\n fr: {\n nativeName: 'Français',\n flag: '🇫🇷',\n flagImg: 'assets/flags/fr.svg',\n code: 'fr',\n defaultLocale: 'fr-FR',\n i: 4,\n llmKnowledge: 96,\n countries: ['France', 'Canada', 'Belgium', 'Switzerland', 'Haiti', 'Ivory Coast', 'Senegal', 'Cameroon', 'Madagascar', 'and many others.'],\n translations: {\n en: 'French',\n es: 'Francés',\n },\n status: 'almostready',\n speakers: 300000000,\n },\n\n it: {\n nativeName: 'Italiano',\n flag: '🇮🇹',\n flagImg: 'assets/flags/it.svg',\n code: 'it',\n defaultLocale: 'it-IT',\n i: 6,\n llmKnowledge: 93,\n countries: ['Italy', 'Switzerland', 'San Marino', 'Vatican City.'],\n translations: {\n en: 'Italian',\n es: 'Italiano',\n },\n status: 'ready',\n speakers: 67000000,\n },\n pt: {\n nativeName: 'Português',\n flag: '🇧🇷',\n flagImg: 'assets/flags/br.svg',\n code: 'pt',\n defaultLocale: 'pt-BR',\n i: 7,\n llmKnowledge: 92,\n countries: ['Portugal', 'Brazil', 'Angola', 'Mozambique', 'Cape Verde', 'Guinea-Bissau', 'Sao Tome and Principe', 'East Timor', 'Macau.'],\n translations: {\n en: 'Portuguese',\n es: 'Portugués',\n },\n status: 'ready',\n speakers: 258000000,\n },\n ja: {\n nativeName: '日本語 (Nihongo)',\n flag: '🇯🇵',\n flagImg: 'assets/flags/jp.svg',\n code: 'ja',\n defaultLocale: 'ja-JP',\n i: 8,\n llmKnowledge: 91,\n countries: ['Japan.'],\n translations: {\n en: 'Japanese',\n es: 'Japonés',\n },\n status: 'almostready',\n speakers: 125000000,\n },\n nl: {\n nativeName: 'Nederlands',\n flag: '🇳🇱',\n flagImg: 'assets/flags/nl.svg',\n code: 'nl',\n defaultLocale: 'nl-NL',\n i: 9,\n llmKnowledge: 90,\n countries: ['Netherlands', 'Belgium', 'Suriname', 'Aruba', 'Curaçao', 'Sint Maarten.'],\n translations: {\n en: 'Dutch',\n es: 'Neerlandés',\n },\n status: 'commingsoon',\n speakers: 25000000,\n releaseDate: '2025-11-03',\n },\n zh: {\n nativeName: '中文 (Zhōngwén)',\n flag: '🇨🇳',\n flagImg: 'assets/flags/cn.svg',\n code: 'zh',\n defaultLocale: 'zh-CN',\n i: 5,\n llmKnowledge: 94,\n countries: ['China', 'Singapore', 'Taiwan.'],\n translations: {\n en: 'Chinese (Mandarin)',\n es: 'Chino (Mandarín)',\n },\n status: 'commingsoon',\n speakers: 1120000000,\n releaseDate: '2025-11-10',\n },\n ru: {\n nativeName: 'Русский (Russkiy)',\n flag: '🇷🇺',\n flagImg: 'assets/flags/ru.svg',\n code: 'ru',\n defaultLocale: 'ru-RU',\n i: 10, // Adjusted index\n llmKnowledge: 89,\n countries: ['Russia', 'Belarus', 'Kazakhstan', 'Kyrgyzstan', 'Tajikistan (co-official)', 'Abkhazia', 'South Ossetia', 'Transnistria.'],\n translations: {\n en: 'Russian',\n es: 'Ruso',\n },\n status: 'commingsoon',\n speakers: 258000000,\n releaseDate: '2025-11-17',\n },\n ko: {\n nativeName: '한국어 (Hangugeo)',\n flag: '🇰🇷',\n flagImg: 'assets/flags/kr.svg',\n code: 'ko',\n defaultLocale: 'ko-KR',\n i: 11,\n llmKnowledge: 87,\n countries: ['South Korea', 'North Korea.'],\n translations: {\n en: 'Korean',\n es: 'Coreano',\n },\n status: 'commingsoon',\n speakers: 82000000,\n releaseDate: '2025-11-24',\n },\n pl: {\n nativeName: 'Polski',\n flag: '🇵🇱',\n flagImg: 'assets/flags/pl.svg',\n code: 'pl',\n defaultLocale: 'pl-PL',\n i: 12,\n llmKnowledge: 86,\n countries: ['Poland.'],\n translations: {\n en: 'Polish',\n es: 'Polaco',\n },\n status: 'commingsoon',\n speakers: 40000000,\n releaseDate: '2025-12-01',\n },\n sv: {\n nativeName: 'Svenska',\n flag: '🇸🇪',\n flagImg: 'assets/flags/se.svg',\n code: 'sv',\n defaultLocale: 'sv-SE',\n i: 13,\n llmKnowledge: 85,\n countries: ['Sweden', 'Finland (co-official).'],\n translations: {\n en: 'Swedish',\n es: 'Sueco',\n },\n status: 'commingsoon',\n speakers: 10000000,\n releaseDate: '2025-12-08',\n },\n tr: {\n nativeName: 'Türkçe',\n flag: '🇹🇷',\n flagImg: 'assets/flags/tr.svg',\n code: 'tr',\n defaultLocale: 'tr-TR',\n i: 14,\n llmKnowledge: 84,\n countries: ['Turkey', 'Cyprus (North).'],\n translations: {\n en: 'Turkish',\n es: 'Turco',\n },\n status: 'commingsoon',\n speakers: 88000000,\n releaseDate: '2025-12-15',\n },\n ar: {\n nativeName: 'العربية (Al-Arabiyyah)',\n flag: '🇸🇦',\n flagImg: 'assets/flags/sa.svg',\n code: 'ar',\n defaultLocale: 'ar-SA',\n i: 15,\n llmKnowledge: 83,\n countries: [\n 'Saudi Arabia',\n 'Egypt',\n 'Algeria',\n 'Morocco',\n 'Iraq',\n 'Sudan',\n 'Yemen',\n 'Syria',\n 'Tunisia',\n 'Jordan',\n 'United Arab Emirates',\n 'Lebanon',\n 'Libya',\n 'Oman',\n 'Kuwait',\n 'Mauritania',\n 'Qatar',\n 'Bahrain',\n 'Comoros',\n 'Djibouti',\n 'Somalia',\n 'Eritrea',\n 'Chad',\n 'Western Sahara',\n 'Palestine.',\n ],\n translations: {\n en: 'Arabic',\n es: 'Árabe',\n },\n status: 'commingsoon',\n speakers: 422000000,\n releaseDate: '2025-12-22',\n },\n vi: {\n nativeName: 'Tiếng Việt',\n flag: '🇻🇳',\n flagImg: 'assets/flags/vn.svg',\n code: 'vi',\n defaultLocale: 'vi-VN',\n i: 16,\n llmKnowledge: 82,\n countries: ['Vietnam.'],\n translations: {\n en: 'Vietnamese',\n es: 'Vietnamita',\n },\n status: 'commingsoon',\n speakers: 90000000,\n releaseDate: '2025-12-29',\n },\n id: {\n nativeName: 'Bahasa Indonesia',\n flag: '🇮🇩',\n flagImg: 'assets/flags/id.svg',\n code: 'id',\n defaultLocale: 'id-ID',\n i: 17,\n llmKnowledge: 81,\n countries: ['Indonesia.'],\n translations: {\n en: 'Indonesian',\n es: 'Indonesio',\n },\n status: 'commingsoon',\n speakers: 199000000,\n releaseDate: '2026-01-05',\n },\n da: {\n nativeName: 'Dansk',\n flag: '🇩🇰',\n flagImg: 'assets/flags/dk.svg',\n code: 'da',\n defaultLocale: 'da-DK',\n i: 18,\n llmKnowledge: 80,\n countries: ['Denmark', 'Faroe Islands (co-official)', 'Greenland (co-official).'],\n translations: {\n en: 'Danish',\n es: 'Danés',\n },\n status: 'commingsoon',\n speakers: 6000000,\n releaseDate: '2026-01-12',\n },\n no: {\n nativeName: 'Norsk',\n flag: '🇳🇴',\n flagImg: 'assets/flags/no.svg',\n code: 'no',\n defaultLocale: 'no-NO',\n i: 19,\n llmKnowledge: 79,\n countries: ['Norway.'],\n translations: {\n en: 'Norwegian',\n es: 'Noruego',\n },\n status: 'commingsoon',\n speakers: 5300000,\n releaseDate: '2026-01-19',\n },\n fi: {\n nativeName: 'Suomi',\n flag: '🇫🇮',\n flagImg: 'assets/flags/fi.svg',\n code: 'fi',\n defaultLocale: 'fi-FI',\n i: 20,\n llmKnowledge: 78,\n countries: ['Finland.'],\n translations: {\n en: 'Finnish',\n es: 'Finlandés',\n },\n status: 'commingsoon',\n speakers: 5400000,\n releaseDate: '2026-01-26',\n },\n cs: {\n nativeName: 'Čeština',\n flag: '🇨🇿',\n flagImg: 'assets/flags/cz.svg',\n code: 'cs',\n defaultLocale: 'cs-CZ',\n i: 21,\n llmKnowledge: 77,\n countries: ['Czech Republic.'],\n translations: {\n en: 'Czech',\n es: 'Checo',\n },\n status: 'commingsoon',\n speakers: 10700000,\n releaseDate: '2026-02-02',\n },\n el: {\n nativeName: 'Ελληνικά (Elliniká)',\n flag: '🇬🇷',\n flagImg: 'assets/flags/gr.svg',\n code: 'el',\n defaultLocale: 'el-GR',\n i: 22,\n llmKnowledge: 76,\n countries: ['Greece', 'Cyprus.'],\n translations: {\n en: 'Greek',\n es: 'Griego',\n },\n status: 'commingsoon',\n speakers: 13500000,\n releaseDate: '2026-02-09',\n },\n hu: {\n nativeName: 'Magyar',\n flag: '🇭🇺',\n flagImg: 'assets/flags/hu.svg',\n code: 'hu',\n defaultLocale: 'hu-HU',\n i: 23,\n llmKnowledge: 75,\n countries: ['Hungary.'],\n translations: {\n en: 'Hungarian',\n es: 'Húngaro',\n },\n status: 'commingsoon',\n speakers: 13000000,\n releaseDate: '2026-02-16',\n },\n ro: {\n nativeName: 'Română',\n flag: '🇷🇴',\n flagImg: 'assets/flags/ro.svg',\n code: 'ro',\n defaultLocale: 'ro-RO',\n i: 24,\n llmKnowledge: 74,\n countries: ['Romania', 'Moldova (as Moldovan).'],\n translations: {\n en: 'Romanian',\n es: 'Rumano',\n },\n status: 'commingsoon',\n speakers: 24000000,\n releaseDate: '2026-02-23',\n },\n uk: {\n nativeName: 'Українська (Ukrainska)',\n flag: '🇺🇦',\n flagImg: 'assets/flags/ua.svg',\n code: 'uk',\n defaultLocale: 'uk-UA',\n i: 25,\n llmKnowledge: 73,\n countries: ['Ukraine.'],\n translations: {\n en: 'Ukrainian',\n es: 'Ucraniano',\n },\n status: 'commingsoon',\n speakers: 33000000,\n releaseDate: '2026-03-02',\n },\n he: {\n nativeName: 'עברית (Ivrit)',\n flag: '🇮🇱',\n flagImg: 'assets/flags/il.svg',\n code: 'he',\n defaultLocale: 'he-IL',\n i: 26,\n llmKnowledge: 72,\n countries: ['Israel.'],\n translations: {\n en: 'Hebrew',\n es: 'Hebreo',\n },\n status: 'commingsoon',\n speakers: 9000000,\n releaseDate: '2026-03-09',\n },\n th: {\n nativeName: 'ภาษาไทย (Phasa Thai)',\n flag: '🇹🇭',\n flagImg: 'assets/flags/th.svg',\n code: 'th',\n defaultLocale: 'th-TH',\n i: 27,\n llmKnowledge: 71,\n countries: ['Thailand.'],\n translations: {\n en: 'Thai',\n es: 'Tailandés',\n },\n status: 'commingsoon',\n speakers: 69000000,\n releaseDate: '2026-03-16',\n },\n hi: {\n nativeName: 'हिन्दी (Hindī)',\n flag: '🇮🇳',\n flagImg: 'assets/flags/in.svg',\n code: 'hi',\n defaultLocale: 'hi-IN',\n i: 28,\n llmKnowledge: 70,\n countries: ['India (co-official)', 'Fiji (co-official).'],\n translations: {\n en: 'Hindi',\n es: 'Hindi',\n },\n status: 'commingsoon',\n speakers: 602000000,\n releaseDate: '2026-03-23',\n },\n ca: {\n nativeName: 'Català',\n flag: '🇪🇸',\n flagImg: 'assets/flags/es.svg',\n code: 'ca',\n defaultLocale: 'ca-ES',\n i: 29,\n llmKnowledge: 69,\n countries: ['Spain (Catalonia, Valencia, Balearic Islands)', 'Andorra.'],\n translations: {\n en: 'Catalan',\n es: 'Catalán',\n },\n status: 'commingsoon',\n speakers: 10000000,\n releaseDate: '2026-03-30',\n },\n bg: {\n nativeName: 'Български (Balgarski)',\n flag: '🇧🇬',\n flagImg: 'assets/flags/bg.svg',\n code: 'bg',\n defaultLocale: 'bg-BG',\n i: 30,\n llmKnowledge: 68,\n countries: ['Bulgaria.'],\n translations: {\n en: 'Bulgarian',\n es: 'Búlgaro',\n },\n status: 'commingsoon',\n speakers: 9000000,\n releaseDate: '2026-04-06',\n },\n eo: {\n nativeName: 'Esperanto',\n flag: '🇺🇳', // Usando la bandera de la ONU por su naturaleza internacional\n flagImg: 'assets/flags/eo.svg',\n code: 'eo',\n defaultLocale: 'eo',\n i: 59,\n llmKnowledge: 90,\n countries: ['Worldwide (constructed language)'],\n translations: {\n en: 'Esperanto',\n es: 'Esperanto',\n },\n status: 'commingsoon',\n speakers: 2000000,\n releaseDate: '2026-04-13',\n },\n ia: {\n nativeName: 'Interlingua',\n flag: '🇺🇳', // Usando la bandera de la ONU por su naturaleza internacional\n flagImg: 'assets/flags/ia.svg',\n code: 'ia',\n defaultLocale: 'ia',\n i: 60,\n llmKnowledge: 85,\n countries: ['Worldwide (constructed language)'],\n translations: {\n en: 'Interlingua',\n es: 'Interlingua',\n },\n status: 'commingsoon',\n speakers: 1500,\n releaseDate: '2026-04-20',\n },\n hr: {\n nativeName: 'Hrvatski',\n flag: '🇭🇷',\n flagImg: 'assets/flags/hr.svg',\n code: 'hr',\n defaultLocale: 'hr-HR',\n i: 31,\n llmKnowledge: 67,\n countries: ['Croatia', 'Bosnia and Herzegovina (co-official)', 'Serbia (Vojvodina).'],\n translations: {\n en: 'Croatian',\n es: 'Croata',\n },\n status: 'commingsoon',\n speakers: 5700000,\n releaseDate: '2026-04-27',\n },\n sk: {\n nativeName: 'Slovenčina',\n flag: '🇸🇰',\n flagImg: 'assets/flags/sk.svg',\n code: 'sk',\n defaultLocale: 'sk-SK',\n i: 32,\n llmKnowledge: 66,\n countries: ['Slovakia.'],\n translations: {\n en: 'Slovak',\n es: 'Eslovaco',\n },\n status: 'commingsoon',\n speakers: 5400000,\n releaseDate: '2026-05-04',\n },\n fil: {\n nativeName: 'Filipino',\n flag: '🇵🇭',\n flagImg: 'assets/flags/ph.svg',\n code: 'fil',\n defaultLocale: 'fil-PH',\n i: 33,\n llmKnowledge: 65,\n countries: ['Philippines (co-official).'],\n translations: {\n en: 'Filipino',\n es: 'Filipino',\n },\n status: 'commingsoon',\n speakers: 109000000,\n releaseDate: '2026-05-11',\n },\n tl: {\n // Tagalog often used as base for Filipino, but distinct ISO code\n nativeName: 'Tagalog',\n flag: '🇵🇭',\n flagImg: 'assets/flags/ph.svg',\n code: 'tl',\n defaultLocale: 'tl-PH',\n i: 34,\n llmKnowledge: 64,\n countries: ['Philippines (base of Filipino).'],\n translations: {\n en: 'Tagalog',\n es: 'Tagalo',\n },\n status: 'commingsoon',\n speakers: 109000000,\n releaseDate: '2026-05-18',\n },\n lt: {\n nativeName: 'Lietuvių',\n flag: '🇱🇹',\n flagImg: 'assets/flags/lt.svg',\n code: 'lt',\n defaultLocale: 'lt-LT',\n i: 35,\n llmKnowledge: 63,\n countries: ['Lithuania.'],\n translations: {\n en: 'Lithuanian',\n es: 'Lituano',\n },\n status: 'commingsoon',\n speakers: 2800000,\n releaseDate: '2026-05-25',\n },\n lv: {\n nativeName: 'Latviešu',\n flag: '🇱🇻',\n flagImg: 'assets/flags/lv.svg',\n code: 'lv',\n defaultLocale: 'lv-LV',\n i: 36,\n llmKnowledge: 62,\n countries: ['Latvia.'],\n translations: {\n en: 'Latvian',\n es: 'Letón',\n },\n status: 'commingsoon',\n speakers: 1900000,\n releaseDate: '2026-06-01',\n },\n sl: {\n nativeName: 'Slovenščina',\n flag: '🇸🇮',\n flagImg: 'assets/flags/si.svg',\n code: 'sl',\n defaultLocale: 'sl-SI',\n i: 37,\n llmKnowledge: 61,\n countries: ['Slovenia.'],\n translations: {\n en: 'Slovenian',\n es: 'Esloveno',\n },\n status: 'commingsoon',\n speakers: 2500000,\n releaseDate: '2026-06-08',\n },\n et: {\n nativeName: 'Eesti',\n flag: '🇪🇪',\n flagImg: 'assets/flags/ee.svg',\n code: 'et',\n defaultLocale: 'et-EE',\n i: 38,\n llmKnowledge: 60,\n countries: ['Estonia.'],\n translations: {\n en: 'Estonian',\n es: 'Estonio',\n },\n status: 'commingsoon',\n speakers: 1100000,\n releaseDate: '2026-06-15',\n },\n ms: {\n nativeName: 'Bahasa Melayu',\n flag: '🇲🇾',\n flagImg: 'assets/flags/my.svg',\n code: 'ms',\n defaultLocale: 'ms-MY',\n i: 39,\n llmKnowledge: 59,\n countries: ['Malaysia', 'Brunei', 'Singapore (co-official).'],\n translations: {\n en: 'Malay',\n es: 'Malayo',\n },\n status: 'commingsoon',\n speakers: 290000000,\n releaseDate: '2026-06-22',\n },\n sw: {\n nativeName: 'Kiswahili',\n flag: '🇹🇿',\n flagImg: 'assets/flags/tz.svg',\n code: 'sw',\n defaultLocale: 'sw-TZ',\n i: 40,\n llmKnowledge: 58,\n countries: ['Tanzania', 'Kenya', 'Uganda', 'Rwanda', 'Democratic Republic of the Congo (national language).'],\n translations: {\n en: 'Swahili',\n es: 'Suajili',\n },\n status: 'commingsoon',\n speakers: 200000000,\n releaseDate: '2026-06-29',\n },\n fa: {\n nativeName: 'فارسی (Fārsī)',\n flag: '🇮🇷',\n flagImg: 'assets/flags/ir.svg',\n code: 'fa',\n defaultLocale: 'fa-IR',\n i: 41,\n llmKnowledge: 57,\n countries: ['Iran', 'Afghanistan (as Dari)', 'Tajikistan (as Tajik).'],\n translations: {\n en: 'Persian/Farsi',\n es: 'Persa',\n },\n status: 'commingsoon',\n speakers: 110000000,\n releaseDate: '2026-07-06',\n },\n bn: {\n nativeName: 'বাংলা (Bangla)',\n flag: '🇧🇩',\n flagImg: 'assets/flags/bd.svg',\n code: 'bn',\n defaultLocale: 'bn-BD',\n i: 42,\n llmKnowledge: 56,\n countries: ['Bangladesh', 'India (West Bengal, Tripura).'],\n translations: {\n en: 'Bengali',\n es: 'Bengalí',\n },\n status: 'commingsoon',\n speakers: 272000000,\n },\n ur: {\n nativeName: 'اردو (Urdū)',\n flag: '🇵🇰',\n flagImg: 'assets/flags/pk.svg',\n code: 'ur',\n defaultLocale: 'ur-PK',\n i: 43,\n llmKnowledge: 55,\n countries: ['Pakistan (co-official)', 'India (recognized).'],\n translations: {\n en: 'Urdu',\n es: 'Urdu',\n },\n status: 'commingsoon',\n speakers: 231000000,\n },\n sr: {\n nativeName: 'Српски (Srpski)',\n flag: '🇷🇸',\n flagImg: 'assets/flags/rs.svg',\n code: 'sr',\n defaultLocale: 'sr-RS',\n i: 44,\n llmKnowledge: 54,\n countries: ['Serbia', 'Bosnia and Herzegovina (co-official)', 'Montenegro (co-official)', 'Kosovo (co-official).'],\n translations: {\n en: 'Serbian',\n es: 'Serbio',\n },\n status: 'commingsoon',\n speakers: 9000000,\n },\n is: {\n nativeName: 'Íslenska',\n flag: '🇮🇸',\n flagImg: 'assets/flags/is.svg',\n code: 'is',\n defaultLocale: 'is-IS',\n i: 45,\n llmKnowledge: 53,\n countries: ['Iceland.'],\n translations: {\n en: 'Icelandic',\n es: 'Islandés',\n },\n status: 'commingsoon',\n speakers: 314000,\n },\n ta: {\n nativeName: 'தமிழ் (Tamiḻ)',\n flag: '🇱🇰',\n flagImg: 'assets/flags/lk.svg',\n code: 'ta',\n defaultLocale: 'ta-LK',\n i: 46,\n llmKnowledge: 52,\n countries: ['Sri Lanka', 'Singapore', 'India (Tamil Nadu, Puducherry).'],\n translations: {\n en: 'Tamil',\n es: 'Tamil',\n },\n status: 'commingsoon',\n speakers: 86000000,\n },\n mr: {\n nativeName: 'मराठी (Marāṭhī)',\n flag: '🇮🇳',\n flagImg: 'assets/flags/in.svg',\n code: 'mr',\n defaultLocale: 'mr-IN',\n i: 47,\n llmKnowledge: 51,\n countries: ['India (Maharashtra).'],\n translations: {\n en: 'Marathi',\n es: 'Maratí',\n },\n status: 'commingsoon',\n speakers: 99000000,\n },\n my: {\n nativeName: 'မြန်မာဘာသာ (Myanmar)',\n flag: '🇲🇲',\n flagImg: 'assets/flags/mm.svg',\n code: 'my',\n defaultLocale: 'my-MM',\n i: 48,\n llmKnowledge: 50,\n countries: ['Myanmar.'],\n translations: {\n en: 'Burmese',\n es: 'Birmano',\n },\n status: 'commingsoon',\n speakers: 43000000,\n },\n cy: {\n nativeName: 'Cymraeg',\n flag: '🏴󠁧󠁢󠁷󠁬󠁳󠁿',\n flagImg: 'assets/flags/cy.svg',\n code: 'cy',\n defaultLocale: 'cy-GB',\n i: 49,\n llmKnowledge: 49,\n countries: ['United Kingdom (Wales).'],\n translations: {\n en: 'Welsh',\n es: 'Galés',\n },\n status: 'commingsoon',\n speakers: 724000,\n },\n ha: {\n nativeName: 'Hausa',\n flag: '🇳🇬',\n flagImg: 'assets/flags/ng.svg',\n code: 'ha',\n defaultLocale: 'ha-NG',\n i: 50,\n llmKnowledge: 48,\n countries: ['Nigeria (major language)', 'Niger', 'Ghana', 'Cameroon', 'Benin', 'Chad', 'Sudan.'],\n translations: {\n en: 'Hausa',\n es: 'Hausa',\n },\n status: 'commingsoon',\n speakers: 130000000,\n },\n eu: {\n nativeName: 'Euskara',\n flag: '🇪🇸',\n flagImg: 'assets/flags/es.svg',\n code: 'eu',\n defaultLocale: 'eu-ES',\n i: 51,\n llmKnowledge: 47,\n countries: ['Spain (Basque Country, Navarre)', 'France (French Basque Country).'],\n translations: {\n en: 'Basque',\n es: 'Vasco',\n },\n status: 'commingsoon',\n speakers: 750000,\n },\n ga: {\n nativeName: 'Gaeilge',\n flag: '🇮🇪',\n flagImg: 'assets/flags/ie.svg',\n code: 'ga',\n defaultLocale: 'ga-IE',\n i: 52,\n llmKnowledge: 46,\n countries: ['Ireland', 'United Kingdom (Northern Ireland).'],\n translations: {\n en: 'Irish',\n es: 'Irlandés',\n },\n status: 'commingsoon',\n speakers: 1900000,\n },\n sd: {\n nativeName: 'سنڌي (Sindhī)',\n flag: '🇵🇰',\n flagImg: 'assets/flags/pk.svg',\n code: 'sd',\n defaultLocale: 'sd-PK',\n i: 53,\n llmKnowledge: 45,\n countries: ['Pakistan (Sindh)', 'India (recognized).'],\n translations: {\n en: 'Sindhi',\n es: 'Sindi',\n },\n status: 'commingsoon',\n speakers: 32000000,\n },\n am: {\n nativeName: 'አማርኛ (Amarəñña)',\n flag: '🇪🇹',\n flagImg: 'assets/flags/et.svg',\n code: 'am',\n defaultLocale: 'am-ET',\n i: 54,\n llmKnowledge: 44,\n countries: ['Ethiopia.'],\n translations: {\n en: 'Amharic',\n es: 'Amárico',\n },\n status: 'commingsoon',\n speakers: 57000000,\n },\n jv: {\n nativeName: 'Basa Jawa',\n flag: '🇮🇩',\n flagImg: 'assets/flags/id.svg',\n code: 'jv',\n defaultLocale: 'jv-ID',\n i: 55,\n llmKnowledge: 43,\n countries: ['Indonesia (important regional language).'],\n translations: {\n en: 'Javanese',\n es: 'Javanés',\n },\n status: 'commingsoon',\n speakers: 68000000,\n },\n km: {\n nativeName: 'ភាសាខ្មែរ (Phéasa Khmér)',\n flag: '🇰🇭',\n flagImg: 'assets/flags/kh.svg',\n code: 'km',\n defaultLocale: 'km-KH',\n i: 56,\n llmKnowledge: 42,\n countries: ['Cambodia.'],\n translations: {\n en: 'Khmer',\n es: 'Jemer',\n },\n status: 'commingsoon',\n speakers: 16000000,\n },\n yo: {\n nativeName: 'Yorùbá',\n flag: '🇳🇬',\n flagImg: 'assets/flags/ng.svg',\n code: 'yo',\n defaultLocale: 'yo-NG',\n i: 57,\n llmKnowledge: 41,\n countries: ['Nigeria', 'Benin', 'Togo.'],\n translations: {\n en: 'Yoruba',\n es: 'Yoruba',\n },\n status: 'commingsoon',\n speakers: 50000000,\n },\n gl: {\n nativeName: 'Galego',\n flag: '🇪🇸',\n flagImg: 'assets/flags/es.svg',\n code: 'gl',\n defaultLocale: 'gl-ES',\n i: 58,\n llmKnowledge: 40,\n countries: ['Spain (Galicia).'],\n translations: {\n en: 'Galician',\n es: 'Gallego',\n },\n status: 'commingsoon',\n speakers: 2400000,\n },\n};\n\nexport function getLangDesc(langCode: string, lang: string = 'en'): string {\n const languageData = LANGUAGES[langCode];\n if (languageData && languageData.translations) {\n return (languageData.translations as any)[lang] || languageData.nativeName;\n }\n return langCode;\n}\n\n/**\n * How to use this pipe\n * @example\n * // In your component ts file assuming you have a variable with the lang code\n *\n * \\@Component({\n * selector: 'app-example',\n * template: `\n * <span>{{'en' | langDesc: 'es'}}</span>\n * `,\n * standalone: true,\n * imports: [LangDescTranslation]\n * })\n *\n *\n * class ExampleComponent {\n * }\n *\n */\nexport function getSupportedLanguageOptions(lang: 'es' | 'en' = 'es') {\n return SUPPORTED_LANGUAGES.map((langCode) => ({\n value: langCode,\n label: getLangDesc(langCode, lang),\n }));\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\nimport { LANGUAGES } from '../models/languages.model';\nimport { getLangDesc } from '../models/languages.model';\n\n@Pipe({\n name: 'langDesc',\n standalone: true,\n})\nexport class LangDescTranslation implements PipeTransform {\n transform(value: string, lang?: string | null): string {\n const validLang = lang === 'es' ? 'es' : 'en';\n return getLangDesc(value, validLang);\n }\n}\n\n@Pipe({\n name: 'flagEmoji',\n standalone: true,\n})\nexport class FlagPipe implements PipeTransform {\n transform(lang: string): string {\n const langCodeMap: { [key: string]: string } = {\n cn: 'zh',\n kr: 'ko',\n };\n const code = langCodeMap[lang] || lang;\n return LANGUAGES[code]?.flag || '';\n }\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, HttpEventType, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject, signal, InjectionToken, Optional, Inject } from '@angular/core';\nimport { Observable, throwError, lastValueFrom, tap, map, catchError } from 'rxjs';\nimport { AppException, TOAST_ALERTS_TOKEN } from '../models/classes';\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' | string;\n errorHandler?: (error: HttpErrorResponse) => void;\n}\n\nexport interface PostHttpParams {\n service: string;\n data: unknown;\n host?: 'primary' | 'secondary' | string;\n}\n\nexport interface PutHttpParams {\n service: string;\n data: unknown;\n host?: 'primary' | 'secondary' | string;\n}\n\nexport interface GetHttpParams {\n service: string;\n host?: 'primary' | 'secondary' | string;\n skipErrorHandling?: boolean;\n}\n\nexport interface DeleteHttpParams {\n service: string;\n host?: 'primary' | 'secondary' | string;\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 private toastService = inject(TOAST_ALERTS_TOKEN);\n\n // Use signals for reactive state\n private isLoading = signal<boolean>(false);\n private lastError = signal<HttpCoreError | null>(null);\n\n // Configuration\n public 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 public async postHttp<T = any>({ service, data, host }: PostHttpParams): Promise<T> {\n this.isLoading.set(true);\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\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 public postHttp$<T = any>({ service, data, host }: PostHttpParams): Observable<T> {\n this.isLoading.set(true);\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n return this.httpClient.post<T>(url, dataPlain).pipe(\n tap(() => this.isLoading.set(false)),\n catchError((err) => {\n this.isLoading.set(false);\n return this.handleRequestError(err);\n }),\n );\n }\n\n public async putHttp<T = any>({ service, data, host }: PutHttpParams): Promise<T> {\n this.isLoading.set(true);\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\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 public async getHttp<T = any>({ service, host, skipErrorHandling = false }: GetHttpParams): Promise<T> {\n this.isLoading.set(true);\n try {\n const url = this.getHostUrl(host) + '/' + service;\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 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 public getHttp$<T = any>({ service, host, skipErrorHandling = false }: GetHttpParams): Observable<T> {\n this.isLoading.set(true);\n const url = this.getHostUrl(host) + '/' + service;\n return this.httpClient.get<T>(url).pipe(\n tap(() => this.isLoading.set(false)),\n catchError((err) => {\n this.isLoading.set(false);\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n }\n\n public async deleteHttp<T = DeletedData>({ service, host }: DeleteHttpParams): Promise<T> {\n this.isLoading.set(true);\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\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 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 * @deprecated Use postHttp instead\n */\n public async post<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n return this.postHttp({ service, data, host });\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(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 * @deprecated Use putHttp instead\n */\n public async put<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n return this.putHttp({ service, data, host });\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 * @deprecated Use getHttp instead\n */\n public async get<T = any>(service: string, host = this.config.defaultHost, skipErrorHandling = false): Promise<T> {\n return this.getHttp({ service, host, skipErrorHandling });\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 * @deprecated Use deleteHttp instead\n */\n public async delete<T = DeletedData>(service: string, host = this.config.defaultHost): Promise<T> {\n return this.deleteHttp({ service, host });\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 * @Deprecated use postFile\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 * 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 postFile<T = any>({ service, file, metadata, host }: { service: string; file: Blob; metadata?: any; host?: string }): 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' | string = this.config.defaultHost): string {\n if (host === 'primary') {\n return this.config.primaryUrl;\n }\n if (host === 'secondary' && this.config.secondaryUrl) {\n return this.config.secondaryUrl;\n } else {\n return host;\n }\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 protected handleRequestError(error: HttpErrorResponse): Observable<never> {\n this.isLoading.set(false);\n let appException: AppException = null;\n if (error?.error?.type === 'AppException') {\n appException = error?.error;\n } else if (error?.error?.exception?.error_message) {\n appException = error?.error?.exception;\n }\n\n if (appException) {\n console.error(error.error);\n const errorMessage = appException?.error_message || 'An error occurred';\n const subtitle = appException?.explanation || 'Please try again later';\n this.toastService.error({ title: errorMessage, subtitle });\n }\n\n // Set the last error, not sure if this is still neeed, to keep track of the last error.\n if (appException) {\n this.lastError.set({\n error_message: appException.error_message || 'An error occurred',\n explanation: appException.explanation || 'Please try again later',\n status: error.status,\n code: appException.statusCode as any,\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 * 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 public postObservableWithProgress<DataType>(\n service: string,\n data: DataType,\n host: 'primary' | 'secondary' = 'primary',\n ): Observable<{ progress?: number; blob?: Blob }> {\n const hostUrl = this.getHostUrl(host);\n const url = `${hostUrl}/${service}`;\n\n return this.httpClient\n .post(url, data, {\n reportProgress: true,\n observe: 'events',\n responseType: 'blob',\n })\n .pipe(\n map((event) => {\n let progress: number | undefined;\n let blob: Blob | undefined;\n\n switch (event.type) {\n case HttpEventType.DownloadProgress:\n if (event.total) {\n progress = Math.round((100 * event.loaded) / event.total);\n }\n break;\n case HttpEventType.Response:\n blob = event.body as Blob;\n break;\n }\n return { progress, blob };\n }),\n catchError((err) => {\n this.handleRequestError(err);\n return throwError(() => err);\n }),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { HttpCoreService } from './http-core.service';\nimport { FiltersConfig, IFilterQueryResponse } from '../models/filter.models';\n\n@Injectable()\nexport abstract class EntityCommunicationService<T> {\n protected httpService = inject(HttpCoreService);\n\n protected customHost?: string;\n\n constructor(protected serviceName: string) {\n // this.customHost = customHost;\n }\n\n /**\n * @deprecated Use operation({ action: 'find', query: {} }) instead.\n */\n findAll(): Promise<T[]> {\n return this.httpService.getHttp<T[]>({ service: `api/${this.serviceName}`, host: this.customHost });\n }\n\n findAllOperation(query: any = {}): Promise<T[]> {\n return this.operation({ action: 'find', query });\n }\n\n findOne(id: string): Promise<T> {\n return this.httpService.getHttp<T>({ service: `api/${this.serviceName}/${id}`, host: this.customHost });\n }\n\n findOneOperation(id: string, projection?: any): Promise<T> {\n return this.operation({ action: 'findOne', query: { _id: id }, projection });\n }\n\n /**\n * @deprecated Use operation({ action: 'findOne', query, projection }) instead.\n */\n findOneByQuery(query: any, projection?: any): Promise<T> {\n // Can find only one with query and projection, query can be id. { id: 'id' }\n return this.httpService.postHttp<T>({ service: `api/${this.serviceName}/find-one`, data: { query, projection }, host: this.customHost });\n }\n\n createOrUpdate(entity: Partial<T>): Promise<T> {\n // if Id is present then in object, then Update all props in the object\n return this.httpService.postHttp<T>({ service: `api/${this.serviceName}`, data: entity, host: this.customHost });\n }\n\n createOperation(payload: Partial<T>): Promise<T> {\n return this.operation({ action: 'create', payload });\n }\n\n query(filterConfig: FiltersConfig): Promise<IFilterQueryResponse<T>> {\n return this.httpService.postHttp<IFilterQueryResponse<T>>({ service: `api/${this.serviceName}/query`, data: filterConfig, host: this.customHost });\n }\n\n /**\n * @deprecated Use operation({ action: 'updateOne', query: { _id: id }, payload: update }) instead.\n */\n update(id: string, update: any): Promise<T> {\n // NEW METHOD, i'm not used yet.\n // Este método da más control porque no esta validado, puede actualizar por ejemplo un objeto anidado 'assets.motions' o creo que tambien mandando el update de mongo {$push...}\n return this.httpService.putHttp<T>({ service: `api/${this.serviceName}/${id}`, data: update, host: this.customHost });\n }\n\n updateOneOperation(id: string, payload: any): Promise<T> {\n return this.operation({ action: 'updateOne', query: { _id: id }, payload });\n }\n\n partialUpdate(id: string, partialUpdates: Partial<T>): Promise<T> {\n // In backend object is flattened, so Convert nested objects to dot notation eg. { \"video.captions.remotion\": captions.captions }\n return this.httpService.putHttp<T>({ service: `api/${this.serviceName}/${id}`, data: partialUpdates, host: this.customHost });\n }\n\n async remove(id: string): Promise<void> {\n await this.httpService.deleteHttp({ service: `api/${this.serviceName}/${id}`, host: this.customHost });\n }\n\n removeOperation(id: string): Promise<any> {\n return this.operation({ action: 'deleteOne', query: { _id: id } });\n }\n\n clone(id: string, overrides: Partial<T> = {}): Promise<T> {\n return this.httpService.postHttp<T>({ service: `api/${this.serviceName}/${id}/clone`, data: overrides });\n }\n\n getFixedQuery(): Record<string, any> {\n return {};\n }\n\n operation(params: {\n action: 'findOne' | 'find' | 'create' | 'updateOne' | 'updateMany' | 'deleteOne' | 'deleteMany' | 'aggregate' | 'count';\n query?: any;\n payload?: any;\n projection?: any;\n options?: any;\n }): Promise<any> {\n return this.httpService.postHttp<any>({ service: `api/${this.serviceName}/operation`, data: params, host: this.customHost });\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UiStateService {\n chatDrawerVisible = signal(false);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FormBuilder, FormGroup, FormControl, FormArray } from '@angular/forms';\n\nexport type LearnableForm = FormGroup<{\n level: FormControl<number | null>;\n takenCount: FormControl<number | null>;\n tags: FormArray<FormControl<string | null>>;\n}>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormUtilsService {\n private fb = inject(FormBuilder);\n\n createMetaFormGroup(): FormGroup {\n return this.fb.group({\n authorId: [''],\n authorEmail: [''],\n takenCount: [0],\n level: [0],\n });\n }\n\n createManageableFormGroup(): FormGroup {\n return this.fb.group({\n isPublic: [false],\n status: ['draft'],\n });\n }\n\n createLearnableFormGroup(): LearnableForm {\n return this.fb.group({\n level: new FormControl(0),\n takenCount: new FormControl(0),\n tags: this.fb.array<FormControl<string | null>>([]),\n });\n }\n\n patchLearnableFormGroup(form: LearnableForm, data: { tags?: string[] }): void {\n if (data && data?.tags) {\n this.patchFormArray(form.controls.tags, data.tags);\n }\n }\n\n private patchFormArray(formArray: FormArray, values: any[]): void {\n formArray.clear();\n values.forEach((value) => {\n formArray.push(this.fb.control(value));\n });\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\n\nexport interface IAppConfig {\n version: string;\n envName: string;\n projectName: string;\n production: boolean;\n backendPythonUrl: string;\n backendNodeUrl: string;\n aiServicesUrl: string;\n kbHost: string;\n clientId: string;\n mobile: {\n appleAppId: string;\n appleRedirectURI: string;\n androidClientId: string;\n iosClientId: string;\n };\n firebase: {\n apiKey: string;\n authDomain: string;\n projectId: string;\n storageBucket: string;\n messagingSenderId: string;\n appId: string;\n };\n logLevel: number;\n gtm: string;\n posthogApiKey: string;\n posthogApiHost: string;\n}\n\nexport const APP_CONFIG = new InjectionToken<IAppConfig>('app.config');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppConfigService {\n public config: IAppConfig = inject(APP_CONFIG);\n // constructor() {\n // this.config.kbhost = 'http://localhost:3000';\n // }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AudioNotificationService {\n playFinishNotification() {\n const audio = new Audio('assets/sounds/accomplished.mp3');\n audio.load();\n audio.play();\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Capacitor } from '@capacitor/core';\nimport { Observable, distinctUntilChanged, fromEvent, map } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MobileService {\n protected router = inject(Router);\n\n public eventInstall;\n public isMobileAgent: boolean;\n public hasReponsiveView = signal<boolean>(false);\n public hasMobileView: boolean;\n\n private readonly mobileWidthThreshold = 768; // Adjust the threshold as needed\n private readonly responsibleWidthThreshold = 994;\n private screenWidth$: Observable<number>;\n public screenHeight$: Observable<number>;\n private isMobile$: Observable<boolean>;\n\n constructor() {\n // Initialize signal with current window width check\n this.hasReponsiveView.set(window.innerWidth <= this.responsibleWidthThreshold);\n\n this.checkMobileAgent();\n\n this.screenWidth$ = fromEvent(window, 'resize').pipe(\n map(() => window.innerWidth),\n distinctUntilChanged(),\n );\n\n this.screenHeight$ = fromEvent(window, 'resize').pipe(\n map(() => window.innerHeight),\n distinctUntilChanged(),\n );\n\n this.isMobile$ = this.screenWidth$.pipe(\n map((width: number) => width <= this.responsibleWidthThreshold), // Add type assertion to 'width'\n distinctUntilChanged(),\n );\n\n this.isMobile$.subscribe((isResposible) => {\n console.log('isMobile', isResposible);\n // Update signal value when screen size changes\n this.hasReponsiveView.set(isResposible);\n });\n }\n\n public isMobileRoute(currentRoute: string = ''): boolean {\n if (!currentRoute) {\n currentRoute = this.router.url;\n }\n const firstRouteName = currentRoute.split('/')[1];\n\n return firstRouteName == 'm' ? true : false;\n }\n\n // Add this function to the class\n public getPlatform(): string {\n if (Capacitor.isNativePlatform()) {\n const platform = Capacitor.getPlatform();\n // Example usage in component:\n if (platform === 'ios') {\n // iOS specific code\n return 'ios';\n } else if (platform === 'android') {\n // Android specific code\n return 'android';\n } else {\n return 'web';\n }\n }\n return 'web';\n }\n\n public isNativeMobileOrMobileRoute() {\n if (Capacitor.isNativePlatform() || this.isMobileRoute()) {\n return true;\n } else {\n return false;\n }\n }\n\n public isNativeMobile() {\n return Capacitor.isNativePlatform();\n }\n\n getScreenWidth(): Observable<number> {\n return this.screenWidth$;\n }\n\n // isMobile(): Observable<boolean> {\n // return this.isMobile$;\n // }\n\n public installByUser() {\n console.log('Debería hacer la instalación por el usuario');\n if (this.eventInstall) {\n this.eventInstall.prompt();\n console.log('Debio mandar el promt');\n }\n }\n\n private checkMobileAgent(): void {\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\n // true for mobile device\n this.isMobileAgent = true;\n } else {\n // false for not mobile device\n this.isMobileAgent = false;\n }\n }\n}\n","export enum MoodState {\n HAPPY = 'happy',\n SAD = 'sad',\n ANGRY = 'angry',\n FEAR = 'fear',\n SURPRISED = 'surprised',\n DISGUSTED = 'disgusted',\n PROUD = 'proud',\n ASHAMED = 'ashamed',\n GUILTY = 'guilty',\n JEALOUS = 'jealous',\n LOVE = 'love',\n CONTEMPT = 'contempt',\n COMIC = 'comic',\n BLUSHING = 'blushing',\n CONFUSED = 'confused',\n CURIOUS = 'curious',\n BORED = 'bored',\n FRUSTRATED = 'frustrated',\n OVERWHELMED = 'overwhelmed',\n FOCUSED = 'focused',\n CHALLENGE = 'challenge',\n SERIOUS = 'serious',\n SLEEPY = 'sleepy',\n HORNY = 'horny',\n ANXIOUS = 'anxious',\n RELAXED = 'relaxed',\n}\n\nexport const MoodStateOptions = [\n // Emociones básicas y fundamentales\n { value: MoodState.HAPPY, label: '1) Alegría - Felicidad, gozo, satisfacción', emoji: '😊' },\n { value: MoodState.SAD, label: '2) Tristeza - Pena, melancolía, desánimo', emoji: '😢' },\n { value: MoodState.ANGRY, label: '3) Enojo - Ira, furia, irritación', emoji: '😠' },\n { value: MoodState.FEAR, label: '4) Miedo - Temor, pánico, terror', emoji: '😨' },\n { value: MoodState.SURPRISED, label: '5) Sorpresa - Asombro, desconcierto', emoji: '😮' },\n { value: MoodState.DISGUSTED, label: '6) Asco - Repugnancia, aversión', emoji: '🤢' },\n // { value: 'excited', label: '27) Entusiasmo - Emoción, euforia, anticipación' },\n\n // Emociones sociales y autoconscientes\n { value: MoodState.PROUD, label: '7) Orgullo - Satisfacción por logros propios o ajenos', emoji: '😎' },\n { value: MoodState.ASHAMED, label: '8) Vergüenza - Humillado', emoji: '😰' },\n { value: MoodState.GUILTY, label: '9) Culpa - Remordimiento, arrepentimiento', emoji: '😔' },\n { value: MoodState.JEALOUS, label: '10) Celos - Envidia, desconfianza', emoji: '😒' },\n { value: MoodState.LOVE, label: '11) Amor - Cariño, afecto, ternura', emoji: '❤️' },\n // { value: 'grateful', label: '12) Agradecimiento - Gratitud, aprecio' },\n { value: MoodState.CONTEMPT, label: '30) Desprecio - Desdén, menosprecio', emoji: '🙃' },\n { value: MoodState.COMIC, label: '32) Cómico - Divertido, gracioso', emoji: '😂' },\n { value: MoodState.BLUSHING, label: '33) Apenado - Sonrojado, avergonzado', emoji: '😳' },\n\n // Estados cognitivos y mentales\n // { value: 'neutral', label: '13) Neutral - Calma, imparcialidad' },\n { value: MoodState.CONFUSED, label: '14) Confusión - Desorientación, perplejidad', emoji: '😕' },\n { value: MoodState.CURIOUS, label: '15) Curiosidad - Interés, intriga, exploración', emoji: '🤔' },\n { value: MoodState.BORED, label: '16) Aburrimiento - Desinterés, tedio, apatía', emoji: '😑' },\n // { value: 'hopeful', label: '17) Esperanza - Optimismo, fe, expectativa positiva' },\n { value: MoodState.FRUSTRATED, label: '18) Frustración - Decepción, impotencia', emoji: '😤' },\n { value: MoodState.OVERWHELMED, label: '19) Abrumado - Agobio, exceso de carga', emoji: '😫' },\n // { value: 'lonely', label: '20) Soledad - Aislamiento, desamparo' },\n { value: MoodState.FOCUSED, label: '21) Concentración - Enfoque, atención plena', emoji: '🤓' },\n { value: MoodState.CHALLENGE, label: '28) Desafío - Reto, provocación, competitividad', emoji: '😏' },\n // { value: 'satisfied', label: '29) Satisfacción - Contentamiento, plenitud' },\n { value: MoodState.SERIOUS, label: '31) Serenidad - Actitud seria', emoji: '😐' },\n\n // Estados corporales y fisiológicos\n { value: MoodState.SLEEPY, label: '22) Cansancio - Somnolencia, agotamiento, fatiga', emoji: '😴' },\n // { value: 'energetic', label: '23) Energía - Vitalidad, vigor, dinamismo' },\n { value: MoodState.HORNY, label: '24) Excitación sexual - Lujuria, deseo sexual', emoji: '😈' },\n { value: MoodState.ANXIOUS, label: '25) Ansiedad - Nerviosismo, preocupación, inquietud', emoji: '😟' },\n { value: MoodState.RELAXED, label: '26) Relajación - Paz, serenidad, tranquilidad', emoji: '😌' },\n];\n","export const CharacterEventActions = [\n // Emociones básicas y fundamentales\n { value: 'intro', label: 'Al iniciar la conversación' },\n { value: 'outro', label: 'Al finalizar la conversación' },\n { value: 'goalCompleted', label: 'Al completar el objetivo' },\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';\nexport * from './lib/components/forms/dc-auditable-viewer.component';\nexport * from './lib/components/forms/dc-extensions-viewer.component';\nexport * from './lib/components/forms/dc-learnable-viewer.component';\nexport * from './lib/components/forms/dc-manageable-viewer.component';\nexport * from './lib/components/forms/dc-reactions-viewer.component';\nexport * from './lib/components/forms';\nexport * from './lib/components/base-list/entity-base-list.component';\nexport * from './lib/components/base-list/entity-base-list-v2.component';\nexport * from './lib/components/base-form/entity-base-form';\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';\nexport * from './lib/models/extension.model';\n// Pipes\nexport * from './lib/pipes/lang.pipe';\n// services\nexport * from './lib/services/confirm.service';\nexport * from './lib/services/prompt.service';\nexport * from './lib/services/http-core.service';\nexport * from './lib/services/entity-cominication.service';\nexport * from './lib/services/ui-state.service';\nexport * from './lib/services/form-utils.service';\nexport * from './lib/services/app-config.service';\nexport * from './lib/services/audio-notification.service';\nexport * from './lib/services/mobile.service';\n\n// Models\nexport * from './lib/models/languages.model';\nexport * from './lib/models/character-models';\nexport * from './lib/models/extension.model';\nexport * from './lib/models/character-actions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i2","i1","i5","i7","map"],"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/services/filter.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-dialog.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/list-filter-bar/dc-list-filter-dialog.component.html","../../../../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/components/forms/dc-auditable-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-extensions-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-learnable-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-manageable-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-reactions-viewer.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-manageable-form/dc-manageable-form.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-manageable-form/dc-manageable-form.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-tags-form/dc-tags-form.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-tags-form/dc-tags-form.component.html","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-learnable-form/dc-learnable-form.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/forms/dc-learnable-form/dc-learnable-form.component.html","../../../../projects/dataclouder/ngx-core/src/lib/models/pagination.abstract.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/base-list/entity-base-list.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/base-list/entity-base-list-v2.component.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/classes.ts","../../../../projects/dataclouder/ngx-core/src/lib/components/base-form/entity-base-form.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/models/extension.model.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/languages.model.ts","../../../../projects/dataclouder/ngx-core/src/lib/pipes/lang.pipe.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/lib/services/entity-cominication.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/ui-state.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/form-utils.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/app-config.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/audio-notification.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/services/mobile.service.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/character-models.ts","../../../../projects/dataclouder/ngx-core/src/lib/models/character-actions.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@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 public headingText = input('No existe el recurso que buscas');\n public subHeadingText = input('Intenta más tarde');\n public mainIconSrcString = input('img/empty-states/empty-box.png');\n}\n","<div class=\"empty-state-container\">\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 class=\"text-center\">{{ subHeadingText() }}</h6>\n }\n <ng-content></ng-content>\n</div>\n","export interface SortOption {\n label: string;\n value: string;\n mongoSort?: Record<string, 1 | -1>;\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: 'Actualizado Recientemente', value: 'lastUpdated' },\n { label: 'Alfabético A-Z', value: OptionValue.Alphabetical },\n { label: 'Alfabético Inverso 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; // Display name for the filter\n field: string; // The property name for the query (e.g., 'agentType')\n type: 'string' | 'number' | 'boolean' | 'date' | 'select' | 'multi-select';\n operator?: '$eq' | '$ne' | '$in' | '$nin' | '$regex' | '$gt' | '$lt' | '$gte' | '$lte' | '$exists' | '$not_null' | 'range'; // MongoDB operators\n options?: { label: string; value: any }[]; // For 'select' type\n defaultValue?: any; // An optional default value for the filter\n}\n\nexport interface FiltersConfig {\n page?: number;\n rowsPerPage?: number;\n sort?: { [key: string]: number };\n seed?: 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 { Injectable } from '@angular/core';\nimport { ICustomFilter } from '../models/filter.models';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FilterService {\n private readonly STORAGE_PREFIX = 'dc_filter_state_';\n\n /**\n * Saves the UI state of the filters to localStorage.\n * @param key Unique key for the component/list\n * @param state The UI state object (form values)\n */\n saveState(key: string, state: any): void {\n try {\n localStorage.setItem(`${this.STORAGE_PREFIX}${key}`, JSON.stringify(state));\n } catch (e) {\n console.error('Error saving filter state', e);\n }\n }\n\n /**\n * Loads the UI state of the filters from localStorage.\n * @param key Unique key for the component/list\n * @returns The UI state object or null if not found\n */\n loadState(key: string): any | null {\n try {\n const item = localStorage.getItem(`${this.STORAGE_PREFIX}${key}`);\n return item ? JSON.parse(item) : null;\n } catch (e) {\n console.error('Error loading filter state', e);\n return null;\n }\n }\n\n /**\n * Builds a MongoDB-compatible query object from the UI filter values and definitions.\n * @param uiFilters The raw values from the form\n * @param customFilters The definitions of the filters\n * @returns A MongoDB query object\n */\n buildQuery(uiFilters: Record<string, any>, customFilters: ICustomFilter[]): Record<string, any> {\n const query: Record<string, any> = {};\n\n for (const filterDef of customFilters) {\n const value = uiFilters[filterDef.field];\n\n // Skip empty values\n if (value === null || value === undefined || value === '' || (Array.isArray(value) && value.length === 0)) {\n continue;\n }\n\n // Use defined operator or infer from type\n const operator = filterDef.operator || this.inferOperator(filterDef.type);\n\n switch (operator) {\n case '$eq':\n query[filterDef.field] = value;\n break;\n case '$ne':\n query[filterDef.field] = { $ne: value };\n break;\n case '$regex':\n query[filterDef.field] = { $regex: value, $options: 'i' };\n break;\n case '$in':\n query[filterDef.field] = { $in: Array.isArray(value) ? value : [value] };\n break;\n case '$nin':\n query[filterDef.field] = { $nin: Array.isArray(value) ? value : [value] };\n break;\n case '$gt':\n query[filterDef.field] = { $gt: value };\n break;\n case '$gte':\n query[filterDef.field] = { $gte: value };\n break;\n case '$lt':\n query[filterDef.field] = { $lt: value };\n break;\n case '$lte':\n query[filterDef.field] = { $lte: value };\n break;\n case 'range':\n if (Array.isArray(value) && value.length === 2 && value[0] && value[1]) {\n query[filterDef.field] = { $gte: value[0], $lte: value[1] };\n }\n break;\n case '$exists':\n query[filterDef.field] = { $exists: value };\n break;\n case '$not_null':\n query[filterDef.field] = { $ne: null };\n break;\n default:\n // Default fallback\n query[filterDef.field] = value;\n }\n }\n\n return query;\n }\n\n private inferOperator(type: string): string {\n switch (type) {\n case 'string':\n return '$regex';\n case 'select':\n case 'boolean':\n case 'number':\n return '$eq';\n case 'multi-select':\n return '$in';\n case 'date':\n return 'range'; // Assuming date picker returns a range usually, or exact match if single\n default:\n return '$eq';\n }\n }\n}\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { FormBuilder, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { SelectModule } from 'primeng/select';\nimport { MultiSelectModule } from 'primeng/multiselect';\nimport { DatePickerModule } from 'primeng/datepicker';\nimport { availibleFilters, ICustomFilter, SortOption, sortOptions } from '../../models/filter.models';\nimport { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog';\nimport { FilterService } from '../../services/filter.service';\n\n@Component({\n selector: 'dc-list-filter-dialog',\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, ButtonModule, DialogModule, SelectModule, MultiSelectModule, DatePickerModule],\n templateUrl: './dc-list-filter-dialog.component.html',\n styleUrl: './dc-list-filter-dialog.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class DcListFilterDialogComponent {\n private readonly fb = inject(FormBuilder);\n private readonly filterService = inject(FilterService);\n public readonly ref = inject(DynamicDialogRef);\n public readonly config = inject(DynamicDialogConfig);\n\n public customFilters: ICustomFilter[] = this.config.data.customFilters || [];\n public customSortOptions: SortOption[] = this.config.data.customSortOptions || [];\n public initialUiState: any = this.config.data.uiState || {};\n public customFiltersForm: FormGroup;\n\n public availibleFilters = availibleFilters;\n public sortOptions = [...sortOptions, ...this.customSortOptions];\n\n selectedFilters: (typeof availibleFilters)[] = [];\n selectedSort: SortOption | null = null;\n dateRange: Date[] = [];\n\n constructor() {\n this.buildCustomFiltersForm();\n this.restoreState();\n }\n\n private buildCustomFiltersForm(): void {\n const formControls = {};\n for (const filter of this.customFilters) {\n formControls[filter.field] = [filter.defaultValue || null];\n }\n this.customFiltersForm = this.fb.group(formControls);\n }\n\n private restoreState(): void {\n if (this.initialUiState) {\n if (this.initialUiState.customFilters) {\n this.customFiltersForm.patchValue(this.initialUiState.customFilters);\n }\n if (this.initialUiState.sort) {\n this.selectedSort = this.initialUiState.sort;\n }\n if (this.initialUiState.dateRange) {\n // Ensure dates are Date objects\n this.dateRange = this.initialUiState.dateRange.map((d: string) => new Date(d));\n }\n if (this.initialUiState.quickFilters) {\n this.selectedFilters = this.initialUiState.quickFilters;\n }\n }\n }\n\n clearFilters() {\n this.ref.close({ action: 'clear' });\n }\n\n applyFilters() {\n const customFilterValues = this.customFiltersForm.value;\n\n // Build MongoDB Query\n const mongoQuery = this.filterService.buildQuery(customFilterValues, this.customFilters);\n\n // Add Date Range to Query\n if (this.dateRange && this.dateRange.length === 2 && this.dateRange[0] && this.dateRange[1]) {\n mongoQuery['createdAt'] = { $gte: this.dateRange[0], $lte: this.dateRange[1] };\n }\n\n // Capture UI State for persistence\n const uiState = {\n customFilters: customFilterValues,\n sort: this.selectedSort,\n dateRange: this.dateRange,\n quickFilters: this.selectedFilters,\n };\n\n this.ref.close({\n action: 'apply',\n filters: mongoQuery, // The actual query for the backend\n uiState: uiState, // The state to save for the UI\n sort: this.selectedSort,\n dateRange: this.dateRange,\n quickFilters: this.selectedFilters,\n });\n }\n}\n","<div class=\"filter-dialog-content flex flex-col justify-between h-full\">\n <!-- Filters Content -->\n <div>\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 [options]=\"availibleFilters\" [(ngModel)]=\"selectedFilters\" optionLabel=\"name\" placeholder=\"Filtros Rápidos\" [maxSelectedLabels]=\"3\" /> -->\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-datepicker\n [(ngModel)]=\"dateRange\"\n selectionMode=\"range\"\n [showButtonBar]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar fechas\"\n dateFormat=\"dd/mm/yy\">\n </p-datepicker>\n </div>\n\n @if (customFilters?.length > 0) {\n <form [formGroup]=\"customFiltersForm\">\n <h4>Filtros Personalizados</h4>\n @for (customFilter of customFilters; track customFilter.field) {\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">{{ customFilter.name }}</label>\n @switch (customFilter.type) { @case ('select') {\n <p-select\n [options]=\"customFilter.options\"\n [formControlName]=\"customFilter.field\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [showClear]=\"true\"\n [style]=\"{ width: '100%' }\"\n placeholder=\"Seleccionar {{ customFilter.name }}\" />\n } @case ('string') {\n <input type=\"text\" pInputText [formControlName]=\"customFilter.field\" class=\"w-full\" />\n } @case ('date') {\n <p-datepicker [formControlName]=\"customFilter.field\" [style]=\"{ width: '100%' }\" dateFormat=\"dd/mm/yy\"></p-datepicker>\n } }\n </div>\n }\n </form>\n }\n </div>\n\n <!-- Action Buttons -->\n <div>\n <div class=\"flex justify-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 </div>\n</div>\n","import { ChangeDetectionStrategy, Component, Input, output, input, inject, OnInit } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { ButtonModule } from 'primeng/button';\nimport { DialogModule } from 'primeng/dialog';\nimport { FiltersConfig, ICustomFilter, ListFilterBarOptions, SortOption } from '../../models/filter.models';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent } from '../../models/pagination.abstract';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { InputGroupModule } from 'primeng/inputgroup';\nimport { InputGroupAddonModule } from 'primeng/inputgroupaddon';\nimport { DialogService } from 'primeng/dynamicdialog';\nimport { DcListFilterDialogComponent } from './dc-list-filter-dialog.component';\nimport { FilterService } from '../../services/filter.service';\n\nconst DEFAULT_FILTERS: FiltersConfig = { filters: {}, page: 0, rowsPerPage: 10, sort: { _id: -1 } };\n\n@Component({\n selector: 'dc-filter-bar',\n standalone: true,\n imports: [FormsModule, ButtonModule, DialogModule, InputTextModule, InputGroupModule, InputGroupAddonModule],\n templateUrl: './dc-list-filter-bar.component.html',\n styleUrl: './dc-list-filter-bar.component.css',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DialogService],\n})\nexport class DCFilterBarComponent implements OnInit {\n private readonly dialogService = inject(DialogService);\n private readonly filterService = inject(FilterService);\n\n // Signal Inputs\n public readonly items = input<MenuItem[]>([]);\n public readonly options = input<ListFilterBarOptions>({ showCreateButton: true });\n\n // Inputs\n @Input() public customFilters: ICustomFilter[] = [];\n @Input() public customSortOptions: SortOption[] = [];\n @Input() public isAdmin: boolean = false;\n @Input() public persistenceKey: string = ''; // Key for saving/loading filters\n\n // Outputs\n public readonly onFilterAction = output<any>();\n public readonly onNew = output<any>();\n\n // Internal State\n public isSearchVisible = false;\n public placeholder = '';\n public filter: FiltersConfig = { ...DEFAULT_FILTERS };\n private uiState: any = null; // Store UI state separately\n\n ngOnInit(): void {\n //\n if (this.persistenceKey) {\n this.loadSavedFilters();\n }\n }\n\n private loadSavedFilters(): void {\n const savedState = this.filterService.loadState(this.persistenceKey);\n if (savedState) {\n this.uiState = savedState;\n // Re-construct the query from the saved UI state\n if (savedState.customFilters) {\n const mongoQuery = this.filterService.buildQuery(savedState.customFilters, this.customFilters);\n this.filter = { ...this.filter, filters: mongoQuery };\n // Emit initial filter change so the list loads with these filters\n // We use setTimeout to ensure the parent component is ready\n setTimeout(() => {\n this.doItemAction({ action: 'filterChange', item: this.filter });\n });\n }\n }\n }\n\n public createNew() {\n this.onNew.emit('new');\n }\n\n public search(text: string | null): void {\n if (!text) {\n this.placeholder = '';\n this.doItemAction({ action: 'search', item: null });\n } else {\n this.doItemAction({ action: 'search', item: text });\n }\n this.isSearchVisible = false;\n }\n\n public openFilterDialog(): void {\n const ref = this.dialogService.open(DcListFilterDialogComponent, {\n header: 'Filtros',\n width: '70vw',\n height: '70vh',\n contentStyle: { 'max-height': '90vh', overflow: 'auto', 'min-height': '500px', height: '100%' },\n data: {\n customFilters: this.customFilters,\n customSortOptions: this.customSortOptions,\n uiState: this.uiState, // Pass current UI state to dialog\n },\n closable: true,\n modal: true,\n maximizable: true,\n });\n\n ref.onClose.subscribe((result) => {\n if (result) {\n if (result.action === 'clear') {\n this.clearFilters();\n } else if (result.action === 'apply') {\n this.applyFilters(result);\n }\n }\n });\n }\n\n private applyFilters(result: any): void {\n // result.filters is now the Mongo Query\n // We replace the filters entirely with the result from the dialog,\n // instead of merging, to ensure removed filters are cleared.\n const newFilters = { ...result.filters };\n\n let newSort = this.filter.sort;\n if (result.sort) {\n if (result.sort.mongoSort) {\n newSort = result.sort.mongoSort;\n } else {\n switch (result.sort.value) {\n case 'newest':\n newSort = { createdAt: -1 };\n break;\n case 'oldest':\n newSort = { createdAt: 1 };\n break;\n case 'alphabetical':\n newSort = { name: 1 };\n break;\n case 'reverseAlphabetical':\n newSort = { name: -1 };\n break;\n case 'lastUpdated':\n newSort = { updatedAt: -1 };\n break;\n }\n }\n }\n\n this.filter = { ...this.filter, filters: newFilters, sort: newSort };\n\n // Update UI state\n this.uiState = result.uiState;\n\n // Save to persistence\n if (this.persistenceKey && this.uiState) {\n this.filterService.saveState(this.persistenceKey, this.uiState);\n }\n\n // Handle other filter types from result if necessary (sort, dateRange, etc.)\n this.doItemAction({ action: 'filterChange', item: this.filter });\n }\n\n public clearFilters(): void {\n this.filter = { ...DEFAULT_FILTERS };\n this.uiState = null;\n if (this.persistenceKey) {\n this.filterService.saveState(this.persistenceKey, null);\n }\n this.doItemAction({ action: 'filterChange', item: this.filter });\n }\n\n public doItemAction(filterEvent: OnActionEvent): void {\n this.onFilterAction.emit(filterEvent);\n }\n}\n","<div class=\"background-bar\">\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-search\" label=\"buscar\" severity=\"secondary\" (click)=\"isSearchVisible = true\" />\n\n @if (isAdmin) {\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 (isAdmin) {\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 <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"openFilterDialog()\" />\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 <h4>Qué vamos a buscar? (Enter)</h4>\n <div>\n <p-inputgroup>\n <input (keydown.enter)=\"search(placeholder)\" type=\"text\" pInputText [(ngModel)]=\"placeholder\" />\n\n <p-button label=\"Buscar\" icon=\"pi pi-search\" (click)=\"search(placeholder)\" />\n </p-inputgroup>\n </div>\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, signal } 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 = signal<boolean>(false);\n\n /** Current progress value (0-100) for determinate mode */\n public progress = signal<number>(0);\n\n /** The current display mode of the loading bar */\n public mode = signal<'indeterminate' | 'determinate'>(null);\n\n /** The color of the loading bar (can be a theme color name or hex value) */\n public color = signal<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.set(true);\n this.mode.set('determinate');\n this.progress.set(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.set(true);\n this.mode.set('indeterminate');\n this.progress.set(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.set(true);\n this.mode.set('determinate');\n this.progress.set(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.set(false);\n this.mode.set(null);\n this.progress.set(0);\n this.color.set('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.set(true);\n this.mode.set('indeterminate');\n this.progress.set(100);\n this.color.set('#4BBD97');\n setTimeout(() => {\n this.hideProgressBar();\n }, 1100);\n }\n\n public errorAndHide() {\n // Clear any existing progress interval\n if (this.progressInterval) {\n clearInterval(this.progressInterval);\n this.progressInterval = null;\n }\n\n this.isShowing.set(true);\n this.mode.set('indeterminate');\n this.progress.set(100);\n this.color.set('#FF0000');\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.set(true);\n this.mode.set('indeterminate');\n this.progress.set(100);\n this.color.set('#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';\nimport { get } from 'es-toolkit/compat';\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 //\n if (column.type === 'text') {\n return value.length > 80 ? value.substring(0, 80) + '...' : value;\n }\n return value;\n }\n}\n","import { CommonModule } from '@angular/common';\nimport { 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' | 'select' | 'boolean' | 'numeric';\n options?: { label: string; value: any }[];\n reverse?: boolean; // only for boolean\n}\n\n/*\nREAD the Quick Table MD to more info how to use\nInputs \n columns: PColumn[];\n tableData: any[];\n actions: MenuItem[];\nOutputs\n onAction: OnActionEvent;\n*/\n\n@Component({\n selector: 'app-quick-table',\n imports: [\n CommonModule,\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\n // Outputs\n readonly onAction = output<OnActionEvent>();\n\n // Signals States\n public _columns = signal<PColumn[]>([]);\n public _tableData = signal<any[]>([]);\n public _actions = signal<MenuItem[]>([]);\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 > 0) {\n this._actions.set(this.actions());\n } else {\n this._actions.set([{ title: 'select', label: 'Select', icon: 'pi pi-check', severity: 'primary' }]);\n }\n console.log('QuickTableComponent actions', 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 } else if (col.type === 'select') {\n let options = col.options;\n if (!options) {\n const uniqueOptions = Array.from(new Set(this.tableData().map((item) => item[col.field])));\n options = uniqueOptions.map((option) => ({ label: option, value: option }));\n }\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.EQUALS,\n options: options,\n };\n } else if (col.type === 'boolean') {\n filterObj[col.field] = {\n value: null,\n matchMode: FilterMatchMode.EQUALS,\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' | 'select', column: string, value: any) {\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 } else if (type === 'select') {\n if (!value) {\n this._tableData.set(this.tableData());\n return;\n }\n const filteredData = this.tableData().filter((item) => item[column] === value);\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 if(column.type === 'select') {\n <th>\n <p-select\n [options]=\"filters()?.[column.field]?.['options']\"\n placeholder=\"Selecciona\"\n (onChange)=\"filterOutsideTable('select', column.field, $event.value)\"\n [style]=\"{ minWidth: '14rem' }\"\n [showClear]=\"true\"></p-select>\n </th>\n } @else if(column.type === 'boolean') {\n <th>\n <p-columnFilter [type]=\"'boolean'\" [field]=\"column.field\"></p-columnFilter>\n </th>\n } @else if(column.type === 'numeric') {\n <th>\n <!-- <p-columnFilter [type]=\"'numeric'\" [field]=\"column.field\"></p-columnFilter> -->\n </th>\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 if(column.type === 'boolean') {\n <i\n class=\"pi\"\n [ngClass]=\"{\n 'text-green-500 pi-check-circle': column.reverse ? !(item | getPath: column) : (item | getPath: column),\n 'text-red-500 pi-times-circle': column.reverse ? (item | getPath: column) : !(item | getPath: column)\n }\"></i>\n } @else {\n <span>{{ item | getPath: column}} </span>\n }\n </td>\n }\n </tr>\n </ng-template>\n <!-- } -->\n</p-table>\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IAuditable } from '../../models/extension.model';\nimport { FieldsetModule } from 'primeng/fieldset';\nimport { TagModule } from 'primeng/tag';\nimport { ChipModule } from 'primeng/chip';\nimport { AvatarModule } from 'primeng/avatar';\n\n@Component({\n selector: 'dc-auditable-viewer',\n template: `\n @if (data(); as audit) {\n <p-fieldset legend=\"Audit Information\" [toggleable]=\"true\" [collapsed]=\"true\">\n <div class=\"grid text-sm\">\n <div class=\"col-12 md:col-6 flex flex-column gap-2\">\n <label class=\"font-semibold\">Author</label>\n <p-chip [label]=\"audit.authorEmail\" [image]=\"'https://i.pravatar.cc/40?u=' + audit.createdBy\" />\n </div>\n\n <div class=\"col-12 md:col-6 flex flex-column gap-2\">\n <label class=\"font-semibold\">Last update by</label>\n <p-chip [label]=\"audit.updatedBy\" [image]=\"'https://i.pravatar.cc/40?u=' + audit.updatedBy\" />\n </div>\n\n <div class=\"col-12 md:col-6 flex flex-column gap-2\">\n <label class=\"font-semibold\">Creation date</label>\n <span>{{ audit.createdAt | date : 'medium' }}</span>\n </div>\n\n <div class=\"col-12 md:col-6 flex flex-column gap-2\">\n <label class=\"font-semibold\">Last update date</label>\n <span>{{ audit.updatedAt | date : 'medium' }}</span>\n </div>\n\n @if(audit.generatedByIA) {\n <div class=\"col-12 mt-2\">\n <p-tag severity=\"info\">\n <div class=\"flex align-items-center gap-2\">\n <i class=\"pi pi-sparkles\"></i>\n <span>Generated by AI</span>\n </div>\n </p-tag>\n </div>\n @if(audit.prompt) {\n <div class=\"col-12 mt-2\">\n <div class=\"flex flex-column gap-2\">\n <label class=\"font-semibold\">Prompt</label>\n <p class=\"m-0 surface-100 p-2 border-round\" style=\"white-space: pre-wrap;\">\n {{ audit.prompt }}\n </p>\n </div>\n </div>\n } }\n </div>\n </p-fieldset>\n }\n `,\n standalone: true,\n imports: [CommonModule, FieldsetModule, TagModule, ChipModule, AvatarModule],\n})\nexport class DcAuditableViewerComponent {\n data = input.required<IAuditable>();\n}\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IExtensionable } from '../../models/extension.model';\n\n@Component({\n selector: 'dc-extensions-viewer',\n template: `<pre>{{ data() | json }}</pre>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class DcExtensionsViewerComponent {\n data = input.required<IExtensionable>();\n}\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ILearnable } from '../../models/extension.model';\n\n@Component({\n selector: 'dc-learnable-viewer',\n template: `<pre>{{ data() | json }}</pre>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class DcLearnableViewerComponent {\n data = input.required<ILearnable>();\n}\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IManageable } from '../../models/extension.model';\n\n@Component({\n selector: 'dc-manageable-viewer',\n template: `<pre>{{ data() | json }}</pre>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class DcManageableViewerComponent {\n data = input.required<IManageable>();\n}\n","import { Component, input } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { IReactable } from '../../models/extension.model';\n\n@Component({\n selector: 'dc-reactions-viewer',\n template: `<pre>{{ data() | json }}</pre>`,\n standalone: true,\n imports: [CommonModule],\n})\nexport class DcReactionsViewerComponent {\n data = input.required<IReactable>();\n}\n","import { Component, input } from '@angular/core';\nimport { FormGroup, ReactiveFormsModule } from '@angular/forms';\nimport { CardModule } from 'primeng/card';\nimport { CheckboxModule } from 'primeng/checkbox';\nimport { SelectModule } from 'primeng/select';\nimport { TooltipModule } from 'primeng/tooltip';\n\n@Component({\n selector: 'dc-manageable-form',\n standalone: true,\n imports: [ReactiveFormsModule, CardModule, CheckboxModule, SelectModule, TooltipModule],\n templateUrl: './dc-manageable-form.component.html',\n})\nexport class DcManageableFormComponent {\n form = input.required<FormGroup>();\n\n statusOptions = [\n { label: '✍️ Borrador', value: 'draft' },\n { label: '📝 En Revisión', value: 'review' },\n { label: '👍 Publicado', value: 'published' },\n { label: '🗑️ Archivado', value: 'archived' },\n ];\n}\n","<div [formGroup]=\"form()\">\n <div style=\"display: flex; justify-content: space-between\">\n <div class=\"form-field checkbox\">\n <label>\n <p-checkbox [binary]=\"true\" formControlName=\"isPublic\" />\n Public <span pTooltip=\"Is this content visible to all users?\">ℹ️</span>\n </label>\n </div>\n\n <div class=\"form-field\">\n <label for=\"status\">Status <span pTooltip=\"Status of the content\">ℹ️</span></label>\n <p-select\n id=\"status\"\n [options]=\"statusOptions\"\n formControlName=\"status\"\n optionLabel=\"label\"\n optionValue=\"value\"\n [placeholder]=\"'Select Status'\"></p-select>\n </div>\n </div>\n</div>\n","import { Component, computed, inject, input, OnInit } from '@angular/core';\nimport { FormArray, FormControl, FormGroup, ReactiveFormsModule, ControlContainer, FormGroupDirective } from '@angular/forms';\nimport { CommonModule } from '@angular/common';\nimport { ButtonModule } from 'primeng/button';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { ChipModule } from 'primeng/chip';\n\n@Component({\n selector: 'dc-tags-form',\n standalone: true,\n imports: [CommonModule, ReactiveFormsModule, ButtonModule, InputTextModule, ChipModule],\n templateUrl: './dc-tags-form.component.html',\n styleUrl: './dc-tags-form.component.scss',\n viewProviders: [\n {\n provide: ControlContainer,\n useFactory: () => inject(ControlContainer, { skipSelf: true }),\n },\n ],\n})\nexport class DcTagsFormComponent {\n form = input.required<FormGroup>();\n public newTagControl = new FormControl('');\n\n public get arrayForm() {\n return this.form().get('tags') as FormArray;\n }\n\n addTag(): void {\n const newTag = this.newTagControl.value?.trim();\n if (newTag) {\n this.arrayForm.push(new FormControl(newTag));\n this.newTagControl.reset();\n }\n }\n\n removeTag(index: number): void {\n this.arrayForm.removeAt(index);\n }\n}\n","<div [formGroup]=\"form()\">\n <div formArrayName=\"tags\">\n <div class=\"flex flex-wrap gap-2\">\n @for (tagControl of arrayForm.controls; track tagControl; let i = $index) {\n <p-chip [label]=\"tagControl.value\" [removable]=\"true\" (onRemove)=\"removeTag(i)\"></p-chip>\n }\n </div>\n </div>\n</div>\n\n<div class=\"flex mt-2\">\n <input pInputText type=\"text\" [formControl]=\"newTagControl\" placeholder=\"New tag\" (keydown.enter)=\"addTag(); $event.preventDefault()\" />\n <p-button label=\"Add Tag\" icon=\"pi pi-plus\" (click)=\"addTag()\" [disabled]=\"!newTagControl.value\"></p-button>\n</div>\n","import { Component, input } from '@angular/core';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { CardModule } from 'primeng/card';\nimport { InputNumberModule } from 'primeng/inputnumber';\nimport { TooltipModule } from 'primeng/tooltip';\nimport { DcTagsFormComponent } from '../dc-tags-form/dc-tags-form.component';\nimport { LearnableForm } from '../../../services/form-utils.service';\n\n@Component({\n selector: 'dc-learnable-form',\n standalone: true,\n imports: [ReactiveFormsModule, CardModule, InputNumberModule, TooltipModule, DcTagsFormComponent],\n templateUrl: './dc-learnable-form.component.html',\n styleUrls: ['./dc-learnable-form.component.scss'],\n})\nexport class DcLearnableFormComponent {\n form = input.required<LearnableForm>();\n}\n","<div [formGroup]=\"form()\">\n <div class=\"form-grid\">\n <div class=\"row\">\n <div class=\"form-field\">\n <label for=\"level\">Level <span pTooltip=\"Difficulty level\">ℹ️</span></label>\n <p-inputNumber id=\"level\" formControlName=\"level\" [min]=\"0\" [max]=\"10\"></p-inputNumber>\n </div>\n <div class=\"form-field\">\n <label for=\"takenCount\">Taken Count <span pTooltip=\"How many times this has been taken\">ℹ️</span></label>\n <p-inputNumber id=\"takenCount\" formControlName=\"takenCount\" [min]=\"0\"></p-inputNumber>\n </div>\n </div>\n <div class=\"form-field\">\n <label for=\"tags\">Tags <span pTooltip=\"Relevant tags for this content\">ℹ️</span></label>\n <dc-tags-form [form]=\"form()\" />\n </div>\n </div>\n</div>\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, signal, WritableSignal } 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 first: WritableSignal<number> = signal(0);\n /** Number of rows to display per page */\n public rows: WritableSignal<number> = signal(10);\n /** Total number of records available */\n public totalRecords: WritableSignal<number> = signal(0);\n /** Current view mode, either cards or table */\n public viewMode: WritableSignal<'cards' | 'table'> = signal('table');\n /** Loading state indicator */\n public isLoading: WritableSignal<boolean> = signal(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: WritableSignal<FiltersConfig> = signal({ \n page: 0, \n rowsPerPage: 10, \n sort: { _id: -1 }, \n filters: {} \n });\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 const pageNum = +page - 1;\n this.filterConfig.update(config => ({\n ...config,\n page: pageNum\n }));\n this.first.set(pageNum * this.rows());\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.rows.set(pageEvent.rows);\n this.filterConfig.update(config => ({\n ...config,\n page: pageEvent.page,\n rowsPerPage: pageEvent.rows,\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","import { Directive, OnInit, WritableSignal, effect, inject, input, output, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent, PaginationBase } from '../../models/pagination.abstract';\nimport { IFilterQueryResponse, ListFilterBarOptions } from '../../models/filter.models';\nimport { EntityCommunicationService } from '../../services/entity-cominication.service';\n\n@Directive()\nexport abstract class EntityBaseListComponent<T> extends PaginationBase implements OnInit {\n // Services\n protected override router = inject(Router);\n protected override route = inject(ActivatedRoute);\n\n // Abstract properties to be implemented by child classes\n protected abstract entityCommunicationService: EntityCommunicationService<T>;\n public abstract getCustomButtons(item: T): MenuItem[];\n\n // Inputs & Outputs\n readonly initialViewType = input<'table' | 'card'>('card');\n readonly onlyView = input<boolean>(false);\n // Outputs\n readonly onSelect = output<T>();\n\n // Writable Signals for component state\n public items: WritableSignal<T[]> = signal([]);\n public viewType: WritableSignal<'table' | 'card'>;\n public totalRecordsSignal: WritableSignal<number> = signal(0);\n\n // Public properties for configuration\n public filterBarOptions: ListFilterBarOptions = { showActions: true, showCreateButton: true, showViewButton: true };\n public columns: any[] = [];\n\n constructor() {\n super();\n this.viewType = signal(this.initialViewType());\n effect(() => {\n // Keep the parent's totalRecords in sync with our signal\n this.totalRecords.set(this.totalRecordsSignal());\n });\n }\n\n async ngOnInit(): Promise<void> {\n await this.loadData();\n }\n\n protected override async loadData(): Promise<void> {\n try {\n this.isLoading.set(true);\n const response: IFilterQueryResponse<T> = await this.entityCommunicationService.query(this.filterConfig());\n this.items.set(response.rows);\n\n this.totalRecordsSignal.set(response.count);\n } catch (error) {\n console.error('Error loading data', error);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n public onNew(): void {\n this.router.navigate(['./edit'], { relativeTo: this.route });\n }\n\n public toggleView(): void {\n this.viewType.update((v) => (v === 'card' ? 'table' : 'card'));\n }\n\n public override async doAction(actionEvent: OnActionEvent): Promise<void> {\n const { item, action } = actionEvent;\n\n if (!item) {\n return;\n }\n const id = item?._id || item?.id;\n\n switch (action) {\n case 'view':\n this.router.navigate(['./details', id], { relativeTo: this.route });\n break;\n case 'edit':\n this.router.navigate(['./edit', id], { relativeTo: this.route });\n break;\n case 'delete':\n const confirmed = confirm(`Are you sure you want to delete this item?`);\n if (confirmed) {\n try {\n await this.entityCommunicationService.remove(id);\n } catch (error) {\n console.error('Error deleting item', error);\n } finally {\n await this.loadData(); // Refresh list\n }\n }\n break;\n case 'clone':\n await this.entityCommunicationService.clone(id);\n await this.loadData(); // Refresh list\n break;\n case 'search':\n this.filterConfig.update(config => ({\n ...config,\n text: item\n }));\n this.loadData();\n break;\n default:\n // this.handleCustomAction(actionEvent);\n }\n }\n}\n","import { Directive, OnInit, WritableSignal, effect, inject, input, output, signal } from '@angular/core';\nimport { ActivatedRoute, Router } from '@angular/router';\nimport { MenuItem } from 'primeng/api';\nimport { OnActionEvent, PaginationBase } from '../../models/pagination.abstract';\nimport { EntityCommunicationService } from '../../services/entity-cominication.service';\nimport { ListFilterBarOptions } from '../../models/filter.models';\n\nexport interface MongoState {\n query: any;\n projection: any;\n options: {\n sort?: any;\n limit?: number;\n skip?: number;\n [key: string]: any;\n };\n payload: any;\n}\n\n@Directive()\nexport abstract class EntityBaseListV2Component<T> extends PaginationBase implements OnInit {\n // Services\n protected override router = inject(Router);\n protected override route = inject(ActivatedRoute);\n\n // Abstract properties to be implemented by child classes\n protected abstract entityCommunicationService: EntityCommunicationService<T>;\n public abstract getCustomButtons(item: T): MenuItem[];\n\n // Inputs & Outputs\n readonly initialViewType = input<'table' | 'card'>('card');\n readonly onlyView = input<boolean>(false);\n // Outputs\n readonly onSelect = output<T>();\n\n // Writable Signals for component state\n public items: WritableSignal<T[]> = signal([]);\n public viewType: WritableSignal<'table' | 'card'>;\n public totalRecordsSignal: WritableSignal<number> = signal(0);\n\n // Public properties for configuration\n public filterBarOptions: ListFilterBarOptions = { showActions: true, showCreateButton: true, showViewButton: true };\n public columns: any[] = [];\n public fixedQuery: Record<string, any> = {};\n\n // New State Management\n public mongoState: MongoState = {\n query: {},\n projection: {},\n options: {\n sort: { _id: -1 },\n limit: 10,\n skip: 0,\n },\n payload: {},\n };\n\n constructor() {\n super();\n this.viewType = signal(this.initialViewType());\n effect(() => {\n // Keep the parent's totalRecords in sync with our signal\n this.totalRecords.set(this.totalRecordsSignal());\n });\n }\n\n async ngOnInit(): Promise<void> {\n // Initialize mongoState from PaginationBase defaults if needed\n this.mongoState.options.limit = this.rows();\n this.mongoState.options.skip = this.first();\n\n await this.loadData();\n }\n\n protected override async loadData(): Promise<void> {\n try {\n this.isLoading.set(true);\n\n this.mongoState.options.limit = this.rows();\n this.mongoState.options.skip = this.first();\n\n const effectiveQuery = { ...this.mongoState.query, ...this.fixedQuery };\n\n const response = await this.entityCommunicationService.operation({\n action: 'find',\n query: effectiveQuery,\n projection: this.mongoState.projection,\n options: this.mongoState.options,\n payload: this.mongoState.payload,\n });\n\n this.items.set(response);\n\n // We need total records for pagination.\n // Use aggregate to count since 'count' action might not be explicitly supported or to be safe\n const countResult = await this.entityCommunicationService.operation({\n action: 'aggregate',\n payload: [{ $match: effectiveQuery }, { $count: 'total' }],\n });\n\n const count = countResult && countResult.length > 0 ? countResult[0].total : 0;\n this.totalRecordsSignal.set(count);\n } catch (error) {\n console.error('Error loading data', error);\n } finally {\n this.isLoading.set(false);\n }\n }\n\n // Override onPageChange to update mongoState\n public override async onPageChange(pageEvent: any) {\n this.rows.set(pageEvent.rows);\n this.first.set(pageEvent.page * this.rows());\n\n this.mongoState.options.limit = this.rows();\n this.mongoState.options.skip = this.first();\n\n await this.loadData();\n // We can still update URL param if we want, calling super or copying logic\n // super.updatePageParam(pageEvent.page + 1); // private in super\n // We'll leave URL update for now or implement if needed.\n }\n\n public onNew(): void {\n this.router.navigate(['./edit'], { relativeTo: this.route });\n }\n\n public toggleView(): void {\n this.viewType.update((v) => (v === 'card' ? 'table' : 'card'));\n }\n\n public override async doAction(actionEvent: OnActionEvent): Promise<void> {\n const { item, action } = actionEvent;\n\n const id = item?._id || item?.id;\n\n switch (action) {\n case 'view':\n if (id) this.router.navigate(['./details', id], { relativeTo: this.route });\n break;\n case 'edit':\n if (id) this.router.navigate(['./edit', id], { relativeTo: this.route });\n break;\n case 'delete':\n if (!id) return;\n const confirmed = confirm(`Are you sure you want to delete this item?`);\n if (confirmed) {\n try {\n await this.entityCommunicationService.operation({\n action: 'deleteOne',\n query: { _id: id },\n });\n } catch (error) {\n console.error('Error deleting item', error);\n } finally {\n await this.loadData(); // Refresh list\n }\n }\n break;\n case 'clone':\n if (!id) return;\n // Clone usually requires specific logic, maybe 'create' with modified data\n // Or if backend supports 'clone' action via operation?\n // The user listed: 'findOne', 'find', 'create', 'updateOne', 'updateMany', 'deleteOne', 'deleteMany', 'aggregate'.\n // No 'clone'. So we might need to fetch, remove _id, and create.\n const original = await this.entityCommunicationService.operation({ action: 'findOne', query: { _id: id } });\n if (original) {\n const { _id, ...rest } = original;\n // Maybe add 'Copy' to name?\n await this.entityCommunicationService.operation({ action: 'create', payload: { ...rest, name: rest.name + ' (Copy)' } }); // Assumption on 'name'\n await this.loadData();\n }\n break;\n case 'search':\n if (item) {\n this.mongoState.query = { ...this.mongoState.query, $text: { $search: item } };\n } else {\n const { $text, ...rest } = this.mongoState.query;\n this.mongoState.query = rest;\n }\n this.first.set(0);\n this.mongoState.options.skip = 0;\n await this.loadData();\n break;\n case 'changeView':\n this.toggleView();\n break;\n case 'filterChange':\n this.updateQueryFromFilter(item);\n break;\n default:\n // this.handleCustomAction(actionEvent);\n }\n }\n\n // Helper to update query from filter bar\n public updateQueryFromFilter(filterConfig: any) {\n // Map filterConfig.filters to mongoState.query\n // The filter bar returns { filters: { ... }, sort: ... }\n\n if (filterConfig.filters) {\n // Preserve $text search if it exists, as it is managed separately via 'search' action\n const textQuery = this.mongoState.query.$text ? { $text: this.mongoState.query.$text } : {};\n this.mongoState.query = { ...textQuery, ...filterConfig.filters };\n }\n if (filterConfig.sort) {\n this.mongoState.options.sort = filterConfig.sort;\n }\n if (filterConfig.text) {\n // Handle text search if needed, or let child handle it\n }\n\n // Reset pagination on filter change\n this.first.set(0);\n this.mongoState.options.skip = 0;\n\n this.loadData();\n }\n}\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-vertex\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 saveConversations: boolean;\n multilingualHearing: boolean;\n}\n\nexport interface AppException {\n error_message?: string;\n explanation?: string;\n path?: string;\n statusCode?: number;\n method?: string;\n obj?: any;\n exception?: any;\n suggestion?: string;\n type?: string;\n}\n","import { computed, Directive, effect, EventEmitter, inject, input, output, signal } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { FormArray, FormGroup } from '@angular/forms';\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\nimport { map } from 'rxjs/operators';\nimport { EntityCommunicationService } from '../../services/entity-cominication.service';\nimport { TOAST_ALERTS_TOKEN } from '../../models/classes';\n\n// Como funciona esta clase y beneficos de extender\n// el objeto principal ahora se llama entity\n// sabe buscar el objeto directamente desde el id en un efecto en esta clase.\n// Es tu deber implementar el patch, como se crear el form cuando se tiene el objeto.\n\n@Directive()\nexport abstract class EntityBaseFormComponent<T extends { _id?: string }> {\n protected route = inject(ActivatedRoute);\n protected router = inject(Router);\n\n public toastService = inject(TOAST_ALERTS_TOKEN, { optional: true });\n\n public id = input<string | undefined>();\n public entityInput = input<T | undefined>(undefined, { alias: 'entity' });\n public entity = signal<T | undefined>(undefined);\n private entityIdFromUrl = toSignal(this.route.paramMap.pipe(map((params: ParamMap) => params.get('id'))));\n public entityId = computed(() => this.id() ?? this.entityIdFromUrl());\n public useFakeSave = input(false); // dont actually save if the father component that is in charge of save.\n public fakeSaved = output<T>();\n\n public abstract form: FormGroup;\n protected abstract entityCommunicationService: EntityCommunicationService<T>;\n protected abstract patchForm(entity: T): void;\n\n public async save(): Promise<T | undefined> {\n if (this.form.invalid) {\n this.toastService?.error({ title: 'Error', subtitle: 'Form is invalid' });\n return undefined;\n }\n\n const entityData = { ...this.form.value, _id: this.entityId() };\n\n if (this.useFakeSave()) {\n this.toastService?.success({ title: 'info', subtitle: 'Se emitio el evento guardado' });\n\n this.fakeSaved.emit(entityData);\n return entityData;\n }\n\n const result = await this.entityCommunicationService.createOrUpdate(entityData);\n\n this.toastService?.success({ title: 'Success', subtitle: 'Entity saved successfully' });\n\n this.entity.set(result);\n this.patchForm(result);\n return result;\n }\n public reload(): void {\n const id = this.entityId();\n if (id) {\n this.loadEntityById(id);\n }\n }\n\n public getDirtyValues(form: FormGroup | FormArray): { [key: string]: unknown } {\n const dirtyValues = {};\n Object.keys(form.controls).forEach((key) => {\n const currentControl = form.get(key);\n\n if (!currentControl?.dirty) {\n return;\n }\n\n if (currentControl instanceof FormGroup) {\n const nestedDirtyValues = this.getDirtyValues(currentControl);\n if (Object.keys(nestedDirtyValues).length > 0) {\n dirtyValues[key] = nestedDirtyValues;\n }\n } else if (currentControl instanceof FormArray) {\n dirtyValues[key] = currentControl.getRawValue();\n } else {\n dirtyValues[key] = currentControl.value;\n }\n });\n return dirtyValues;\n }\n\n public saveDirtyValues() {\n const dirtyValues = this.getDirtyValues(this.form);\n return this.entityCommunicationService.partialUpdate(this.entityId()!, dirtyValues as Partial<T>);\n }\n\n private loadEntityEffect = effect(\n () => {\n const entityFromInput = this.entityInput();\n if (entityFromInput) {\n this.entity.set(entityFromInput);\n this.patchForm(entityFromInput);\n return;\n }\n\n const id = this.entityId();\n if (id) {\n this.loadEntityById(id);\n } else if (!this.useFakeSave()) {\n this.createNewEntity();\n }\n },\n { allowSignalWrites: true },\n );\n\n private async loadEntityById(id: string): Promise<void> {\n try {\n const entity = await this.entityCommunicationService.findOne(id);\n if (entity) {\n this.entity.set(entity);\n this.patchForm(entity);\n }\n } catch (err) {\n this.toastService?.error({ title: 'Error', subtitle: 'Error loading entity' });\n console.error('Error loading entity', err);\n }\n }\n\n protected defaultNewObject: Partial<T> = {} as Partial<T>;\n\n private async createNewEntity(): Promise<void> {\n // object is always empty, if you want a default data, set defaultNewObject\n try {\n const newEntity = await this.entityCommunicationService.createOrUpdate(this.defaultNewObject);\n const id = newEntity?._id || newEntity?.['id'];\n if (id) {\n // we replace the url to avoid creating a new entity when the user goes back\n this.router.navigate([id], { relativeTo: this.route, replaceUrl: true });\n }\n } catch (err) {\n this.toastService?.error({ title: 'Error', subtitle: 'Error creating new entity' });\n console.error('Error creating new entity', err);\n }\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","// Entity extension that add extra features to the entity\n// * Auditable: Ability to track who created and updated the entity\n// * Learnable: Ability to track who created and updated the entity\n// * IManageable: Ability to say is the entity is public or private, or published or draft\n// * IReactable: Ability to give likes, dislikes, etc. hearts etc.\n// * Extensionable: Ability to add extra features to the entity\n// * ❗️ PENDING IMediable: this add media songs and videos and more only thinking for lessons or content interactions.\n\nexport type IExtensionable = Record<string, any>;\n\nexport interface IAuditable {\n createdBy: string; // User id\n updatedBy: string; // User id\n\n authorEmail: string;\n\n generatedByIA: boolean; // Then author id is the ia model id\n prompt?: string;\n\n createdAt?: Date;\n updatedAt?: Date;\n}\n\nexport interface ILearnable {\n level: number; // Difficulty level (e.g., 1-10)\n takenCount: number; // How many times has this been started?\n\n // --- Suggested New Fields ---\n tags: string[]; // For categorization (e.g., \"grammar\", \"beginner\", \"phrasal-verb\")\n avgRating?: number; // Average user rating (e.g., 1-5 stars)\n ratingsCount?: number; // Total number of ratings received\n estimatedDuration?: number; // Estimated time to complete in seconds\n successRate?: number; // Percentage of completions vs. attempts\n}\n\nexport interface IManageable {\n isPublic: boolean; // Is this content visible to all users?\n status?: 'draft' | 'review' | 'published' | 'archived'; // Status of the content\n}\n\nexport interface IReactable {\n reactionsCount?: {\n [reactionType: string]: number; // e.g., { likes: 10, dislikes: 2 }\n };\n}\n","export interface ILangTranslation {\n en: string;\n es: string;\n}\n\nexport const SUPPORTED_LANGUAGES = [\n 'en',\n 'es',\n 'de',\n 'fr',\n 'zh',\n 'it',\n 'pt',\n 'ja',\n 'nl',\n 'ru',\n 'ko',\n 'pl',\n 'sv',\n 'tr',\n 'ar',\n 'vi',\n 'id',\n 'da',\n 'no',\n 'fi',\n 'cs',\n 'el',\n 'hu',\n 'ro',\n 'uk',\n 'he',\n 'th',\n 'hi',\n 'ca',\n 'bg',\n];\n\nexport interface ILanguageData {\n nativeName: string;\n flag: string;\n code: string;\n defaultLocale: string;\n i: number;\n llmKnowledge: number;\n countries: string[];\n translations: ILangTranslation;\n flagImg?: string;\n status: 'ready' | 'commingsoon' | 'almostready';\n speakers: number;\n releaseDate?: string;\n}\n\nexport const LANGUAGES: Record<string, ILanguageData> = {\n en: {\n nativeName: 'English',\n flag: '🇺🇸', // Using US flag as a primary example\n flagImg: 'flags/us.svg',\n code: 'en',\n defaultLocale: 'en-US',\n i: 1,\n llmKnowledge: 100,\n countries: ['United Kingdom', 'United States', 'Canada', 'Australia', 'New Zealand', 'Ireland', 'South Africa', 'India', 'and many others.'],\n translations: {\n en: 'English',\n es: 'Inglés',\n },\n status: 'ready',\n speakers: 1500000000,\n },\n es: {\n nativeName: 'Español',\n flag: '🇪🇸', // Using Spain flag as a primary example\n flagImg: 'flags/es.svg',\n code: 'es',\n defaultLocale: 'es-ES',\n i: 2,\n llmKnowledge: 99,\n countries: [\n 'Spain',\n 'Mexico',\n 'Argentina',\n 'Colombia',\n 'Peru',\n 'Chile',\n 'Venezuela',\n 'Ecuador',\n 'Guatemala',\n 'Cuba',\n 'Bolivia',\n 'Dominican Republic',\n 'Honduras',\n 'El Salvador',\n 'Nicaragua',\n 'Paraguay',\n 'Costa Rica',\n 'Puerto Rico',\n 'Uruguay',\n 'Equatorial Guinea.',\n ],\n translations: {\n en: 'Spanish',\n es: 'Español',\n },\n status: 'ready',\n speakers: 592000000,\n },\n de: {\n nativeName: 'Deutsch',\n flag: '🇩🇪',\n flagImg: 'flags/de.svg',\n code: 'de',\n defaultLocale: 'de-DE',\n i: 3,\n llmKnowledge: 97,\n countries: ['Germany', 'Austria', 'Switzerland', 'Belgium', 'Luxembourg', 'Liechtenstein.'],\n translations: {\n en: 'German',\n es: 'Alemán',\n },\n status: 'almostready',\n speakers: 135000000,\n },\n fr: {\n nativeName: 'Français',\n flag: '🇫🇷',\n flagImg: 'flags/fr.svg',\n code: 'fr',\n defaultLocale: 'fr-FR',\n i: 4,\n llmKnowledge: 96,\n countries: ['France', 'Canada', 'Belgium', 'Switzerland', 'Haiti', 'Ivory Coast', 'Senegal', 'Cameroon', 'Madagascar', 'and many others.'],\n translations: {\n en: 'French',\n es: 'Francés',\n },\n status: 'almostready',\n speakers: 300000000,\n },\n\n it: {\n nativeName: 'Italiano',\n flag: '🇮🇹',\n flagImg: 'flags/it.svg',\n code: 'it',\n defaultLocale: 'it-IT',\n i: 6,\n llmKnowledge: 93,\n countries: ['Italy', 'Switzerland', 'San Marino', 'Vatican City.'],\n translations: {\n en: 'Italian',\n es: 'Italiano',\n },\n status: 'ready',\n speakers: 67000000,\n },\n pt: {\n nativeName: 'Português',\n flag: '🇧🇷',\n flagImg: 'flags/br.svg',\n code: 'pt',\n defaultLocale: 'pt-BR',\n i: 7,\n llmKnowledge: 92,\n countries: ['Portugal', 'Brazil', 'Angola', 'Mozambique', 'Cape Verde', 'Guinea-Bissau', 'Sao Tome and Principe', 'East Timor', 'Macau.'],\n translations: {\n en: 'Portuguese',\n es: 'Portugués',\n },\n status: 'ready',\n speakers: 258000000,\n },\n ja: {\n nativeName: '日本語 (Nihongo)',\n flag: '🇯🇵',\n flagImg: 'flags/jp.svg',\n code: 'ja',\n defaultLocale: 'ja-JP',\n i: 8,\n llmKnowledge: 91,\n countries: ['Japan.'],\n translations: {\n en: 'Japanese',\n es: 'Japonés',\n },\n status: 'almostready',\n speakers: 125000000,\n },\n nl: {\n nativeName: 'Nederlands',\n flag: '🇳🇱',\n flagImg: 'flags/nl.svg',\n code: 'nl',\n defaultLocale: 'nl-NL',\n i: 9,\n llmKnowledge: 90,\n countries: ['Netherlands', 'Belgium', 'Suriname', 'Aruba', 'Curaçao', 'Sint Maarten.'],\n translations: {\n en: 'Dutch',\n es: 'Neerlandés',\n },\n status: 'commingsoon',\n speakers: 25000000,\n releaseDate: '2025-11-03',\n },\n zh: {\n nativeName: '中文 (Zhōngwén)',\n flag: '🇨🇳',\n flagImg: 'flags/cn.svg',\n code: 'zh',\n defaultLocale: 'zh-CN',\n i: 5,\n llmKnowledge: 94,\n countries: ['China', 'Singapore', 'Taiwan.'],\n translations: {\n en: 'Chinese (Mandarin)',\n es: 'Chino (Mandarín)',\n },\n status: 'commingsoon',\n speakers: 1120000000,\n releaseDate: '2025-11-10',\n },\n ru: {\n nativeName: 'Русский (Russkiy)',\n flag: '🇷🇺',\n flagImg: 'flags/ru.svg',\n code: 'ru',\n defaultLocale: 'ru-RU',\n i: 10, // Adjusted index\n llmKnowledge: 89,\n countries: ['Russia', 'Belarus', 'Kazakhstan', 'Kyrgyzstan', 'Tajikistan (co-official)', 'Abkhazia', 'South Ossetia', 'Transnistria.'],\n translations: {\n en: 'Russian',\n es: 'Ruso',\n },\n status: 'commingsoon',\n speakers: 258000000,\n releaseDate: '2025-11-17',\n },\n ko: {\n nativeName: '한국어 (Hangugeo)',\n flag: '🇰🇷',\n flagImg: 'flags/kr.svg',\n code: 'ko',\n defaultLocale: 'ko-KR',\n i: 11,\n llmKnowledge: 87,\n countries: ['South Korea', 'North Korea.'],\n translations: {\n en: 'Korean',\n es: 'Coreano',\n },\n status: 'commingsoon',\n speakers: 82000000,\n releaseDate: '2025-11-24',\n },\n pl: {\n nativeName: 'Polski',\n flag: '🇵🇱',\n flagImg: 'flags/pl.svg',\n code: 'pl',\n defaultLocale: 'pl-PL',\n i: 12,\n llmKnowledge: 86,\n countries: ['Poland.'],\n translations: {\n en: 'Polish',\n es: 'Polaco',\n },\n status: 'commingsoon',\n speakers: 40000000,\n releaseDate: '2025-12-01',\n },\n sv: {\n nativeName: 'Svenska',\n flag: '🇸🇪',\n flagImg: 'flags/se.svg',\n code: 'sv',\n defaultLocale: 'sv-SE',\n i: 13,\n llmKnowledge: 85,\n countries: ['Sweden', 'Finland (co-official).'],\n translations: {\n en: 'Swedish',\n es: 'Sueco',\n },\n status: 'commingsoon',\n speakers: 10000000,\n releaseDate: '2025-12-08',\n },\n tr: {\n nativeName: 'Türkçe',\n flag: '🇹🇷',\n flagImg: 'flags/tr.svg',\n code: 'tr',\n defaultLocale: 'tr-TR',\n i: 14,\n llmKnowledge: 84,\n countries: ['Turkey', 'Cyprus (North).'],\n translations: {\n en: 'Turkish',\n es: 'Turco',\n },\n status: 'commingsoon',\n speakers: 88000000,\n releaseDate: '2025-12-15',\n },\n ar: {\n nativeName: 'العربية (Al-Arabiyyah)',\n flag: '🇸🇦',\n flagImg: 'flags/sa.svg',\n code: 'ar',\n defaultLocale: 'ar-SA',\n i: 15,\n llmKnowledge: 83,\n countries: [\n 'Saudi Arabia',\n 'Egypt',\n 'Algeria',\n 'Morocco',\n 'Iraq',\n 'Sudan',\n 'Yemen',\n 'Syria',\n 'Tunisia',\n 'Jordan',\n 'United Arab Emirates',\n 'Lebanon',\n 'Libya',\n 'Oman',\n 'Kuwait',\n 'Mauritania',\n 'Qatar',\n 'Bahrain',\n 'Comoros',\n 'Djibouti',\n 'Somalia',\n 'Eritrea',\n 'Chad',\n 'Western Sahara',\n 'Palestine.',\n ],\n translations: {\n en: 'Arabic',\n es: 'Árabe',\n },\n status: 'commingsoon',\n speakers: 422000000,\n releaseDate: '2025-12-22',\n },\n vi: {\n nativeName: 'Tiếng Việt',\n flag: '🇻🇳',\n flagImg: 'flags/vn.svg',\n code: 'vi',\n defaultLocale: 'vi-VN',\n i: 16,\n llmKnowledge: 82,\n countries: ['Vietnam.'],\n translations: {\n en: 'Vietnamese',\n es: 'Vietnamita',\n },\n status: 'commingsoon',\n speakers: 90000000,\n releaseDate: '2025-12-29',\n },\n id: {\n nativeName: 'Bahasa Indonesia',\n flag: '🇮🇩',\n flagImg: 'flags/id.svg',\n code: 'id',\n defaultLocale: 'id-ID',\n i: 17,\n llmKnowledge: 81,\n countries: ['Indonesia.'],\n translations: {\n en: 'Indonesian',\n es: 'Indonesio',\n },\n status: 'commingsoon',\n speakers: 199000000,\n releaseDate: '2026-01-05',\n },\n da: {\n nativeName: 'Dansk',\n flag: '🇩🇰',\n flagImg: 'flags/dk.svg',\n code: 'da',\n defaultLocale: 'da-DK',\n i: 18,\n llmKnowledge: 80,\n countries: ['Denmark', 'Faroe Islands (co-official)', 'Greenland (co-official).'],\n translations: {\n en: 'Danish',\n es: 'Danés',\n },\n status: 'commingsoon',\n speakers: 6000000,\n releaseDate: '2026-01-12',\n },\n no: {\n nativeName: 'Norsk',\n flag: '🇳🇴',\n flagImg: 'flags/no.svg',\n code: 'no',\n defaultLocale: 'no-NO',\n i: 19,\n llmKnowledge: 79,\n countries: ['Norway.'],\n translations: {\n en: 'Norwegian',\n es: 'Noruego',\n },\n status: 'commingsoon',\n speakers: 5300000,\n releaseDate: '2026-01-19',\n },\n fi: {\n nativeName: 'Suomi',\n flag: '🇫🇮',\n flagImg: 'flags/fi.svg',\n code: 'fi',\n defaultLocale: 'fi-FI',\n i: 20,\n llmKnowledge: 78,\n countries: ['Finland.'],\n translations: {\n en: 'Finnish',\n es: 'Finlandés',\n },\n status: 'commingsoon',\n speakers: 5400000,\n releaseDate: '2026-01-26',\n },\n cs: {\n nativeName: 'Čeština',\n flag: '🇨🇿',\n flagImg: 'flags/cz.svg',\n code: 'cs',\n defaultLocale: 'cs-CZ',\n i: 21,\n llmKnowledge: 77,\n countries: ['Czech Republic.'],\n translations: {\n en: 'Czech',\n es: 'Checo',\n },\n status: 'commingsoon',\n speakers: 10700000,\n releaseDate: '2026-02-02',\n },\n el: {\n nativeName: 'Ελληνικά (Elliniká)',\n flag: '🇬🇷',\n flagImg: 'flags/gr.svg',\n code: 'el',\n defaultLocale: 'el-GR',\n i: 22,\n llmKnowledge: 76,\n countries: ['Greece', 'Cyprus.'],\n translations: {\n en: 'Greek',\n es: 'Griego',\n },\n status: 'commingsoon',\n speakers: 13500000,\n releaseDate: '2026-02-09',\n },\n hu: {\n nativeName: 'Magyar',\n flag: '🇭🇺',\n flagImg: 'flags/hu.svg',\n code: 'hu',\n defaultLocale: 'hu-HU',\n i: 23,\n llmKnowledge: 75,\n countries: ['Hungary.'],\n translations: {\n en: 'Hungarian',\n es: 'Húngaro',\n },\n status: 'commingsoon',\n speakers: 13000000,\n releaseDate: '2026-02-16',\n },\n ro: {\n nativeName: 'Română',\n flag: '🇷🇴',\n flagImg: 'flags/ro.svg',\n code: 'ro',\n defaultLocale: 'ro-RO',\n i: 24,\n llmKnowledge: 74,\n countries: ['Romania', 'Moldova (as Moldovan).'],\n translations: {\n en: 'Romanian',\n es: 'Rumano',\n },\n status: 'commingsoon',\n speakers: 24000000,\n releaseDate: '2026-02-23',\n },\n uk: {\n nativeName: 'Українська (Ukrainska)',\n flag: '🇺🇦',\n flagImg: 'flags/ua.svg',\n code: 'uk',\n defaultLocale: 'uk-UA',\n i: 25,\n llmKnowledge: 73,\n countries: ['Ukraine.'],\n translations: {\n en: 'Ukrainian',\n es: 'Ucraniano',\n },\n status: 'commingsoon',\n speakers: 33000000,\n releaseDate: '2026-03-02',\n },\n he: {\n nativeName: 'עברית (Ivrit)',\n flag: '🇮🇱',\n flagImg: 'flags/il.svg',\n code: 'he',\n defaultLocale: 'he-IL',\n i: 26,\n llmKnowledge: 72,\n countries: ['Israel.'],\n translations: {\n en: 'Hebrew',\n es: 'Hebreo',\n },\n status: 'commingsoon',\n speakers: 9000000,\n releaseDate: '2026-03-09',\n },\n th: {\n nativeName: 'ภาษาไทย (Phasa Thai)',\n flag: '🇹🇭',\n flagImg: 'flags/th.svg',\n code: 'th',\n defaultLocale: 'th-TH',\n i: 27,\n llmKnowledge: 71,\n countries: ['Thailand.'],\n translations: {\n en: 'Thai',\n es: 'Tailandés',\n },\n status: 'commingsoon',\n speakers: 69000000,\n releaseDate: '2026-03-16',\n },\n hi: {\n nativeName: 'हिन्दी (Hindī)',\n flag: '🇮🇳',\n flagImg: 'flags/in.svg',\n code: 'hi',\n defaultLocale: 'hi-IN',\n i: 28,\n llmKnowledge: 70,\n countries: ['India (co-official)', 'Fiji (co-official).'],\n translations: {\n en: 'Hindi',\n es: 'Hindi',\n },\n status: 'commingsoon',\n speakers: 602000000,\n releaseDate: '2026-03-23',\n },\n ca: {\n nativeName: 'Català',\n flag: '🇪🇸',\n flagImg: 'flags/es.svg',\n code: 'ca',\n defaultLocale: 'ca-ES',\n i: 29,\n llmKnowledge: 69,\n countries: ['Spain (Catalonia, Valencia, Balearic Islands)', 'Andorra.'],\n translations: {\n en: 'Catalan',\n es: 'Catalán',\n },\n status: 'commingsoon',\n speakers: 10000000,\n releaseDate: '2026-03-30',\n },\n bg: {\n nativeName: 'Български (Balgarski)',\n flag: '🇧🇬',\n flagImg: 'flags/bg.svg',\n code: 'bg',\n defaultLocale: 'bg-BG',\n i: 30,\n llmKnowledge: 68,\n countries: ['Bulgaria.'],\n translations: {\n en: 'Bulgarian',\n es: 'Búlgaro',\n },\n status: 'commingsoon',\n speakers: 9000000,\n releaseDate: '2026-04-06',\n },\n eo: {\n nativeName: 'Esperanto',\n flag: '🇺🇳', // Usando la bandera de la ONU por su naturaleza internacional\n flagImg: 'flags/eo.svg',\n code: 'eo',\n defaultLocale: 'eo',\n i: 59,\n llmKnowledge: 90,\n countries: ['Worldwide (constructed language)'],\n translations: {\n en: 'Esperanto',\n es: 'Esperanto',\n },\n status: 'commingsoon',\n speakers: 2000000,\n releaseDate: '2026-04-13',\n },\n ia: {\n nativeName: 'Interlingua',\n flag: '🇺🇳', // Usando la bandera de la ONU por su naturaleza internacional\n flagImg: 'flags/ia.svg',\n code: 'ia',\n defaultLocale: 'ia',\n i: 60,\n llmKnowledge: 85,\n countries: ['Worldwide (constructed language)'],\n translations: {\n en: 'Interlingua',\n es: 'Interlingua',\n },\n status: 'commingsoon',\n speakers: 1500,\n releaseDate: '2026-04-20',\n },\n hr: {\n nativeName: 'Hrvatski',\n flag: '🇭🇷',\n flagImg: 'flags/hr.svg',\n code: 'hr',\n defaultLocale: 'hr-HR',\n i: 31,\n llmKnowledge: 67,\n countries: ['Croatia', 'Bosnia and Herzegovina (co-official)', 'Serbia (Vojvodina).'],\n translations: {\n en: 'Croatian',\n es: 'Croata',\n },\n status: 'commingsoon',\n speakers: 5700000,\n releaseDate: '2026-04-27',\n },\n sk: {\n nativeName: 'Slovenčina',\n flag: '🇸🇰',\n flagImg: 'flags/sk.svg',\n code: 'sk',\n defaultLocale: 'sk-SK',\n i: 32,\n llmKnowledge: 66,\n countries: ['Slovakia.'],\n translations: {\n en: 'Slovak',\n es: 'Eslovaco',\n },\n status: 'commingsoon',\n speakers: 5400000,\n releaseDate: '2026-05-04',\n },\n fil: {\n nativeName: 'Filipino',\n flag: '🇵🇭',\n flagImg: 'flags/ph.svg',\n code: 'fil',\n defaultLocale: 'fil-PH',\n i: 33,\n llmKnowledge: 65,\n countries: ['Philippines (co-official).'],\n translations: {\n en: 'Filipino',\n es: 'Filipino',\n },\n status: 'commingsoon',\n speakers: 109000000,\n releaseDate: '2026-05-11',\n },\n tl: {\n // Tagalog often used as base for Filipino, but distinct ISO code\n nativeName: 'Tagalog',\n flag: '🇵🇭',\n flagImg: 'flags/ph.svg',\n code: 'tl',\n defaultLocale: 'tl-PH',\n i: 34,\n llmKnowledge: 64,\n countries: ['Philippines (base of Filipino).'],\n translations: {\n en: 'Tagalog',\n es: 'Tagalo',\n },\n status: 'commingsoon',\n speakers: 109000000,\n releaseDate: '2026-05-18',\n },\n lt: {\n nativeName: 'Lietuvių',\n flag: '🇱🇹',\n flagImg: 'flags/lt.svg',\n code: 'lt',\n defaultLocale: 'lt-LT',\n i: 35,\n llmKnowledge: 63,\n countries: ['Lithuania.'],\n translations: {\n en: 'Lithuanian',\n es: 'Lituano',\n },\n status: 'commingsoon',\n speakers: 2800000,\n releaseDate: '2026-05-25',\n },\n lv: {\n nativeName: 'Latviešu',\n flag: '🇱🇻',\n flagImg: 'flags/lv.svg',\n code: 'lv',\n defaultLocale: 'lv-LV',\n i: 36,\n llmKnowledge: 62,\n countries: ['Latvia.'],\n translations: {\n en: 'Latvian',\n es: 'Letón',\n },\n status: 'commingsoon',\n speakers: 1900000,\n releaseDate: '2026-06-01',\n },\n sl: {\n nativeName: 'Slovenščina',\n flag: '🇸🇮',\n flagImg: 'flags/si.svg',\n code: 'sl',\n defaultLocale: 'sl-SI',\n i: 37,\n llmKnowledge: 61,\n countries: ['Slovenia.'],\n translations: {\n en: 'Slovenian',\n es: 'Esloveno',\n },\n status: 'commingsoon',\n speakers: 2500000,\n releaseDate: '2026-06-08',\n },\n et: {\n nativeName: 'Eesti',\n flag: '🇪🇪',\n flagImg: 'flags/ee.svg',\n code: 'et',\n defaultLocale: 'et-EE',\n i: 38,\n llmKnowledge: 60,\n countries: ['Estonia.'],\n translations: {\n en: 'Estonian',\n es: 'Estonio',\n },\n status: 'commingsoon',\n speakers: 1100000,\n releaseDate: '2026-06-15',\n },\n ms: {\n nativeName: 'Bahasa Melayu',\n flag: '🇲🇾',\n flagImg: 'flags/my.svg',\n code: 'ms',\n defaultLocale: 'ms-MY',\n i: 39,\n llmKnowledge: 59,\n countries: ['Malaysia', 'Brunei', 'Singapore (co-official).'],\n translations: {\n en: 'Malay',\n es: 'Malayo',\n },\n status: 'commingsoon',\n speakers: 290000000,\n releaseDate: '2026-06-22',\n },\n sw: {\n nativeName: 'Kiswahili',\n flag: '🇹🇿',\n flagImg: 'flags/tz.svg',\n code: 'sw',\n defaultLocale: 'sw-TZ',\n i: 40,\n llmKnowledge: 58,\n countries: ['Tanzania', 'Kenya', 'Uganda', 'Rwanda', 'Democratic Republic of the Congo (national language).'],\n translations: {\n en: 'Swahili',\n es: 'Suajili',\n },\n status: 'commingsoon',\n speakers: 200000000,\n releaseDate: '2026-06-29',\n },\n fa: {\n nativeName: 'فارسی (Fārsī)',\n flag: '🇮🇷',\n flagImg: 'flags/ir.svg',\n code: 'fa',\n defaultLocale: 'fa-IR',\n i: 41,\n llmKnowledge: 57,\n countries: ['Iran', 'Afghanistan (as Dari)', 'Tajikistan (as Tajik).'],\n translations: {\n en: 'Persian/Farsi',\n es: 'Persa',\n },\n status: 'commingsoon',\n speakers: 110000000,\n releaseDate: '2026-07-06',\n },\n bn: {\n nativeName: 'বাংলা (Bangla)',\n flag: '🇧🇩',\n flagImg: 'flags/bd.svg',\n code: 'bn',\n defaultLocale: 'bn-BD',\n i: 42,\n llmKnowledge: 56,\n countries: ['Bangladesh', 'India (West Bengal, Tripura).'],\n translations: {\n en: 'Bengali',\n es: 'Bengalí',\n },\n status: 'commingsoon',\n speakers: 272000000,\n },\n ur: {\n nativeName: 'اردو (Urdū)',\n flag: '🇵🇰',\n flagImg: 'flags/pk.svg',\n code: 'ur',\n defaultLocale: 'ur-PK',\n i: 43,\n llmKnowledge: 55,\n countries: ['Pakistan (co-official)', 'India (recognized).'],\n translations: {\n en: 'Urdu',\n es: 'Urdu',\n },\n status: 'commingsoon',\n speakers: 231000000,\n },\n sr: {\n nativeName: 'Српски (Srpski)',\n flag: '🇷🇸',\n flagImg: 'flags/rs.svg',\n code: 'sr',\n defaultLocale: 'sr-RS',\n i: 44,\n llmKnowledge: 54,\n countries: ['Serbia', 'Bosnia and Herzegovina (co-official)', 'Montenegro (co-official)', 'Kosovo (co-official).'],\n translations: {\n en: 'Serbian',\n es: 'Serbio',\n },\n status: 'commingsoon',\n speakers: 9000000,\n },\n is: {\n nativeName: 'Íslenska',\n flag: '🇮🇸',\n flagImg: 'flags/is.svg',\n code: 'is',\n defaultLocale: 'is-IS',\n i: 45,\n llmKnowledge: 53,\n countries: ['Iceland.'],\n translations: {\n en: 'Icelandic',\n es: 'Islandés',\n },\n status: 'commingsoon',\n speakers: 314000,\n },\n ta: {\n nativeName: 'தமிழ் (Tamiḻ)',\n flag: '🇱🇰',\n flagImg: 'flags/lk.svg',\n code: 'ta',\n defaultLocale: 'ta-LK',\n i: 46,\n llmKnowledge: 52,\n countries: ['Sri Lanka', 'Singapore', 'India (Tamil Nadu, Puducherry).'],\n translations: {\n en: 'Tamil',\n es: 'Tamil',\n },\n status: 'commingsoon',\n speakers: 86000000,\n },\n mr: {\n nativeName: 'मराठी (Marāṭhī)',\n flag: '🇮🇳',\n flagImg: 'flags/in.svg',\n code: 'mr',\n defaultLocale: 'mr-IN',\n i: 47,\n llmKnowledge: 51,\n countries: ['India (Maharashtra).'],\n translations: {\n en: 'Marathi',\n es: 'Maratí',\n },\n status: 'commingsoon',\n speakers: 99000000,\n },\n my: {\n nativeName: 'မြန်မာဘာသာ (Myanmar)',\n flag: '🇲🇲',\n flagImg: 'flags/mm.svg',\n code: 'my',\n defaultLocale: 'my-MM',\n i: 48,\n llmKnowledge: 50,\n countries: ['Myanmar.'],\n translations: {\n en: 'Burmese',\n es: 'Birmano',\n },\n status: 'commingsoon',\n speakers: 43000000,\n },\n cy: {\n nativeName: 'Cymraeg',\n flag: '🏴󠁧󠁢󠁷󠁬󠁳󠁿',\n flagImg: 'flags/cy.svg',\n code: 'cy',\n defaultLocale: 'cy-GB',\n i: 49,\n llmKnowledge: 49,\n countries: ['United Kingdom (Wales).'],\n translations: {\n en: 'Welsh',\n es: 'Galés',\n },\n status: 'commingsoon',\n speakers: 724000,\n },\n ha: {\n nativeName: 'Hausa',\n flag: '🇳🇬',\n flagImg: 'flags/ng.svg',\n code: 'ha',\n defaultLocale: 'ha-NG',\n i: 50,\n llmKnowledge: 48,\n countries: ['Nigeria (major language)', 'Niger', 'Ghana', 'Cameroon', 'Benin', 'Chad', 'Sudan.'],\n translations: {\n en: 'Hausa',\n es: 'Hausa',\n },\n status: 'commingsoon',\n speakers: 130000000,\n },\n eu: {\n nativeName: 'Euskara',\n flag: '🇪🇸',\n flagImg: 'flags/es.svg',\n code: 'eu',\n defaultLocale: 'eu-ES',\n i: 51,\n llmKnowledge: 47,\n countries: ['Spain (Basque Country, Navarre)', 'France (French Basque Country).'],\n translations: {\n en: 'Basque',\n es: 'Vasco',\n },\n status: 'commingsoon',\n speakers: 750000,\n },\n ga: {\n nativeName: 'Gaeilge',\n flag: '🇮🇪',\n flagImg: 'flags/ie.svg',\n code: 'ga',\n defaultLocale: 'ga-IE',\n i: 52,\n llmKnowledge: 46,\n countries: ['Ireland', 'United Kingdom (Northern Ireland).'],\n translations: {\n en: 'Irish',\n es: 'Irlandés',\n },\n status: 'commingsoon',\n speakers: 1900000,\n },\n sd: {\n nativeName: 'سنڌي (Sindhī)',\n flag: '🇵🇰',\n flagImg: 'flags/pk.svg',\n code: 'sd',\n defaultLocale: 'sd-PK',\n i: 53,\n llmKnowledge: 45,\n countries: ['Pakistan (Sindh)', 'India (recognized).'],\n translations: {\n en: 'Sindhi',\n es: 'Sindi',\n },\n status: 'commingsoon',\n speakers: 32000000,\n },\n am: {\n nativeName: 'አማርኛ (Amarəñña)',\n flag: '🇪🇹',\n flagImg: 'flags/et.svg',\n code: 'am',\n defaultLocale: 'am-ET',\n i: 54,\n llmKnowledge: 44,\n countries: ['Ethiopia.'],\n translations: {\n en: 'Amharic',\n es: 'Amárico',\n },\n status: 'commingsoon',\n speakers: 57000000,\n },\n jv: {\n nativeName: 'Basa Jawa',\n flag: '🇮🇩',\n flagImg: 'flags/id.svg',\n code: 'jv',\n defaultLocale: 'jv-ID',\n i: 55,\n llmKnowledge: 43,\n countries: ['Indonesia (important regional language).'],\n translations: {\n en: 'Javanese',\n es: 'Javanés',\n },\n status: 'commingsoon',\n speakers: 68000000,\n },\n km: {\n nativeName: 'ភាសាខ្មែរ (Phéasa Khmér)',\n flag: '🇰🇭',\n flagImg: 'flags/kh.svg',\n code: 'km',\n defaultLocale: 'km-KH',\n i: 56,\n llmKnowledge: 42,\n countries: ['Cambodia.'],\n translations: {\n en: 'Khmer',\n es: 'Jemer',\n },\n status: 'commingsoon',\n speakers: 16000000,\n },\n yo: {\n nativeName: 'Yorùbá',\n flag: '🇳🇬',\n flagImg: 'flags/ng.svg',\n code: 'yo',\n defaultLocale: 'yo-NG',\n i: 57,\n llmKnowledge: 41,\n countries: ['Nigeria', 'Benin', 'Togo.'],\n translations: {\n en: 'Yoruba',\n es: 'Yoruba',\n },\n status: 'commingsoon',\n speakers: 50000000,\n },\n gl: {\n nativeName: 'Galego',\n flag: '🇪🇸',\n flagImg: 'flags/es.svg',\n code: 'gl',\n defaultLocale: 'gl-ES',\n i: 58,\n llmKnowledge: 40,\n countries: ['Spain (Galicia).'],\n translations: {\n en: 'Galician',\n es: 'Gallego',\n },\n status: 'commingsoon',\n speakers: 2400000,\n },\n};\n\nexport function getLangDesc(langCode: string, lang: string = 'en'): string {\n const languageData = LANGUAGES[langCode];\n if (languageData && languageData.translations) {\n return (languageData.translations as any)[lang] || languageData.nativeName;\n }\n return langCode;\n}\n\n/**\n * How to use this pipe\n * @example\n * // In your component ts file assuming you have a variable with the lang code\n *\n * \\@Component({\n * selector: 'app-example',\n * template: `\n * <span>{{'en' | langDesc: 'es'}}</span>\n * `,\n * standalone: true,\n * imports: [LangDescTranslation]\n * })\n *\n *\n * class ExampleComponent {\n * }\n *\n */\nexport function getSupportedLanguageOptions(lang: 'es' | 'en' = 'es') {\n return SUPPORTED_LANGUAGES.map((langCode) => ({\n value: langCode,\n label: getLangDesc(langCode, lang),\n }));\n}\n","import { Pipe, type PipeTransform } from '@angular/core';\nimport { LANGUAGES } from '../models/languages.model';\nimport { getLangDesc } from '../models/languages.model';\n\n@Pipe({\n name: 'langDesc',\n standalone: true,\n})\nexport class LangDescTranslation implements PipeTransform {\n transform(value: string, lang?: string | null): string {\n const validLang = lang === 'es' ? 'es' : 'en';\n return getLangDesc(value, validLang);\n }\n}\n\n@Pipe({\n name: 'flagEmoji',\n standalone: true,\n})\nexport class FlagPipe implements PipeTransform {\n transform(lang: string): string {\n const langCodeMap: { [key: string]: string } = {\n cn: 'zh',\n kr: 'ko',\n };\n const code = langCodeMap[lang] || lang;\n return LANGUAGES[code]?.flag || '';\n }\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, HttpEventType, HttpHeaders } from '@angular/common/http';\nimport { Injectable, inject, signal, InjectionToken, Optional, Inject } from '@angular/core';\nimport { Observable, throwError, lastValueFrom, tap, map, catchError } from 'rxjs';\nimport { AppException, TOAST_ALERTS_TOKEN } from '../models/classes';\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' | string;\n errorHandler?: (error: HttpErrorResponse) => void;\n}\n\nexport interface PostHttpParams {\n service: string;\n data: unknown;\n host?: 'primary' | 'secondary' | string;\n}\n\nexport interface PutHttpParams {\n service: string;\n data: unknown;\n host?: 'primary' | 'secondary' | string;\n}\n\nexport interface GetHttpParams {\n service: string;\n host?: 'primary' | 'secondary' | string;\n skipErrorHandling?: boolean;\n}\n\nexport interface DeleteHttpParams {\n service: string;\n host?: 'primary' | 'secondary' | string;\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 private toastService = inject(TOAST_ALERTS_TOKEN);\n\n // Use signals for reactive state\n private isLoading = signal<boolean>(false);\n private lastError = signal<HttpCoreError | null>(null);\n\n // Configuration\n public 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 public async postHttp<T = any>({ service, data, host }: PostHttpParams): Promise<T> {\n this.isLoading.set(true);\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n const response$ = this.httpClient.post<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\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 public postHttp$<T = any>({ service, data, host }: PostHttpParams): Observable<T> {\n this.isLoading.set(true);\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n return this.httpClient.post<T>(url, dataPlain).pipe(\n tap(() => this.isLoading.set(false)),\n catchError((err) => {\n this.isLoading.set(false);\n return this.handleRequestError(err);\n }),\n );\n }\n\n public async putHttp<T = any>({ service, data, host }: PutHttpParams): Promise<T> {\n this.isLoading.set(true);\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const dataPlain = this.toPlainObject(data);\n const response$ = this.httpClient.put<T>(url, dataPlain).pipe(catchError(this.handleRequestError.bind(this)));\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 public async getHttp<T = any>({ service, host, skipErrorHandling = false }: GetHttpParams): Promise<T> {\n this.isLoading.set(true);\n try {\n const url = this.getHostUrl(host) + '/' + service;\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 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 public getHttp$<T = any>({ service, host, skipErrorHandling = false }: GetHttpParams): Observable<T> {\n this.isLoading.set(true);\n const url = this.getHostUrl(host) + '/' + service;\n return this.httpClient.get<T>(url).pipe(\n tap(() => this.isLoading.set(false)),\n catchError((err) => {\n this.isLoading.set(false);\n if (!skipErrorHandling) {\n return this.handleRequestError(err);\n }\n return throwError(() => err);\n }),\n );\n }\n\n public async deleteHttp<T = DeletedData>({ service, host }: DeleteHttpParams): Promise<T> {\n this.isLoading.set(true);\n try {\n const url = this.getHostUrl(host) + '/' + service;\n const response$ = this.httpClient.delete<T>(url).pipe(catchError(this.handleRequestError.bind(this)));\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 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 * @deprecated Use postHttp instead\n */\n public async post<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n return this.postHttp({ service, data, host });\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(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 * @deprecated Use putHttp instead\n */\n public async put<T = any>(service: string, data: any, host = this.config.defaultHost): Promise<T> {\n return this.putHttp({ service, data, host });\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 * @deprecated Use getHttp instead\n */\n public async get<T = any>(service: string, host = this.config.defaultHost, skipErrorHandling = false): Promise<T> {\n return this.getHttp({ service, host, skipErrorHandling });\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 * @deprecated Use deleteHttp instead\n */\n public async delete<T = DeletedData>(service: string, host = this.config.defaultHost): Promise<T> {\n return this.deleteHttp({ service, host });\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 * @Deprecated use postFile\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 * 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 postFile<T = any>({ service, file, metadata, host }: { service: string; file: Blob; metadata?: any; host?: string }): 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' | string = this.config.defaultHost): string {\n if (host === 'primary') {\n return this.config.primaryUrl;\n }\n if (host === 'secondary' && this.config.secondaryUrl) {\n return this.config.secondaryUrl;\n } else {\n return host;\n }\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 protected handleRequestError(error: HttpErrorResponse): Observable<never> {\n this.isLoading.set(false);\n let appException: AppException = null;\n if (error?.error?.type === 'AppException') {\n appException = error?.error;\n } else if (error?.error?.exception?.error_message) {\n appException = error?.error?.exception;\n }\n\n if (appException) {\n console.error(error.error);\n const errorMessage = appException?.error_message || 'An error occurred';\n const subtitle = appException?.explanation || 'Please try again later';\n this.toastService.error({ title: errorMessage, subtitle });\n }\n\n // Set the last error, not sure if this is still neeed, to keep track of the last error.\n if (appException) {\n this.lastError.set({\n error_message: appException.error_message || 'An error occurred',\n explanation: appException.explanation || 'Please try again later',\n status: error.status,\n code: appException.statusCode as any,\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 * 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 public postObservableWithProgress<DataType>(\n service: string,\n data: DataType,\n host: 'primary' | 'secondary' = 'primary',\n ): Observable<{ progress?: number; blob?: Blob }> {\n const hostUrl = this.getHostUrl(host);\n const url = `${hostUrl}/${service}`;\n\n return this.httpClient\n .post(url, data, {\n reportProgress: true,\n observe: 'events',\n responseType: 'blob',\n })\n .pipe(\n map((event) => {\n let progress: number | undefined;\n let blob: Blob | undefined;\n\n switch (event.type) {\n case HttpEventType.DownloadProgress:\n if (event.total) {\n progress = Math.round((100 * event.loaded) / event.total);\n }\n break;\n case HttpEventType.Response:\n blob = event.body as Blob;\n break;\n }\n return { progress, blob };\n }),\n catchError((err) => {\n this.handleRequestError(err);\n return throwError(() => err);\n }),\n );\n }\n}\n","import { inject, Injectable } from '@angular/core';\nimport { HttpCoreService } from './http-core.service';\nimport { FiltersConfig, IFilterQueryResponse } from '../models/filter.models';\n\n@Injectable()\nexport abstract class EntityCommunicationService<T> {\n protected httpService = inject(HttpCoreService);\n\n protected customHost?: string;\n\n constructor(protected serviceName: string) {\n // this.customHost = customHost;\n }\n\n findAll(query: any = {}): Promise<T[]> {\n // return this.httpService.getHttp<T[]>({ service: `api/${this.serviceName}`, host: this.customHost });\n return this.operation({ action: 'find', query });\n }\n\n /**\n * @deprecated Use findAll(query) instead.\n */\n findAllOperation(query: any = {}): Promise<T[]> {\n return this.findAll(query);\n }\n\n findOne(id: string, projection?: any): Promise<T> {\n // return this.httpService.getHttp<T>({ service: `api/${this.serviceName}/${id}`, host: this.customHost });\n\n return this.operation({ action: 'findOne', query: { _id: id }, projection });\n }\n\n /**\n * @deprecated Use findOne(id, projection) instead.\n */\n findOneOperation(id: string, projection?: any): Promise<T> {\n return this.findOne(id, projection);\n }\n\n findOneByQuery(query: any, projection?: any): Promise<T> {\n // return this.httpService.postHttp<T>({ service: `api/${this.serviceName}/find-one`, data: { query, projection }, host: this.customHost });\n\n return this.operation({ action: 'findOne', query, projection });\n }\n\n createOrUpdate(entity: Partial<T>): Promise<T> {\n // return this.httpService.postHttp<T>({ service: `api/${this.serviceName}`, data: entity, host: this.customHost });\n\n const id = (entity as any)._id || (entity as any).id;\n if (id) {\n return this.operation({ action: 'updateOne', query: { _id: id }, payload: entity });\n }\n return this.operation({ action: 'create', payload: entity });\n }\n\n /**\n * @deprecated Use createOrUpdate(payload) instead.\n */\n createOperation(payload: Partial<T>): Promise<T> {\n return this.createOrUpdate(payload);\n }\n\n query(filterConfig: FiltersConfig): Promise<IFilterQueryResponse<T>> {\n return this.httpService.postHttp<IFilterQueryResponse<T>>({ service: `api/${this.serviceName}/query`, data: filterConfig, host: this.customHost });\n }\n\n /**\n * @deprecated Use createOrUpdate instead.\n */\n update(id: string, update: any): Promise<T> {\n return this.operation({ action: 'updateOne', query: { _id: id }, payload: update });\n }\n\n /**\n * @deprecated Use createOrUpdate or updateOne instead.\n */\n updateOneOperation(id: string, payload: any): Promise<T> {\n return this.update(id, payload);\n }\n\n partialUpdate(id: string, partialUpdates: Partial<T>): Promise<T> {\n return this.operation({ action: 'updateOne', query: { _id: id }, payload: partialUpdates });\n }\n\n async remove(id: string): Promise<void> {\n return this.operation({ action: 'deleteOne', query: { _id: id } });\n }\n\n /**\n * @deprecated Use remove(id) instead.\n */\n removeOperation(id: string): Promise<any> {\n return this.remove(id);\n }\n\n clone(id: string, overrides: Partial<T> = {}): Promise<T> {\n return this.httpService.postHttp<T>({ service: `api/${this.serviceName}/${id}/clone`, data: overrides });\n }\n\n getFixedQuery(): Record<string, any> {\n return {};\n }\n\n operation(params: {\n action: 'findOne' | 'find' | 'create' | 'updateOne' | 'updateMany' | 'deleteOne' | 'deleteMany' | 'aggregate' | 'count';\n query?: any;\n payload?: any;\n projection?: any;\n options?: any;\n }): Promise<any> {\n return this.httpService.postHttp<any>({ service: `api/${this.serviceName}/operation`, data: params, host: this.customHost });\n }\n}\n","import { Injectable, signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class UiStateService {\n chatDrawerVisible = signal(false);\n}\n","import { inject, Injectable } from '@angular/core';\nimport { FormBuilder, FormGroup, FormControl, FormArray } from '@angular/forms';\n\nexport type LearnableForm = FormGroup<{\n level: FormControl<number | null>;\n takenCount: FormControl<number | null>;\n tags: FormArray<FormControl<string | null>>;\n}>;\n\n@Injectable({\n providedIn: 'root',\n})\nexport class FormUtilsService {\n private fb = inject(FormBuilder);\n\n createMetaFormGroup(): FormGroup {\n return this.fb.group({\n authorId: [''],\n authorEmail: [''],\n takenCount: [0],\n level: [0],\n });\n }\n\n createManageableFormGroup(): FormGroup {\n return this.fb.group({\n isPublic: [false],\n status: ['draft'],\n });\n }\n\n createLearnableFormGroup(): LearnableForm {\n return this.fb.group({\n level: new FormControl(0),\n takenCount: new FormControl(0),\n tags: this.fb.array<FormControl<string | null>>([]),\n });\n }\n\n patchLearnableFormGroup(form: LearnableForm, data: { tags?: string[] }): void {\n if (data && data?.tags) {\n this.patchFormArray(form.controls.tags, data.tags);\n }\n }\n\n private patchFormArray(formArray: FormArray, values: any[]): void {\n formArray.clear();\n values.forEach((value) => {\n formArray.push(this.fb.control(value));\n });\n }\n}\n","import { Injectable, InjectionToken, inject } from '@angular/core';\n\nexport interface IAppConfig {\n version: string;\n envName: string;\n projectName: string;\n production: boolean;\n backendPythonUrl: string;\n backendNodeUrl: string;\n aiServicesUrl: string;\n kbHost: string;\n clientId: string;\n mobile: {\n appleAppId: string;\n appleRedirectURI: string;\n androidClientId: string;\n iosClientId: string;\n };\n firebase: {\n apiKey: string;\n authDomain: string;\n projectId: string;\n storageBucket: string;\n messagingSenderId: string;\n appId: string;\n };\n logLevel: number;\n gtm: string;\n posthogApiKey: string;\n posthogApiHost: string;\n}\n\nexport const APP_CONFIG = new InjectionToken<IAppConfig>('app.config');\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AppConfigService {\n public config: IAppConfig = inject(APP_CONFIG);\n // constructor() {\n // this.config.kbhost = 'http://localhost:3000';\n // }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class AudioNotificationService {\n playFinishNotification() {\n const audio = new Audio('sounds/accomplished.mp3');\n audio.load();\n audio.play();\n }\n}\n","import { Injectable, inject, signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { Capacitor } from '@capacitor/core';\nimport { Observable, distinctUntilChanged, fromEvent, map } from 'rxjs';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class MobileService {\n protected router = inject(Router);\n\n public eventInstall;\n public isMobileAgent: boolean;\n public hasReponsiveView = signal<boolean>(false);\n public hasMobileView: boolean;\n\n private readonly mobileWidthThreshold = 768; // Adjust the threshold as needed\n private readonly responsibleWidthThreshold = 994;\n private screenWidth$: Observable<number>;\n public screenHeight$: Observable<number>;\n private isMobile$: Observable<boolean>;\n\n constructor() {\n // Initialize signal with current window width check\n this.hasReponsiveView.set(window.innerWidth <= this.responsibleWidthThreshold);\n\n this.checkMobileAgent();\n\n this.screenWidth$ = fromEvent(window, 'resize').pipe(\n map(() => window.innerWidth),\n distinctUntilChanged(),\n );\n\n this.screenHeight$ = fromEvent(window, 'resize').pipe(\n map(() => window.innerHeight),\n distinctUntilChanged(),\n );\n\n this.isMobile$ = this.screenWidth$.pipe(\n map((width: number) => width <= this.responsibleWidthThreshold), // Add type assertion to 'width'\n distinctUntilChanged(),\n );\n\n this.isMobile$.subscribe((isResposible) => {\n console.log('isMobile', isResposible);\n // Update signal value when screen size changes\n this.hasReponsiveView.set(isResposible);\n });\n }\n\n public isMobileRoute(currentRoute: string = ''): boolean {\n if (!currentRoute) {\n currentRoute = this.router.url;\n }\n const firstRouteName = currentRoute.split('/')[1];\n\n return firstRouteName == 'm' ? true : false;\n }\n\n // Add this function to the class\n public getPlatform(): string {\n if (Capacitor.isNativePlatform()) {\n const platform = Capacitor.getPlatform();\n // Example usage in component:\n if (platform === 'ios') {\n // iOS specific code\n return 'ios';\n } else if (platform === 'android') {\n // Android specific code\n return 'android';\n } else {\n return 'web';\n }\n }\n return 'web';\n }\n\n public isNativeMobileOrMobileRoute() {\n if (Capacitor.isNativePlatform() || this.isMobileRoute()) {\n return true;\n } else {\n return false;\n }\n }\n\n public isNativeMobile() {\n return Capacitor.isNativePlatform();\n }\n\n getScreenWidth(): Observable<number> {\n return this.screenWidth$;\n }\n\n // isMobile(): Observable<boolean> {\n // return this.isMobile$;\n // }\n\n public installByUser() {\n console.log('Debería hacer la instalación por el usuario');\n if (this.eventInstall) {\n this.eventInstall.prompt();\n console.log('Debio mandar el promt');\n }\n }\n\n private checkMobileAgent(): void {\n if (/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)) {\n // true for mobile device\n this.isMobileAgent = true;\n } else {\n // false for not mobile device\n this.isMobileAgent = false;\n }\n }\n}\n","export enum MoodState {\n HAPPY = 'happy',\n SAD = 'sad',\n ANGRY = 'angry',\n FEAR = 'fear',\n SURPRISED = 'surprised',\n DISGUSTED = 'disgusted',\n PROUD = 'proud',\n ASHAMED = 'ashamed',\n GUILTY = 'guilty',\n JEALOUS = 'jealous',\n LOVE = 'love',\n CONTEMPT = 'contempt',\n COMIC = 'comic',\n BLUSHING = 'blushing',\n CONFUSED = 'confused',\n CURIOUS = 'curious',\n BORED = 'bored',\n FRUSTRATED = 'frustrated',\n OVERWHELMED = 'overwhelmed',\n FOCUSED = 'focused',\n CHALLENGE = 'challenge',\n SERIOUS = 'serious',\n SLEEPY = 'sleepy',\n HORNY = 'horny',\n ANXIOUS = 'anxious',\n RELAXED = 'relaxed',\n}\n\nexport const MoodStateOptions = [\n // Emociones básicas y fundamentales\n { value: MoodState.HAPPY, label: '1) Alegría - Felicidad, gozo, satisfacción', emoji: '😊' },\n { value: MoodState.SAD, label: '2) Tristeza - Pena, melancolía, desánimo', emoji: '😢' },\n { value: MoodState.ANGRY, label: '3) Enojo - Ira, furia, irritación', emoji: '😠' },\n { value: MoodState.FEAR, label: '4) Miedo - Temor, pánico, terror', emoji: '😨' },\n { value: MoodState.SURPRISED, label: '5) Sorpresa - Asombro, desconcierto', emoji: '😮' },\n { value: MoodState.DISGUSTED, label: '6) Asco - Repugnancia, aversión', emoji: '🤢' },\n // { value: 'excited', label: '27) Entusiasmo - Emoción, euforia, anticipación' },\n\n // Emociones sociales y autoconscientes\n { value: MoodState.PROUD, label: '7) Orgullo - Satisfacción por logros propios o ajenos', emoji: '😎' },\n { value: MoodState.ASHAMED, label: '8) Vergüenza - Humillado', emoji: '😰' },\n { value: MoodState.GUILTY, label: '9) Culpa - Remordimiento, arrepentimiento', emoji: '😔' },\n { value: MoodState.JEALOUS, label: '10) Celos - Envidia, desconfianza', emoji: '😒' },\n { value: MoodState.LOVE, label: '11) Amor - Cariño, afecto, ternura', emoji: '❤️' },\n // { value: 'grateful', label: '12) Agradecimiento - Gratitud, aprecio' },\n { value: MoodState.CONTEMPT, label: '30) Desprecio - Desdén, menosprecio', emoji: '🙃' },\n { value: MoodState.COMIC, label: '32) Cómico - Divertido, gracioso', emoji: '😂' },\n { value: MoodState.BLUSHING, label: '33) Apenado - Sonrojado, avergonzado', emoji: '😳' },\n\n // Estados cognitivos y mentales\n // { value: 'neutral', label: '13) Neutral - Calma, imparcialidad' },\n { value: MoodState.CONFUSED, label: '14) Confusión - Desorientación, perplejidad', emoji: '😕' },\n { value: MoodState.CURIOUS, label: '15) Curiosidad - Interés, intriga, exploración', emoji: '🤔' },\n { value: MoodState.BORED, label: '16) Aburrimiento - Desinterés, tedio, apatía', emoji: '😑' },\n // { value: 'hopeful', label: '17) Esperanza - Optimismo, fe, expectativa positiva' },\n { value: MoodState.FRUSTRATED, label: '18) Frustración - Decepción, impotencia', emoji: '😤' },\n { value: MoodState.OVERWHELMED, label: '19) Abrumado - Agobio, exceso de carga', emoji: '😫' },\n // { value: 'lonely', label: '20) Soledad - Aislamiento, desamparo' },\n { value: MoodState.FOCUSED, label: '21) Concentración - Enfoque, atención plena', emoji: '🤓' },\n { value: MoodState.CHALLENGE, label: '28) Desafío - Reto, provocación, competitividad', emoji: '😏' },\n // { value: 'satisfied', label: '29) Satisfacción - Contentamiento, plenitud' },\n { value: MoodState.SERIOUS, label: '31) Serenidad - Actitud seria', emoji: '😐' },\n\n // Estados corporales y fisiológicos\n { value: MoodState.SLEEPY, label: '22) Cansancio - Somnolencia, agotamiento, fatiga', emoji: '😴' },\n // { value: 'energetic', label: '23) Energía - Vitalidad, vigor, dinamismo' },\n { value: MoodState.HORNY, label: '24) Excitación sexual - Lujuria, deseo sexual', emoji: '😈' },\n { value: MoodState.ANXIOUS, label: '25) Ansiedad - Nerviosismo, preocupación, inquietud', emoji: '😟' },\n { value: MoodState.RELAXED, label: '26) Relajación - Paz, serenidad, tranquilidad', emoji: '😌' },\n];\n","export const CharacterEventActions = [\n // Emociones básicas y fundamentales\n { value: 'intro', label: 'Al iniciar la conversación' },\n { value: 'outro', label: 'Al finalizar la conversación' },\n { value: 'goalCompleted', label: 'Al completar el objetivo' },\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';\nexport * from './lib/components/forms/dc-auditable-viewer.component';\nexport * from './lib/components/forms/dc-extensions-viewer.component';\nexport * from './lib/components/forms/dc-learnable-viewer.component';\nexport * from './lib/components/forms/dc-manageable-viewer.component';\nexport * from './lib/components/forms/dc-reactions-viewer.component';\nexport * from './lib/components/forms';\nexport * from './lib/components/base-list/entity-base-list.component';\nexport * from './lib/components/base-list/entity-base-list-v2.component';\nexport * from './lib/components/base-form/entity-base-form';\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';\nexport * from './lib/models/extension.model';\n// Pipes\nexport * from './lib/pipes/lang.pipe';\n// services\nexport * from './lib/services/confirm.service';\nexport * from './lib/services/prompt.service';\nexport * from './lib/services/http-core.service';\nexport * from './lib/services/entity-cominication.service';\nexport * from './lib/services/ui-state.service';\nexport * from './lib/services/form-utils.service';\nexport * from './lib/services/app-config.service';\nexport * from './lib/services/audio-notification.service';\nexport * from './lib/services/mobile.service';\n\n// Models\nexport * from './lib/models/languages.model';\nexport * from './lib/models/character-models';\nexport * from './lib/models/extension.model';\nexport * from './lib/models/character-actions';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i4","i2","i1","i5","i7","map"],"mappings":"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"}