class WindowHandler{ constructor(){ this.chatbox = $("#chat"); this.template = $('
'); this.active = false; this.mensaje = ""; // this.evCtx = document; $(document).on("chat:enviar", (event, params) => this.recalcularTextarea()); $(document).on("chat:limpiar", () => this.limpiarChat()); $("#input-text").keypress((event) => { if (!event.shiftKey && event.keyCode === 13) { this.manejadorEnviar(); }}); $("#input-send").click(() => this.manejadorEnviar()); $("#input-text").keypress(() => this.recalcularTextarea()); $("#input-text").keyup(() => this.recalcularTextarea()); $("#input-text").keydown(() => this.recalcularTextarea()); this.cargarChat(chatH.convesacion); $(document).on("precarga:inicio", (event, params) => { this.respuestaInicio(params) }); $(document).on("precarga:mensaje", (event, params) => { this.respuestaMensaje(params)} ); $(document).on("precarga:fin", (event, params) => { this.respuestaFin() }); $(document).on("precarga:error", (event, params) => { this.respuestaError(params) }); } limpiarChat(){ $("#input-text").val(""); this.recalcularTextarea(); $("#chat").html(""); } manejadorEnviar(){ let mensaje = $("#input-text").val(); if(mensaje==""){ return false; } $(document).trigger("chat:enviar", mensaje); } recalcularTextarea(){ $(".input-box").css("height", "30px"); let height = parseInt(($(".input-text").prop('scrollHeight')+15)/15)*15; $(".input-box").css("height", height+"px"); height -= 30; $(".chat").css("--textarea", height+"px"); } procesarTexto(texto){ let segmentos = texto.split("```"); let resultado = ""; for(let i=0; i"+temp+"
";
}
}
return resultado
}
cargarChat(mensajes){
mensajes.forEach((mensaje) => {
if(mensaje.role!="system"){
let clone = this.template.clone();
if(mensaje.role=="user") {clone.addClass("me");}
let texto = this.procesarTexto(mensaje.content);
clone.find("div p").html(texto);
this.chatbox.append(clone);
this.active = clone;
Prism.highlightAllUnder(this.active[0])
this.active = false;
this.chatbox.scrollTop(this.chatbox[0].scrollHeight);
}
});
}
respuestaInicio(mensaje){
$("#input-text").val("");
$("button").prop("disabled", true);
$("textarea").prop("disabled", true);
this.mensaje = ""
let clone = this.template.clone();
clone.addClass("me");
clone.find("div p").text(mensaje);
this.chatbox.append(clone);
clone = this.template.clone();
clone.find("div p").html("");
this.chatbox.append(clone);
this.active = clone;
this.chatbox.scrollTop(this.chatbox[0].scrollHeight);
}
respuestaMensaje(mensaje){
this.mensaje += mensaje
let html = this.active.find("div p").html();
html += mensaje.replace(/\n/g, "