@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.
- package/fesm2022/dataclouder-ngx-core.mjs +189 -40
- package/fesm2022/dataclouder-ngx-core.mjs.map +1 -1
- package/index.d.ts +71 -8
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input,
|
|
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:
|
|
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=\"
|
|
70
|
-
}]
|
|
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:
|
|
3123
|
-
{ value:
|
|
3124
|
-
{ value:
|
|
3125
|
-
{ value:
|
|
3126
|
-
{ value:
|
|
3127
|
-
{ value:
|
|
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:
|
|
3131
|
-
{ value:
|
|
3132
|
-
{ value:
|
|
3133
|
-
{ value:
|
|
3134
|
-
{ value:
|
|
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:
|
|
3137
|
-
{ value:
|
|
3138
|
-
{ value:
|
|
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:
|
|
3142
|
-
{ value:
|
|
3143
|
-
{ value:
|
|
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:
|
|
3146
|
-
{ value:
|
|
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:
|
|
3149
|
-
{ value:
|
|
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:
|
|
3293
|
+
{ value: MoodState.SERIOUS, label: '31) Serenidad - Actitud seria', emoji: '😐' },
|
|
3152
3294
|
// Estados corporales y fisiológicos
|
|
3153
|
-
{ value:
|
|
3295
|
+
{ value: MoodState.SLEEPY, label: '22) Cansancio - Somnolencia, agotamiento, fatiga', emoji: '😴' },
|
|
3154
3296
|
// { value: 'energetic', label: '23) Energía - Vitalidad, vigor, dinamismo' },
|
|
3155
|
-
{ value:
|
|
3156
|
-
{ value:
|
|
3157
|
-
{ value:
|
|
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
|