UNPKG

jodit-pro

Version:

PRO Version of Jodit Editor

8 lines (7 loc) 3.12 kB
var p=Object.defineProperty;var d=(c,t)=>p(c,"name",{value:t,configurable:!0});var a,l=function(c,t,s,r){var e=arguments.length,i=e<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,s):r,n;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")i=Reflect.decorate(c,t,s,r);else for(var o=c.length-1;o>=0;o--)(n=c[o])&&(i=(e<3?n(i):e>3?n(t,s,i):n(t,s))||i);return e>3&&i&&Object.defineProperty(t,s,i),i};import{ListReconciler as v}from"../../../../core/ui/helpers/index.js";import{UIConversationListItem as u}from"./conversation-list-item.js";import{component as m,debounce as f,hook as I}from"jodit/esm/core/decorators/index.js";import{UIInput as C}from"jodit/esm/core/ui/form/inputs/input/input.js";import{UIGroup as _}from"jodit/esm/core/ui/group/group.js";let h=(a=class extends _{constructor(t,s){super(t),this.opts=s,this.searchInput=null,this.activeConversationId=null,this.conversationItems=new Map}className(){return"UIConversationList"}render(){return`<div class="&__container"> <div class="&__header"></div> <div class="&__search"> <div class="&__search-loader"></div> </div> <div class="&__list"></div> </div>`}afterRender(){this.createControls(),this.listContainer=this.getElm("list")}appendChildToContainer(t){this.listContainer&&this.listContainer.appendChild(t)}createControls(){const t=this.getElm("search");this.searchInput=new C(this.j,{name:"search",placeholder:"Search conversations...",icon:"search",clearButton:!0}),this.j.e.on(this.searchInput.nativeInput,"input",this.onSearch),t.appendChild(this.searchInput.container)}setConversations(t){this.buildList(t)}setActiveConversation(t){this.activeConversationId=t,this.elements.forEach(s=>{s.setActive(s.conversation.id===t)})}onSearch(){const t=this.searchInput.value.trim();this.j.e.fire("searchConversations.ai-assistant-pro",t)}buildList(t){const s=this.elements.map(e=>e.conversation),r=v.reconcile(s,t,{getId:d(e=>e.id,"getId"),isEqual:d((e,i)=>e.id===i.id&&e.updated===i.updated,"isEqual"),preserveOrder:!0});r.toRemove.forEach(e=>{const i=this.conversationItems.get(e.id);i&&(this.elements.indexOf(i)!==-1&&(this.remove(i),i.destruct()),this.conversationItems.delete(e.id))}),r.toUpdate.forEach(({newItem:e,index:i})=>{const n=this.conversationItems.get(e.id);if(n){const o=e.id===this.activeConversationId;n.setActive(o),this.elements.indexOf(n)!==i&&i<this.elements.length&&(this.remove(n),this.append(n,i))}}),r.toCreate.forEach(e=>{const i=e.id===this.activeConversationId,n=new u(this.j,e,i,this.opts);this.conversationItems.set(e.id,n);const o=t.indexOf(e);this.append(n,o)}),r.unchanged.forEach(e=>{const i=this.conversationItems.get(e.id);if(i){const n=e.id===this.activeConversationId;i.setActive(n)}})}setLoading(t){this.setMod("loading",t)}setParentView(t){var s;return(s=this.searchInput)===null||s===void 0||s.setParentView(t),super.setParentView(t)}destruct(){var t;(t=this.searchInput)===null||t===void 0||t.destruct(),super.destruct()}},d(a,"UIConversationList"),a);l([I("ready")],h.prototype,"afterRender",null),l([f()],h.prototype,"onSearch",null),h=l([m],h);export{h as UIConversationList};