@dataclouder/ngx-core 0.1.37 → 0.1.38

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,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { input, Input, Component, inject, output, ChangeDetectionStrategy, HostListener, ChangeDetectorRef, Injectable, Pipe, signal, effect, ViewChild, Directive, InjectionToken, Optional, Inject } from '@angular/core';
2
+ import { input, Component, inject, output, Input, ChangeDetectionStrategy, HostListener, ChangeDetectorRef, Injectable, Pipe, signal, effect, ViewChild, Directive, InjectionToken, Optional, Inject } from '@angular/core';
3
3
  import * as i1 from '@angular/forms';
4
4
  import { FormBuilder, FormsModule, ReactiveFormsModule, FormControl, ControlContainer, FormGroup, FormArray } from '@angular/forms';
5
5
  import * as i2 from 'primeng/button';
@@ -57,21 +57,17 @@ import { HttpClient, HttpEventType } from '@angular/common/http';
57
57
 
58
58
  class EmptyStateComponent {
59
59
  constructor() {
60
- this.headingText = 'No existe el recurso que buscas';
61
- this.subHeadingText = 'Intenta más tarde';
60
+ this.headingText = input('No existe el recurso que buscas', ...(ngDevMode ? [{ debugName: "headingText" }] : []));
61
+ this.subHeadingText = input('Intenta más tarde', ...(ngDevMode ? [{ debugName: "subHeadingText" }] : []));
62
62
  this.mainIconSrcString = input('assets/img/empty-states/empty-box.png', ...(ngDevMode ? [{ debugName: "mainIconSrcString" }] : []));
63
63
  }
64
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: EmptyStateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: EmptyStateComponent, isStandalone: true, selector: "dc-empty-state", inputs: { headingText: { classPropertyName: "headingText", publicName: "headingText", isSignal: false, isRequired: false, transformFunction: null }, subHeadingText: { classPropertyName: "subHeadingText", publicName: "subHeadingText", isSignal: false, isRequired: false, transformFunction: null }, mainIconSrcString: { classPropertyName: "mainIconSrcString", publicName: "mainIconSrcString", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"grid justify-content-center\">\n <div class=\"empty-state-content\">\n @if (headingText) {\n <h5 class=\"text-center\">{{ headingText }}</h5>\n }\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString() }}\" />\n @if (subHeadingText) {\n <h6>{{ subHeadingText }}</h6>\n }\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".empty-state-content{padding-top:20px}.empty-state-content .image-empty-state{filter:grayscale(40%);padding-top:10px}\n"] }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: EmptyStateComponent, isStandalone: true, selector: "dc-empty-state", inputs: { headingText: { classPropertyName: "headingText", publicName: "headingText", isSignal: true, isRequired: false, transformFunction: null }, subHeadingText: { classPropertyName: "subHeadingText", publicName: "subHeadingText", isSignal: true, isRequired: false, transformFunction: null }, mainIconSrcString: { classPropertyName: "mainIconSrcString", publicName: "mainIconSrcString", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<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", styles: [":host{display:block;width:100%;height:100%}.empty-state-container{padding:20px;text-align:center;height:100%;flex-direction:column;display:flex;align-items:center}.empty-state-container .image-empty-state{filter:grayscale(40%);margin:15px 0}.empty-state-container h5{margin-bottom:10px}.empty-state-container h6{color:var(--text-color-secondary);margin-top:0}\n"] }); }
66
66
  }
67
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: EmptyStateComponent, decorators: [{
68
68
  type: Component,
69
- args: [{ selector: 'dc-empty-state', standalone: true, imports: [], template: "<div class=\"grid justify-content-center\">\n <div class=\"empty-state-content\">\n @if (headingText) {\n <h5 class=\"text-center\">{{ headingText }}</h5>\n }\n <img width=\"180px\" class=\"image-empty-state\" src=\"{{ mainIconSrcString() }}\" />\n @if (subHeadingText) {\n <h6>{{ subHeadingText }}</h6>\n }\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".empty-state-content{padding-top:20px}.empty-state-content .image-empty-state{filter:grayscale(40%);padding-top:10px}\n"] }]
70
- }], propDecorators: { headingText: [{
71
- type: Input
72
- }], subHeadingText: [{
73
- type: Input
74
- }] } });
69
+ args: [{ selector: 'dc-empty-state', standalone: true, imports: [], template: "<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", styles: [":host{display:block;width:100%;height:100%}.empty-state-container{padding:20px;text-align:center;height:100%;flex-direction:column;display:flex;align-items:center}.empty-state-container .image-empty-state{filter:grayscale(40%);margin:15px 0}.empty-state-container h5{margin-bottom:10px}.empty-state-container h6{color:var(--text-color-secondary);margin-top:0}\n"] }]
70
+ }] });
75
71
 
