UNPKG

jodit-pro

Version:

PRO Version of Jodit Editor

2 lines (1 loc) 2.83 kB
var u=Object.defineProperty;var h=(r,s)=>u(r,"name",{value:s,configurable:!0});var a,l=function(r,s,i,t){var e=arguments.length,o=e<3?s:t===null?t=Object.getOwnPropertyDescriptor(s,i):t,c;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")o=Reflect.decorate(r,s,i,t);else for(var m=r.length-1;m>=0;m--)(c=r[m])&&(o=(e<3?c(o):e>3?c(s,i,o):c(s,i))||o);return e>3&&o&&Object.defineProperty(s,i,o),o};import{UIMessageListItem as f}from"./item/message-list-item.js";import{autobind as g,component as I,hook as C,throttle as d,watch as p}from"jodit/esm/core/decorators/index.js";import{UIGroup as S}from"jodit/esm/core/ui/group/group.js";import{ListReconciler as M}from"../../../../core/ui/helpers/index.js";let n=(a=class extends S{className(){return"UIMessageList"}constructor(s,i){super(s),this.params=i,this.messages=[],this.messageItems=new Map,this.autoScrollEnabled=!0}render(){return'<div class="&__scroll-container"></div>'}afterRender(){this.scrollContainer=this.container}onUserScroll(){if(!this.scrollContainer)return;const{scrollTop:s,scrollHeight:i,clientHeight:t}=this.scrollContainer,e=i-s-t<10;this.autoScrollEnabled=e}onMessageSent(){this.autoScrollEnabled=!0,this.scrollToBottom()}appendChildToContainer(s){this.scrollContainer&&this.scrollContainer.appendChild(s)}setMessages(s){const i=this.messages.slice();this.messages=s.slice(),this.updateMessageList(i),this.scrollToBottom()}updateMessageList(s){const i=M.reconcile(s,this.messages,{getId:h(t=>t.id,"getId"),isEqual:h((t,e)=>t.id===e.id&&t.content===e.content&&t.timestamp===e.timestamp&&JSON.stringify(t.artifacts)===JSON.stringify(e.artifacts)&&JSON.stringify(t.toolCalls)===JSON.stringify(e.toolCalls),"isEqual"),preserveOrder:!0});i.toRemove.forEach(t=>{const e=this.messageItems.get(t.id);e&&(this.elements.indexOf(e)!==-1&&(this.remove(e),e.destruct()),this.messageItems.delete(t.id))}),i.toUpdate.forEach(({newItem:t,index:e})=>{const o=this.messageItems.get(t.id);o&&(o.updateMessage(t),this.elements.indexOf(o)!==e&&e<this.elements.length&&(this.remove(o),this.append(o,e)))}),i.toCreate.forEach(t=>{const e=new f(this.j,t,this.params);this.messageItems.set(t.id,e);const o=this.messages.indexOf(t);this.append(e,o)})}scrollToBottom(){this.j.isDestructed||!this.autoScrollEnabled||(this.container.scrollTop=this.container.scrollHeight)}destruct(){this.messageItems.clear(),this.messages=[],super.destruct()}},h(a,"UIMessageList"),a);l([C("ready")],n.prototype,"afterRender",null),l([p(["scrollContainer:wheel","scrollContainer:scroll","scrollContainer:touchmove"]),d(r=>r.defaultTimeout)],n.prototype,"onUserScroll",null),l([p(":messageSent.ai-assistant-pro")],n.prototype,"onMessageSent",null),l([g],n.prototype,"setMessages",null),l([d(r=>r.defaultTimeout*2)],n.prototype,"scrollToBottom",null),n=l([I],n);export{n as UIMessageList};