wm-menu 1.3.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/wm-menu.umd.js +408 -9
- package/bundles/wm-menu.umd.js.map +1 -1
- package/bundles/wm-menu.umd.min.js +2 -2
- package/bundles/wm-menu.umd.min.js.map +1 -1
- package/esm2015/lib/wm-menu/asistente-datos/asistente-datos-api.service.js +52 -0
- package/esm2015/lib/wm-menu/asistente-datos/asistente-datos.component.js +178 -0
- package/esm2015/lib/wm-menu/asistente-datos/reconocimiento-voz.service.js +77 -0
- package/esm2015/lib/wm-menu/services/wm-menu-fuente-iconos.service.js +58 -0
- package/esm2015/lib/wm-menu/services/wm-menu-servicio.service.js +9 -1
- package/esm2015/lib/wm-menu/wm-menu.component.js +37 -5
- package/esm2015/lib/wm-menu.module.js +9 -2
- package/esm2015/wm-menu.js +5 -1
- package/esm5/lib/wm-menu/asistente-datos/asistente-datos-api.service.js +53 -0
- package/esm5/lib/wm-menu/asistente-datos/asistente-datos.component.js +194 -0
- package/esm5/lib/wm-menu/asistente-datos/reconocimiento-voz.service.js +79 -0
- package/esm5/lib/wm-menu/services/wm-menu-fuente-iconos.service.js +45 -0
- package/esm5/lib/wm-menu/services/wm-menu-servicio.service.js +9 -1
- package/esm5/lib/wm-menu/wm-menu.component.js +41 -5
- package/esm5/lib/wm-menu.module.js +9 -2
- package/esm5/wm-menu.js +5 -1
- package/fesm2015/wm-menu.js +395 -7
- package/fesm2015/wm-menu.js.map +1 -1
- package/fesm5/wm-menu.js +405 -7
- package/fesm5/wm-menu.js.map +1 -1
- package/lib/wm-menu/asistente-datos/asistente-datos-api.service.d.ts +26 -0
- package/lib/wm-menu/asistente-datos/asistente-datos.component.d.ts +39 -0
- package/lib/wm-menu/asistente-datos/reconocimiento-voz.service.d.ts +7 -0
- package/lib/wm-menu/services/wm-menu-fuente-iconos.service.d.ts +4 -0
- package/lib/wm-menu/services/wm-menu-servicio.service.d.ts +1 -0
- package/lib/wm-menu/wm-menu.component.d.ts +10 -1
- package/package.json +1 -1
- package/wm-menu.d.ts +4 -0
- package/wm-menu.metadata.json +1 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
|
|
3
|
+
import { ReconocimientoVozService } from './reconocimiento-voz.service';
|
|
4
|
+
import { AsistenteDatosApiService } from './asistente-datos-api.service';
|
|
5
|
+
var AsistenteDatosComponent = /** @class */ (function () {
|
|
6
|
+
function AsistenteDatosComponent(asistenteDatosApiService, reconocimientoVoz) {
|
|
7
|
+
this.asistenteDatosApiService = asistenteDatosApiService;
|
|
8
|
+
this.reconocimientoVoz = reconocimientoVoz;
|
|
9
|
+
// La apertura/cierre del panel la controla el padre (el menú). El panel solo se renderiza
|
|
10
|
+
// cuando `abierto` es true y avisa, vía `cerrarChange`, cuando el usuario toca la X.
|
|
11
|
+
this.abierto = false;
|
|
12
|
+
// Idioma para el reconocimiento de voz (Web Speech API).
|
|
13
|
+
this.idioma = 'es-CO';
|
|
14
|
+
this.cerrarChange = new EventEmitter();
|
|
15
|
+
this.mensajes = [];
|
|
16
|
+
this.borrador = '';
|
|
17
|
+
// Alterna el alto de la caja del mensaje (compacta ↔ expandida), igual que el "pedir cambios"
|
|
18
|
+
// del asistente de IA del generador de formularios (ver filasBorrador / onClickExpandirBorrador).
|
|
19
|
+
this.borradorExpandido = false;
|
|
20
|
+
this.consultando = false;
|
|
21
|
+
// "Gemini" o "Groq" — mismo selector que el asistente de generación de formularios
|
|
22
|
+
// (ver ProveedorIAServicio en el backend).
|
|
23
|
+
this.proveedorSeleccionado = 'Gemini';
|
|
24
|
+
// Dictado por voz (Web Speech API) — sin soporte en Firefox, inconsistente en Safari.
|
|
25
|
+
this.escuchando = false;
|
|
26
|
+
// Preguntas ya verificadas como respondibles hoy (whitelist + contrato de la IA — ver
|
|
27
|
+
// ChatConsultaWhitelistServicio/ChatConsultaPromptServicio en el backend), mostradas como chips
|
|
28
|
+
// de sugerencia en el estado vacío del chat.
|
|
29
|
+
this.chipsSugeridos = [
|
|
30
|
+
'¿Cuántos formularios se diligenciaron hoy?',
|
|
31
|
+
'¿Cuántos formularios se diligenciaron esta semana?',
|
|
32
|
+
'Muéstrame los últimos 10 formularios diligenciados',
|
|
33
|
+
];
|
|
34
|
+
}
|
|
35
|
+
Object.defineProperty(AsistenteDatosComponent.prototype, "urlConsultar", {
|
|
36
|
+
// URL del POST de consulta. Se refleja en el api service (propiedad `url`), que es donde se usa.
|
|
37
|
+
set: function (valor) {
|
|
38
|
+
if (valor) {
|
|
39
|
+
this.asistenteDatosApiService.url = valor;
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
enumerable: true,
|
|
43
|
+
configurable: true
|
|
44
|
+
});
|
|
45
|
+
// El padre abre/cierra el panel; aquí solo se avisa que el usuario pidió cerrarlo (botón X).
|
|
46
|
+
AsistenteDatosComponent.prototype.cerrar = function () {
|
|
47
|
+
this.cerrarChange.emit();
|
|
48
|
+
};
|
|
49
|
+
Object.defineProperty(AsistenteDatosComponent.prototype, "filasBorrador", {
|
|
50
|
+
// Caja del mensaje compacta (1 fila, como era el chat originalmente) ↔ expandida (6 filas).
|
|
51
|
+
// El botón de expandir es el mismo patrón del "pedir cambios" del generador.
|
|
52
|
+
get: function () {
|
|
53
|
+
return this.borradorExpandido ? 6 : 1;
|
|
54
|
+
},
|
|
55
|
+
enumerable: true,
|
|
56
|
+
configurable: true
|
|
57
|
+
});
|
|
58
|
+
AsistenteDatosComponent.prototype.onClickExpandirBorrador = function () {
|
|
59
|
+
this.borradorExpandido = !this.borradorExpandido;
|
|
60
|
+
};
|
|
61
|
+
Object.defineProperty(AsistenteDatosComponent.prototype, "micDisponible", {
|
|
62
|
+
get: function () {
|
|
63
|
+
return this.reconocimientoVoz.estaSoportado();
|
|
64
|
+
},
|
|
65
|
+
enumerable: true,
|
|
66
|
+
configurable: true
|
|
67
|
+
});
|
|
68
|
+
AsistenteDatosComponent.prototype.onClickMicrofono = function () {
|
|
69
|
+
var _this = this;
|
|
70
|
+
if (this.escuchando) {
|
|
71
|
+
this.reconocimientoVoz.detener();
|
|
72
|
+
this.escuchando = false;
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (!this.reconocimientoVoz.estaSoportado()) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
// El resultado del reconocimiento no incluye lo que ya estaba escrito — se guarda antes de
|
|
79
|
+
// empezar y se antepone en cada actualización (que llega con la transcripción COMPLETA de
|
|
80
|
+
// esta sesión de escucha, no un incremento) para no perder lo que ya había en el campo.
|
|
81
|
+
var textoPrevio = this.borrador.trim();
|
|
82
|
+
this.escuchando = true;
|
|
83
|
+
this.reconocimientoVoz.iniciar(this.idioma, function (texto) { return (_this.borrador = textoPrevio ? textoPrevio + " " + texto : texto); }, function () { return (_this.escuchando = false); });
|
|
84
|
+
};
|
|
85
|
+
AsistenteDatosComponent.prototype.onClickEnviar = function (textoPreset) {
|
|
86
|
+
var _this = this;
|
|
87
|
+
var pregunta = ((textoPreset !== null && textoPreset !== void 0 ? textoPreset : this.borrador)).trim();
|
|
88
|
+
if (!pregunta || this.consultando) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
this.mensajes.push({ deUsuario: true, texto: pregunta });
|
|
92
|
+
this.borrador = '';
|
|
93
|
+
// Sin url de consulta no se hace la petición: el usuario ve el mismo error genérico que
|
|
94
|
+
// cuando la API falla.
|
|
95
|
+
if (!this.asistenteDatosApiService.url) {
|
|
96
|
+
this.mensajes.push({
|
|
97
|
+
deUsuario: false,
|
|
98
|
+
texto: 'No se pudo procesar la consulta.',
|
|
99
|
+
esError: true,
|
|
100
|
+
});
|
|
101
|
+
this.scrollAlFinal();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
this.consultando = true;
|
|
105
|
+
this.scrollAlFinal();
|
|
106
|
+
this.asistenteDatosApiService.consultar(pregunta, this.proveedorSeleccionado).subscribe({
|
|
107
|
+
// El tipo (RespuestaAsistenteDatos) se infiere del Observable: importar la interfaz
|
|
108
|
+
// dejaba un import a un símbolo inexistente en el JS de la librería (aviso de rollup).
|
|
109
|
+
next: function (respuesta) {
|
|
110
|
+
var _a;
|
|
111
|
+
_this.consultando = false;
|
|
112
|
+
_this.mensajes.push({
|
|
113
|
+
deUsuario: false,
|
|
114
|
+
descripcion: respuesta.Descripcion,
|
|
115
|
+
resultado: (_a = respuesta.Resultado, (_a !== null && _a !== void 0 ? _a : [])),
|
|
116
|
+
proveedor: respuesta.Proveedor,
|
|
117
|
+
});
|
|
118
|
+
_this.scrollAlFinal();
|
|
119
|
+
},
|
|
120
|
+
error: function (error) {
|
|
121
|
+
var _a;
|
|
122
|
+
_this.consultando = false;
|
|
123
|
+
_this.mensajes.push({
|
|
124
|
+
deUsuario: false,
|
|
125
|
+
texto: ((_a = error) === null || _a === void 0 ? void 0 : _a.Mensaje) || 'No se pudo procesar la consulta.',
|
|
126
|
+
esError: true,
|
|
127
|
+
});
|
|
128
|
+
_this.scrollAlFinal();
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
};
|
|
132
|
+
// El nuevo mensaje recién se refleja en el DOM después del siguiente ciclo de detección de
|
|
133
|
+
// cambios — por eso el scrollTop se ajusta en un setTimeout(0), no inmediatamente después del
|
|
134
|
+
// push, para que scrollHeight ya incluya el mensaje agregado.
|
|
135
|
+
AsistenteDatosComponent.prototype.scrollAlFinal = function () {
|
|
136
|
+
var _this = this;
|
|
137
|
+
setTimeout(function () {
|
|
138
|
+
var _a;
|
|
139
|
+
var elemento = (_a = _this.mensajesContainer) === null || _a === void 0 ? void 0 : _a.nativeElement;
|
|
140
|
+
if (elemento) {
|
|
141
|
+
elemento.scrollTop = elemento.scrollHeight;
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
AsistenteDatosComponent.prototype.columnasDe = function (resultado) {
|
|
146
|
+
return resultado.length ? Object.keys(resultado[0]) : [];
|
|
147
|
+
};
|
|
148
|
+
// El backend devuelve un conteo (ChatConsultaIAServicio.EjecutarConteo) como una sola fila con
|
|
149
|
+
// una sola columna llamada literalmente "Resultado" — se muestra como número grande en vez de
|
|
150
|
+
// como tabla de una celda.
|
|
151
|
+
AsistenteDatosComponent.prototype.esConteo = function (resultado) {
|
|
152
|
+
var _a;
|
|
153
|
+
return ((_a = resultado) === null || _a === void 0 ? void 0 : _a.length) === 1 && Object.keys(resultado[0]).length === 1 && 'Resultado' in resultado[0];
|
|
154
|
+
};
|
|
155
|
+
// Listado con una sola columna (ej. una lista de nombres/ids) — se muestra como texto simple
|
|
156
|
+
// en vez de una tabla de una sola columna repetida.
|
|
157
|
+
AsistenteDatosComponent.prototype.esListaSimple = function (resultado) {
|
|
158
|
+
var _a;
|
|
159
|
+
return ((_a = resultado) === null || _a === void 0 ? void 0 : _a.length) > 0 && !this.esConteo(resultado) && this.columnasDe(resultado).length === 1;
|
|
160
|
+
};
|
|
161
|
+
AsistenteDatosComponent.prototype.textoListaSimple = function (resultado) {
|
|
162
|
+
var columna = this.columnasDe(resultado)[0];
|
|
163
|
+
return resultado.map(function (fila) { return fila[columna]; }).join(', ');
|
|
164
|
+
};
|
|
165
|
+
AsistenteDatosComponent.ctorParameters = function () { return [
|
|
166
|
+
{ type: AsistenteDatosApiService },
|
|
167
|
+
{ type: ReconocimientoVozService }
|
|
168
|
+
]; };
|
|
169
|
+
__decorate([
|
|
170
|
+
ViewChild('mensajesContainer')
|
|
171
|
+
], AsistenteDatosComponent.prototype, "mensajesContainer", void 0);
|
|
172
|
+
__decorate([
|
|
173
|
+
Input()
|
|
174
|
+
], AsistenteDatosComponent.prototype, "abierto", void 0);
|
|
175
|
+
__decorate([
|
|
176
|
+
Input()
|
|
177
|
+
], AsistenteDatosComponent.prototype, "urlConsultar", null);
|
|
178
|
+
__decorate([
|
|
179
|
+
Input()
|
|
180
|
+
], AsistenteDatosComponent.prototype, "idioma", void 0);
|
|
181
|
+
__decorate([
|
|
182
|
+
Output()
|
|
183
|
+
], AsistenteDatosComponent.prototype, "cerrarChange", void 0);
|
|
184
|
+
AsistenteDatosComponent = __decorate([
|
|
185
|
+
Component({
|
|
186
|
+
selector: 'wm-asistente-datos',
|
|
187
|
+
template: "<!-- Panel (abierto) -->\r\n<div class=\"chat-ia-panel\" *ngIf=\"abierto\">\r\n <div class=\"chat-ia-header\">\r\n <div class=\"chat-ia-header-info\">\r\n <div class=\"chat-ia-header-icono\">\r\n <svg width=\"17\" height=\"17\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#fff\" stroke-width=\"1.8\">\r\n <path d=\"M4 5h16v10H9l-4 4V15H4z\"></path>\r\n </svg>\r\n </div>\r\n <div>\r\n <div class=\"chat-ia-titulo\">Preg\u00FAntale a tus Datos</div>\r\n <div class=\"chat-ia-subtitulo\">Consulta tus reportes en lenguaje natural</div>\r\n </div>\r\n </div>\r\n <div class=\"chat-ia-cerrar\" (click)=\"cerrar()\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" stroke=\"#fff\" stroke-width=\"2\" fill=\"none\" stroke-linecap=\"round\">\r\n <path d=\"M6 6l12 12M18 6L6 18\"></path>\r\n </svg>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-ia-mensajes\" #mensajesContainer>\r\n <div class=\"chat-ia-bienvenida-texto\">Hola, soy tu asistente de datos de Snap Forms. Preg\u00FAntame lo que quieras saber sobre tu operaci\u00F3n.</div>\r\n\r\n <div class=\"chat-ia-mensaje\" *ngFor=\"let mensaje of mensajes\" [class.chat-ia-mensaje-usuario]=\"mensaje.deUsuario\">\r\n <div class=\"chat-ia-burbuja\" [class.chat-ia-burbuja-error]=\"mensaje.esError\">\r\n <span *ngIf=\"mensaje.texto\">{{ mensaje.texto }}</span>\r\n\r\n <ng-container *ngIf=\"mensaje.resultado\">\r\n <div class=\"chat-ia-descripcion\" *ngIf=\"mensaje.descripcion\">{{ mensaje.descripcion }}</div>\r\n\r\n <div class=\"chat-ia-sin-resultados\" *ngIf=\"mensaje.resultado.length === 0\">La consulta no encontr\u00F3 resultados.</div>\r\n\r\n <div class=\"chat-ia-stat\" *ngIf=\"esConteo(mensaje.resultado)\">\r\n <div class=\"chat-ia-stat-valor\">{{ mensaje.resultado[0].Resultado | number }}</div>\r\n </div>\r\n\r\n <div class=\"chat-ia-lista-simple\" *ngIf=\"esListaSimple(mensaje.resultado)\">{{ textoListaSimple(mensaje.resultado) }}</div>\r\n\r\n <div class=\"chat-ia-tabla-resultado\" *ngIf=\"mensaje.resultado.length > 0 && !esConteo(mensaje.resultado) && !esListaSimple(mensaje.resultado)\">\r\n <table mat-table [dataSource]=\"mensaje.resultado\">\r\n <ng-container *ngFor=\"let columna of columnasDe(mensaje.resultado)\" [matColumnDef]=\"columna\">\r\n <th mat-header-cell *matHeaderCellDef>{{ columna }}</th>\r\n <td mat-cell *matCellDef=\"let fila\">{{ fila[columna] }}</td>\r\n </ng-container>\r\n <tr mat-header-row *matHeaderRowDef=\"columnasDe(mensaje.resultado)\"></tr>\r\n <tr mat-row *matRowDef=\"let fila; columns: columnasDe(mensaje.resultado);\"></tr>\r\n </table>\r\n </div>\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chat-ia-pensando\" *ngIf=\"consultando\">\r\n <span class=\"chat-ia-dot\"></span><span class=\"chat-ia-dot\"></span><span class=\"chat-ia-dot\"></span>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chips-chat-ia\">\r\n <span class=\"chip-chat-ia\" *ngFor=\"let chip of chipsSugeridos\"\r\n (click)=\"onClickEnviar(chip)\">{{ chip }}</span>\r\n </div>\r\n\r\n <div class=\"chat-ia-entrada\">\r\n <div class=\"chat-ia-caja-entrada\">\r\n <mat-icon fontSet=\"wm-menu-iconos\" class=\"chat-ia-expandir\" (click)=\"onClickExpandirBorrador()\">{{ borradorExpandido ? 'close_fullscreen' : 'open_in_full' }}</mat-icon>\r\n <textarea [rows]=\"filasBorrador\" [(ngModel)]=\"borrador\" (keydown.enter)=\"$event.preventDefault(); onClickEnviar()\"\r\n [class.chat-ia-textarea-expandido]=\"borradorExpandido\"\r\n placeholder=\"Escribe tu pregunta...\"></textarea>\r\n <div class=\"chat-ia-pie-entrada\">\r\n <button class=\"chat-ia-selector-modelo\" [matMenuTriggerFor]=\"menuModeloChatIA\" type=\"button\">\r\n <span *ngIf=\"proveedorSeleccionado === 'Gemini'\">Gemini</span>\r\n <span *ngIf=\"proveedorSeleccionado === 'Groq'\">Groq</span>\r\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M6 9l6 6 6-6\"></path>\r\n </svg>\r\n </button>\r\n <button class=\"chat-ia-microfono\" [class.chat-ia-microfono-activo]=\"escuchando\" *ngIf=\"micDisponible\"\r\n (click)=\"onClickMicrofono()\" type=\"button\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M12 1a3 3 0 0 0-3 3v8a3 3 0 0 0 6 0V4a3 3 0 0 0-3-3z\"></path>\r\n <path d=\"M19 10v2a7 7 0 0 1-14 0v-2\"></path>\r\n <line x1=\"12\" y1=\"19\" x2=\"12\" y2=\"23\"></line>\r\n </svg>\r\n </button>\r\n <button class=\"chat-ia-enviar\" [disabled]=\"!borrador.trim() || consultando\" (click)=\"onClickEnviar()\" type=\"button\">\r\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M12 19V6\"></path>\r\n <path d=\"M5 13l7-7 7 7\"></path>\r\n </svg>\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n\r\n<mat-menu #menuModeloChatIA=\"matMenu\" class=\"menu-modelo-chat-ia\">\r\n <button mat-menu-item [class.opcion-activa]=\"proveedorSeleccionado === 'Gemini'\"\r\n (click)=\"proveedorSeleccionado = 'Gemini'\">\r\n <span>Gemini</span>\r\n <svg *ngIf=\"proveedorSeleccionado === 'Gemini'\" class=\"chat-ia-check\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M20 6L9 17l-5-5\"></path>\r\n </svg>\r\n </button>\r\n <button mat-menu-item [class.opcion-activa]=\"proveedorSeleccionado === 'Groq'\"\r\n (click)=\"proveedorSeleccionado = 'Groq'\">\r\n <span>Groq</span>\r\n <svg *ngIf=\"proveedorSeleccionado === 'Groq'\" class=\"chat-ia-check\" width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"3\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\r\n <path d=\"M20 6L9 17l-5-5\"></path>\r\n </svg>\r\n </button>\r\n</mat-menu>\r\n",
|
|
188
|
+
styles: [":host{position:fixed;right:32px;bottom:32px;z-index:1000;font-family:Roboto,sans-serif}.chat-ia-panel{width:450px;height:650px;max-width:calc(100vw - 48px);max-height:calc(100vh - 96px);background:#fff;border-radius:18px;box-shadow:0 24px 60px rgba(20,25,30,.28);display:flex;flex-direction:column;overflow:hidden}.chat-ia-header{background:linear-gradient(135deg,#7c5ce0,#5f42bd);padding:16px 18px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}.chat-ia-header-info{display:flex;align-items:center;gap:10px;min-width:0}.chat-ia-header-icono{width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.22);display:flex;align-items:center;justify-content:center;flex:none}.chat-ia-titulo{color:#fff;font-size:14px;font-weight:500}.chat-ia-subtitulo{color:rgba(255,255,255,.75);font-size:11px;margin-top:1px}.chat-ia-cerrar{width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:.85;flex:none}.chat-ia-cerrar:hover{opacity:1}.chat-ia-mensajes{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:12px;padding:16px;background:#fbfafc}.chat-ia-mensaje{display:flex}.chat-ia-mensaje .chat-ia-burbuja{max-width:88%;background:#f2eefb;color:#26313a;border-radius:14px 14px 14px 3px;padding:10px 13px;font-size:13px;line-height:1.5}.chat-ia-mensaje .chat-ia-burbuja-error{background:#fdecea;color:#7a1f14}.chat-ia-mensaje.chat-ia-mensaje-usuario{justify-content:flex-end}.chat-ia-mensaje.chat-ia-mensaje-usuario .chat-ia-burbuja{background:#7c5ce0;color:#fff;border-radius:14px 14px 3px}.chat-ia-bienvenida-texto{align-self:flex-start;max-width:88%;background:#f2eefb;color:#26313a;border-radius:14px 14px 14px 3px;padding:10px 13px;font-size:13px;line-height:1.5}.chips-chat-ia{flex:none;display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 10px}.chip-chat-ia{border:1px solid #e7e2f5;background:#f2eefb;color:#5f42bd;border-radius:14px;padding:5px 10px;font-size:11px;cursor:pointer}.chip-chat-ia:hover{background:#e7ddfa}.chat-ia-descripcion{font-size:13px;line-height:1.5;margin-bottom:6px}.chat-ia-sin-resultados{color:#5a5a5a;font-style:italic}.chat-ia-stat{margin-top:4px}.chat-ia-stat-valor{font-size:30px;font-weight:600;color:#5f42bd;line-height:1.15;font-variant-numeric:proportional-nums}.chat-ia-lista-simple,.chat-ia-tabla-resultado{margin-top:4px;background:#fff;border-radius:10px;padding:8px 10px}.chat-ia-lista-simple{font-size:13px;line-height:1.5}.chat-ia-tabla-resultado{overflow-x:auto;max-width:100%;padding:4px 10px}.chat-ia-tabla-resultado table{font-size:12px;background:0 0}.chat-ia-tabla-resultado th.mat-header-cell{color:#6b6478;font-weight:600;padding:0 14px 5px 0;border-bottom:1px solid #f0edf7;white-space:nowrap}.chat-ia-tabla-resultado td.mat-cell{padding:7px 14px 0 0;white-space:nowrap;font-variant-numeric:tabular-nums}.chat-ia-pensando{align-self:flex-start;background:#f2eefb;padding:12px 16px;border-radius:14px 14px 14px 3px;display:flex;gap:5px;flex-shrink:0}.chat-ia-dot{width:6px;height:6px;border-radius:50%;background:#9a93ae;-webkit-animation:1.1s ease-in-out infinite chatIaBlink;animation:1.1s ease-in-out infinite chatIaBlink}.chat-ia-dot:nth-child(2){-webkit-animation-delay:.15s;animation-delay:.15s}.chat-ia-dot:nth-child(3){-webkit-animation-delay:.3s;animation-delay:.3s}@-webkit-keyframes chatIaBlink{0%,100%,80%{opacity:.25}40%{opacity:1}}@keyframes chatIaBlink{0%,100%,80%{opacity:.25}40%{opacity:1}}.chat-ia-entrada{padding:10px 14px 14px;border-top:1px solid #e9f2ee;flex-shrink:0}.chat-ia-caja-entrada{position:relative;background:#f2f7f5;border:1px solid #e6efea;border-radius:18px;padding:10px 12px 8px}.chat-ia-caja-entrada textarea{border:none;outline:0;background:0 0;width:100%;font:inherit;font-size:13.5px;color:#26313a;resize:none;line-height:1.45;max-height:110px;overflow-y:auto;display:block;padding:0 28px 0 0}.chat-ia-caja-entrada textarea.chat-ia-textarea-expandido{max-height:160px}.chat-ia-caja-entrada textarea::-webkit-input-placeholder{color:#9a93ae}.chat-ia-caja-entrada textarea::-moz-placeholder{color:#9a93ae}.chat-ia-caja-entrada textarea:-ms-input-placeholder{color:#9a93ae}.chat-ia-caja-entrada textarea::-ms-input-placeholder{color:#9a93ae}.chat-ia-caja-entrada textarea::placeholder{color:#9a93ae}.chat-ia-expandir{position:absolute;top:8px;right:10px;font-size:17px;height:17px;width:17px;color:#9a9a9a;cursor:pointer}.chat-ia-pie-entrada{display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:8px}.chat-ia-selector-modelo{display:inline-flex;align-items:center;gap:4px;border:none;background:0 0;color:#4e5d57;border-radius:14px;padding:5px 9px;font-size:11.5px;font-weight:600;cursor:pointer}.chat-ia-enviar{width:32px;height:32px;border-radius:50%;border:none;background:#7c5ce0;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}.chat-ia-enviar:disabled{background:#dce6e1;color:#a9bab3;cursor:default}.chat-ia-microfono{width:28px;height:28px;border-radius:50%;border:none;background:0 0;color:#6b6478;display:flex;align-items:center;justify-content:center;cursor:pointer;flex:none}.chat-ia-microfono:hover{background:#f2eefb}.chat-ia-microfono.chat-ia-microfono-activo{color:#fff;background:#e05a5a;-webkit-animation:1.1s ease-in-out infinite chatIaBlink;animation:1.1s ease-in-out infinite chatIaBlink}::ng-deep .mat-menu-panel.menu-modelo-chat-ia{min-width:132px;border:1px solid #e6efea;border-radius:10px;box-shadow:0 12px 26px rgba(20,25,30,.16)}::ng-deep .mat-menu-panel.menu-modelo-chat-ia .mat-menu-content{padding:4px}::ng-deep .mat-menu-panel.menu-modelo-chat-ia .mat-menu-item{display:flex;align-items:center;justify-content:space-between;gap:8px;height:auto;line-height:normal;padding:7px 10px;font-size:12px;color:#26313a;border-radius:7px}::ng-deep .mat-menu-panel.menu-modelo-chat-ia .mat-menu-item.opcion-activa{background:#f2f7f5}::ng-deep .mat-menu-panel.menu-modelo-chat-ia .mat-menu-item .chat-ia-check{color:#7c5ce0}"]
|
|
189
|
+
})
|
|
190
|
+
], AsistenteDatosComponent);
|
|
191
|
+
return AsistenteDatosComponent;
|
|
192
|
+
}());
|
|
193
|
+
export { AsistenteDatosComponent };
|
|
194
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL3dtLW1lbnUvIiwic291cmNlcyI6WyJsaWIvd20tbWVudS9hc2lzdGVudGUtZGF0b3MvYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBYyxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDOUYsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDeEUsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFnQnpFO0lBd0NJLGlDQUNZLHdCQUFrRCxFQUNsRCxpQkFBMkM7UUFEM0MsNkJBQXdCLEdBQXhCLHdCQUF3QixDQUEwQjtRQUNsRCxzQkFBaUIsR0FBakIsaUJBQWlCLENBQTBCO1FBdkN2RCwwRkFBMEY7UUFDMUYscUZBQXFGO1FBQzVFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFTekIseURBQXlEO1FBQ2hELFdBQU0sR0FBRyxPQUFPLENBQUM7UUFFaEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBRTNDLGFBQVEsR0FBNEIsRUFBRSxDQUFDO1FBQ3ZDLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDckIsOEZBQThGO1FBQzlGLGtHQUFrRztRQUMzRixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFDM0IsbUZBQW1GO1FBQ25GLDJDQUEyQztRQUNwQywwQkFBcUIsR0FBc0IsUUFBUSxDQUFDO1FBQzNELHNGQUFzRjtRQUMvRSxlQUFVLEdBQUcsS0FBSyxDQUFDO1FBRTFCLHNGQUFzRjtRQUN0RixnR0FBZ0c7UUFDaEcsNkNBQTZDO1FBQ3RDLG1CQUFjLEdBQWE7WUFDOUIsNENBQTRDO1lBQzVDLG9EQUFvRDtZQUNwRCxvREFBb0Q7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SUFJOUU7UUFBUixLQUFLLEVBQUU7NERBQWlCO0lBR2hCO1FBQVIsS0FBSyxFQUFFOytEQUlQO0lBR1E7UUFBUixLQUFLLEVBQUU7MkRBQWtCO0lBRWhCO1FBQVQsTUFBTSxFQUFFO2lFQUF5QztJQWpCekMsdUJBQXVCO1FBTG5DLFNBQVMsQ0FBQztZQUNQLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsc25PQUErQzs7U0FFbEQsQ0FBQztPQUNXLHVCQUF1QixDQXlLbkM7SUFBRCw4QkFBQztDQUFBLEFBektELElBeUtDO1NBektZLHVCQUF1QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlIH0gZnJvbSAnLi9yZWNvbm9jaW1pZW50by12b3ouc2VydmljZSc7XHJcbmltcG9ydCB7IEFzaXN0ZW50ZURhdG9zQXBpU2VydmljZSB9IGZyb20gJy4vYXNpc3RlbnRlLWRhdG9zLWFwaS5zZXJ2aWNlJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTWVuc2FqZUFzaXN0ZW50ZURhdG9zIHtcclxuICAgIGRlVXN1YXJpbzogYm9vbGVhbjtcclxuICAgIHRleHRvPzogc3RyaW5nO1xyXG4gICAgZGVzY3JpcGNpb24/OiBzdHJpbmc7XHJcbiAgICByZXN1bHRhZG8/OiBhbnlbXTtcclxuICAgIHByb3ZlZWRvcj86IHN0cmluZztcclxuICAgIGVzRXJyb3I/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnd20tYXNpc3RlbnRlLWRhdG9zJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9hc2lzdGVudGUtZGF0b3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vYXNpc3RlbnRlLWRhdG9zLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBc2lzdGVudGVEYXRvc0NvbXBvbmVudCB7XHJcbiAgICBAVmlld0NoaWxkKCdtZW5zYWplc0NvbnRhaW5lcicpIHByaXZhdGUgbWVuc2FqZXNDb250YWluZXI/OiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PjtcclxuXHJcbiAgICAvLyBMYSBhcGVydHVyYS9jaWVycmUgZGVsIHBhbmVsIGxhIGNvbnRyb2xhIGVsIHBhZHJlIChlbCBtZW7DuikuIEVsIHBhbmVsIHNvbG8gc2UgcmVuZGVyaXphXHJcbiAgICAvLyBjdWFuZG8gYGFiaWVydG9gIGVzIHRydWUgeSBhdmlzYSwgdsOtYSBgY2VycmFyQ2hhbmdlYCwgY3VhbmRvIGVsIHVzdWFyaW8gdG9jYSBsYSBYLlxyXG4gICAgQElucHV0KCkgYWJpZXJ0byA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFVSTCBkZWwgUE9TVCBkZSBjb25zdWx0YS4gU2UgcmVmbGVqYSBlbiBlbCBhcGkgc2VydmljZSAocHJvcGllZGFkIGB1cmxgKSwgcXVlIGVzIGRvbmRlIHNlIHVzYS5cclxuICAgIEBJbnB1dCgpIHNldCB1cmxDb25zdWx0YXIodmFsb3I6IHN0cmluZykge1xyXG4gICAgICAgIGlmICh2YWxvcikge1xyXG4gICAgICAgICAgICB0aGlzLmFzaXN0ZW50ZURhdG9zQXBpU2VydmljZS51cmwgPSB2YWxvcjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSWRpb21hIHBhcmEgZWwgcmVjb25vY2ltaWVudG8gZGUgdm96IChXZWIgU3BlZWNoIEFQSSkuXHJcbiAgICBASW5wdXQoKSBpZGlvbWEgPSAnZXMtQ08nO1xyXG5cclxuICAgIEBPdXRwdXQoKSBjZXJyYXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gICAgcHVibGljIG1lbnNhamVzOiBNZW5zYWplQXNpc3RlbnRlRGF0b3NbXSA9IFtdO1xyXG4gICAgcHVibGljIGJvcnJhZG9yID0gJyc7XHJcbiAgICAvLyBBbHRlcm5hIGVsIGFsdG8gZGUgbGEgY2FqYSBkZWwgbWVuc2FqZSAoY29tcGFjdGEg4oaUIGV4cGFuZGlkYSksIGlndWFsIHF1ZSBlbCBcInBlZGlyIGNhbWJpb3NcIlxyXG4gICAgLy8gZGVsIGFzaXN0ZW50ZSBkZSBJQSBkZWwgZ2VuZXJhZG9yIGRlIGZvcm11bGFyaW9zICh2ZXIgZmlsYXNCb3JyYWRvciAvIG9uQ2xpY2tFeHBhbmRpckJvcnJhZG9yKS5cclxuICAgIHB1YmxpYyBib3JyYWRvckV4cGFuZGlkbyA9IGZhbHNlO1xyXG4gICAgcHVibGljIGNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAvLyBcIkdlbWluaVwiIG8gXCJHcm9xXCIg4oCUIG1pc21vIHNlbGVjdG9yIHF1ZSBlbCBhc2lzdGVudGUgZGUgZ2VuZXJhY2nDs24gZGUgZm9ybXVsYXJpb3NcclxuICAgIC8vICh2ZXIgUHJvdmVlZG9ySUFTZXJ2aWNpbyBlbiBlbCBiYWNrZW5kKS5cclxuICAgIHB1YmxpYyBwcm92ZWVkb3JTZWxlY2Npb25hZG86ICdHZW1pbmknIHwgJ0dyb3EnID0gJ0dlbWluaSc7XHJcbiAgICAvLyBEaWN0YWRvIHBvciB2b3ogKFdlYiBTcGVlY2ggQVBJKSDigJQgc2luIHNvcG9ydGUgZW4gRmlyZWZveCwgaW5jb25zaXN0ZW50ZSBlbiBTYWZhcmkuXHJcbiAgICBwdWJsaWMgZXNjdWNoYW5kbyA9IGZhbHNlO1xyXG5cclxuICAgIC8vIFByZWd1bnRhcyB5YSB2ZXJpZmljYWRhcyBjb21vIHJlc3BvbmRpYmxlcyBob3kgKHdoaXRlbGlzdCArIGNvbnRyYXRvIGRlIGxhIElBIOKAlCB2ZXJcclxuICAgIC8vIENoYXRDb25zdWx0YVdoaXRlbGlzdFNlcnZpY2lvL0NoYXRDb25zdWx0YVByb21wdFNlcnZpY2lvIGVuIGVsIGJhY2tlbmQpLCBtb3N0cmFkYXMgY29tbyBjaGlwc1xyXG4gICAgLy8gZGUgc3VnZXJlbmNpYSBlbiBlbCBlc3RhZG8gdmFjw61vIGRlbCBjaGF0LlxyXG4gICAgcHVibGljIGNoaXBzU3VnZXJpZG9zOiBzdHJpbmdbXSA9IFtcclxuICAgICAgICAnwr9DdcOhbnRvcyBmb3JtdWxhcmlvcyBzZSBkaWxpZ2VuY2lhcm9uIGhveT8nLFxyXG4gICAgICAgICfCv0N1w6FudG9zIGZvcm11bGFyaW9zIHNlIGRpbGlnZW5jaWFyb24gZXN0YSBzZW1hbmE/JyxcclxuICAgICAgICAnTXXDqXN0cmFtZSBsb3Mgw7psdGltb3MgMTAgZm9ybXVsYXJpb3MgZGlsaWdlbmNpYWRvcycsXHJcbiAgICBdO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlOiBBc2lzdGVudGVEYXRvc0FwaVNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSByZWNvbm9jaW1pZW50b1ZvejogUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlXHJcbiAgICApIHt9XHJcblxyXG4gICAgLy8gRWwgcGFkcmUgYWJyZS9jaWVycmEgZWwgcGFuZWw7IGFxdcOtIHNvbG8gc2UgYXZpc2EgcXVlIGVsIHVzdWFyaW8gcGlkacOzIGNlcnJhcmxvIChib3TDs24gWCkuXHJcbiAgICBjZXJyYXIoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jZXJyYXJDaGFuZ2UuZW1pdCgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENhamEgZGVsIG1lbnNhamUgY29tcGFjdGEgKDEgZmlsYSwgY29tbyBlcmEgZWwgY2hhdCBvcmlnaW5hbG1lbnRlKSDihpQgZXhwYW5kaWRhICg2IGZpbGFzKS5cclxuICAgIC8vIEVsIGJvdMOzbiBkZSBleHBhbmRpciBlcyBlbCBtaXNtbyBwYXRyw7NuIGRlbCBcInBlZGlyIGNhbWJpb3NcIiBkZWwgZ2VuZXJhZG9yLlxyXG4gICAgZ2V0IGZpbGFzQm9ycmFkb3IoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5ib3JyYWRvckV4cGFuZGlkbyA/IDYgOiAxO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2tFeHBhbmRpckJvcnJhZG9yKCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuYm9ycmFkb3JFeHBhbmRpZG8gPSAhdGhpcy5ib3JyYWRvckV4cGFuZGlkbztcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbWljRGlzcG9uaWJsZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5yZWNvbm9jaW1pZW50b1Zvei5lc3RhU29wb3J0YWRvKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGlja01pY3JvZm9ubygpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5lc2N1Y2hhbmRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG9Wb3ouZGV0ZW5lcigpO1xyXG4gICAgICAgICAgICB0aGlzLmVzY3VjaGFuZG8gPSBmYWxzZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKCF0aGlzLnJlY29ub2NpbWllbnRvVm96LmVzdGFTb3BvcnRhZG8oKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBFbCByZXN1bHRhZG8gZGVsIHJlY29ub2NpbWllbnRvIG5vIGluY2x1eWUgbG8gcXVlIHlhIGVzdGFiYSBlc2NyaXRvIOKAlCBzZSBndWFyZGEgYW50ZXMgZGVcclxuICAgICAgICAvLyBlbXBlemFyIHkgc2UgYW50ZXBvbmUgZW4gY2FkYSBhY3R1YWxpemFjacOzbiAocXVlIGxsZWdhIGNvbiBsYSB0cmFuc2NyaXBjacOzbiBDT01QTEVUQSBkZVxyXG4gICAgICAgIC8vIGVzdGEgc2VzacOzbiBkZSBlc2N1Y2hhLCBubyB1biBpbmNyZW1lbnRvKSBwYXJhIG5vIHBlcmRlciBsbyBxdWUgeWEgaGFiw61hIGVuIGVsIGNhbXBvLlxyXG4gICAgICAgIGNvbnN0IHRleHRvUHJldmlvID0gdGhpcy5ib3JyYWRvci50cmltKCk7XHJcbiAgICAgICAgdGhpcy5lc2N1Y2hhbmRvID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvVm96LmluaWNpYXIoXHJcbiAgICAgICAgICAgIHRoaXMuaWRpb21hLFxyXG4gICAgICAgICAgICAodGV4dG8pID0+ICh0aGlzLmJvcnJhZG9yID0gdGV4dG9QcmV2aW8gPyBgJHt0ZXh0b1ByZXZpb30gJHt0ZXh0b31gIDogdGV4dG8pLFxyXG4gICAgICAgICAgICAoKSA9PiAodGhpcy5lc2N1Y2hhbmRvID0gZmFsc2UpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkNsaWNrRW52aWFyKHRleHRvUHJlc2V0Pzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgcHJlZ3VudGEgPSAodGV4dG9QcmVzZXQgPz8gdGhpcy5ib3JyYWRvcikudHJpbSgpO1xyXG4gICAgICAgIGlmICghcHJlZ3VudGEgfHwgdGhpcy5jb25zdWx0YW5kbykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goeyBkZVVzdWFyaW86IHRydWUsIHRleHRvOiBwcmVndW50YSB9KTtcclxuICAgICAgICB0aGlzLmJvcnJhZG9yID0gJyc7XHJcblxyXG4gICAgICAgIC8vIFNpbiB1cmwgZGUgY29uc3VsdGEgbm8gc2UgaGFjZSBsYSBwZXRpY2nDs246IGVsIHVzdWFyaW8gdmUgZWwgbWlzbW8gZXJyb3IgZ2Vuw6lyaWNvIHF1ZVxyXG4gICAgICAgIC8vIGN1YW5kbyBsYSBBUEkgZmFsbGEuXHJcbiAgICAgICAgaWYgKCF0aGlzLmFzaXN0ZW50ZURhdG9zQXBpU2VydmljZS51cmwpIHtcclxuICAgICAgICAgICAgdGhpcy5tZW5zYWplcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB0ZXh0bzogJ05vIHNlIHB1ZG8gcHJvY2VzYXIgbGEgY29uc3VsdGEuJyxcclxuICAgICAgICAgICAgICAgIGVzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jb25zdWx0YW5kbyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zY3JvbGxBbEZpbmFsKCk7XHJcblxyXG4gICAgICAgIHRoaXMuYXNpc3RlbnRlRGF0b3NBcGlTZXJ2aWNlLmNvbnN1bHRhcihwcmVndW50YSwgdGhpcy5wcm92ZWVkb3JTZWxlY2Npb25hZG8pLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIC8vIEVsIHRpcG8gKFJlc3B1ZXN0YUFzaXN0ZW50ZURhdG9zKSBzZSBpbmZpZXJlIGRlbCBPYnNlcnZhYmxlOiBpbXBvcnRhciBsYSBpbnRlcmZhelxyXG4gICAgICAgICAgICAvLyBkZWphYmEgdW4gaW1wb3J0IGEgdW4gc8OtbWJvbG8gaW5leGlzdGVudGUgZW4gZWwgSlMgZGUgbGEgbGlicmVyw61hIChhdmlzbyBkZSByb2xsdXApLlxyXG4gICAgICAgICAgICBuZXh0OiAocmVzcHVlc3RhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnN1bHRhbmRvID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1lbnNhamVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgIGRlVXN1YXJpbzogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcGNpb246IHJlc3B1ZXN0YS5EZXNjcmlwY2lvbixcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHRhZG86IHJlc3B1ZXN0YS5SZXN1bHRhZG8gPz8gW10sXHJcbiAgICAgICAgICAgICAgICAgICAgcHJvdmVlZG9yOiByZXNwdWVzdGEuUHJvdmVlZG9yLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEFsRmluYWwoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb25zdWx0YW5kbyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tZW5zYWplcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICBkZVVzdWFyaW86IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIHRleHRvOiBlcnJvcj8uTWVuc2FqZSB8fCAnTm8gc2UgcHVkbyBwcm9jZXNhciBsYSBjb25zdWx0YS4nLFxyXG4gICAgICAgICAgICAgICAgICAgIGVzRXJyb3I6IHRydWUsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsQWxGaW5hbCgpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEVsIG51ZXZvIG1lbnNhamUgcmVjacOpbiBzZSByZWZsZWphIGVuIGVsIERPTSBkZXNwdcOpcyBkZWwgc2lndWllbnRlIGNpY2xvIGRlIGRldGVjY2nDs24gZGVcclxuICAgIC8vIGNhbWJpb3Mg4oCUIHBvciBlc28gZWwgc2Nyb2xsVG9wIHNlIGFqdXN0YSBlbiB1biBzZXRUaW1lb3V0KDApLCBubyBpbm1lZGlhdGFtZW50ZSBkZXNwdcOpcyBkZWxcclxuICAgIC8vIHB1c2gsIHBhcmEgcXVlIHNjcm9sbEhlaWdodCB5YSBpbmNsdXlhIGVsIG1lbnNhamUgYWdyZWdhZG8uXHJcbiAgICBwcml2YXRlIHNjcm9sbEFsRmluYWwoKTogdm9pZCB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnRvID0gdGhpcy5tZW5zYWplc0NvbnRhaW5lcj8ubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRvKSB7XHJcbiAgICAgICAgICAgICAgICBlbGVtZW50by5zY3JvbGxUb3AgPSBlbGVtZW50by5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjb2x1bW5hc0RlKHJlc3VsdGFkbzogYW55W10pOiBzdHJpbmdbXSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkby5sZW5ndGggPyBPYmplY3Qua2V5cyhyZXN1bHRhZG9bMF0pIDogW107XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRWwgYmFja2VuZCBkZXZ1ZWx2ZSB1biBjb250ZW8gKENoYXRDb25zdWx0YUlBU2VydmljaW8uRWplY3V0YXJDb250ZW8pIGNvbW8gdW5hIHNvbGEgZmlsYSBjb25cclxuICAgIC8vIHVuYSBzb2xhIGNvbHVtbmEgbGxhbWFkYSBsaXRlcmFsbWVudGUgXCJSZXN1bHRhZG9cIiDigJQgc2UgbXVlc3RyYSBjb21vIG7Dum1lcm8gZ3JhbmRlIGVuIHZleiBkZVxyXG4gICAgLy8gY29tbyB0YWJsYSBkZSB1bmEgY2VsZGEuXHJcbiAgICBlc0NvbnRlbyhyZXN1bHRhZG86IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkbz8ubGVuZ3RoID09PSAxICYmIE9iamVjdC5rZXlzKHJlc3VsdGFkb1swXSkubGVuZ3RoID09PSAxICYmICdSZXN1bHRhZG8nIGluIHJlc3VsdGFkb1swXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBMaXN0YWRvIGNvbiB1bmEgc29sYSBjb2x1bW5hIChlai4gdW5hIGxpc3RhIGRlIG5vbWJyZXMvaWRzKSDigJQgc2UgbXVlc3RyYSBjb21vIHRleHRvIHNpbXBsZVxyXG4gICAgLy8gZW4gdmV6IGRlIHVuYSB0YWJsYSBkZSB1bmEgc29sYSBjb2x1bW5hIHJlcGV0aWRhLlxyXG4gICAgZXNMaXN0YVNpbXBsZShyZXN1bHRhZG86IGFueVtdKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdGFkbz8ubGVuZ3RoID4gMCAmJiAhdGhpcy5lc0NvbnRlbyhyZXN1bHRhZG8pICYmIHRoaXMuY29sdW1uYXNEZShyZXN1bHRhZG8pLmxlbmd0aCA9PT0gMTtcclxuICAgIH1cclxuXHJcbiAgICB0ZXh0b0xpc3RhU2ltcGxlKHJlc3VsdGFkbzogYW55W10pOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGNvbHVtbmEgPSB0aGlzLmNvbHVtbmFzRGUocmVzdWx0YWRvKVswXTtcclxuICAgICAgICByZXR1cm4gcmVzdWx0YWRvLm1hcCgoZmlsYSkgPT4gZmlsYVtjb2x1bW5hXSkuam9pbignLCAnKTtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
// Envoltorio de la Web Speech API (SpeechRecognition) del navegador — dictado de voz a texto,
|
|
5
|
+
// 100% cliente, sin backend. Soportado en Chrome/Edge; SIN soporte en Firefox y de forma
|
|
6
|
+
// inconsistente en Safari (limitación real del navegador, no de esta implementación).
|
|
7
|
+
var ReconocimientoVozService = /** @class */ (function () {
|
|
8
|
+
function ReconocimientoVozService() {
|
|
9
|
+
this.reconocimiento = null;
|
|
10
|
+
}
|
|
11
|
+
ReconocimientoVozService.prototype.estaSoportado = function () {
|
|
12
|
+
return !!(this.obtenerConstructor());
|
|
13
|
+
};
|
|
14
|
+
// onResultado se llama con el texto reconocido hasta el momento (incluye resultados
|
|
15
|
+
// provisionales — interimResults: true — para que el cuadro de texto se vea llenar en vivo).
|
|
16
|
+
// onFin se llama cuando el reconocimiento termina, ya sea porque el navegador detectó una
|
|
17
|
+
// pausa (continuous: false) o porque se llamó a detener().
|
|
18
|
+
ReconocimientoVozService.prototype.iniciar = function (idioma, onResultado, onFin) {
|
|
19
|
+
var _this = this;
|
|
20
|
+
var SpeechRecognitionCtor = this.obtenerConstructor();
|
|
21
|
+
if (!SpeechRecognitionCtor) {
|
|
22
|
+
onFin();
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
this.detener();
|
|
26
|
+
this.reconocimiento = new SpeechRecognitionCtor();
|
|
27
|
+
this.reconocimiento.lang = idioma;
|
|
28
|
+
this.reconocimiento.continuous = false;
|
|
29
|
+
this.reconocimiento.interimResults = true;
|
|
30
|
+
this.reconocimiento.onresult = function (evento) {
|
|
31
|
+
var texto = Array.from(evento.results)
|
|
32
|
+
.map(function (resultado) { return resultado[0].transcript; })
|
|
33
|
+
.join(' ');
|
|
34
|
+
onResultado(texto);
|
|
35
|
+
};
|
|
36
|
+
this.reconocimiento.onerror = function (evento) {
|
|
37
|
+
var _a;
|
|
38
|
+
// Motivos típicos (event.error de SpeechRecognitionErrorEvent): "not-allowed" (permiso de
|
|
39
|
+
// micrófono denegado o sitio sin HTTPS/localhost), "no-speech", "audio-capture" (sin
|
|
40
|
+
// micrófono), "network". Se deja en consola porque no hay backend que lo registre y el
|
|
41
|
+
// navegador no explica el motivo en la UI.
|
|
42
|
+
console.error('Reconocimiento de voz: error -', (_a = evento) === null || _a === void 0 ? void 0 : _a.error);
|
|
43
|
+
_this.reconocimiento = null;
|
|
44
|
+
onFin();
|
|
45
|
+
};
|
|
46
|
+
this.reconocimiento.onend = function () {
|
|
47
|
+
_this.reconocimiento = null;
|
|
48
|
+
onFin();
|
|
49
|
+
};
|
|
50
|
+
try {
|
|
51
|
+
this.reconocimiento.start();
|
|
52
|
+
}
|
|
53
|
+
catch (e) {
|
|
54
|
+
console.error('Reconocimiento de voz: no se pudo iniciar -', e);
|
|
55
|
+
this.reconocimiento = null;
|
|
56
|
+
onFin();
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
ReconocimientoVozService.prototype.detener = function () {
|
|
60
|
+
if (this.reconocimiento) {
|
|
61
|
+
this.reconocimiento.onend = null;
|
|
62
|
+
this.reconocimiento.onerror = null;
|
|
63
|
+
this.reconocimiento.stop();
|
|
64
|
+
this.reconocimiento = null;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
ReconocimientoVozService.prototype.obtenerConstructor = function () {
|
|
68
|
+
return window.SpeechRecognition || window.webkitSpeechRecognition || null;
|
|
69
|
+
};
|
|
70
|
+
ReconocimientoVozService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ReconocimientoVozService_Factory() { return new ReconocimientoVozService(); }, token: ReconocimientoVozService, providedIn: "root" });
|
|
71
|
+
ReconocimientoVozService = __decorate([
|
|
72
|
+
Injectable({
|
|
73
|
+
providedIn: 'root',
|
|
74
|
+
})
|
|
75
|
+
], ReconocimientoVozService);
|
|
76
|
+
return ReconocimientoVozService;
|
|
77
|
+
}());
|
|
78
|
+
export { ReconocimientoVozService };
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb25vY2ltaWVudG8tdm96LnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvYXNpc3RlbnRlLWRhdG9zL3JlY29ub2NpbWllbnRvLXZvei5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUUzQyw4RkFBOEY7QUFDOUYseUZBQXlGO0FBQ3pGLHNGQUFzRjtBQUl0RjtJQUFBO1FBQ1ksbUJBQWMsR0FBUSxJQUFJLENBQUM7S0FtRXRDO0lBakVHLGdEQUFhLEdBQWI7UUFDSSxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVELG9GQUFvRjtJQUNwRiw2RkFBNkY7SUFDN0YsMEZBQTBGO0lBQzFGLDJEQUEyRDtJQUMzRCwwQ0FBTyxHQUFQLFVBQVEsTUFBYyxFQUFFLFdBQW9DLEVBQUUsS0FBaUI7UUFBL0UsaUJBMkNDO1FBMUNHLElBQU0scUJBQXFCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDeEQsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ3hCLEtBQUssRUFBRSxDQUFDO1lBQ1IsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWYsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxjQUFjLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztRQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFFMUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsVUFBQyxNQUFXO1lBQ3ZDLElBQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztpQkFDbkMsR0FBRyxDQUFDLFVBQUMsU0FBYyxJQUFLLE9BQUEsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBdkIsQ0FBdUIsQ0FBQztpQkFDaEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZCLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxHQUFHLFVBQUMsTUFBVzs7WUFDdEMsMEZBQTBGO1lBQzFGLHFGQUFxRjtZQUNyRix1RkFBdUY7WUFDdkYsMkNBQTJDO1lBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0NBQWdDLFFBQUUsTUFBTSwwQ0FBRSxLQUFLLENBQUMsQ0FBQztZQUMvRCxLQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUMzQixLQUFLLEVBQUUsQ0FBQztRQUNaLENBQUMsQ0FBQztRQUVGLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHO1lBQ3hCLEtBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDO1lBQzNCLEtBQUssRUFBRSxDQUFDO1FBQ1osQ0FBQyxDQUFDO1FBRUYsSUFBSTtZQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDL0I7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkNBQTZDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7WUFDM0IsS0FBSyxFQUFFLENBQUM7U0FDWDtJQUNMLENBQUM7SUFFRCwwQ0FBTyxHQUFQO1FBQ0ksSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQztZQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDbkMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztTQUM5QjtJQUNMLENBQUM7SUFFTyxxREFBa0IsR0FBMUI7UUFDSSxPQUFRLE1BQWMsQ0FBQyxpQkFBaUIsSUFBSyxNQUFjLENBQUMsdUJBQXVCLElBQUksSUFBSSxDQUFDO0lBQ2hHLENBQUM7O0lBbkVRLHdCQUF3QjtRQUhwQyxVQUFVLENBQUM7WUFDUixVQUFVLEVBQUUsTUFBTTtTQUNyQixDQUFDO09BQ1csd0JBQXdCLENBb0VwQzttQ0E1RUQ7Q0E0RUMsQUFwRUQsSUFvRUM7U0FwRVksd0JBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLy8gRW52b2x0b3JpbyBkZSBsYSBXZWIgU3BlZWNoIEFQSSAoU3BlZWNoUmVjb2duaXRpb24pIGRlbCBuYXZlZ2Fkb3Ig4oCUIGRpY3RhZG8gZGUgdm96IGEgdGV4dG8sXHJcbi8vIDEwMCUgY2xpZW50ZSwgc2luIGJhY2tlbmQuIFNvcG9ydGFkbyBlbiBDaHJvbWUvRWRnZTsgU0lOIHNvcG9ydGUgZW4gRmlyZWZveCB5IGRlIGZvcm1hXHJcbi8vIGluY29uc2lzdGVudGUgZW4gU2FmYXJpIChsaW1pdGFjacOzbiByZWFsIGRlbCBuYXZlZ2Fkb3IsIG5vIGRlIGVzdGEgaW1wbGVtZW50YWNpw7NuKS5cclxuQEluamVjdGFibGUoe1xyXG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgUmVjb25vY2ltaWVudG9Wb3pTZXJ2aWNlIHtcclxuICAgIHByaXZhdGUgcmVjb25vY2ltaWVudG86IGFueSA9IG51bGw7XHJcblxyXG4gICAgZXN0YVNvcG9ydGFkbygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gISEodGhpcy5vYnRlbmVyQ29uc3RydWN0b3IoKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gb25SZXN1bHRhZG8gc2UgbGxhbWEgY29uIGVsIHRleHRvIHJlY29ub2NpZG8gaGFzdGEgZWwgbW9tZW50byAoaW5jbHV5ZSByZXN1bHRhZG9zXHJcbiAgICAvLyBwcm92aXNpb25hbGVzIOKAlCBpbnRlcmltUmVzdWx0czogdHJ1ZSDigJQgcGFyYSBxdWUgZWwgY3VhZHJvIGRlIHRleHRvIHNlIHZlYSBsbGVuYXIgZW4gdml2bykuXHJcbiAgICAvLyBvbkZpbiBzZSBsbGFtYSBjdWFuZG8gZWwgcmVjb25vY2ltaWVudG8gdGVybWluYSwgeWEgc2VhIHBvcnF1ZSBlbCBuYXZlZ2Fkb3IgZGV0ZWN0w7MgdW5hXHJcbiAgICAvLyBwYXVzYSAoY29udGludW91czogZmFsc2UpIG8gcG9ycXVlIHNlIGxsYW3DsyBhIGRldGVuZXIoKS5cclxuICAgIGluaWNpYXIoaWRpb21hOiBzdHJpbmcsIG9uUmVzdWx0YWRvOiAodGV4dG86IHN0cmluZykgPT4gdm9pZCwgb25GaW46ICgpID0+IHZvaWQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBTcGVlY2hSZWNvZ25pdGlvbkN0b3IgPSB0aGlzLm9idGVuZXJDb25zdHJ1Y3RvcigpO1xyXG4gICAgICAgIGlmICghU3BlZWNoUmVjb2duaXRpb25DdG9yKSB7XHJcbiAgICAgICAgICAgIG9uRmluKCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZGV0ZW5lcigpO1xyXG5cclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvID0gbmV3IFNwZWVjaFJlY29nbml0aW9uQ3RvcigpO1xyXG4gICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8ubGFuZyA9IGlkaW9tYTtcclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvLmNvbnRpbnVvdXMgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvLmludGVyaW1SZXN1bHRzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50by5vbnJlc3VsdCA9IChldmVudG86IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB0ZXh0byA9IEFycmF5LmZyb20oZXZlbnRvLnJlc3VsdHMpXHJcbiAgICAgICAgICAgICAgICAubWFwKChyZXN1bHRhZG86IGFueSkgPT4gcmVzdWx0YWRvWzBdLnRyYW5zY3JpcHQpXHJcbiAgICAgICAgICAgICAgICAuam9pbignICcpO1xyXG4gICAgICAgICAgICBvblJlc3VsdGFkbyh0ZXh0byk7XHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50by5vbmVycm9yID0gKGV2ZW50bzogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIC8vIE1vdGl2b3MgdMOtcGljb3MgKGV2ZW50LmVycm9yIGRlIFNwZWVjaFJlY29nbml0aW9uRXJyb3JFdmVudCk6IFwibm90LWFsbG93ZWRcIiAocGVybWlzbyBkZVxyXG4gICAgICAgICAgICAvLyBtaWNyw7Nmb25vIGRlbmVnYWRvIG8gc2l0aW8gc2luIEhUVFBTL2xvY2FsaG9zdCksIFwibm8tc3BlZWNoXCIsIFwiYXVkaW8tY2FwdHVyZVwiIChzaW5cclxuICAgICAgICAgICAgLy8gbWljcsOzZm9ubyksIFwibmV0d29ya1wiLiBTZSBkZWphIGVuIGNvbnNvbGEgcG9ycXVlIG5vIGhheSBiYWNrZW5kIHF1ZSBsbyByZWdpc3RyZSB5IGVsXHJcbiAgICAgICAgICAgIC8vIG5hdmVnYWRvciBubyBleHBsaWNhIGVsIG1vdGl2byBlbiBsYSBVSS5cclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignUmVjb25vY2ltaWVudG8gZGUgdm96OiBlcnJvciAtJywgZXZlbnRvPy5lcnJvcik7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8gPSBudWxsO1xyXG4gICAgICAgICAgICBvbkZpbigpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8ub25lbmQgPSAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8gPSBudWxsO1xyXG4gICAgICAgICAgICBvbkZpbigpO1xyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8uc3RhcnQoKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1JlY29ub2NpbWllbnRvIGRlIHZvejogbm8gc2UgcHVkbyBpbmljaWFyIC0nLCBlKTtcclxuICAgICAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50byA9IG51bGw7XHJcbiAgICAgICAgICAgIG9uRmluKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRldGVuZXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMucmVjb25vY2ltaWVudG8pIHtcclxuICAgICAgICAgICAgdGhpcy5yZWNvbm9jaW1pZW50by5vbmVuZCA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8ub25lcnJvciA9IG51bGw7XHJcbiAgICAgICAgICAgIHRoaXMucmVjb25vY2ltaWVudG8uc3RvcCgpO1xyXG4gICAgICAgICAgICB0aGlzLnJlY29ub2NpbWllbnRvID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBvYnRlbmVyQ29uc3RydWN0b3IoKTogYW55IHtcclxuICAgICAgICByZXR1cm4gKHdpbmRvdyBhcyBhbnkpLlNwZWVjaFJlY29nbml0aW9uIHx8ICh3aW5kb3cgYXMgYW55KS53ZWJraXRTcGVlY2hSZWNvZ25pdGlvbiB8fCBudWxsO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { Injectable } from '@angular/core';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
// Material Symbols Outlined (rellena) registrada con un nombre propio para que no choque con la
|
|
5
|
+
// versión de Material Symbols o Material Icons que cargue la página que aloja el menú.
|
|
6
|
+
var FAMILIA = 'WM Menu Symbols';
|
|
7
|
+
var URL_CSS = 'https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,1,0';
|
|
8
|
+
var WmMenuFuenteIconosService = /** @class */ (function () {
|
|
9
|
+
function WmMenuFuenteIconosService() {
|
|
10
|
+
this.iniciada = false;
|
|
11
|
+
}
|
|
12
|
+
WmMenuFuenteIconosService.prototype.cargar = function () {
|
|
13
|
+
if (this.iniciada) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
this.iniciada = true;
|
|
17
|
+
var estilo = document.createElement('style');
|
|
18
|
+
estilo.textContent = ".wm-menu-iconos {\n font-family: '" + FAMILIA + "';\n font-weight: normal;\n font-style: normal;\n font-size: 24px;\n line-height: 1;\n letter-spacing: normal;\n text-transform: none;\n display: inline-block;\n white-space: nowrap;\n word-wrap: normal;\n direction: ltr;\n font-feature-settings: 'liga';\n -webkit-font-smoothing: antialiased;\n }";
|
|
19
|
+
document.head.appendChild(estilo);
|
|
20
|
+
// Oculta los iconos mientras carga la fuente para que no se vea el nombre del icono como texto.
|
|
21
|
+
var ocultar = document.createElement('style');
|
|
22
|
+
ocultar.textContent = '.wm-menu-iconos { visibility: hidden; }';
|
|
23
|
+
document.head.appendChild(ocultar);
|
|
24
|
+
// Se lee la URL del archivo desde el CSS de Google Fonts en lugar de fijarla, porque cambia con cada versión.
|
|
25
|
+
fetch(URL_CSS)
|
|
26
|
+
.then(function (resp) { return resp.text(); })
|
|
27
|
+
.then(function (css) {
|
|
28
|
+
var urlFuente = /url\(([^)]+)\)/.exec(css)[1];
|
|
29
|
+
var fuente = new window.FontFace(FAMILIA, "url(" + urlFuente + ")");
|
|
30
|
+
document.fonts.add(fuente);
|
|
31
|
+
return fuente.load();
|
|
32
|
+
})
|
|
33
|
+
.catch(function (error) { return console.error('wm-menu: no se pudo cargar la fuente de iconos', error); })
|
|
34
|
+
.then(function () { return document.head.removeChild(ocultar); });
|
|
35
|
+
};
|
|
36
|
+
WmMenuFuenteIconosService.ɵprov = i0.ɵɵdefineInjectable({ factory: function WmMenuFuenteIconosService_Factory() { return new WmMenuFuenteIconosService(); }, token: WmMenuFuenteIconosService, providedIn: "root" });
|
|
37
|
+
WmMenuFuenteIconosService = __decorate([
|
|
38
|
+
Injectable({
|
|
39
|
+
providedIn: 'root'
|
|
40
|
+
})
|
|
41
|
+
], WmMenuFuenteIconosService);
|
|
42
|
+
return WmMenuFuenteIconosService;
|
|
43
|
+
}());
|
|
44
|
+
export { WmMenuFuenteIconosService };
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1mdWVudGUtaWNvbm9zLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly93bS1tZW51LyIsInNvdXJjZXMiOlsibGliL3dtLW1lbnUvc2VydmljZXMvd20tbWVudS1mdWVudGUtaWNvbm9zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLGdHQUFnRztBQUNoRyx1RkFBdUY7QUFDdkYsSUFBTSxPQUFPLEdBQUcsaUJBQWlCLENBQUM7QUFDbEMsSUFBTSxPQUFPLEdBQUcsbUdBQW1HLENBQUM7QUFLcEg7SUFBQTtRQUVVLGFBQVEsR0FBRyxLQUFLLENBQUM7S0EyQzFCO0lBekNDLDBDQUFNLEdBQU47UUFDRSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFFckIsSUFBTSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMvQyxNQUFNLENBQUMsV0FBVyxHQUFHLDRDQUNILE9BQU8sNldBYXZCLENBQUM7UUFDSCxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVsQyxnR0FBZ0c7UUFDaEcsSUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNoRCxPQUFPLENBQUMsV0FBVyxHQUFHLHlDQUF5QyxDQUFDO1FBQ2hFLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRW5DLDhHQUE4RztRQUM5RyxLQUFLLENBQUMsT0FBTyxDQUFDO2FBQ1gsSUFBSSxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFYLENBQVcsQ0FBQzthQUN6QixJQUFJLENBQUMsVUFBQSxHQUFHO1lBQ1AsSUFBTSxTQUFTLEdBQUcsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2hELElBQU0sTUFBTSxHQUFHLElBQUssTUFBYyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsU0FBTyxTQUFTLE1BQUcsQ0FBQyxDQUFDO1lBQ3pFLFFBQWdCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNwQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN2QixDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxPQUFPLENBQUMsS0FBSyxDQUFDLGdEQUFnRCxFQUFFLEtBQUssQ0FBQyxFQUF0RSxDQUFzRSxDQUFDO2FBQ3RGLElBQUksQ0FBQyxjQUFNLE9BQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLEVBQWxDLENBQWtDLENBQUMsQ0FBQztJQUNwRCxDQUFDOztJQTVDVSx5QkFBeUI7UUFIckMsVUFBVSxDQUFDO1lBQ1YsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQztPQUNXLHlCQUF5QixDQTZDckM7b0NBdkREO0NBdURDLEFBN0NELElBNkNDO1NBN0NZLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbi8vIE1hdGVyaWFsIFN5bWJvbHMgT3V0bGluZWQgKHJlbGxlbmEpIHJlZ2lzdHJhZGEgY29uIHVuIG5vbWJyZSBwcm9waW8gcGFyYSBxdWUgbm8gY2hvcXVlIGNvbiBsYVxyXG4vLyB2ZXJzacOzbiBkZSBNYXRlcmlhbCBTeW1ib2xzIG8gTWF0ZXJpYWwgSWNvbnMgcXVlIGNhcmd1ZSBsYSBww6FnaW5hIHF1ZSBhbG9qYSBlbCBtZW7Dui5cclxuY29uc3QgRkFNSUxJQSA9ICdXTSBNZW51IFN5bWJvbHMnO1xyXG5jb25zdCBVUkxfQ1NTID0gJ2h0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9TWF0ZXJpYWwrU3ltYm9scytPdXRsaW5lZDpvcHN6LHdnaHQsRklMTCxHUkFEQDI0LDQwMCwxLDAnO1xyXG5cclxuQEluamVjdGFibGUoe1xyXG4gIHByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgV21NZW51RnVlbnRlSWNvbm9zU2VydmljZSB7XHJcblxyXG4gIHByaXZhdGUgaW5pY2lhZGEgPSBmYWxzZTtcclxuXHJcbiAgY2FyZ2FyKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuaW5pY2lhZGEpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pbmljaWFkYSA9IHRydWU7XHJcblxyXG4gICAgY29uc3QgZXN0aWxvID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIGVzdGlsby50ZXh0Q29udGVudCA9IGAud20tbWVudS1pY29ub3Mge1xyXG4gICAgICBmb250LWZhbWlseTogJyR7RkFNSUxJQX0nO1xyXG4gICAgICBmb250LXdlaWdodDogbm9ybWFsO1xyXG4gICAgICBmb250LXN0eWxlOiBub3JtYWw7XHJcbiAgICAgIGZvbnQtc2l6ZTogMjRweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGxldHRlci1zcGFjaW5nOiBub3JtYWw7XHJcbiAgICAgIHRleHQtdHJhbnNmb3JtOiBub25lO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbiAgICAgIHdvcmQtd3JhcDogbm9ybWFsO1xyXG4gICAgICBkaXJlY3Rpb246IGx0cjtcclxuICAgICAgZm9udC1mZWF0dXJlLXNldHRpbmdzOiAnbGlnYSc7XHJcbiAgICAgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xyXG4gICAgfWA7XHJcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGVzdGlsbyk7XHJcblxyXG4gICAgLy8gT2N1bHRhIGxvcyBpY29ub3MgbWllbnRyYXMgY2FyZ2EgbGEgZnVlbnRlIHBhcmEgcXVlIG5vIHNlIHZlYSBlbCBub21icmUgZGVsIGljb25vIGNvbW8gdGV4dG8uXHJcbiAgICBjb25zdCBvY3VsdGFyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcclxuICAgIG9jdWx0YXIudGV4dENvbnRlbnQgPSAnLndtLW1lbnUtaWNvbm9zIHsgdmlzaWJpbGl0eTogaGlkZGVuOyB9JztcclxuICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQob2N1bHRhcik7XHJcblxyXG4gICAgLy8gU2UgbGVlIGxhIFVSTCBkZWwgYXJjaGl2byBkZXNkZSBlbCBDU1MgZGUgR29vZ2xlIEZvbnRzIGVuIGx1Z2FyIGRlIGZpamFybGEsIHBvcnF1ZSBjYW1iaWEgY29uIGNhZGEgdmVyc2nDs24uXHJcbiAgICBmZXRjaChVUkxfQ1NTKVxyXG4gICAgICAudGhlbihyZXNwID0+IHJlc3AudGV4dCgpKVxyXG4gICAgICAudGhlbihjc3MgPT4ge1xyXG4gICAgICAgIGNvbnN0IHVybEZ1ZW50ZSA9IC91cmxcXCgoW14pXSspXFwpLy5leGVjKGNzcylbMV07XHJcbiAgICAgICAgY29uc3QgZnVlbnRlID0gbmV3ICh3aW5kb3cgYXMgYW55KS5Gb250RmFjZShGQU1JTElBLCBgdXJsKCR7dXJsRnVlbnRlfSlgKTtcclxuICAgICAgICAoZG9jdW1lbnQgYXMgYW55KS5mb250cy5hZGQoZnVlbnRlKTtcclxuICAgICAgICByZXR1cm4gZnVlbnRlLmxvYWQoKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IGNvbnNvbGUuZXJyb3IoJ3dtLW1lbnU6IG5vIHNlIHB1ZG8gY2FyZ2FyIGxhIGZ1ZW50ZSBkZSBpY29ub3MnLCBlcnJvcikpXHJcbiAgICAgIC50aGVuKCgpID0+IGRvY3VtZW50LmhlYWQucmVtb3ZlQ2hpbGQob2N1bHRhcikpO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
@@ -84,6 +84,14 @@ var WmMenuServicioService = /** @class */ (function () {
|
|
|
84
84
|
return throwError(error.error);
|
|
85
85
|
}));
|
|
86
86
|
};
|
|
87
|
+
// Funciones (permisos) del usuario autenticado, para gatear features del menú como el
|
|
88
|
+
// asistente "Pregúntale a tus datos" (CodigoLogica === 'WebChatConsultaIA').
|
|
89
|
+
WmMenuServicioService.prototype.funcionesObtener = function (url, token) {
|
|
90
|
+
var headers = new HttpHeaders({
|
|
91
|
+
'Authorization': "Bearer " + token
|
|
92
|
+
});
|
|
93
|
+
return this.http.get(url, { headers: headers }).pipe(map(function (resp) { return resp; }), catchError(function (error) { return throwError(error.error); }));
|
|
94
|
+
};
|
|
87
95
|
WmMenuServicioService.ctorParameters = function () { return [
|
|
88
96
|
{ type: HttpClient },
|
|
89
97
|
{ type: MatIconRegistry },
|
|
@@ -98,4 +106,4 @@ var WmMenuServicioService = /** @class */ (function () {
|
|
|
98
106
|
return WmMenuServicioService;
|
|
99
107
|
}());
|
|
100
108
|
export { WmMenuServicioService };
|
|
101
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1zZXJ2aWNpby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vd20tbWVudS8iLCJzb3VyY2VzIjpbImxpYi93bS1tZW51L3NlcnZpY2VzL3dtLW1lbnUtc2VydmljaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFNekQ7SUFFSSwrQkFBb0IsSUFBZ0IsRUFBVSxZQUE2QixFQUFVLFNBQXVCO1FBQXhGLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUksQ0FBQztJQUVqSCw4Q0FBYyxHQUFkLFVBQWUsR0FBVSxFQUFFLFNBQWlCLEVBQUUsS0FBWSxFQUFFLGtCQUF1QjtRQUF2QixtQ0FBQSxFQUFBLHVCQUF1QjtRQUMvRSxJQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixlQUFlLEVBQUUsWUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2hF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QztnQ0EzR0Q7Q0EyR0MsQUFoR0QsSUFnR0M7U0FoR1kscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycywgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgbWFwLCBjYXRjaEVycm9yIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyB0aHJvd0Vycm9yLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IERvbVNhbml0aXplciB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xyXG5pbXBvcnQgeyBNYXRJY29uUmVnaXN0cnkgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWVudVByaW5jaXBhbCB9IGZyb20gJy4uL21vZGVsL3dtLW1lbnUtcHJpbmNpcGFsLm1vZGVsJztcclxuXHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFdtTWVudVNlcnZpY2lvU2VydmljZSB7XHJcblxyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIGljb25SZWdpc3RyeTogTWF0SWNvblJlZ2lzdHJ5LCBwcml2YXRlIHNhbml0aXplcjogRG9tU2FuaXRpemVyKSB7IH1cclxuXHJcbiAgICBtZW51QXBpT2J0ZW5lcih1cmw6c3RyaW5nLCBpZFVzdWFyaW86IHN0cmluZywgdG9rZW46c3RyaW5nLCBjb2RMb2dpY2FQYXJhbWV0cm8gPSBcIlwiKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIFxyXG4gICAgICAgIGxldCBteVBhcmFtcyA9IG5ldyBIdHRwUGFyYW1zKCk7XHJcbiAgICAgICAgaWYgKGNvZExvZ2ljYVBhcmFtZXRyby5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImNvZExvZ2ljYVwiLCBjb2RMb2dpY2FQYXJhbWV0cm8pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImN0cmxBY3Rpdm9cIiwgXCJ0cnVlXCIpO1xyXG4gICAgICAgIG15UGFyYW1zID0gbXlQYXJhbXMuYXBwZW5kKFwiY29uUGFkcmVzXCIsIFwidHJ1ZVwiKTtcclxuICAgICAgICBpZiAoaWRVc3VhcmlvICE9IG51bGwpXHJcbiAgICAgICAgICAgIG15UGFyYW1zID0gbXlQYXJhbXMuYXBwZW5kKFwiaWRVc3VhcmlvXCIsIGlkVXN1YXJpby50b1N0cmluZygpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnMsIHBhcmFtczogbXlQYXJhbXMgfSkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3AgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlc3A7XHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGVycm9yLmVycm9yKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIG1hcGVhck1lbnUocmVzcEFwaTogYW55KTogTWVudVByaW5jaXBhbFtdIHtcclxuICAgICAgICByZXNwQXBpID0gcmVzcEFwaS5zb3J0KChhLCBiKSA9PiBhLlBvc2ljaW9uID4gYi5Qb3NpY2lvbj9cIjFcIjpcIi0xXCIpO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXNwQXBpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVsZW1lbnQgPSByZXNwQXBpW2tleV07XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50Lkljb25vLnN0YXJ0c1dpdGgoXCJodHRwXCIpKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgaWNvblN2ZyA9ICd3bS1pY29uLW1lbnUtJyArIGtleTtcclxuICAgICAgICAgICAgICAgIHRoaXMuaWNvblJlZ2lzdHJ5LmFkZFN2Z0ljb24oXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvblN2ZyxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNhbml0aXplci5ieXBhc3NTZWN1cml0eVRydXN0UmVzb3VyY2VVcmwoZWxlbWVudC5JY29ubykpO1xyXG4gICAgICAgICAgICAgICAgcmVzcEFwaVtrZXldLkljb25vID0gaWNvblN2ZztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMub2J0ZW5lck1lbnUocmVzcEFwaSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgb2J0ZW5lck1lbnUocmVzcEFwaTogYW55LCBpZE1lbnVQYWRyZT86IE51bWJlcik6IE1lbnVQcmluY2lwYWxbXSB7XHJcbiAgICAgICAgdmFyIG1lbnU6IE1lbnVQcmluY2lwYWxbXSA9IFtdO1xyXG4gICAgICAgIGZvciAoY29uc3Qga2V5IGluIHJlc3BBcGkpIHtcclxuICAgICAgICAgICAgaWYgKHJlc3BBcGlba2V5XS5JZE1lbnVQYWRyZSA9PSBpZE1lbnVQYWRyZSB8fCAoIWlkTWVudVBhZHJlICYmIHJlc3BBcGlba2V5XS5JZE1lbnVQYWRyZSA9PSBudWxsKSkge1xyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICB0aXR1bG86IHJlc3BBcGlba2V5XS5JZGlvbWFSZWN1cnNvLFxyXG4gICAgICAgICAgICAgICAgICAgIHVybDogcmVzcEFwaVtrZXldLlVybCxcclxuICAgICAgICAgICAgICAgICAgICBpY29ubzogcmVzcEFwaVtrZXldLkljb25vLFxyXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXBjaW9uOiByZXNwQXBpW2tleV0uRGVzY3JpcGNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgaGlqb3M6IHRoaXMub2J0ZW5lck1lbnUocmVzcEFwaSwgcmVzcEFwaVtrZXldLklkTWVudSlcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBtZW51O1xyXG4gICAgfVxyXG5cclxuICAgIG1lbnVJZGlvbWFzT2J0ZW5lcih1cmw6c3RyaW5nLCBpZFVzdWFyaW86IHN0cmluZywgdG9rZW46c3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwpLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgYWxtYWNlbmFtaWVudG9BcGlPYnRlbmVyKHVybDpzdHJpbmcsIGlkVXN1YXJpbzogc3RyaW5nLCB0b2tlbjpzdHJpbmcpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoe1xyXG4gICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gXHJcbiAgICAgICAgfSk7XHJcbiAgICBcclxuICAgICAgICBsZXQgbXlQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG5cclxuICAgICAgICBpZiAoaWRVc3VhcmlvICE9IG51bGwpXHJcbiAgICAgICAgICAgIG15UGFyYW1zID0gbXlQYXJhbXMuYXBwZW5kKFwiaWRVc3VhcmlvXCIsIGlkVXN1YXJpby50b1N0cmluZygpKTtcclxuICAgIFxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzLCBwYXJhbXM6IG15UGFyYW1zIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdfQ==
|
|
109
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid20tbWVudS1zZXJ2aWNpby5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vd20tbWVudS8iLCJzb3VyY2VzIjpbImxpYi93bS1tZW51L3NlcnZpY2VzL3dtLW1lbnUtc2VydmljaW8uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQWMsTUFBTSxNQUFNLENBQUM7QUFDOUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7QUFNekQ7SUFFSSwrQkFBb0IsSUFBZ0IsRUFBVSxZQUE2QixFQUFVLFNBQXVCO1FBQXhGLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBaUI7UUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFjO0lBQUksQ0FBQztJQUVqSCw4Q0FBYyxHQUFkLFVBQWUsR0FBVSxFQUFFLFNBQWlCLEVBQUUsS0FBWSxFQUFFLGtCQUF1QjtRQUF2QixtQ0FBQSxFQUFBLHVCQUF1QjtRQUMvRSxJQUFNLE9BQU8sR0FBRyxJQUFJLFdBQVcsQ0FBQztZQUM1QixlQUFlLEVBQUUsWUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILElBQUksUUFBUSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQzlCLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1NBQ2hF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WUFBVSxLQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUVILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEVBQUUsT0FBTyxTQUFBLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FDdkMsR0FBRyxDQUFDLFVBQUEsSUFBSSxJQUFJLE9BQUEsSUFBSSxFQUFKLENBQUksQ0FBQyxFQUNqQixVQUFVLENBQUMsVUFBQSxLQUFLLElBQUksT0FBQSxVQUFVLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxFQUF2QixDQUF1QixDQUFDLENBQy9DLENBQUM7SUFDTixDQUFDOztnQkExR3lCLFVBQVU7Z0JBQXdCLGVBQWU7Z0JBQXFCLFlBQVk7OztJQUZuRyxxQkFBcUI7UUFIakMsVUFBVSxDQUFDO1lBQ1YsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQztPQUNXLHFCQUFxQixDQTZHakM7Z0NBeEhEO0NBd0hDLEFBN0dELElBNkdDO1NBN0dZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IG1hcCwgY2F0Y2hFcnJvciB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgdGhyb3dFcnJvciwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIgfSBmcm9tICdAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyJztcclxuaW1wb3J0IHsgTWF0SWNvblJlZ2lzdHJ5IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XHJcbmltcG9ydCB7IE1lbnVQcmluY2lwYWwgfSBmcm9tICcuLi9tb2RlbC93bS1tZW51LXByaW5jaXBhbC5tb2RlbCc7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXbU1lbnVTZXJ2aWNpb1NlcnZpY2Uge1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBpY29uUmVnaXN0cnk6IE1hdEljb25SZWdpc3RyeSwgcHJpdmF0ZSBzYW5pdGl6ZXI6IERvbVNhbml0aXplcikgeyB9XHJcblxyXG4gICAgbWVudUFwaU9idGVuZXIodXJsOnN0cmluZywgaWRVc3VhcmlvOiBzdHJpbmcsIHRva2VuOnN0cmluZywgY29kTG9naWNhUGFyYW1ldHJvID0gXCJcIik6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgICAgICB9KTtcclxuICAgICAgICBcclxuICAgICAgICBsZXQgbXlQYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xyXG4gICAgICAgIGlmIChjb2RMb2dpY2FQYXJhbWV0cm8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgbXlQYXJhbXMgPSBteVBhcmFtcy5hcHBlbmQoXCJjb2RMb2dpY2FcIiwgY29kTG9naWNhUGFyYW1ldHJvKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbXlQYXJhbXMgPSBteVBhcmFtcy5hcHBlbmQoXCJjdHJsQWN0aXZvXCIsIFwidHJ1ZVwiKTtcclxuICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImNvblBhZHJlc1wiLCBcInRydWVcIik7XHJcbiAgICAgICAgaWYgKGlkVXN1YXJpbyAhPSBudWxsKVxyXG4gICAgICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImlkVXN1YXJpb1wiLCBpZFVzdWFyaW8udG9TdHJpbmcoKSk7XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0KHVybCwgeyBoZWFkZXJzLCBwYXJhbXM6IG15UGFyYW1zIH0pLnBpcGUoXHJcbiAgICAgICAgICAgIG1hcChyZXNwID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiByZXNwO1xyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihlcnJvci5lcnJvcik7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBtYXBlYXJNZW51KHJlc3BBcGk6IGFueSk6IE1lbnVQcmluY2lwYWxbXSB7XHJcbiAgICAgICAgcmVzcEFwaSA9IHJlc3BBcGkuc29ydCgoYSwgYikgPT4gYS5Qb3NpY2lvbiA+IGIuUG9zaWNpb24/XCIxXCI6XCItMVwiKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gcmVzcEFwaSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gcmVzcEFwaVtrZXldO1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5JY29uby5zdGFydHNXaXRoKFwiaHR0cFwiKSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGljb25TdmcgPSAnd20taWNvbi1tZW51LScgKyBrZXk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmljb25SZWdpc3RyeS5hZGRTdmdJY29uKFxyXG4gICAgICAgICAgICAgICAgICAgIGljb25TdmcsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKGVsZW1lbnQuSWNvbm8pKTtcclxuICAgICAgICAgICAgICAgIHJlc3BBcGlba2V5XS5JY29ubyA9IGljb25Tdmc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB0aGlzLm9idGVuZXJNZW51KHJlc3BBcGkpO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIG9idGVuZXJNZW51KHJlc3BBcGk6IGFueSwgaWRNZW51UGFkcmU/OiBOdW1iZXIpOiBNZW51UHJpbmNpcGFsW10ge1xyXG4gICAgICAgIHZhciBtZW51OiBNZW51UHJpbmNpcGFsW10gPSBbXTtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiByZXNwQXBpKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwQXBpW2tleV0uSWRNZW51UGFkcmUgPT0gaWRNZW51UGFkcmUgfHwgKCFpZE1lbnVQYWRyZSAmJiByZXNwQXBpW2tleV0uSWRNZW51UGFkcmUgPT0gbnVsbCkpIHtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdGl0dWxvOiByZXNwQXBpW2tleV0uSWRpb21hUmVjdXJzbyxcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IHJlc3BBcGlba2V5XS5VcmwsXHJcbiAgICAgICAgICAgICAgICAgICAgaWNvbm86IHJlc3BBcGlba2V5XS5JY29ubyxcclxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwY2lvbjogcmVzcEFwaVtrZXldLkRlc2NyaXBjaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGhpam9zOiB0aGlzLm9idGVuZXJNZW51KHJlc3BBcGksIHJlc3BBcGlba2V5XS5JZE1lbnUpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbWVudTtcclxuICAgIH1cclxuXHJcbiAgICBtZW51SWRpb21hc09idGVuZXIodXJsOnN0cmluZywgaWRVc3VhcmlvOiBzdHJpbmcsIHRva2VuOnN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsKS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcDtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGFsbWFjZW5hbWllbnRvQXBpT2J0ZW5lcih1cmw6c3RyaW5nLCBpZFVzdWFyaW86IHN0cmluZywgdG9rZW46c3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKHtcclxuICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YFxyXG4gICAgICAgIH0pO1xyXG4gICAgXHJcbiAgICAgICAgbGV0IG15UGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcclxuXHJcbiAgICAgICAgaWYgKGlkVXN1YXJpbyAhPSBudWxsKVxyXG4gICAgICAgICAgICBteVBhcmFtcyA9IG15UGFyYW1zLmFwcGVuZChcImlkVXN1YXJpb1wiLCBpZFVzdWFyaW8udG9TdHJpbmcoKSk7XHJcbiAgICBcclxuICAgICAgICByZXR1cm4gdGhpcy5odHRwLmdldCh1cmwsIHsgaGVhZGVycywgcGFyYW1zOiBteVBhcmFtcyB9KS5waXBlKFxyXG4gICAgICAgICAgICBtYXAocmVzcCA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzcDtcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXJyb3IuZXJyb3IpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gRnVuY2lvbmVzIChwZXJtaXNvcykgZGVsIHVzdWFyaW8gYXV0ZW50aWNhZG8sIHBhcmEgZ2F0ZWFyIGZlYXR1cmVzIGRlbCBtZW7DuiBjb21vIGVsXHJcbiAgICAvLyBhc2lzdGVudGUgXCJQcmVnw7pudGFsZSBhIHR1cyBkYXRvc1wiIChDb2RpZ29Mb2dpY2EgPT09ICdXZWJDaGF0Q29uc3VsdGFJQScpLlxyXG4gICAgZnVuY2lvbmVzT2J0ZW5lcih1cmw6IHN0cmluZywgdG9rZW46IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycyh7XHJcbiAgICAgICAgICAgICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWBcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQodXJsLCB7IGhlYWRlcnMgfSkucGlwZShcclxuICAgICAgICAgICAgbWFwKHJlc3AgPT4gcmVzcCksXHJcbiAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4gdGhyb3dFcnJvcihlcnJvci5lcnJvcikpXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufSJdfQ==
|