76
72
  const availibleFilters = [
77
73
  { name: 'Tomadas', code: 'taken' },
@@ -180,7 +176,7 @@ class DCFilterBarComponent {
180
176
  this.onFilterAction.emit(filterEvent);
181
177
  }
182
178
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DCFilterBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
183
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: DCFilterBarComponent, isStandalone: true, selector: "dc-filter-bar", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, customFilters: { classPropertyName: "customFilters", publicName: "customFilters", isSignal: false, isRequired: false, transformFunction: null }, isAdmin: { classPropertyName: "isAdmin", publicName: "isAdmin", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onFilterAction: "onFilterAction", onChangeSort: "onChangeSort", onNew: "onNew" }, usesOnChanges: true, ngImport: i0, template: "<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 } @if(isAdmin) {\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n } }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <h4>Qu\u00E9 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\" />\n </p-inputgroup>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros R\u00E1pidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-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 [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\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n", styles: [":host{display:block}.admin{margin-left:10px;position:relative}.background-bar{background-color:var(--p-primary-color);display:flex;border-radius:10px;justify-content:space-between;padding:10px}.button-flex{display:flex;margin-right:10px}.white{color:#fff}.search-flex{margin-left:10px}.search-dialog{width:750px;-webkit-backdrop-filter:blur(70px);backdrop-filter:blur(70px)}.border-none{border:none}.bg-black-alpha-50{background-color:var(--p-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i4.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "styleClass", "panelStyle", "panelStyleClass", "inputId", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "dataKey", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "placeholder", "options", "filterValue", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus", "highlightOnSelect", "size", "variant", "fluid", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i7.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "styleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "readonlyInput", "shortYearCutoff", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "view", "defaultDate", "appendTo"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i8.InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i9.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
179
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: DCFilterBarComponent, isStandalone: true, selector: "dc-filter-bar", inputs: { items: { classPropertyName: "items", publicName: "items", isSignal: true, isRequired: false, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, customFilters: { classPropertyName: "customFilters", publicName: "customFilters", isSignal: false, isRequired: false, transformFunction: null }, isAdmin: { classPropertyName: "isAdmin", publicName: "isAdmin", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onFilterAction: "onFilterAction", onChangeSort: "onChangeSort", onNew: "onNew" }, usesOnChanges: true, ngImport: i0, template: "<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 } @if(isAdmin) {\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n } }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <h4>Qu\u00E9 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\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros R\u00E1pidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-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 [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\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n", styles: [":host{display:block}.admin{margin-left:10px;position:relative}.background-bar{background-color:var(--p-primary-color);display:flex;border-radius:10px;justify-content:space-between;padding:10px}.button-flex{display:flex;margin-right:10px}.white{color:#fff}.search-flex{margin-left:10px}.search-dialog{width:750px;-webkit-backdrop-filter:blur(70px);backdrop-filter:blur(70px)}.border-none{border:none}.bg-black-alpha-50{background-color:var(--p-primary-color)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: DialogModule }, { kind: "component", type: i4.Dialog, selector: "p-dialog", inputs: ["header", "draggable", "resizable", "contentStyle", "contentStyleClass", "modal", "closeOnEscape", "dismissableMask", "rtl", "closable", "breakpoints", "styleClass", "maskStyleClass", "maskStyle", "showHeader", "blockScroll", "autoZIndex", "baseZIndex", "minX", "minY", "focusOnShow", "maximizable", "keepInViewport", "focusTrap", "transitionOptions", "closeIcon", "closeAriaLabel", "closeTabindex", "minimizeIcon", "maximizeIcon", "closeButtonProps", "maximizeButtonProps", "visible", "style", "position", "role", "appendTo", "content", "contentTemplate", "footerTemplate", "closeIconTemplate", "maximizeIconTemplate", "minimizeIconTemplate", "headlessTemplate"], outputs: ["onShow", "onHide", "visibleChange", "onResizeInit", "onResizeEnd", "onDragEnd", "onMaximize"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i5.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i6.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "styleClass", "panelStyle", "panelStyleClass", "inputId", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "dataKey", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "showClear", "autofocus", "placeholder", "options", "filterValue", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus", "highlightOnSelect", "size", "variant", "fluid", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i7.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "styleClass", "inputStyle", "inputId", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "icon", "readonlyInput", "shortYearCutoff", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "minDate", "maxDate", "disabledDates", "disabledDays", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "view", "defaultDate", "appendTo"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i8.InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i9.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputGroupAddonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
184
180
  }
185
181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: DCFilterBarComponent, decorators: [{
186
182
  type: Component,
@@ -195,7 +191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
195
191
  InputTextModule,
196
192
  InputGroupModule,
197
193
  InputGroupAddonModule,
198
- ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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 } @if(isAdmin) {\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n } }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <h4>Qu\u00E9 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\" />\n </p-inputgroup>\n </div>\n</p-dialog>\n\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros R\u00E1pidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-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 [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\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n", styles: [":host{display:block}.admin{margin-left:10px;position:relative}.background-bar{background-color:var(--p-primary-color);display:flex;border-radius:10px;justify-content:space-between;padding:10px}.button-flex{display:flex;margin-right:10px}.white{color:#fff}.search-flex{margin-left:10px}.search-dialog{width:750px;-webkit-backdrop-filter:blur(70px);backdrop-filter:blur(70px)}.border-none{border:none}.bg-black-alpha-50{background-color:var(--p-primary-color)}\n"] }]
194
+ ], changeDetection: ChangeDetectionStrategy.OnPush, template: "<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 } @if(isAdmin) {\n <div class=\"button-flex\">\n <p-button icon=\"pi pi-filter\" label=\"Filtrar\" severity=\"secondary\" (click)=\"isFilterVisible = true\" />\n </div>\n } }\n</div>\n\n@if (placeholder) {\n<span class=\"search-flex\" (click)=\"search(null)\"> <i class=\"pi pi-times\"></i>{{ placeholder }} </span>\n}\n\n<p-dialog [(visible)]=\"isSearchVisible\" [dismissableMask]=\"true\" [modal]=\"true\" [showHeader]=\"false\" (onHide)=\"isSearchVisible = false\">\n <h4>Qu\u00E9 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\n<p-dialog [(visible)]=\"isFilterVisible\" [modal]=\"true\" [style]=\"{ width: '70vw', height: '70vh' }\" [header]=\"'Filtros'\">\n <div class=\"flex flex-column gap-4\">\n <!-- Sort Options -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Ordenar por</label>\n <p-select [options]=\"sortOptions\" [(ngModel)]=\"selectedSort\" optionLabel=\"label\" [style]=\"{ width: '100%' }\" placeholder=\"Seleccionar orden\"> </p-select>\n </div>\n\n <p-multiselect\n [options]=\"availibleFilters\"\n [(ngModel)]=\"selectedFilters\"\n optionLabel=\"name\"\n placeholder=\"Filtros R\u00E1pidos\"\n [maxSelectedLabels]=\"3\"\n styleClass=\"w-full md:w-80\" />\n\n <!-- Date Filter -->\n <div class=\"field\">\n <label class=\"font-semibold block mb-2\">Rango de fechas</label>\n <p-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 [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\n <!-- Recent/All Toggle -->\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex justify-content-end gap-2\">\n <p-button label=\"Limpiar\" icon=\"pi pi-trash\" (click)=\"clearFilters()\" styleClass=\"p-button-text\"> </p-button>\n <p-button label=\"Aplicar\" icon=\"pi pi-check\" (click)=\"applyFilters()\" severity=\"primary\"> </p-button>\n </div>\n </ng-template>\n</p-dialog>\n", styles: [":host{display:block}.admin{margin-left:10px;position:relative}.background-bar{background-color:var(--p-primary-color);display:flex;border-radius:10px;justify-content:space-between;padding:10px}.button-flex{display:flex;margin-right:10px}.white{color:#fff}.search-flex{margin-left:10px}.search-dialog{width:750px;-webkit-backdrop-filter:blur(70px);backdrop-filter:blur(70px)}.border-none{border:none}.bg-black-alpha-50{background-color:var(--p-primary-color)}\n"] }]
199
195
  }], propDecorators: { customFilters: [{
200
196
  type: Input
201
197
  }], isAdmin: [{
@@ -1345,6 +1341,7 @@ const LANGUAGES = {
1345
1341
  flag: '🇺🇸', // Using US flag as a primary example
1346
1342
  flagImg: 'assets/flags/us.svg',
1347
1343
  code: 'en',
1344
+ defaultLocale: 'en-US',
1348
1345
  i: 1,
1349
1346
  llmKnowledge: 100,
1350
1347
  countries: ['United Kingdom', 'United States', 'Canada', 'Australia', 'New Zealand', 'Ireland', 'South Africa', 'India', 'and many others.'],
@@ -1360,6 +1357,7 @@ const LANGUAGES = {
1360
1357
  flag: '🇪🇸', // Using Spain flag as a primary example
1361
1358
  flagImg: 'assets/flags/es.svg',
1362
1359
  code: 'es',
1360
+ defaultLocale: 'es-ES',
1363
1361
  i: 2,
1364
1362
  llmKnowledge: 99,
1365
1363
  countries: [
@@ -1396,6 +1394,7 @@ const LANGUAGES = {
1396
1394
  flag: '🇩🇪',
1397
1395
  flagImg: 'assets/flags/de.svg',
1398
1396
  code: 'de',
1397
+ defaultLocale: 'de-DE',
1399
1398
  i: 3,
1400
1399
  llmKnowledge: 97,
1401
1400
  countries: ['Germany', 'Austria', 'Switzerland', 'Belgium', 'Luxembourg', 'Liechtenstein.'],
@@ -1411,6 +1410,7 @@ const LANGUAGES = {
1411
1410
  flag: '🇫🇷',
1412
1411
  flagImg: 'assets/flags/fr.svg',
1413
1412
  code: 'fr',
1413
+ defaultLocale: 'fr-FR',
1414
1414
  i: 4,
1415
1415
  llmKnowledge: 96,
1416
1416
  countries: ['France', 'Canada', 'Belgium', 'Switzerland', 'Haiti', 'Ivory Coast', 'Senegal', 'Cameroon', 'Madagascar', 'and many others.'],
@@ -1426,6 +1426,7 @@ const LANGUAGES = {
1426
1426
  flag: '🇮🇹',
1427
1427
  flagImg: 'assets/flags/it.svg',
1428
1428
  code: 'it',
1429
+ defaultLocale: 'it-IT',
1429
1430
  i: 6,
1430
1431
  llmKnowledge: 93,
1431
1432
  countries: ['Italy', 'Switzerland', 'San Marino', 'Vatican City.'],
@@ -1441,6 +1442,7 @@ const LANGUAGES = {
1441
1442
  flag: '🇧🇷',
1442
1443
  flagImg: 'assets/flags/br.svg',
1443
1444
  code: 'pt',
1445
+ defaultLocale: 'pt-BR',
1444
1446
  i: 7,
1445
1447
  llmKnowledge: 92,
1446
1448
  countries: ['Portugal', 'Brazil', 'Angola', 'Mozambique', 'Cape Verde', 'Guinea-Bissau', 'Sao Tome and Principe', 'East Timor', 'Macau.'],
@@ -1456,6 +1458,7 @@ const LANGUAGES = {
1456
1458
  flag: '🇯🇵',
1457
1459
  flagImg: 'assets/flags/jp.svg',
1458
1460
  code: 'ja',
1461
+ defaultLocale: 'ja-JP',
1459
1462
  i: 8,
1460
1463
  llmKnowledge: 91,
1461
1464
  countries: ['Japan.'],
@@ -1471,6 +1474,7 @@ const LANGUAGES = {
1471
1474
  flag: '🇳🇱',
1472
1475
  flagImg: 'assets/flags/nl.svg',
1473
1476
  code: 'nl',
1477
+ defaultLocale: 'nl-NL',
1474
1478
  i: 9,
1475
1479
  llmKnowledge: 90,
1476
1480
  countries: ['Netherlands', 'Belgium', 'Suriname', 'Aruba', 'Curaçao', 'Sint Maarten.'],
@@ -1487,6 +1491,7 @@ const LANGUAGES = {
1487
1491
  flag: '🇨🇳',
1488
1492
  flagImg: 'assets/flags/cn.svg',
1489
1493
  code: 'zh',
1494
+ defaultLocale: 'zh-CN',
1490
1495
  i: 5,
1491
1496
  llmKnowledge: 94,
1492
1497
  countries: ['China', 'Singapore', 'Taiwan.'],
@@ -1503,6 +1508,7 @@ const LANGUAGES = {
1503
1508
  flag: '🇷🇺',
1504
1509
  flagImg: 'assets/flags/ru.svg',
1505
1510
  code: 'ru',
1511
+ defaultLocale: 'ru-RU',
1506
1512
  i: 10, // Adjusted index
1507
1513
  llmKnowledge: 89,
1508
1514
  countries: ['Russia', 'Belarus', 'Kazakhstan', 'Kyrgyzstan', 'Tajikistan (co-official)', 'Abkhazia', 'South Ossetia', 'Transnistria.'],
@@ -1519,6 +1525,7 @@ const LANGUAGES = {
1519
1525
  flag: '🇰🇷',
1520
1526
  flagImg: 'assets/flags/kr.svg',
1521
1527
  code: 'ko',
1528
+ defaultLocale: 'ko-KR',
1522
1529
  i: 11,
1523
1530
  llmKnowledge: 87,
1524
1531
  countries: ['South Korea', 'North Korea.'],
@@ -1535,6 +1542,7 @@ const LANGUAGES = {
1535
1542
  flag: '🇵🇱',
1536
1543
  flagImg: 'assets/flags/pl.svg',
1537
1544
  code: 'pl',
1545
+ defaultLocale: 'pl-PL',
1538
1546
  i: 12,
1539
1547
  llmKnowledge: 86,
1540
1548
  countries: ['Poland.'],
@@ -1551,6 +1559,7 @@ const LANGUAGES = {
1551
1559
  flag: '🇸🇪',
1552
1560
  flagImg: 'assets/flags/se.svg',
1553
1561
  code: 'sv',
1562
+ defaultLocale: 'sv-SE',
1554
1563
  i: 13,
1555
1564
  llmKnowledge: 85,
1556
1565
  countries: ['Sweden', 'Finland (co-official).'],
@@ -1567,6 +1576,7 @@ const LANGUAGES = {
1567
1576
  flag: '🇹🇷',
1568
1577
  flagImg: 'assets/flags/tr.svg',
1569
1578
  code: 'tr',
1579
+ defaultLocale: 'tr-TR',
1570
1580
  i: 14,
1571
1581
  llmKnowledge: 84,
1572
1582
  countries: ['Turkey', 'Cyprus (North).'],
@@ -1583,6 +1593,7 @@ const LANGUAGES = {
1583
1593
  flag: '🇸🇦',
1584
1594
  flagImg: 'assets/flags/sa.svg',
1585
1595
  code: 'ar',
1596
+ defaultLocale: 'ar-SA',
1586
1597
  i: 15,
1587
1598
  llmKnowledge: 83,
1588
1599
  countries: [
@@ -1625,6 +1636,7 @@ const LANGUAGES = {
1625
1636
  flag: '🇻🇳',
1626
1637
  flagImg: 'assets/flags/vn.svg',
1627
1638
  code: 'vi',
1639
+ defaultLocale: 'vi-VN',
1628
1640
  i: 16,
1629
1641
  llmKnowledge: 82,
1630
1642
  countries: ['Vietnam.'],
@@ -1641,6 +1653,7 @@ const LANGUAGES = {
1641
1653
  flag: '🇮🇩',
1642
1654
  flagImg: 'assets/flags/id.svg',
1643
1655
  code: 'id',
1656
+ defaultLocale: 'id-ID',
1644
1657
  i: 17,
1645
1658
  llmKnowledge: 81,
1646
1659
  countries: ['Indonesia.'],
@@ -1657,6 +1670,7 @@ const LANGUAGES = {
1657
1670
  flag: '🇩🇰',
1658
1671
  flagImg: 'assets/flags/dk.svg',
1659
1672
  code: 'da',
1673
+ defaultLocale: 'da-DK',
1660
1674
  i: 18,
1661
1675
  llmKnowledge: 80,
1662
1676
  countries: ['Denmark', 'Faroe Islands (co-official)', 'Greenland (co-official).'],
@@ -1673,6 +1687,7 @@ const LANGUAGES = {
1673
1687
  flag: '🇳🇴',
1674
1688
  flagImg: 'assets/flags/no.svg',
1675
1689
  code: 'no',
1690
+ defaultLocale: 'no-NO',
1676
1691
  i: 19,
1677
1692
  llmKnowledge: 79,
1678
1693
  countries: ['Norway.'],
@@ -1689,6 +1704,7 @@ const LANGUAGES = {
1689
1704
  flag: '🇫🇮',
1690
1705
  flagImg: 'assets/flags/fi.svg',
1691
1706
  code: 'fi',
1707
+ defaultLocale: 'fi-FI',
1692
1708
  i: 20,
1693
1709
  llmKnowledge: 78,
1694
1710
  countries: ['Finland.'],
@@ -1705,6 +1721,7 @@ const LANGUAGES = {
1705
1721
  flag: '🇨🇿',
1706
1722
  flagImg: 'assets/flags/cz.svg',
1707
1723
  code: 'cs',
1724
+ defaultLocale: 'cs-CZ',
1708
1725
  i: 21,
1709
1726
  llmKnowledge: 77,
1710
1727
  countries: ['Czech Republic.'],
@@ -1721,6 +1738,7 @@ const LANGUAGES = {
1721
1738
  flag: '🇬🇷',
1722
1739
  flagImg: 'assets/flags/gr.svg',
1723
1740
  code: 'el',
1741
+ defaultLocale: 'el-GR',
1724
1742
  i: 22,
1725
1743
  llmKnowledge: 76,
1726
1744
  countries: ['Greece', 'Cyprus.'],
@@ -1737,6 +1755,7 @@ const LANGUAGES = {
1737
1755
  flag: '🇭🇺',
1738
1756
  flagImg: 'assets/flags/hu.svg',
1739
1757
  code: 'hu',
1758
+ defaultLocale: 'hu-HU',
1740
1759
  i: 23,
1741
1760
  llmKnowledge: 75,
1742
1761
  countries: ['Hungary.'],
@@ -1753,6 +1772,7 @@ const LANGUAGES = {
1753
1772
  flag: '🇷🇴',
1754
1773
  flagImg: 'assets/flags/ro.svg',
1755
1774
  code: 'ro',
1775
+ defaultLocale: 'ro-RO',
1756
1776
  i: 24,
1757
1777
  llmKnowledge: 74,
1758
1778
  countries: ['Romania', 'Moldova (as Moldovan).'],
@@ -1769,6 +1789,7 @@ const LANGUAGES = {
1769
1789
  flag: '🇺🇦',
1770
1790
  flagImg: 'assets/flags/ua.svg',
1771
1791
  code: 'uk',
1792
+ defaultLocale: 'uk-UA',
1772
1793
  i: 25,
1773
1794
  llmKnowledge: 73,
1774
1795
  countries: ['Ukraine.'],
@@ -1785,6 +1806,7 @@ const LANGUAGES = {
1785
1806
  flag: '🇮🇱',
1786
1807
  flagImg: 'assets/flags/il.svg',
1787
1808
  code: 'he',
1809
+ defaultLocale: 'he-IL',
1788
1810
  i: 26,
1789
1811
  llmKnowledge: 72,
1790
1812
  countries: ['Israel.'],
@@ -1801,6 +1823,7 @@ const LANGUAGES = {
1801
1823
  flag: '🇹🇭',
1802
1824
  flagImg: 'assets/flags/th.svg',
1803
1825
  code: 'th',
1826
+ defaultLocale: 'th-TH',
1804
1827
  i: 27,
1805
1828
  llmKnowledge: 71,
1806
1829
  countries: ['Thailand.'],
@@ -1817,6 +1840,7 @@ const LANGUAGES = {
1817
1840
  flag: '🇮🇳',
1818
1841
  flagImg: 'assets/flags/in.svg',
1819
1842
  code: 'hi',
1843
+ defaultLocale: 'hi-IN',
1820
1844
  i: 28,
1821
1845
  llmKnowledge: 70,
1822
1846
  countries: ['India (co-official)', 'Fiji (co-official).'],
@@ -1833,6 +1857,7 @@ const LANGUAGES = {
1833
1857
  flag: '🇪🇸',
1834
1858
  flagImg: 'assets/flags/es.svg',
1835
1859
  code: 'ca',
1860
+ defaultLocale: 'ca-ES',
1836
1861
  i: 29,
1837
1862
  llmKnowledge: 69,
1838
1863
  countries: ['Spain (Catalonia, Valencia, Balearic Islands)', 'Andorra.'],
@@ -1849,6 +1874,7 @@ const LANGUAGES = {
1849
1874
  flag: '🇧🇬',
1850
1875
  flagImg: 'assets/flags/bg.svg',
1851
1876
  code: 'bg',
1877
+ defaultLocale: 'bg-BG',
1852
1878
  i: 30,
1853
1879
  llmKnowledge: 68,
1854
1880
  countries: ['Bulgaria.'],
@@ -1865,6 +1891,7 @@ const LANGUAGES = {
1865
1891
  flag: '🇺🇳', // Usando la bandera de la ONU por su naturaleza internacional
1866
1892
  flagImg: 'assets/flags/eo.svg',
1867
1893
  code: 'eo',
1894
+ defaultLocale: 'eo',
1868
1895
  i: 59,
1869
1896
  llmKnowledge: 90,
1870
1897
  countries: ['Worldwide (constructed language)'],
@@ -1881,6 +1908,7 @@ const LANGUAGES = {
1881
1908
  flag: '🇺🇳', // Usando la bandera de la ONU por su naturaleza internacional
1882
1909
  flagImg: 'assets/flags/ia.svg',
1883
1910
  code: 'ia',
1911
+ defaultLocale: 'ia',
1884
1912
  i: 60,
1885
1913
  llmKnowledge: 85,
1886
1914
  countries: ['Worldwide (constructed language)'],
@@ -1897,6 +1925,7 @@ const LANGUAGES = {
1897
1925
  flag: '🇭🇷',
1898
1926
  flagImg: 'assets/flags/hr.svg',
1899
1927
  code: 'hr',
1928
+ defaultLocale: 'hr-HR',
1900
1929
  i: 31,
1901
1930
  llmKnowledge: 67,
1902
1931
  countries: ['Croatia', 'Bosnia and Herzegovina (co-official)', 'Serbia (Vojvodina).'],
@@ -1913,6 +1942,7 @@ const LANGUAGES = {
1913
1942
  flag: '🇸🇰',
1914
1943
  flagImg: 'assets/flags/sk.svg',
1915
1944
  code: 'sk',
1945
+ defaultLocale: 'sk-SK',
1916
1946
  i: 32,
1917
1947
  llmKnowledge: 66,
1918
1948
  countries: ['Slovakia.'],
@@ -1929,6 +1959,7 @@ const LANGUAGES = {
1929
1959
  flag: '🇵🇭',
1930
1960
  flagImg: 'assets/flags/ph.svg',
1931
1961
  code: 'fil',
1962
+ defaultLocale: 'fil-PH',
1932
1963
  i: 33,
1933
1964
  llmKnowledge: 65,
1934
1965
  countries: ['Philippines (co-official).'],
@@ -1946,6 +1977,7 @@ const LANGUAGES = {
1946
1977
  flag: '🇵🇭',
1947
1978
  flagImg: 'assets/flags/ph.svg',
1948
1979
  code: 'tl',
1980
+ defaultLocale: 'tl-PH',
1949
1981
  i: 34,
1950
1982
  llmKnowledge: 64,
1951
1983
  countries: ['Philippines (base of Filipino).'],
@@ -1962,6 +1994,7 @@ const LANGUAGES = {
1962
1994
  flag: '🇱🇹',
1963
1995
  flagImg: 'assets/flags/lt.svg',
1964
1996
  code: 'lt',
1997
+ defaultLocale: 'lt-LT',
1965
1998
  i: 35,
1966
1999
  llmKnowledge: 63,
1967
2000
  countries: ['Lithuania.'],
@@ -1978,6 +2011,7 @@ const LANGUAGES = {
1978
2011
  flag: '🇱🇻',
1979
2012
  flagImg: 'assets/flags/lv.svg',
1980
2013
  code: 'lv',
2014
+ defaultLocale: 'lv-LV',
1981
2015
  i: 36,
1982
2016
  llmKnowledge: 62,
1983
2017
  countries: ['Latvia.'],
@@ -1994,6 +2028,7 @@ const LANGUAGES = {
1994
2028
  flag: '🇸🇮',
1995
2029
  flagImg: 'assets/flags/si.svg',
1996
2030
  code: 'sl',
2031
+ defaultLocale: 'sl-SI',
1997
2032
  i: 37,
1998
2033
  llmKnowledge: 61,
1999
2034
  countries: ['Slovenia.'],
@@ -2010,6 +2045,7 @@ const LANGUAGES = {
2010
2045
  flag: '🇪🇪',
2011
2046
  flagImg: 'assets/flags/ee.svg',
2012
2047
  code: 'et',
2048
+ defaultLocale: 'et-EE',
2013
2049
  i: 38,
2014
2050
  llmKnowledge: 60,
2015
2051
  countries: ['Estonia.'],
@@ -2026,6 +2062,7 @@ const LANGUAGES = {
2026
2062
  flag: '🇲🇾',
2027
2063
  flagImg: 'assets/flags/my.svg',
2028
2064
  code: 'ms',
2065
+ defaultLocale: 'ms-MY',
2029
2066
  i: 39,
2030
2067
  llmKnowledge: 59,
2031
2068
  countries: ['Malaysia', 'Brunei', 'Singapore (co-official).'],
@@ -2042,6 +2079,7 @@ const LANGUAGES = {
2042
2079
  flag: '🇹🇿',
2043
2080
  flagImg: 'assets/flags/tz.svg',
2044
2081
  code: 'sw',
2082
+ defaultLocale: 'sw-TZ',
2045
2083
  i: 40,
2046
2084
  llmKnowledge: 58,
2047
2085
  countries: ['Tanzania', 'Kenya', 'Uganda', 'Rwanda', 'Democratic Republic of the Congo (national language).'],
@@ -2058,6 +2096,7 @@ const LANGUAGES = {
2058
2096
  flag: '🇮🇷',
2059
2097
  flagImg: 'assets/flags/ir.svg',
2060
2098
  code: 'fa',
2099
+ defaultLocale: 'fa-IR',
2061
2100
  i: 41,
2062
2101
  llmKnowledge: 57,
2063
2102
  countries: ['Iran', 'Afghanistan (as Dari)', 'Tajikistan (as Tajik).'],
@@ -2074,6 +2113,7 @@ const LANGUAGES = {
2074
2113
  flag: '🇧🇩',
2075
2114
  flagImg: 'assets/flags/bd.svg',
2076
2115
  code: 'bn',
2116
+ defaultLocale: 'bn-BD',
2077
2117
  i: 42,
2078
2118
  llmKnowledge: 56,
2079
2119
  countries: ['Bangladesh', 'India (West Bengal, Tripura).'],
@@ -2089,6 +2129,7 @@ const LANGUAGES = {
2089
2129
  flag: '🇵🇰',
2090
2130
  flagImg: 'assets/flags/pk.svg',
2091
2131
  code: 'ur',
2132
+ defaultLocale: 'ur-PK',
2092
2133
  i: 43,
2093
2134
  llmKnowledge: 55,
2094
2135
  countries: ['Pakistan (co-official)', 'India (recognized).'],
@@ -2104,6 +2145,7 @@ const LANGUAGES = {
2104
2145
  flag: '🇷🇸',
2105
2146
  flagImg: 'assets/flags/rs.svg',
2106
2147
  code: 'sr',
2148
+ defaultLocale: 'sr-RS',
2107
2149
  i: 44,
2108
2150
  llmKnowledge: 54,
2109
2151
  countries: ['Serbia', 'Bosnia and Herzegovina (co-official)', 'Montenegro (co-official)', 'Kosovo (co-official).'],
@@ -2119,6 +2161,7 @@ const LANGUAGES = {
2119
2161
  flag: '🇮🇸',
2120
2162
  flagImg: 'assets/flags/is.svg',
2121
2163
  code: 'is',
2164
+ defaultLocale: 'is-IS',
2122
2165
  i: 45,
2123
2166
  llmKnowledge: 53,
2124
2167
  countries: ['Iceland.'],
@@ -2134,6 +2177,7 @@ const LANGUAGES = {
2134
2177
  flag: '🇱🇰',
2135
2178
  flagImg: 'assets/flags/lk.svg',
2136
2179
  code: 'ta',
2180
+ defaultLocale: 'ta-LK',
2137
2181
  i: 46,
2138
2182
  llmKnowledge: 52,
2139
2183
  countries: ['Sri Lanka', 'Singapore', 'India (Tamil Nadu, Puducherry).'],
@@ -2149,6 +2193,7 @@ const LANGUAGES = {
2149
2193
  flag: '🇮🇳',
2150
2194
  flagImg: 'assets/flags/in.svg',
2151
2195
  code: 'mr',
2196
+ defaultLocale: 'mr-IN',
2152
2197
  i: 47,
2153
2198
  llmKnowledge: 51,
2154
2199
  countries: ['India (Maharashtra).'],
@@ -2164,6 +2209,7 @@ const LANGUAGES = {
2164
2209
  flag: '🇲🇲',
2165
2210
  flagImg: 'assets/flags/mm.svg',
2166
2211
  code: 'my',
2212
+ defaultLocale: 'my-MM',
2167
2213
  i: 48,
2168
2214
  llmKnowledge: 50,
2169
2215
  countries: ['Myanmar.'],
@@ -2179,6 +2225,7 @@ const LANGUAGES = {
2179
2225
  flag: '🏴󠁧󠁢󠁷󠁬󠁳󠁿',
2180
2226
  flagImg: 'assets/flags/cy.svg',
2181
2227
  code: 'cy',
2228
+ defaultLocale: 'cy-GB',
2182
2229
  i: 49,
2183
2230
  llmKnowledge: 49,
2184
2231
  countries: ['United Kingdom (Wales).'],
@@ -2194,6 +2241,7 @@ const LANGUAGES = {
2194
2241
  flag: '🇳🇬',
2195
2242
  flagImg: 'assets/flags/ng.svg',
2196
2243
  code: 'ha',
2244
+ defaultLocale: 'ha-NG',
2197
2245
  i: 50,
2198
2246
  llmKnowledge: 48,
2199
2247
  countries: ['Nigeria (major language)', 'Niger', 'Ghana', 'Cameroon', 'Benin', 'Chad', 'Sudan.'],
@@ -2209,6 +2257,7 @@ const LANGUAGES = {
2209
2257
  flag: '🇪🇸',
2210
2258
  flagImg: 'assets/flags/es.svg',
2211
2259
  code: 'eu',
2260
+ defaultLocale: 'eu-ES',
2212
2261
  i: 51,
2213
2262
  llmKnowledge: 47,
2214
2263
  countries: ['Spain (Basque Country, Navarre)', 'France (French Basque Country).'],
@@ -2224,6 +2273,7 @@ const LANGUAGES = {
2224
2273
  flag: '🇮🇪',
2225
2274
  flagImg: 'assets/flags/ie.svg',
2226
2275
  code: 'ga',
2276
+ defaultLocale: 'ga-IE',
2227
2277
  i: 52,
2228
2278
  llmKnowledge: 46,
2229
2279
  countries: ['Ireland', 'United Kingdom (Northern Ireland).'],
@@ -2239,6 +2289,7 @@ const LANGUAGES = {
2239
2289
  flag: '🇵🇰',
2240
2290
  flagImg: 'assets/flags/pk.svg',
2241
2291
  code: 'sd',
2292
+ defaultLocale: 'sd-PK',
2242
2293
  i: 53,
2243
2294
  llmKnowledge: 45,
2244
2295
  countries: ['Pakistan (Sindh)', 'India (recognized).'],
@@ -2254,6 +2305,7 @@ const LANGUAGES = {
2254
2305
  flag: '🇪🇹',
2255
2306
  flagImg: 'assets/flags/et.svg',
2256
2307
  code: 'am',
2308
+ defaultLocale: 'am-ET',
2257
2309
  i: 54,
2258
2310
  llmKnowledge: 44,
2259
2311
  countries: ['Ethiopia.'],
@@ -2269,6 +2321,7 @@ const LANGUAGES = {
2269
2321
  flag: '🇮🇩',
2270
2322
  flagImg: 'assets/flags/id.svg',
2271
2323
  code: 'jv',
2324
+ defaultLocale: 'jv-ID',
2272
2325
  i: 55,
2273
2326
  llmKnowledge: 43,
2274
2327
  countries: ['Indonesia (important regional language).'],
@@ -2284,6 +2337,7 @@ const LANGUAGES = {
2284
2337
  flag: '🇰🇭',
2285
2338
  flagImg: 'assets/flags/kh.svg',
2286
2339
  code: 'km',
2340
+ defaultLocale: 'km-KH',
2287
2341
  i: 56,
2288
2342
  llmKnowledge: 42,
2289
2343
  countries: ['Cambodia.'],
@@ -2299,6 +2353,7 @@ const LANGUAGES = {
2299
2353
  flag: '🇳🇬',
2300
2354
  flagImg: 'assets/flags/ng.svg',
2301
2355
  code: 'yo',
2356
+ defaultLocale: 'yo-NG',
2302
2357
  i: 57,
2303
2358
  llmKnowledge: 41,
2304
2359
  countries: ['Nigeria', 'Benin', 'Togo.'],
@@ -2314,6 +2369,7 @@ const LANGUAGES = {
2314
2369
  flag: '🇪🇸',
2315
2370
  flagImg: 'assets/flags/es.svg',
2316
2371
  code: 'gl',
2372
+ defaultLocale: 'gl-ES',
2317
2373
  i: 58,
2318
2374
  llmKnowledge: 40,
2319
2375
  countries: ['Spain (Galicia).'],
@@ -2325,7 +2381,7 @@ const LANGUAGES = {
2325
2381
  speakers: 2400000,
2326
2382
  },
2327
2383
  };
2328
- function getLangDesc(langCode, lang) {
2384
+ function getLangDesc(langCode, lang = 'en') {
2329
2385
  return LANGUAGES[langCode]?.translations[lang] || langCode;
2330
2386
  }
2331
2387
  function getSupportedLanguageOptions(lang = 'es') {
@@ -2479,6 +2535,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
2479
2535
  }]
2480
2536
  }] });
2481
2537
 
2538
+ const AppHttpCode = {
2539
+ GoodRefreshToken: 211,
2540
+ GoodPlanExpired: 212,
2541
+ ErrorRefreshToken: 411,
2542
+ GoodWelcome: 213, // welcome to premium
2543
+ ErrorAndLogout: 412,
2544
+ };
2482
2545
  /**
2483
2546
  * Injection token for HttpCoreService configuration
2484
2547
  */
@@ -2772,6 +2835,7 @@ class HttpCoreService {
2772
2835
  }
2773
2836
  /**
2774
2837
  * Upload a file to the specified service
2838
+ * @Deprecated use postFile
2775
2839
  * @param service The service endpoint
2776
2840
  * @param file The file to upload
2777
2841
  * @param metadata Optional metadata to send with the file
@@ -2798,6 +2862,34 @@ class HttpCoreService {
2798
2862
  throw error;
2799
2863
  }
2800
2864
  }
2865
+ /**
2866
+ * Upload a file to the specified service
2867
+ * @param service The service endpoint
2868
+ * @param file The file to upload
2869
+ * @param metadata Optional metadata to send with the file
2870
+ * @param host The host to use (primary or secondary)
2871
+ * @returns A promise with the response
2872
+ */
2873
+ async postFile({ service, file, metadata, host }) {
2874
+ this.isLoading.set(true);
2875
+ try {
2876
+ const url = this.getHostUrl(host) + '/' + service;
2877
+ const formData = new FormData();
2878
+ formData.append('file', file);
2879
+ let headers = {};
2880
+ if (metadata) {
2881
+ headers = { metadata: JSON.stringify(metadata) };
2882
+ }
2883
+ const response$ = this.httpClient.post(url, formData, { headers });
2884
+ const result = await lastValueFrom(response$);
2885
+ this.isLoading.set(false);
2886
+ return result;
2887
+ }
2888
+ catch (error) {
2889
+ this.isLoading.set(false);
2890
+ throw error;
2891
+ }
2892
+ }
2801
2893
  /**
2802
2894
  * Download a file from the specified service
2803
2895
  * @param service The service endpoint
@@ -3035,6 +3127,11 @@ class EntityCommunicationService {
3035
3127
  query(filterConfig) {
3036
3128
  return this.httpService.postHttp({ service: `api/${this.serviceName}/query`, data: filterConfig, host: this.customHost });
3037
3129
  }
3130
+ update(id, update) {
3131
+ // NEW METHOD, i'm not used yet.
3132
+ // 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...}
3133
+ return this.httpService.putHttp({ service: `api/${this.serviceName}/${id}`, data: update, host: this.customHost });
3134
+ }
3038
3135
  partialUpdate(id, partialUpdates) {
3039
3136
  // In backend object is flattened, so Convert nested objects to dot notation eg. { "video.captions.remotion": captions.captions }
3040
3137
  return this.httpService.putHttp({ service: `api/${this.serviceName}/${id}`, data: partialUpdates, host: this.customHost });
@@ -3117,44 +3214,96 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
3117
3214
  }]
3118
3215
  }], ctorParameters: () => [] });
3119
3216
 
3217
+ class AudioNotificationService {
3218
+ playFinishNotification() {
3219
+ const audio = new Audio('assets/sounds/accomplished.mp3');
3220
+ audio.load();
3221
+ audio.play();
3222
+ }
3223
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AudioNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3224
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AudioNotificationService, providedIn: 'root' }); }
3225
+ }
3226
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: AudioNotificationService, decorators: [{
3227
+ type: Injectable,
3228
+ args: [{
3229
+ providedIn: 'root',
3230
+ }]
3231
+ }] });
3232
+
3233
+ var MoodState;
3234
+ (function (MoodState) {
3235
+ MoodState["HAPPY"] = "happy";
3236
+ MoodState["SAD"] = "sad";
3237
+ MoodState["ANGRY"] = "angry";
3238
+ MoodState["FEAR"] = "fear";
3239
+ MoodState["SURPRISED"] = "surprised";
3240
+ MoodState["DISGUSTED"] = "disgusted";
3241
+ MoodState["PROUD"] = "proud";
3242
+ MoodState["ASHAMED"] = "ashamed";
3243
+ MoodState["GUILTY"] = "guilty";
3244
+ MoodState["JEALOUS"] = "jealous";
3245
+ MoodState["LOVE"] = "love";
3246
+ MoodState["CONTEMPT"] = "contempt";
3247
+ MoodState["COMIC"] = "comic";
3248
+ MoodState["BLUSHING"] = "blushing";
3249
+ MoodState["CONFUSED"] = "confused";
3250
+ MoodState["CURIOUS"] = "curious";
3251
+ MoodState["BORED"] = "bored";
3252
+ MoodState["FRUSTRATED"] = "frustrated";
3253
+ MoodState["OVERWHELMED"] = "overwhelmed";
3254
+ MoodState["FOCUSED"] = "focused";
3255
+ MoodState["CHALLENGE"] = "challenge";
3256
+ MoodState["SERIOUS"] = "serious";
3257
+ MoodState["SLEEPY"] = "sleepy";
3258
+ MoodState["HORNY"] = "horny";
3259
+ MoodState["ANXIOUS"] = "anxious";
3260
+ MoodState["RELAXED"] = "relaxed";
3261
+ })(MoodState || (MoodState = {}));
3120
3262
  const MoodStateOptions = [
3121
3263
  // Emociones básicas y fundamentales
3122
- { value: 'happy', label: '1) Alegría - Felicidad, gozo, satisfacción', emoji: '😊' },
3123
- { value: 'sad', label: '2) Tristeza - Pena, melancolía, desánimo', emoji: '😢' },
3124
- { value: 'angry', label: '3) Enojo - Ira, furia, irritación', emoji: '😠' },
3125
- { value: 'fear', label: '4) Miedo - Temor, pánico, terror', emoji: '😨' },
3126
- { value: 'surprised', label: '5) Sorpresa - Asombro, desconcierto', emoji: '😮' },
3127
- { value: 'disgusted', label: '6) Asco - Repugnancia, aversión', emoji: '🤢' },
3264
+ { value: MoodState.HAPPY, label: '1) Alegría - Felicidad, gozo, satisfacción', emoji: '😊' },
3265
+ { value: MoodState.SAD, label: '2) Tristeza - Pena, melancolía, desánimo', emoji: '😢' },
3266
+ { value: MoodState.ANGRY, label: '3) Enojo - Ira, furia, irritación', emoji: '😠' },
3267
+ { value: MoodState.FEAR, label: '4) Miedo - Temor, pánico, terror', emoji: '😨' },
3268
+ { value: MoodState.SURPRISED, label: '5) Sorpresa - Asombro, desconcierto', emoji: '😮' },
3269
+ { value: MoodState.DISGUSTED, label: '6) Asco - Repugnancia, aversión', emoji: '🤢' },
3128
3270
  // { value: 'excited', label: '27) Entusiasmo - Emoción, euforia, anticipación' },
3129
3271
  // Emociones sociales y autoconscientes
3130
- { value: 'proud', label: '7) Orgullo - Satisfacción por logros propios o ajenos', emoji: '😎' },
3131
- { value: 'ashamed', label: '8) Vergüenza - Humillado', emoji: '😰' },
3132
- { value: 'guilty', label: '9) Culpa - Remordimiento, arrepentimiento', emoji: '😔' },
3133
- { value: 'jealous', label: '10) Celos - Envidia, desconfianza', emoji: '😒' },
3134
- { value: 'love', label: '11) Amor - Cariño, afecto, ternura', emoji: '❤️' },
3272
+ { value: MoodState.PROUD, label: '7) Orgullo - Satisfacción por logros propios o ajenos', emoji: '😎' },
3273
+ { value: MoodState.ASHAMED, label: '8) Vergüenza - Humillado', emoji: '😰' },
3274
+ { value: MoodState.GUILTY, label: '9) Culpa - Remordimiento, arrepentimiento', emoji: '😔' },
3275
+ { value: MoodState.JEALOUS, label: '10) Celos - Envidia, desconfianza', emoji: '😒' },
3276
+ { value: MoodState.LOVE, label: '11) Amor - Cariño, afecto, ternura', emoji: '❤️' },
3135
3277
  // { value: 'grateful', label: '12) Agradecimiento - Gratitud, aprecio' },
3136
- { value: 'contempt', label: '30) Desprecio - Desdén, menosprecio', emoji: '🙃' },
3137
- { value: 'comic', label: '32) Cómico - Divertido, gracioso', emoji: '😂' },
3138
- { value: 'blushing', label: '33) Apenado - Sonrojado, avergonzado', emoji: '😳' },
3278
+ { value: MoodState.CONTEMPT, label: '30) Desprecio - Desdén, menosprecio', emoji: '🙃' },
3279
+ { value: MoodState.COMIC, label: '32) Cómico - Divertido, gracioso', emoji: '😂' },
3280
+ { value: MoodState.BLUSHING, label: '33) Apenado - Sonrojado, avergonzado', emoji: '😳' },
3139
3281
  // Estados cognitivos y mentales
3140
3282
  // { value: 'neutral', label: '13) Neutral - Calma, imparcialidad' },
3141
- { value: 'confused', label: '14) Confusión - Desorientación, perplejidad', emoji: '😕' },
3142
- { value: 'curious', label: '15) Curiosidad - Interés, intriga, exploración', emoji: '🤔' },
3143
- { value: 'bored', label: '16) Aburrimiento - Desinterés, tedio, apatía', emoji: '😑' },
3283
+ { value: MoodState.CONFUSED, label: '14) Confusión - Desorientación, perplejidad', emoji: '😕' },
3284
+ { value: MoodState.CURIOUS, label: '15) Curiosidad - Interés, intriga, exploración', emoji: '🤔' },
3285
+ { value: MoodState.BORED, label: '16) Aburrimiento - Desinterés, tedio, apatía', emoji: '😑' },
3144
3286
  // { value: 'hopeful', label: '17) Esperanza - Optimismo, fe, expectativa positiva' },
3145
- { value: 'frustrated', label: '18) Frustración - Decepción, impotencia', emoji: '😤' },
3146
- { value: 'overwhelmed', label: '19) Abrumado - Agobio, exceso de carga', emoji: '😫' },
3287
+ { value: MoodState.FRUSTRATED, label: '18) Frustración - Decepción, impotencia', emoji: '😤' },
3288
+ { value: MoodState.OVERWHELMED, label: '19) Abrumado - Agobio, exceso de carga', emoji: '😫' },
3147
3289
  // { value: 'lonely', label: '20) Soledad - Aislamiento, desamparo' },
3148
- { value: 'focused', label: '21) Concentración - Enfoque, atención plena', emoji: '🤓' },
3149
- { value: 'challenge', label: '28) Desafío - Reto, provocación, competitividad', emoji: '😏' },
3290
+ { value: MoodState.FOCUSED, label: '21) Concentración - Enfoque, atención plena', emoji: '🤓' },
3291
+ { value: MoodState.CHALLENGE, label: '28) Desafío - Reto, provocación, competitividad', emoji: '😏' },
3150
3292
  // { value: 'satisfied', label: '29) Satisfacción - Contentamiento, plenitud' },
3151
- { value: 'serious', label: '31) Serenidad - Actitud seria', emoji: '😐' },
3293
+ { value: MoodState.SERIOUS, label: '31) Serenidad - Actitud seria', emoji: '😐' },
3152
3294
  // Estados corporales y fisiológicos
3153
- { value: 'sleepy', label: '22) Cansancio - Somnolencia, agotamiento, fatiga', emoji: '😴' },
3295
+ { value: MoodState.SLEEPY, label: '22) Cansancio - Somnolencia, agotamiento, fatiga', emoji: '😴' },
3154
3296
  // { value: 'energetic', label: '23) Energía - Vitalidad, vigor, dinamismo' },
3155
- { value: 'horny', label: '24) Excitación sexual - Lujuria, deseo sexual', emoji: '😈' },
3156
- { value: 'anxious', label: '25) Ansiedad - Nerviosismo, preocupación, inquietud', emoji: '😟' },
3157
- { value: 'relaxed', label: '26) Relajación - Paz, serenidad, tranquilidad', emoji: '😌' },
3297
+ { value: MoodState.HORNY, label: '24) Excitación sexual - Lujuria, deseo sexual', emoji: '😈' },
3298
+ { value: MoodState.ANXIOUS, label: '25) Ansiedad - Nerviosismo, preocupación, inquietud', emoji: '😟' },
3299
+ { value: MoodState.RELAXED, label: '26) Relajación - Paz, serenidad, tranquilidad', emoji: '😌' },
3300
+ ];
3301
+
3302
+ const CharacterEventActions = [
3303
+ // Emociones básicas y fundamentales
3304
+ { value: 'intro', label: 'Al iniciar la conversación' },
3305
+ { value: 'outro', label: 'Al finalizar la conversación' },
3306
+ { value: 'goalCompleted', label: 'Al completar el objetivo' },
3158
3307
  ];
3159
3308
 
3160
3309
  /*
@@ -3166,5 +3315,5 @@ const MoodStateOptions = [
3166
3315
  * Generated bundle index. Do not edit.
3167
3316
  */
3168
3317
 
3169
- export { APP_CONFIG, AppConfigService, AudioSpeed, AudioSpeedReverse, ChatUserSettings, ConfirmComponent, ConfirmService, DCFilterBarComponent, DCProgressToastComponent, DcAuditableViewerComponent, DcExtensionsViewerComponent, DcLearnableFormComponent, DcLearnableViewerComponent, DcManageableFormComponent, DcManageableViewerComponent, DcReactionsViewerComponent, EModelQuality, EmptyStateComponent, EntityBaseFormComponent, EntityBaseListComponent, EntityCommunicationService, FlagPipe, FormUtilsService, GetPathPipe, HTTP_CORE_CONFIG, HttpCoreService, IAIModel, LANGUAGES, LangDescTranslation, LoadingBarComponent, LoadingBarService, ModelQualityOptions, MoodStateOptions, OptionValue, PaginationBase, PromptService, QuickTableComponent, SUPPORTED_LANGUAGES, TOAST_ALERTS_TOKEN, ToastAlertsAbstractService, UiStateService, availibleFilters, extractJsonFromString, formatCamelCaseString, getLangDesc, getSupportedLanguageOptions, provideToastAlert, sortOptions, sortTypes };
3318
+ export { APP_CONFIG, AppConfigService, AppHttpCode, AudioNotificationService, AudioSpeed, AudioSpeedReverse, CharacterEventActions, ChatUserSettings, ConfirmComponent, ConfirmService, DCFilterBarComponent, DCProgressToastComponent, DcAuditableViewerComponent, DcExtensionsViewerComponent, DcLearnableFormComponent, DcLearnableViewerComponent, DcManageableFormComponent, DcManageableViewerComponent, DcReactionsViewerComponent, EModelQuality, EmptyStateComponent, EntityBaseFormComponent, EntityBaseListComponent, EntityCommunicationService, FlagPipe, FormUtilsService, GetPathPipe, HTTP_CORE_CONFIG, HttpCoreService, IAIModel, LANGUAGES, LangDescTranslation, LoadingBarComponent, LoadingBarService, ModelQualityOptions, MoodState, MoodStateOptions, OptionValue, PaginationBase, PromptService, QuickTableComponent, SUPPORTED_LANGUAGES, TOAST_ALERTS_TOKEN, ToastAlertsAbstractService, UiStateService, availibleFilters, extractJsonFromString, formatCamelCaseString, getLangDesc, getSupportedLanguageOptions, provideToastAlert, sortOptions, sortTypes };
3170
3319
  //# sourceMappingURL=dataclouder-ngx-core.mjs.map