403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/component/sidebar/dist/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/component/sidebar/dist/sidebar.bundle.min.js
this.BX=this.BX||{};this.BX.Messenger=this.BX.Messenger||{};this.BX.Messenger.v2=this.BX.Messenger.v2||{};(function(t,e,i,s,a,r,n,o,l,d,c,h,u,g,m,p,b,v,I,S,f,_,C,M,y,x,T,L,k,E,D,B,A,P,w,R,F,H,O,N,U,$,Q,G,z,q,X,V,K,j,Y,W,J){"use strict";function Z(t){const e=X.Core.getStore().getters["chats/get"](t,true);return e.chatId}function tt(t,e="ASC"){if(t.length===0){return null}t.sort(((t,i)=>{if(e==="ASC"){return t.id-i.id}return i.id-t.id}));const[i]=t;if($.Type.isNumber(i.id)){return i.id}return null}const et=50;class it{constructor({dialogId:t}){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}getInitialQuery(){return{[j.RestMethod.imChatFavoriteCounterGet]:{chat_id:this.chatId},[j.RestMethod.imChatFavoriteGet]:{chat_id:this.chatId,limit:et}}}getResponseHandler(){return t=>{if(!t[j.RestMethod.imChatFavoriteCounterGet]){return Promise.reject(new Error("SidebarInfo service error: no response"))}const e=t[j.RestMethod.imChatFavoriteCounterGet];const i=this.store.dispatch("sidebar/favorites/setCounter",{chatId:this.chatId,counter:e.counter});const s=this.handleResponse(t[j.RestMethod.imChatFavoriteGet]);return Promise.all([i,s])}}loadNextPage(){const t=this.getQueryParams();return this.requestPage(t)}getQueryParams(){const t={CHAT_ID:this.chatId,LIMIT:et};const e=this.store.getters["sidebar/favorites/getLastId"](this.chatId);if(e>0){t.LAST_ID=e}return t}requestPage(t){return this.restClient.callMethod(j.RestMethod.imChatFavoriteGet,t).then((t=>this.handleResponse(t.data()))).catch((t=>{console.error("SidebarInfo: Im.imChatFavoriteGet: page request error",t)}))}handleResponse(t){return this.updateModels(t)}updateModels(t){const{list:e=[],users:i=[],files:s=[],tariffRestrictions:a={}}=t;const r=this.userManager.setUsersToModel(i);const n=Boolean(a.isHistoryLimitExceeded);const o=e.map((t=>t.message));const l=e.length===et;const d=tt(e);const c=this.store.dispatch("files/set",s);const h=this.store.dispatch("messages/store",o);const u=this.store.dispatch("sidebar/favorites/set",{chatId:this.chatId,favorites:e,hasNextPage:l,lastId:d,isHistoryLimitExceeded:n});return Promise.all([c,h,u,r])}}const st=50;class at{constructor({dialogId:t}){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}getInitialQuery(){return{[j.RestMethod.imChatUrlCounterGet]:{chat_id:this.chatId},[j.RestMethod.imChatUrlGet]:{chat_id:this.chatId,limit:st}}}getResponseHandler(){return t=>{if(!t[j.RestMethod.imChatUrlCounterGet]||!t[j.RestMethod.imChatUrlGet]){return Promise.reject(new Error("SidebarInfo service error: no response"))}const e=this.handleUrlGetResponse(t[j.RestMethod.imChatUrlGet]);const i=this.handleCounterGetResponse(t[j.RestMethod.imChatUrlCounterGet]);return Promise.all([e,i])}}loadNextPage(){const t=this.getLinksCountFromModel();if(t===0){return Promise.resolve()}const e=this.getQueryParams(t);return this.requestPage(e)}getQueryParams(t=0){const e={CHAT_ID:this.chatId,LIMIT:st};if($.Type.isNumber(t)&&t>0){e.OFFSET=t}return e}requestPage(t){return this.restClient.callMethod(j.RestMethod.imChatUrlGet,t).then((t=>this.handleUrlGetResponse(t.data()))).catch((t=>{console.error("SidebarInfo: Im.chatUrlList: page request error",t)}))}handleUrlGetResponse(t){const{list:e,users:i,tariffRestrictions:s={}}=t;const a=Boolean(s.isHistoryLimitExceeded);const r=this.userManager.setUsersToModel(i);const n=this.store.dispatch("sidebar/links/set",{chatId:this.chatId,links:e,hasNextPage:e.length===st,isHistoryLimitExceeded:a});return Promise.all([n,r])}handleCounterGetResponse(t){const e=t.counter;return this.store.dispatch("sidebar/links/setCounter",{chatId:this.chatId,counter:e})}getLinksCountFromModel(){return this.store.getters["sidebar/links/getSize"](this.chatId)}}const rt=50;class nt{constructor({dialogId:t}){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}getInitialQuery(){return{[j.RestMethod.imChatFileCollectionGet]:{chat_id:this.chatId,limit:rt}}}getResponseHandler(){return t=>{if(!t[j.RestMethod.imChatFileCollectionGet]){return Promise.reject(new Error("SidebarInfo service error: no response"))}return this.updateModels(t[j.RestMethod.imChatFileCollectionGet])}}updateModels(t,e=""){const{list:i,users:s,files:a,tariffRestrictions:r={}}=t;const n=Boolean(r.isHistoryLimitExceeded);const o=this.store.dispatch("sidebar/files/setHistoryLimitExceeded",{chatId:this.chatId,isHistoryLimitExceeded:n});if(e&&!$.Type.isArrayFilled(i)){return this.store.dispatch("sidebar/files/setHasNextPage",{chatId:this.chatId,group:e,hasNextPage:false})}const l=this.userManager.setUsersToModel(s);const d=this.store.dispatch("files/set",a);const c={};i.forEach((t=>{var e;const i=(e=t.group)!=null?e:j.SidebarFileGroups.fileUnsorted;if(!c[i]){c[i]=[]}c[i].push(t)}));const h=[];Object.entries(c).forEach((([t,e])=>{h.push(this.store.dispatch("sidebar/files/set",{chatId:this.chatId,files:e,group:t}),this.store.dispatch("sidebar/files/setHasNextPage",{chatId:this.chatId,group:t,hasNextPage:e.length===rt}),this.store.dispatch("sidebar/files/setLastId",{chatId:this.chatId,group:t,lastId:tt(e)}))}));return Promise.all([d,l,o,...h])}loadFirstPage(t){return this.loadFirstPageByGroup(t)}loadNextPage(t){return this.loadNextPageByGroup(t)}loadFirstPageByGroup(t){const e=this.getFilesCountFromModel(t);if(e>rt){return Promise.resolve()}const i=this.getQueryParams(t);return this.requestPage(i)}loadNextPageByGroup(t){const e=this.getQueryParams(t);return this.requestPage(e)}getQueryParams(t){const e={CHAT_ID:this.chatId,GROUP:t,LIMIT:rt};const i=this.store.getters["sidebar/files/getLastId"](this.chatId,t);if(i>0){e.LAST_ID=i}return e}requestPage(t){return this.restClient.callMethod(j.RestMethod.imChatFileGet,t).then((e=>this.updateModels(e.data(),t.GROUP))).catch((t=>{console.error("SidebarInfo: imChatFileGet: page request error",t)}))}getFilesCountFromModel(t){return this.store.getters["sidebar/files/getSize"](this.chatId,t)}}const ot=50;class lt{constructor({dialogId:t}){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}getInitialQuery(){return{[j.RestMethod.imChatTaskGet]:{chat_id:this.chatId,limit:ot}}}getResponseHandler(){return t=>{if(!t[j.RestMethod.imChatTaskGet]){return Promise.reject(new Error("SidebarInfo service error: no response"))}return this.updateModels(t[j.RestMethod.imChatTaskGet])}}loadFirstPage(){const t=this.getTasksCountFromModel();if(t>ot){return Promise.resolve()}const e=this.getQueryParams();return this.requestPage(e)}loadNextPage(){const t=this.getQueryParams();return this.requestPage(t)}getQueryParams(){const t={CHAT_ID:this.chatId,LIMIT:ot};const e=this.store.getters["sidebar/tasks/getLastId"](this.chatId);if(e>0){t.LAST_ID=e}return t}requestPage(t){return this.restClient.callMethod(j.RestMethod.imChatTaskGet,t).then((t=>this.updateModels(t.data()))).catch((t=>{console.error("SidebarInfo: Im.imChatFavoriteGet: page request error",t)}))}updateModels(t){const{list:e,users:i,tariffRestrictions:s={}}=t;const a=Boolean(s.isHistoryLimitExceeded);const r=e.length===ot;const n=tt(e);const o=this.userManager.setUsersToModel(i);const l=this.store.dispatch("sidebar/tasks/set",{chatId:this.chatId,tasks:e,hasNextPage:r,lastId:n,isHistoryLimitExceeded:a});return Promise.all([l,o])}getTasksCountFromModel(){return this.store.getters["sidebar/tasks/getSize"](this.chatId)}}const dt=50;class ct{constructor({dialogId:t}){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}getInitialQuery(){return{[j.RestMethod.imChatCalendarGet]:{chat_id:this.chatId,limit:dt}}}getResponseHandler(){return t=>{if(!t[j.RestMethod.imChatCalendarGet]){return Promise.reject(new Error("SidebarInfo service error: no response"))}return this.updateModels(t[j.RestMethod.imChatCalendarGet])}}loadFirstPage(){const t=this.getMeetingsCountFromState();if(t>dt){return Promise.resolve()}const e=this.getQueryParams();return this.requestPage(e)}loadNextPage(){const t=this.getQueryParams();return this.requestPage(t)}getQueryParams(){const t={CHAT_ID:this.chatId,LIMIT:dt};const e=this.store.getters["sidebar/meetings/getLastId"](this.chatId);if(e>0){t.LAST_ID=e}return t}requestPage(t){return this.restClient.callMethod(j.RestMethod.imChatCalendarGet,t).then((t=>this.updateModels(t.data()))).catch((t=>{console.error("SidebarInfo: Im.imChatCalendarGet: page request error",t)}))}updateModels(t){const{list:e,users:i,tariffRestrictions:s={}}=t;const a=Boolean(s.isHistoryLimitExceeded);const r=e.length===dt;const n=tt(e);const o=this.userManager.setUsersToModel(i);const l=this.store.dispatch("sidebar/meetings/set",{chatId:this.chatId,meetings:e,hasNextPage:r,lastId:n,isHistoryLimitExceeded:a});return Promise.all([l,o])}getMeetingsCountFromState(){return this.store.getters["sidebar/meetings/getSize"](this.chatId)}}const ht=50;class ut{constructor({dialogId:t}){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}getInitialQuery(){return{[j.RestMethod.imV2ChatMemberTail]:{dialogId:this.dialogId,limit:ht}}}loadFirstPage(){const t=this.getMembersCountFromModel();if(t>ht){return Promise.resolve()}const e=this.getQueryParams();return this.requestPage(e)}loadNextPage(){const t=this.getQueryParams();return this.requestPage(t)}getQueryParams(){const t={dialogId:this.dialogId,limit:ht};const e=this.store.getters["sidebar/members/getNextCursor"](this.chatId);if(e){t.cursor=e}return t}async requestPage(t){let e={};try{const i=await this.restClient.callMethod(j.RestMethod.imV2ChatMemberTail,t);e=i.data()}catch(t){console.error("SidebarMain: Im.DialogUsersList: page request error",t)}return this.updateModels(e)}getResponseHandler(){return t=>this.updateModels(t[j.RestMethod.imV2ChatMemberTail])}updateModels(t){const{users:e,nextCursor:i}=t;const s=[];const a=this.userManager.setUsersToModel(e);e.forEach((t=>{s.push(t.id)}));const r=this.store.dispatch("sidebar/members/set",{chatId:this.chatId,users:s,hasNextPage:e.length===ht});let n=Promise.resolve();if(i){n=this.store.dispatch("sidebar/members/setNextCursor",{chatId:this.chatId,nextCursor:i})}return Promise.all([a,r,n])}getMembersCountFromModel(){return this.store.getters["sidebar/members/getSize"](this.chatId)}}const gt=25;class mt{constructor(){this.store=X.Core.getStore();this.userManager=new q.UserManager}getInitialQuery(){if(this.isInitedMultidialogBlock()){return{}}return{[j.RestMethod.imBotNetworkChatCount]:{}}}getResponseHandler(){return t=>{if(this.isInitedMultidialogBlock()){return Promise.resolve()}if(!t[j.RestMethod.imBotNetworkChatCount]){return Promise.reject(new Error("SidebarInfo service error: no response"))}const e=this.store.dispatch("sidebar/multidialog/setInited",true);const i=this.updateModels(t[j.RestMethod.imBotNetworkChatCount]);return Promise.all([e,i])}}loadNextPage(){const t=this.store.getters["sidebar/multidialog/hasNextPage"];if(!t){return Promise.resolve()}const e=this.store.getters["sidebar/multidialog/getNumberMultidialogs"];const i={data:this.getQueryParams({offset:e})};return this.requestPage(i)}getQueryParams(t){const e={offset:0,limit:gt,...t};Object.keys(e).forEach((t=>{const i=e[t];if($.Type.isNumber(i)&&i>0){e[t]=i}}));return e}requestPage(t){return u.runAction(j.RestMethod.imBotNetworkChatList,t).then((t=>this.updateModels(t))).catch((t=>{console.error("SidebarInfo: imBotNetworkChatList: page request error",t)}))}createSupportChat(){H.Logger.warn("SidebarInfo: imBotNetworkChatAdd");return u.runAction(j.RestMethod.imBotNetworkChatAdd).then((t=>{void this.updateModels({chats:t});const{dialogId:e}=t;H.Logger.warn("SidebarInfo: createSupportChat result",t);return e})).catch((t=>{console.error("SidebarInfo: createSupportChat error:",t)}))}loadFirstPage(){const t=this.store.getters["sidebar/multidialog/isInitedDetail"];if(t){return Promise.resolve()}const e=this.store.getters["sidebar/multidialog/getNumberMultidialogs"];const i=gt<e?e:gt;const s={data:this.getQueryParams({limit:i})};return this.requestPage(s).then((()=>this.store.dispatch("sidebar/multidialog/setInitedDetail",true)))}updateModels(t){const{count:e,chatIdsWithCounters:i,multidialogs:s,chats:a,users:r,openSessionsLimit:n}=t;const o=[];if(a){const t=this.store.dispatch("chats/set",a);o.push(t)}if(r){const t=this.userManager.setUsersToModel(r);o.push(t)}const l=this.store.dispatch("sidebar/multidialog/set",{chatsCount:e,unreadChats:i,multidialogs:s,openSessionsLimit:n});o.push(l);return Promise.all(o)}isInitedMultidialogBlock(){return this.store.getters["sidebar/multidialog/isInited"]}}const pt=50;class bt{constructor({dialogId:t}){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=this.getChatId();this.userManager=new q.UserManager}getInitialQuery(){return{[j.RestMethod.imDiskFolderListGet]:{chat_id:this.chatId,limit:pt}}}getResponseHandler(){return t=>{if(!t[j.RestMethod.imDiskFolderListGet]){return Promise.reject(new Error("SidebarInfo service error: no response"))}return this.updateModels(t[j.RestMethod.imDiskFolderListGet])}}loadFirstPage(){const t=this.getFilesCountFromModel(j.SidebarDetailBlock.fileUnsorted);if(t>pt){return Promise.resolve()}const e=this.getQueryParams();return this.requestPage(e)}loadNextPage(){const t=this.getQueryParams();return this.requestPage(t)}getQueryParams(){const t={CHAT_ID:this.chatId,LIMIT:pt};const e=this.store.getters["sidebar/files/getLastId"](this.chatId,j.SidebarDetailBlock.fileUnsorted);if(e>0){t.LAST_ID=e}return t}requestPage(t){return this.restClient.callMethod(j.RestMethod.imDiskFolderListGet,t).then((t=>this.handleResponse(t.data()))).catch((t=>{console.error("SidebarInfo: Im.imDiskFolderListGet: page request error",t)}))}handleResponse(t){const e=t;if(e.files.length<pt){this.hasMoreItemsToLoad=false}const i=tt(e.files);if(i){this.lastId=i}return this.updateModels(e)}updateModels(t){const{users:e,files:i,tariffRestrictions:s={}}=t;const a=Boolean(s.isHistoryLimitExceeded);const r=this.store.dispatch("sidebar/files/setHistoryLimitExceeded",{chatId:this.chatId,isHistoryLimitExceeded:a});const n=i.map((t=>({...t,group:j.SidebarDetailBlock.fileUnsorted})));const o=this.userManager.setUsersToModel(e);const l=this.store.dispatch("files/set",n);const d=this.store.dispatch("sidebar/files/set",{chatId:this.chatId,files:n,group:j.SidebarDetailBlock.fileUnsorted});const c=this.store.dispatch("sidebar/files/setHasNextPage",{chatId:this.chatId,group:j.SidebarDetailBlock.fileUnsorted,hasNextPage:n.length===pt});const h=this.store.dispatch("sidebar/files/setLastId",{chatId:this.chatId,group:j.SidebarDetailBlock.fileUnsorted,lastId:tt(n)});return Promise.all([l,d,o,c,h,r])}getFilesCountFromModel(t){return this.store.getters["sidebar/files/getSize"](this.chatId,t)}getChatId(){const t=this.store.getters["chats/get"](this.dialogId,true);return t.chatId}}const vt={Members:ut,Favorite:it,Link:at,Task:lt,File:nt,Meeting:ct,FileUnsorted:bt,Multidialog:mt};const It=Object.freeze({[j.SidebarMainPanelBlock.chat]:[j.SidebarDetailBlock.members],[j.SidebarMainPanelBlock.copilot]:[j.SidebarDetailBlock.members],[j.SidebarMainPanelBlock.task]:[j.SidebarDetailBlock.members],[j.SidebarMainPanelBlock.copilotInfo]:[j.SidebarDetailBlock.favorite],[j.SidebarMainPanelBlock.info]:[j.SidebarDetailBlock.favorite,j.SidebarDetailBlock.link],[j.SidebarMainPanelBlock.fileList]:[j.SidebarDetailBlock.file],[j.SidebarMainPanelBlock.fileUnsortedList]:[j.SidebarDetailBlock.fileUnsorted],[j.SidebarMainPanelBlock.taskList]:[j.SidebarDetailBlock.task],[j.SidebarMainPanelBlock.meetingList]:[j.SidebarDetailBlock.meeting],[j.SidebarMainPanelBlock.multidialog]:[j.SidebarDetailBlock.multidialog]});class St{constructor({dialogId:t}){this.blockServices=[];this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.buildBlocks()}async requestInitialData(){const t=this.getInitialQuery();const e=await u.callBatch(t);return this.handleBatchRequestResult(e)}buildBlocks(){const t=this.getServiceClassesForBlocks();this.blockServices=t.map((t=>{const e=new vt[t]({dialogId:this.dialogId});return{initialQuery:e.getInitialQuery(),responseHandler:e.getResponseHandler()}}))}getServiceClassesForBlocks(){const t=[];const e=i.SidebarManager.getInstance().getConfig(this.dialogId);const s=e.getBlocks(this.dialogId);s.forEach((e=>{const i=It[e];if(i){t.push(...i)}}));return t.map((t=>$.Text.capitalize(t)))}getInitialQuery(){let t={};this.blockServices.forEach((e=>{t=Object.assign(t,e.initialQuery)}));return t}handleBatchRequestResult(t){const e=[];this.blockServices.forEach((i=>{e.push(i.responseHandler(t))}));return Promise.all(e).then((()=>this.setInited())).catch((t=>{console.error(t)}))}setInited(){return this.store.dispatch("sidebar/setInited",Z(this.dialogId))}}var ft=babelHelpers.classPrivateFieldLooseKey("deleteChat");var _t=babelHelpers.classPrivateFieldLooseKey("deleteCollab");var Ct=babelHelpers.classPrivateFieldLooseKey("isDeletionCancelled");var Mt=babelHelpers.classPrivateFieldLooseKey("isPersonalChat");class yt extends B.RecentMenu{constructor(){super();Object.defineProperty(this,Mt,{value:kt});Object.defineProperty(this,Ct,{value:Lt});Object.defineProperty(this,_t,{value:Tt});Object.defineProperty(this,ft,{value:xt});this.id="im-sidebar-context-menu";this.permissionManager=w.PermissionManager.getInstance()}getMenuOptions(){return{...super.getMenuOptions(),className:this.getMenuClassName(),angle:false}}getMenuItems(){return[this.getPinMessageItem(),this.getEditItem(),this.getAddMembersToChatItem(),this.getOpenProfileItem(),this.getOpenUserCalendarItem(),this.getChatsWithUserItem(),this.getHideItem(),this.getLeaveItem(),this.getDeleteItem()]}getEditItem(){if(!this.permissionManager.canPerformActionByRole(j.ActionByRole.update,this.context.dialogId)){return null}return{text:$.Loc.getMessage("IM_SIDEBAR_MENU_UPDATE_CHAT"),onclick:()=>{L.Analytics.getInstance().chatEdit.onOpenForm(this.context.dialogId);void k.LayoutManager.getInstance().setLayout({name:j.Layout.updateChat.name,entityId:this.context.dialogId})}}}getDeleteItem(){if(!this.permissionManager.canPerformActionByRole(j.ActionByRole.delete,this.context.dialogId)){return null}return{text:$.Loc.getMessage("IM_SIDEBAR_MENU_DELETE_CHAT"),className:"menu-popup-no-icon bx-im-sidebar__context-menu_delete",onclick:async()=>{L.Analytics.getInstance().chatDelete.onClick(this.context.dialogId);if(await babelHelpers.classPrivateFieldLooseBase(this,Ct)[Ct]()){return}L.Analytics.getInstance().chatDelete.onConfirm(this.context.dialogId);if(this.isCollabChat()){babelHelpers.classPrivateFieldLooseBase(this,_t)[_t]();return}babelHelpers.classPrivateFieldLooseBase(this,ft)[ft]()}}}getOpenUserCalendarItem(){if(!this.isUser()){return null}if(this.isBot()){return null}const t=Q.Utils.user.getCalendarLink(this.context.dialogId);return{text:$.Loc.getMessage("IM_LIB_MENU_OPEN_CALENDAR_V2"),onclick:()=>{BX.SidePanel.Instance.open(t);this.menuInstance.close()}}}getAddMembersToChatItem(){if(this.isBot()||this.isChatWithCurrentUser()){return null}const t=this.permissionManager.canPerformActionByUserType(j.ActionByUserType.createChat);if(babelHelpers.classPrivateFieldLooseBase(this,Mt)[Mt]()&&!t){return null}const e=this.permissionManager.canPerformActionByRole(j.ActionByRole.extend,this.context.dialogId);if(!e){return null}const i=this.isChannel()?$.Loc.getMessage("IM_SIDEBAR_MENU_INVITE_SUBSCRIBERS"):$.Loc.getMessage("IM_SIDEBAR_MENU_INVITE_MEMBERS_V2");return{text:i,onclick:()=>{L.Analytics.getInstance().userAdd.onChatSidebarClick(this.dialogId);this.emit(yt.events.onAddToChatShow);this.menuInstance.close()}}}}async function xt(){await(new P.ChatService).deleteChat(this.context.dialogId);void k.LayoutManager.getInstance().clearCurrentLayoutEntityId()}async function Tt(){D.Notifier.collab.onBeforeDelete();await(new P.ChatService).deleteCollab(this.context.dialogId);void k.LayoutManager.getInstance().clearCurrentLayoutEntityId();void k.LayoutManager.getInstance().deleteLastOpenedElementById(this.context.dialogId)}async function Lt(){const{dialogId:t}=this.context;const e=await R.showDeleteChatConfirm(t);if(!e){L.Analytics.getInstance().chatDelete.onCancel(t);return true}return false}function kt(){const t=this.getChat(this.context.dialogId);return t.type===j.ChatType.user}yt.events={onAddToChatShow:"onAddToChatShow"};const Et={name:"MainHeader",components:{AddToChat:E.AddToChat,AddToCollab:E.AddToCollab},props:{dialogId:{type:String,required:true}},data(){return{showAddToChatPopup:false}},computed:{recentItem(){return this.$store.getters["recent/get"](this.dialogId,true)},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},sidebarConfig(){return i.SidebarManager.getInstance().getConfig(this.dialogId)},headerTitle(){return this.sidebarConfig.getHeaderTitle()},showMenuIcon(){return this.canOpenMenu&&this.isMenuEnabled},canOpenMenu(){return w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.openSidebarMenu,this.dialogId)},isMenuEnabled(){return this.sidebarConfig.isMenuEnabled()},addMembersPopupComponent(){return this.dialog.type===j.ChatType.collab?E.AddToCollab:E.AddToChat}},created(){this.contextMenu=new yt;this.contextMenu.subscribe(yt.events.onAddToChatShow,this.onAddChatShow)},beforeUnmount(){this.contextMenu.destroy();this.contextMenu.unsubscribe(yt.events.onAddToChatShow,this.onAddChatShow)},methods:{onAddChatShow(){this.showAddToChatPopup=true},onContextMenuClick(t){const e={dialogId:this.dialogId,...this.recentItem};this.contextMenu.openMenu(e,t.target)},onSidebarCloseClick(){V.EventEmitter.emit(j.EventType.sidebar.close)},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-header__container bx-im-sidebar-header__scope">\n\t\t\t<div class="bx-im-sidebar-header__title-container">\n\t\t\t\t<button \n\t\t\t\t\tclass="bx-im-sidebar-header__cross-icon bx-im-messenger__cross-icon" \n\t\t\t\t\t@click="onSidebarCloseClick"\n\t\t\t\t></button>\n\t\t\t\t<div class="bx-im-sidebar-header__title">{{ headerTitle }}</div>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\tv-if="showMenuIcon"\n\t\t\t\tclass="bx-im-sidebar-header__context-menu-icon bx-im-messenger__context-menu-icon"\n\t\t\t\t@click="onContextMenuClick"\n\t\t\t\tref="context-menu"\n\t\t\t></button>\n\t\t\t<component\n\t\t\t\tv-if="showAddToChatPopup"\n\t\t\t\t:is="addMembersPopupComponent"\n\t\t\t\t:bindElement="$refs['context-menu'] || {}"\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:popupConfig="{offsetTop: 0, offsetLeft: -420}"\n\t\t\t\t@close="showAddToChatPopup = false"\n\t\t\t/>\n\t\t</div>\n\t`};const Dt={name:"ChatLinks",directives:{hint:c.hint},props:{dialogId:{type:String,required:true}},data(){return{expanded:false}},computed:{dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},urlCounter(){const t=this.$store.getters["sidebar/links/getCounter"](this.chatId);return this.getCounterString(t)},isLinksAvailable(){return this.$store.state.sidebar.isLinksMigrated},hintDirectiveContent(){return{text:this.$Bitrix.Loc.getMessage("IM_SIDEBAR_LINKS_NOT_AVAILABLE"),popupOptions:{angle:true,targetContainer:document.body,offsetLeft:141,offsetTop:-10,bindOptions:{position:"top"}}}},chatId(){return this.dialog.chatId}},methods:{getCounterString(t){const e=100;if(t>=e){return"99+"}return t.toString()},onLinkClick(){if(!this.isLinksAvailable){return}V.EventEmitter.emit(j.EventType.sidebar.open,{panel:j.SidebarDetailBlock.link,dialogId:this.dialogId})},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div \n\t\t\tclass="bx-im-sidebar-chat-links__container" \n\t\t\t:class="[isLinksAvailable ? '' : '--links-not-active']"\n\t\t\t@click="onLinkClick"\n\t\t>\n\t\t\t<div \n\t\t\t\tv-if="!isLinksAvailable" \n\t\t\t\tclass="bx-im-sidebar-chat-links__hint-not-active" \n\t\t\t\tv-hint="hintDirectiveContent"\n\t\t\t></div>\n\t\t\t<div class="bx-im-sidebar-chat-links__title-container">\n\t\t\t\t<div class="bx-im-sidebar-chat-links__icon"></div>\n\t\t\t\t<div class="bx-im-sidebar-chat-links__title-text">\n\t\t\t\t\t{{ loc('IM_SIDEBAR_LINK_DETAIL_TITLE') }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-chat-links__counter-container">\n\t\t\t\t<span class="bx-im-sidebar-chat-links__counter">{{urlCounter}}</span>\n\t\t\t</div>\n\t\t</div>\n\t`};const Bt={name:"ChatFavourites",props:{dialogId:{type:String,required:true}},computed:{dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},favoriteCounter(){const t=this.$store.getters["sidebar/favorites/getCounter"](this.chatId);return this.getCounterString(t)},chatId(){return this.dialog.chatId},isCopilotLayout(){const{name:t}=this.$store.getters["application/getLayout"];return t===j.Layout.copilot.name}},methods:{getCounterString(t){const e=100;if(t>=e){return"99+"}return t.toString()},onFavouriteClick(){V.EventEmitter.emit(j.EventType.sidebar.open,{panel:j.SidebarDetailBlock.favorite,dialogId:this.dialogId})},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div \n\t\t\tclass="bx-im-sidebar-chat-favourites__container" \n\t\t\t:class="{'--copilot': isCopilotLayout}"\n\t\t\t@click="onFavouriteClick"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-chat-favourites__title">\n\t\t\t\t<div class="bx-im-sidebar-chat-favourites__icon"></div>\n\t\t\t\t<div class="bx-im-sidebar-chat-favourites__title-text">\n\t\t\t\t\t{{ loc('IM_SIDEBAR_FAVORITE_DETAIL_TITLE') }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-chat-favourites__counter-container">\n\t\t\t\t<span class="bx-im-sidebar-chat-favourites__counter">{{favoriteCounter}}</span>\n\t\t\t</div>\n\t\t</div>\n\t`};const At=25;const Pt="\n";const wt={[j.ChatType.user]:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_USER"),[j.ChatType.channel]:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_CHANNEL"),[j.ChatType.openChannel]:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_CHANNEL"),[j.ChatType.generalChannel]:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_CHANNEL"),[j.ChatType.comment]:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_COMMENTS"),default:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_GROUP_V2")};const Rt={name:"ChatDescription",props:{dialogId:{type:String,required:true}},data(){return{expanded:false}},computed:{dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},isUser(){return this.dialog.type===j.ChatType.user},isBot(){const t=this.$store.getters["users/get"](this.dialogId,true);return t.type===j.UserType.bot},isCollabChat(){return this.dialog.type===j.ChatType.collab},isLongDescription(){const t=this.dialog.description.includes(Pt);return this.dialog.description.length>At||t},previewDescription(){if(this.dialog.description.length===0){return this.chatTypeText}if(this.isLongDescription){return`${this.dialog.description.slice(0,At)}...`}return this.dialog.description},descriptionToShow(){return this.expanded?this.dialog.description:this.previewDescription},chatTypeText(){var t;if(this.isCopilotLayout){return this.$store.getters["copilot/getProvider"]}if(this.isBot){return this.loc("IM_SIDEBAR_CHAT_TYPE_BOT")}if(this.isCollabChat){return this.loc("IM_SIDEBAR_CHAT_TYPE_COLLAB")}return(t=wt[this.dialog.type])!=null?t:wt.default},showExpandButton(){if(this.expanded){return false}return this.isLongDescription},isCopilotLayout(){const{name:t}=this.$store.getters["application/getLayout"];return t===j.Layout.copilot.name}},methods:{loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-chat-description__container">\n\t\t\t<div class="bx-im-sidebar-chat-description__text-container" :class="[expanded ? '--expanded' : '']">\n\t\t\t\t<div class="bx-im-sidebar-chat-description__icon"></div>\n\t\t\t\t<div class="bx-im-sidebar-chat-description__text"> {{ descriptionToShow }}</div>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\tv-if="showExpandButton"\n\t\t\t\tclass="bx-im-sidebar-chat-description__show-more-button"\n\t\t\t\t@click="expanded = !expanded"\n\t\t\t>\n\t\t\t\t{{ loc('IM_SIDEBAR_CHAT_DESCRIPTION_SHOW') }}\n\t\t\t</button>\n\t\t</div>\n\t`};const Ft={name:"ChatShared",props:{dialogId:{type:String,required:true}},methods:{async onLinkClick(){V.EventEmitter.emit(j.EventType.sidebar.open,{panel:j.SidebarDetailBlock.chatsWithUser,standalone:true,dialogId:this.dialogId})},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div \n\t\t\tclass="bx-im-sidebar-chat-shared__container" \n\t\t\t@click="onLinkClick"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-chat-shared__title-container">\n\t\t\t\t<div class="bx-im-sidebar-chat-shared__icon"></div>\n\t\t\t\t<div class="bx-im-sidebar-chat-shared__title-text">\n\t\t\t\t\t{{ loc('IM_SIDEBAR_SHARED_CHATS_TITLE') }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-chat-shared__arrow"></div>\n\t\t</div>\n\t`};const Ht={name:"InfoPreview",components:{ChatDescription:Rt,ChatLinks:Dt,ChatFavourites:Bt,ChatShared:Ft},props:{dialogId:{type:String,required:true}},computed:{user(){return this.$store.getters["users/get"](this.dialogId,true)},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},isUser(){return this.dialog.type===j.ChatType.user},isSelfChat(){return this.isUser&&this.user.id===X.Core.getUserId()},isUserOrBot(){return this.isUser&&[j.UserType.bot,j.UserType.user].includes(this.user.type)},showSharedChats(){return this.isUserOrBot&&!this.isSelfChat}},template:`\n\t\t<div class="bx-im-sidebar-info-preview__container">\n\t\t\t<ChatDescription :dialogId="dialogId" />\n\t\t\t<ChatFavourites :dialogId="dialogId" />\n\t\t\t<ChatLinks :dialogId="dialogId" />\n\t\t\t<ChatShared v-if="showSharedChats" :dialogId="dialogId" />\n\t\t</div>\n\t`};const Ot={name:"FilePreviewItem",directives:{lazyload:s.lazyload},props:{fileItem:{type:Object,required:true}},computed:{sidebarFileItem(){return this.fileItem},file(){return this.$store.getters["files/get"](this.sidebarFileItem.fileId,true)},previewImageStyles(){if(!this.hasPreview){return{}}return{backgroundImage:`url('${this.file.urlPreview}')`}},hasPreview(){return this.file.urlPreview!==""},fileShortName(){const t=22;return Q.Utils.file.getShortFileName(this.file.name,t)},viewerAttributes(){return Q.Utils.file.getViewerDataAttributes({viewerAttributes:this.file.viewerAttrs,previewImageSrc:this.imageSrc,context:j.FileViewerContext.sidebarMain})},isImage(){return this.file.type==="image"},isVideo(){return this.file.type==="video"},isAudio(){return this.file.type==="audio"},fileIconClass(){return`ui-icon ui-icon-file-${this.file.icon}`},isViewerAvailable(){return Object.keys(this.viewerAttributes).length>0},imageSrc(){const t=["gif","webp"].includes(this.file.extension);return t?this.file.urlShow:this.file.urlPreview}},methods:{download(){if(this.isViewerAvailable){return}window.open(this.file.urlDownload,"_blank")}},template:`\n\t\t<div\n\t\t\tclass="bx-im-sidebar-file-preview-item__container bx-im-sidebar-file-preview-item__scope"\n\t\t\t@click="download" \n\t\t\t:title="file.name"\n\t\t>\n\t\t\t<img\n\t\t\t\tv-if="isImage"\n\t\t\t\tv-bind="viewerAttributes"\n\t\t\t\tv-lazyload\n\t\t\t\tdata-lazyload-dont-hide\n\t\t\t\t:data-lazyload-src="imageSrc"\n\t\t\t\t:title="file.name"\n\t\t\t\t:alt="file.name"\n\t\t\t\tclass="bx-im-sidebar-file-preview-item__preview-box"\n\t\t\t/>\n\t\t\t<div \n\t\t\t\tv-else-if="isVideo"\n\t\t\t\tclass="bx-im-sidebar-file-preview-item__preview-box bx-im-sidebar-file-preview-item__preview-video-box"\n\t\t\t\t:style="previewImageStyles"\n\t\t\t\tv-bind="viewerAttributes"\n\t\t\t>\n\t\t\t\t<video \n\t\t\t\t\tv-if="!hasPreview" \n\t\t\t\t\t:src="file.urlDownload"\n\t\t\t\t\tpreload="metadata" \n\t\t\t\t\tclass="bx-im-sidebar-file-preview-item__preview-video" \n\t\t\t\t></video>\n\t\t\t\t<div class="bx-im-sidebar-file-preview-item__preview-video-play-button"></div>\n\t\t\t\t<div class="bx-im-sidebar-file-preview-item__preview-video-play-icon"></div>\n\t\t\t</div>\n\t\t\t<div v-else-if="isAudio" v-bind="viewerAttributes" class="bx-im-sidebar-file-preview-item__preview-box">\n\t\t\t\t<div class="bx-im-sidebar-file-preview-item__preview-audio-play-button"></div>\n\t\t\t</div>\n\t\t\t<div v-else v-bind="viewerAttributes" class="bx-im-sidebar-file-preview-item__preview-box">\n\t\t\t\t<div :class="fileIconClass"><i></i></div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-file-preview-item__text">{{ fileShortName }}</div>\n\t\t</div>\n\t`};const Nt={name:"DetailEmptyState",props:{title:{type:String,required:true},iconType:{type:String,required:true}},computed:{iconClass(){return`--${$.Text.toKebabCase(this.iconType)}`}},template:`\n\t\t<div class="bx-im-sidebar-detail-empty-state__container bx-im-sidebar-detail-empty-state__scope">\n\t\t\t<span class="bx-im-sidebar-detail-empty-state__icon" :class="[iconClass]"></span>\n\t\t\t<span class="bx-im-sidebar-detail-empty-state__text">{{ title }}</span>\n\t\t</div>\n\t`};const Ut={name:"FileListPreview",components:{DetailEmptyState:Nt,FilePreviewItem:Ot},props:{dialogId:{type:String,required:true}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,files(){if(this.isMigrationFinished){return this.$store.getters["sidebar/files/getLatest"](this.chatId)}return this.$store.getters["sidebar/files/getLatestUnsorted"](this.chatId)},hasFiles(){return this.files.length>0},isMigrationFinished(){return this.$store.state.sidebar.isFilesMigrated},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId}},methods:{onOpenDetail(){if(!this.hasFiles){return}const t=this.isMigrationFinished?j.SidebarDetailBlock.file:j.SidebarDetailBlock.fileUnsorted;V.EventEmitter.emit(j.EventType.sidebar.open,{panel:t,dialogId:this.dialogId})}},template:`\n\t\t<div class="bx-im-sidebar-file-preview__scope">\n\t\t\t<div class="bx-im-sidebar-file-preview__container">\n\t\t\t\t<div \n\t\t\t\t\tclass="bx-im-sidebar-file-preview__header_container" \n\t\t\t\t\t:class="[hasFiles ? '--active': '']" \n\t\t\t\t\t@click="onOpenDetail"\n\t\t\t\t>\n\t\t\t\t\t<span class="bx-im-sidebar-file-preview__title-text">\n\t\t\t\t\t\t{{ $Bitrix.Loc.getMessage('IM_SIDEBAR_MEDIA_DETAIL_TITLE') }}\n\t\t\t\t\t</span>\n\t\t\t\t\t<div v-if="hasFiles" class="bx-im-sidebar__forward-icon"></div>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="hasFiles" class="bx-im-sidebar-file-preview__files-container">\n\t\t\t\t\t<FilePreviewItem v-for="file in files" :fileItem="file" />\n\t\t\t\t</div>\n\t\t\t\t<DetailEmptyState\n\t\t\t\t\tv-else\n\t\t\t\t\t:title="$Bitrix.Loc.getMessage('IM_SIDEBAR_MEDIA_AND_FILES_EMPTY')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.media"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t`};class $t extends B.BaseMenu{constructor(){super();this.id="im-sidebar-context-menu"}getMenuOptions(){return{...super.getMenuOptions(),className:this.getMenuClassName()}}getOpenContextMessageItem(){if(!this.context.messageId||this.context.messageId===0){return null}return{text:$.Loc.getMessage("IM_SIDEBAR_MENU_GO_TO_CONTEXT_MESSAGE"),onclick:()=>{V.EventEmitter.emit(j.EventType.dialog.goToMessageContext,{messageId:this.context.messageId,dialogId:this.context.dialogId});this.menuInstance.close()}}}getCopyLinkItem(t){if(!BX.clipboard.isCopySupported()){return null}return{text:t,onclick:()=>{if(BX.clipboard.copy(this.context.source)){D.Notifier.onCopyLinkComplete()}this.menuInstance.close()}}}}class Qt{constructor(){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient()}delete({id:t,chatId:e}){this.store.dispatch("sidebar/tasks/delete",{chatId:e,id:t});const i={LINK_ID:t};this.restClient.callMethod(j.RestMethod.imChatTaskDelete,i).catch((t=>{console.error("Im.Sidebar: error deleting task",t)}))}}class Gt extends $t{constructor(){super();this.id="im-sidebar-context-menu";this.taskManager=new Qt}getMenuItems(){return[this.getOpenContextMessageItem(),this.getCopyLinkItem($.Loc.getMessage("IM_SIDEBAR_MENU_COPY_TASK_LINK")),this.getDeleteItem()]}getDeleteItem(){return{text:$.Loc.getMessage("IM_SIDEBAR_MENU_DELETE_TASK_CONNECTION"),onclick:function(){this.taskManager.delete(this.context.task);this.menuInstance.close()}.bind(this)}}}const zt={name:"TaskItem",components:{ChatAvatar:z.ChatAvatar,AvatarSize:z.AvatarSize},props:{task:{type:Object,required:true},contextDialogId:{type:String,required:true},searchQuery:{type:String,default:""}},emits:["contextMenuClick"],data(){return{showContextButton:false}},computed:{AvatarSize:()=>z.AvatarSize,taskItem(){return this.task},taskTitle(){if(this.searchQuery.length===0){return $.Text.encode(this.taskItem.task.title)}return N.highlightText($.Text.encode(this.taskItem.task.title),this.searchQuery)},taskAuthorDialogId(){return this.taskItem.task.creatorId.toString()},taskResponsibleDialogId(){return this.taskItem.task.responsibleId.toString()},taskDeadlineText(){const t=$.Type.isStringFilled(this.taskItem.task.state)?this.taskItem.task.state:this.taskItem.task.statusTitle;return Q.Utils.text.convertHtmlEntities(t)},taskBackgroundColorClass(){if(this.taskItem.task.status===5){return"--completed"}return""},statusColorClass(){if(!this.taskItem.task.color||!a.LabelColor[this.taskItem.task.color.toUpperCase()]){return""}return`ui-label-${this.taskItem.task.color.toLowerCase()}`}},methods:{onTaskClick(){BX.SidePanel.Instance.open(this.taskItem.task.source,{cacheable:false})},onContextMenuClick(t){this.$emit("contextMenuClick",{task:this.taskItem,source:this.taskItem.task.source,messageId:this.taskItem.messageId},t.currentTarget)}},template:`\n\t\t<div \n\t\t\tclass="bx-im-sidebar-task-item__container bx-im-sidebar-task-item__scope" \n\t\t\t:class="taskBackgroundColorClass"\n\t\t\t@mouseover="showContextButton = true"\n\t\t\t@mouseleave="showContextButton = false"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-task-item__content" @click="onTaskClick">\n\t\t\t\t<div class="bx-im-sidebar-task-item__header-text" :title="taskTitle" v-html="taskTitle"></div>\n\t\t\t\t<div class="bx-im-sidebar-task-item__detail-container">\n\t\t\t\t\t<ChatAvatar \n\t\t\t\t\t\t:size="AvatarSize.XS"\n\t\t\t\t\t\t:avatarDialogId="taskAuthorDialogId"\n\t\t\t\t\t\t:contextDialogId="contextDialogId"\n\t\t\t\t\t/>\n\t\t\t\t\t<div class="bx-im-sidebar-task-item__forward-small-icon bx-im-sidebar__forward-small-icon"></div>\n\t\t\t\t\t<ChatAvatar \n\t\t\t\t\t\t:avatarDialogId="taskResponsibleDialogId" \n\t\t\t\t\t\t:contextDialogId="contextDialogId" \n\t\t\t\t\t\t:size="AvatarSize.XS" \n\t\t\t\t\t/>\n\t\t\t\t\t<div class="bx-im-sidebar-task-item__status-text" :class="statusColorClass">\n\t\t\t\t\t\t{{taskDeadlineText}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<button \n\t\t\t\tv-if="showContextButton"\n\t\t\t\tclass="bx-im-messenger__context-menu-icon" \n\t\t\t\t@click="onContextMenuClick"\n\t\t\t></button>\n\t\t</div>\n\t`};const qt={name:"TaskListPreview",components:{DetailEmptyState:Nt,TaskItem:zt,ChatButton:W.ChatButton},props:{dialogId:{type:String,required:true}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,ButtonSize:()=>W.ButtonSize,ButtonColor:()=>W.ButtonColor,firstTask(){return this.$store.getters["sidebar/tasks/get"](this.chatId)[0]},showAddButton(){return w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.createTask,this.dialogId)},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},addButtonColor(){return this.ButtonColor.PrimaryLight}},created(){this.contextMenu=new Gt},beforeUnmount(){this.contextMenu.destroy()},methods:{getEntityCreator(){return new T.EntityCreator(this.chatId)},onAddClick(){L.Analytics.getInstance().chatEntities.onCreateTaskFromSidebarClick(this.dialogId);void this.getEntityCreator().createTaskForChat()},onOpenDetail(){if(!this.firstTask){return}V.EventEmitter.emit(j.EventType.sidebar.open,{panel:j.SidebarDetailBlock.task,dialogId:this.dialogId})},onContextMenuClick(t,e){const i={...t,dialogId:this.dialogId};this.contextMenu.openMenu(i,e)},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-task-list-preview__scope">\n\t\t\t<div class="bx-im-sidebar-task-list-preview__container">\n\t\t\t\t<div \n\t\t\t\t\tclass="bx-im-sidebar-task-list-preview__header_container"\n\t\t\t\t\t:class="[firstTask ? '--active': '']"\n\t\t\t\t\t@click="onOpenDetail"\n\t\t\t\t>\n\t\t\t\t\t<div class="bx-im-sidebar-task-list-preview__title">\n\t\t\t\t\t\t<span class="bx-im-sidebar-task-list-preview__title-text">\n\t\t\t\t\t\t\t{{ loc('IM_SIDEBAR_TASK_DETAIL_TITLE') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div v-if="firstTask" class="bx-im-sidebar__forward-icon"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<transition name="add-button">\n\t\t\t\t\t\t<ChatButton\n\t\t\t\t\t\t\tv-if="showAddButton"\n\t\t\t\t\t\t\t:text="loc('IM_SIDEBAR_ADD_BUTTON_TEXT')"\n\t\t\t\t\t\t\t:size="ButtonSize.S"\n\t\t\t\t\t\t\t:color="addButtonColor"\n\t\t\t\t\t\t\t:isRounded="true"\n\t\t\t\t\t\t\t:isUppercase="false"\n\t\t\t\t\t\t\ticon="plus"\n\t\t\t\t\t\t\t@click="onAddClick"\n\t\t\t\t\t\t\tclass="bx-im-sidebar-task-list-preview__title-button"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t\t<TaskItem \n\t\t\t\t\tv-if="firstTask"\n\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t:task="firstTask" @contextMenuClick="onContextMenuClick"\n\t\t\t\t/>\n\t\t\t\t<DetailEmptyState \n\t\t\t\t\tv-else \n\t\t\t\t\t:title="loc('IM_SIDEBAR_TASKS_EMPTY')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.task"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t`};const Xt={name:"MarketItem",props:{item:{type:Object,required:true}},computed:{marketItem(){return this.item},iconClass(){return`fa ${this.marketItem.options.iconName}`},iconColor(){return this.marketItem.options.color}},template:`\n\t\t<div class="bx-im-sidebar-market-preview-item__container bx-im-sidebar-market-preview-item__scope">\n\t\t\t<div class="bx-im-sidebar-market-preview-item__icon-container" :style="{backgroundColor: iconColor}">\n\t\t\t\t<i :class="iconClass" aria-hidden="true"></i>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-market-preview-item__title-container" :title="marketItem.title">\n\t\t\t\t{{ marketItem.title }}\n\t\t\t</div>\n\t\t</div>\n\t`};const Vt={name:"MarketAppListPreview",components:{MarketItem:Xt},props:{dialogId:{type:String,required:true}},emits:["openDetail"],computed:{marketMenuItems(){return x.MarketManager.getInstance().getAvailablePlacementsByType(j.PlacementType.sidebar,this.dialogId)}},methods:{onMarketItemClick(t){V.EventEmitter.emit(j.EventType.sidebar.open,{panel:j.SidebarDetailBlock.market,dialogId:this.dialogId,entityId:t})},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-market-preview__scope bx-im-sidebar-market-preview__container">\n\t\t\t<div class="bx-im-sidebar-market-preview__header_container">\n\t\t\t\t<div class="bx-im-sidebar-market-preview__title">\n\t\t\t\t\t<span class="bx-im-sidebar-market-preview__title-text">\n\t\t\t\t\t\t{{ loc('IM_SIDEBAR_MARKET_DETAIL_TITLE') }}\n\t\t\t\t\t</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<MarketItem \n\t\t\t\tv-for="item in marketMenuItems" \n\t\t\t\t:key="item.id"\n\t\t\t\t:item="item"\n\t\t\t\t@click="onMarketItemClick(item.id)"\n\t\t\t/>\n\t\t</div>\n\t`};class Kt{constructor(){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient()}delete({id:t,chatId:e}){this.store.dispatch("sidebar/meetings/delete",{chatId:e,id:t});const i={LINK_ID:t};this.restClient.callMethod(j.RestMethod.imChatCalendarDelete,i).catch((t=>{console.error("Im.Sidebar: error deleting meeting",t)}))}}class jt extends $t{constructor(){super();this.id="im-sidebar-context-menu";this.meetingManager=new Kt}getMenuItems(){return[this.getOpenContextMessageItem(),this.getCopyLinkItem($.Loc.getMessage("IM_SIDEBAR_MENU_COPY_MEETING_LINK")),this.getDeleteItem()]}getDeleteItem(){return{text:$.Loc.getMessage("IM_SIDEBAR_MENU_DELETE_MEETING_CONNECTION"),onclick:function(){this.meetingManager.delete(this.context.meeting);this.menuInstance.close()}.bind(this)}}}const Yt={name:"MeetingItem",props:{meeting:{type:Object,required:true},searchQuery:{type:String,default:""}},emits:["contextMenuClick"],data(){return{showContextButton:false}},computed:{meetingItem(){return this.meeting},title(){if(this.searchQuery.length===0){return $.Text.encode(this.meetingItem.meeting.title)}return N.highlightText($.Text.encode(this.meetingItem.meeting.title),this.searchQuery)},date(){const t=this.meetingItem.meeting.dateFrom;return J.DateFormatter.formatByTemplate(t,J.DateTemplate.meeting)},day(){return this.meetingItem.meeting.dateFrom.getDate().toString()},monthShort(){return r.DateTimeFormat.format("M",this.meetingItem.meeting.dateFrom)},isActive(){return this.meetingItem.meeting.dateFrom.getTime()>Date.now()}},methods:{onMeetingClick(){new(window.top.BX||window.BX).Calendar.SliderLoader(this.meetingItem.meeting.id).show()},onContextMenuClick(t){this.$emit("contextMenuClick",{meeting:this.meetingItem,source:this.meetingItem.meeting.source,messageId:this.meetingItem.messageId},t.currentTarget)}},template:`\n\t\t<div \n\t\t\tclass="bx-im-sidebar-meeting-item__container bx-im-sidebar-meeting-item__scope"\n\t\t\t@mouseover="showContextButton = true"\n\t\t\t@mouseleave="showContextButton = false"\n\t\t>\n\t\t\t<div \n\t\t\t\tclass="bx-im-sidebar-meeting-item__icon-container"\n\t\t\t\t:class="[isActive ? '--active' : '--inactive']"\n\t\t\t>\n\t\t\t\t<div class="bx-im-sidebar-meeting-item__day-text">{{ day }}</div>\n\t\t\t\t<div class="bx-im-sidebar-meeting-item__month-text">{{ monthShort }}</div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-meeting-item__content-container" @click="onMeetingClick">\n\t\t\t\t<div class="bx-im-sidebar-meeting-item__content">\n\t\t\t\t\t<div class="bx-im-sidebar-meeting-item__title" :title="title" v-html="title"></div>\n\t\t\t\t\t<div class="bx-im-sidebar-meeting-item__date">{{ date }}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<button \n\t\t\t\tv-if="showContextButton"\n\t\t\t\tclass="bx-im-messenger__context-menu-icon" \n\t\t\t\t@click="onContextMenuClick"\n\t\t\t></button>\n\t\t</div>\n\t`};const Wt={name:"MeetingListPreview",components:{MeetingItem:Yt,DetailEmptyState:Nt,ChatButton:W.ChatButton},props:{dialogId:{type:String,required:true}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,ButtonSize:()=>W.ButtonSize,ButtonColor:()=>W.ButtonColor,firstMeeting(){return this.$store.getters["sidebar/meetings/get"](this.chatId)[0]},showAddButton(){return w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.createMeeting,this.dialogId)},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},addButtonColor(){return this.ButtonColor.PrimaryLight}},created(){this.contextMenu=new jt},beforeUnmount(){this.contextMenu.destroy()},methods:{getEntityCreator(){return new T.EntityCreator(this.chatId)},onAddClick(){L.Analytics.getInstance().chatEntities.onCreateEventFromSidebarClick(this.dialogId);void this.getEntityCreator().createMeetingForChat()},onOpenDetail(){if(!this.firstMeeting){return}V.EventEmitter.emit(j.EventType.sidebar.open,{panel:j.SidebarDetailBlock.meeting,dialogId:this.dialogId})},onContextMenuClick(t,e){const i={...t,dialogId:this.dialogId};this.contextMenu.openMenu(i,e)},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-meeting-preview__scope">\n\t\t\t<div class="bx-im-sidebar-meeting-preview__container">\n\t\t\t\t<div\n\t\t\t\t\tclass="bx-im-sidebar-meeting-preview__header_container"\n\t\t\t\t\t:class="[firstMeeting ? '--active': '']"\n\t\t\t\t\t@click="onOpenDetail"\n\t\t\t\t>\n\t\t\t\t\t<div class="bx-im-sidebar-meeting-preview__title">\n\t\t\t\t\t\t<span class="bx-im-sidebar-meeting-preview__title-text">\n\t\t\t\t\t\t\t{{ loc('IM_SIDEBAR_MEETING_DETAIL_TITLE') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<div v-if="firstMeeting" class="bx-im-sidebar__forward-icon"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<transition name="add-button">\n\t\t\t\t\t\t<ChatButton\n\t\t\t\t\t\t\tv-if="showAddButton"\n\t\t\t\t\t\t\t:text="loc('IM_SIDEBAR_ADD_BUTTON_TEXT')"\n\t\t\t\t\t\t\t:size="ButtonSize.S"\n\t\t\t\t\t\t\t:color="addButtonColor"\n\t\t\t\t\t\t\t:isRounded="true"\n\t\t\t\t\t\t\t:isUppercase="false"\n\t\t\t\t\t\t\ticon="plus"\n\t\t\t\t\t\t\t@click="onAddClick"\n\t\t\t\t\t\t\tclass="bx-im-sidebar-meeting-preview__title-button"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</transition>\n\t\t\t\t</div>\n\t\t\t\t<MeetingItem v-if="firstMeeting" :meeting="firstMeeting" @contextMenuClick="onContextMenuClick"/>\n\t\t\t\t<DetailEmptyState\n\t\t\t\t\tv-else\n\t\t\t\t\t:title="loc('IM_SIDEBAR_MEETINGS_EMPTY')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.meeting"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t`};const Jt={name:"CopilotInfoPreview",components:{ChatDescription:Rt,ChatLinks:Dt,ChatFavourites:Bt},props:{dialogId:{type:String,required:true}},template:`\n\t\t<div class="bx-im-sidebar-info-preview__container">\n\t\t\t<ChatDescription :dialogId="dialogId" />\n\t\t\t<ChatFavourites :dialogId="dialogId" />\n\t\t</div>\n\t`};const Zt={name:"MuteChat",directives:{hint:c.hint},components:{Toggle:o.Toggle},props:{dialogId:{type:String,required:true}},computed:{ToggleSize:()=>o.ToggleSize,dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},isGroupChat(){return this.dialogId.startsWith("chat")},canBeMuted(){return w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.mute,this.dialogId)},isChatMuted(){const t=this.dialog.muteList.find((t=>t===X.Core.getUserId()));return Boolean(t)},hintMuteNotAvailable(){if(this.canBeMuted){return null}return{text:this.$Bitrix.Loc.getMessage("IM_SIDEBAR_MUTE_NOT_AVAILABLE"),popupOptions:{angle:true,targetContainer:document.body,offsetLeft:141,offsetTop:-10,bindOptions:{position:"top"}}}},isCopilotLayout(){const{name:t}=this.$store.getters["application/getLayout"];return t===j.Layout.copilot.name}},methods:{getChatService(){if(!this.chatService){this.chatService=new P.ChatService}return this.chatService},muteActionHandler(){if(!this.canBeMuted){return}if(this.isChatMuted){this.getChatService().unmuteChat(this.dialogId)}else{this.getChatService().muteChat(this.dialogId)}},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div\n\t\t\tv-if="isGroupChat"\n\t\t\tclass="bx-im-sidebar-mute-chat__container"\n\t\t\t:class="{'--not-active': !canBeMuted, '--copilot': isCopilotLayout}"\n\t\t\tv-hint="hintMuteNotAvailable"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-mute-chat__title">\n\t\t\t\t<div class="bx-im-sidebar-mute-chat__title-text bx-im-sidebar-mute-chat__icon">\n\t\t\t\t\t{{ loc('IM_SIDEBAR_ENABLE_NOTIFICATION_TITLE_2') }}\n\t\t\t\t</div>\n\t\t\t\t<Toggle :size="ToggleSize.M" :isEnabled="!isChatMuted" @click="muteActionHandler" />\n\t\t\t</div>\n\t\t</div>\n\t`};const te={name:"AutoDelete",directives:{hint:c.hint},components:{Toggle:o.Toggle,AutoDeleteHint:l.AutoDeleteHint,AutoDeleteDropdown:l.AutoDeleteDropdown,AutoDeletePopup:l.AutoDeletePopup},props:{dialogId:{type:String,required:true}},data(){return{showHint:false,showPopup:false}},computed:{ToggleSize:()=>o.ToggleSize,dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},autoDeleteDelayInHours(){return this.$store.getters["chats/autoDelete/getDelay"](this.chatId)},isAutoDeleteFeatureAvailable(){return b.FeatureManager.isFeatureAvailable(b.Feature.messagesAutoDeleteAvailable)},isAutoDeleteFeatureEnabled(){return b.FeatureManager.isFeatureAvailable(b.Feature.messagesAutoDeleteEnabled)},isAutoDeleteAllowed(){return d.AutoDeleteManager.isAutoDeleteAllowed(this.dialogId)},hintAutoDelete(){if(this.isAutoDeleteFeatureAvailable){return null}return{text:this.loc("IM_MESSENGER_NOT_AVAILABLE"),popupOptions:{bindOptions:{position:"top"},angle:true,targetContainer:document.body,offsetLeft:125,offsetTop:-10}}},isBot(){const t=this.$store.getters["users/get"](this.dialogId,true);return t.type===j.UserType.bot},isAutoDeleteAvailableByChatType(){const t=[j.ChatType.copilot,j.ChatType.lines,j.ChatType.videoconf,...n.ChannelManager.getChannelTypes()];if(t.includes(this.dialog.type)){return false}return!this.isBot},isAutoDeleteActive(){return this.autoDeleteDelayInHours>0}},methods:{getChatService(){if(!this.chatService){this.chatService=new P.ChatService}return this.chatService},changeAutoDeleteActionHandler(){if(!this.isAutoDeleteFeatureAvailable){return}if(!this.isAutoDeleteAllowed){this.showHint=true;return}if(this.isAutoDeleteActive){this.updateAutoDeleteDelay(j.AutoDeleteDelay.Off);return}if(!this.isAutoDeleteFeatureEnabled){b.FeatureManager.messagesAutoDelete.openFeatureSlider();return}this.showPopup=true},updateAutoDeleteDelay(t){this.getChatService().setMessagesAutoDeleteDelay(this.dialogId,t)},loc(t){return this.$Bitrix.Loc.getMessage(t)},onAutoDeleteDelayChange(t){this.updateAutoDeleteDelay(t);this.$emit("close")},onDropDownClick(t){if(this.isAutoDeleteAllowed){return}t.stopPropagation();this.showHint=true}},template:`\n\t\t<div\n\t\t\tv-if="isAutoDeleteAvailableByChatType"\n\t\t\tclass="bx-im-sidebar-auto-delete__container"\n\t\t\t:class="{'--enabled': isAutoDeleteFeatureAvailable}"\n\t\t\tv-hint="hintAutoDelete"\n\t\t\tref="auto-delete"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-auto-delete__title">\n\t\t\t\t<div class="bx-im-sidebar-auto-delete__title-text bx-im-sidebar-auto-delete__icon">\n\t\t\t\t\t{{ loc('IM_SIDEBAR_ENABLE_AUTODELETE_TITLE') }}\n\t\t\t\t</div>\n\t\t\t\t<Toggle\n\t\t\t\t\t:size="ToggleSize.M"\n\t\t\t\t\t:isEnabled="isAutoDeleteActive"\n\t\t\t\t\t:disabled="!isAutoDeleteAllowed"\n\t\t\t\t\t@click="changeAutoDeleteActionHandler"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<AutoDeleteDropdown\n\t\t\t\t:currentDelay="autoDeleteDelayInHours"\n\t\t\t\t@delayChange="updateAutoDeleteDelay"\n\t\t\t\t@click.capture="onDropDownClick"\n\t\t\t/>\n\t\t\t<AutoDeleteHint \n\t\t\t\tv-if="showHint"\n\t\t\t\t:bindElement="$refs['auto-delete']" \n\t\t\t\t@close="showHint = false"\n\t\t\t/>\n\t\t\t<AutoDeletePopup\n\t\t\t\tv-if="showPopup"\n\t\t\t\t:autoDeleteDelay="autoDeleteDelayInHours"\n\t\t\t\t@close="showPopup = false"\n\t\t\t\t@autoDeleteDelayChange="onAutoDeleteDelayChange"\n\t\t\t/>\n\t\t</div>\n\t`};const ee={name:"ChatMembersAvatars",components:{ChatAvatar:z.ChatAvatar,ChatButton:W.ChatButton,AddToChat:E.AddToChat},props:{dialogId:{type:String,required:true},showMembers:{type:Boolean,default:true}},data(){return{showAddToChatPopup:false}},computed:{AvatarSize:()=>z.AvatarSize,ButtonSize:()=>W.ButtonSize,ButtonColor:()=>W.ButtonColor,dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},dialogIds(){const t=4;const e=this.$store.getters["sidebar/members/get"](this.chatId);return e.map((t=>t.toString())).slice(0,t)},canSeeMembers(){return w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.userList,this.dialogId)},canInviteMembers(){return w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.extend,this.dialogId)},usersInChatCount(){return this.dialog.userCounter},moreUsersCount(){return Math.max(this.usersInChatCount-this.dialogIds.length,0)},isCollab(){return this.dialog.type===j.ChatType.collab},addUsersButtonColor(){if(this.isCollab){return this.ButtonColor.Collab}return this.ButtonColor.PrimaryLight},addMembersPopupComponent(){return this.dialog.type===j.ChatType.collab?E.AddToCollab:E.AddToChat}},methods:{onOpenUsers(){V.EventEmitter.emit(j.EventType.sidebar.open,{panel:j.SidebarDetailBlock.members,dialogId:this.dialogId})},onOpenInvitePopup(){L.Analytics.getInstance().userAdd.onChatSidebarClick(this.dialogId);this.showAddToChatPopup=true},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-chat-members-avatars__container">\n\t\t\t<div v-if="canSeeMembers && showMembers" class="bx-im-sidebar-chat-members-avatars__members" @click="onOpenUsers">\n\t\t\t\t<div class="bx-im-sidebar-chat-members-avatars__avatars" >\n\t\t\t\t\t<ChatAvatar\n\t\t\t\t\t\tv-for="id in dialogIds"\n\t\t\t\t\t\t:size="AvatarSize.S"\n\t\t\t\t\t\t:avatarDialogId="id"\n\t\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t\tclass="bx-im-sidebar-chat-members-avatars__avatar"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div v-if="moreUsersCount > 0" class="bx-im-sidebar-chat-members-avatars__text">\n\t\t\t\t\t+{{ moreUsersCount }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div ref="add-members">\n\t\t\t\t<ChatButton\n\t\t\t\t\tv-if="canInviteMembers"\n\t\t\t\t\t:text="loc('IM_SIDEBAR_ADD_BUTTON_TEXT')"\n\t\t\t\t\t:size="ButtonSize.S"\n\t\t\t\t\t:color="addUsersButtonColor"\n\t\t\t\t\t:isRounded="true"\n\t\t\t\t\t:isUppercase="false"\n\t\t\t\t\ticon="plus"\n\t\t\t\t\t@click="onOpenInvitePopup"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<component\n\t\t\t\tv-if="showAddToChatPopup"\n\t\t\t\t:is="addMembersPopupComponent"\n\t\t\t\t:bindElement="$refs['add-members'] || {}"\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:popupConfig="{offsetTop: -220, offsetLeft: -420}"\n\t\t\t\t@close="showAddToChatPopup = false"\n\t\t\t/>\n\t\t</div>\n\t`};const ie={name:"ChatPreview",components:{ChatAvatar:z.ChatAvatar,ChatTitle:G.ChatTitle,MuteChat:Zt,ChatMembersAvatars:ee,AutoDelete:te},props:{dialogId:{type:String,required:true}},computed:{AvatarSize:()=>z.AvatarSize},template:`\n\t\t<div class="bx-im-sidebar-main-preview__scope">\n\t\t\t<div class="bx-im-sidebar-main-preview-group-chat__avatar-container">\n\t\t\t\t<div class="bx-im-sidebar-main-preview-group-chat__avatar">\n\t\t\t\t\t<ChatAvatar \n\t\t\t\t\t\t:avatarDialogId="dialogId" \n\t\t\t\t\t\t:contextDialogId="dialogId" \n\t\t\t\t\t\t:size="AvatarSize.XXXL" \n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<ChatTitle :dialogId="dialogId" :twoLine="true" class="bx-im-sidebar-main-preview-group-chat__title" />\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-main-preview-group-chat__chat-members">\n\t\t\t\t<ChatMembersAvatars :dialogId="dialogId" />\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-main-preview-group-chat__settings">\n\t\t\t\t<MuteChat :dialogId="dialogId" />\n\t\t\t\t<AutoDelete :dialogId="dialogId" />\n\t\t\t</div>\n\t\t</div>\n\t`};const se={name:"PostPreview",components:{ChatAvatar:z.ChatAvatar,ChatTitle:G.ChatTitle,MuteChat:Zt,ChatMembersAvatars:ee,AutoDelete:te},props:{dialogId:{type:String,required:true}},computed:{AvatarSize:()=>z.AvatarSize,dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},postDialog(){return this.$store.getters["chats/getByChatId"](this.dialog.parentChatId)}},methods:{loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-main-preview-post__scope">\n\t\t\t<div class="bx-im-sidebar-main-preview-post__avatar-container">\n\t\t\t\t<div class="bx-im-sidebar-main-preview-post__avatar">\n\t\t\t\t\t<ChatAvatar\n\t\t\t\t\t\t:avatarDialogId="postDialog.dialogId"\n\t\t\t\t\t\t:contextDialogId="postDialog.dialogId"\n\t\t\t\t\t\t:size="AvatarSize.XXXL" \n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-sidebar-main-preview-post__title">{{ loc('IM_SIDEBAR_COMMENTS_POST_PREVIEW_TITLE') }}</div>\n\t\t\t\t<div class="bx-im-sidebar-main-preview-post__subtitle">{{ postDialog.name }}</div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-main-preview-post__settings">\n\t\t\t\t\x3c!-- TODO: follow toggle --\x3e\n\t\t\t</div>\n\t\t</div>\n\t`};const ae={name:"UserPreview",directives:{hint:c.hint},components:{ChatAvatar:z.ChatAvatar,ChatTitle:G.ChatTitle,ChatButton:W.ChatButton,AddToChat:E.AddToChat,AutoDelete:te},props:{dialogId:{type:String,required:true}},data(){return{showAddToChatPopup:false}},computed:{AvatarSize:()=>z.AvatarSize,ButtonSize:()=>W.ButtonSize,ButtonColor:()=>W.ButtonColor,userPosition(){return this.$store.getters["users/getPosition"](this.dialogId)},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},user(){return this.$store.getters["users/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},canInviteMembers(){const t=w.PermissionManager.getInstance().canPerformActionByUserType(j.ActionByUserType.createChat);const e=w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.extend,this.dialogId);return t&&e},showInviteButton(){if(this.isBot){return false}return this.canInviteMembers},userLink(){return Q.Utils.user.getProfileLink(this.dialogId)},isBot(){return this.user.type===j.UserType.bot}},methods:{onAddClick(){L.Analytics.getInstance().userAdd.onChatSidebarClick(this.dialogId);this.showAddToChatPopup=true}},template:`\n\t\t<div class="bx-im-sidebar-main-preview__scope">\n\t\t\t<div class="bx-im-sidebar-main-preview-personal-chat__avatar-container">\n\t\t\t\t<ChatAvatar\n\t\t\t\t\t:avatarDialogId="dialogId"\n\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t:size="AvatarSize.XXXL"\n\t\t\t\t\tclass="bx-im-sidebar-main-preview-personal-chat__avatar"\n\t\t\t\t/>\n\t\t\t\t<a :href="userLink" target="_blank">\n\t\t\t\t\t<ChatTitle :dialogId="dialogId" class="bx-im-sidebar-main-preview-personal-chat__user-name" />\n\t\t\t\t</a>\n\t\t\t\t<div class="bx-im-sidebar-main-preview-personal-chat__user-position" :title="userPosition">\n\t\t\t\t\t{{ userPosition }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div \n\t\t\t\tv-if="showInviteButton" \n\t\t\t\tclass="bx-im-sidebar-main-preview-personal-chat__invite-button-container" \n\t\t\t\tref="add-members"\n\t\t\t>\n\t\t\t\t<ChatButton\n\t\t\t\t\tv-if="canInviteMembers"\n\t\t\t\t\t:text="$Bitrix.Loc.getMessage('IM_SIDEBAR_CREATE_GROUP_CHAT')"\n\t\t\t\t\t:size="ButtonSize.S"\n\t\t\t\t\t:color="ButtonColor.PrimaryLight"\n\t\t\t\t\t:isRounded="true"\n\t\t\t\t\t:isUppercase="false"\n\t\t\t\t\ticon="plus"\n\t\t\t\t\t@click="onAddClick"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-main-preview-personal-chat__auto-delete-container">\n\t\t\t\t<AutoDelete :dialogId="dialogId" />\n\t\t\t</div>\n\t\t\t<AddToChat\n\t\t\t\tv-if="showAddToChatPopup"\n\t\t\t\t:bindElement="$refs['add-members'] || {}"\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:popupConfig="{offsetTop: -220, offsetLeft: -320}"\n\t\t\t\t@close="showAddToChatPopup = false"\n\t\t\t/>\n\t\t</div>\n\t`};var re=babelHelpers.classPrivateFieldLooseKey("store");var ne=babelHelpers.classPrivateFieldLooseKey("sendRequest");class oe{constructor(){Object.defineProperty(this,ne,{value:le});Object.defineProperty(this,re,{writable:true,value:void 0});babelHelpers.classPrivateFieldLooseBase(this,re)[re]=X.Core.getStore()}updateRole({dialogId:t,role:e}){H.Logger.warn("CopilotService: update role",t);void babelHelpers.classPrivateFieldLooseBase(this,re)[re].dispatch("copilot/chats/add",{dialogId:t,role:e.code});void babelHelpers.classPrivateFieldLooseBase(this,re)[re].dispatch("copilot/roles/add",[e]);return babelHelpers.classPrivateFieldLooseBase(this,ne)[ne]({dialogId:t,role:e.code})}}function le({dialogId:t,role:e}){const i={data:{dialogId:t,role:e}};return u.runAction(j.RestMethod.imV2ChatCopilotUpdateRole,i)}const de={name:"ChangeRolePromo",props:{bindElement:{type:Object,required:true}},emits:["hide","accept"],computed:{text(){return $.Loc.getMessage("IM_SIDEBAR_COPILOT_CHANGE_ROLE_PROMO_TEXT",{"[copilot_color]":'<em class="bx-im-copilot-change-role-promo__copilot">',"[/copilot_color]":"</em>"})},videoSource(){const t="/bitrix/js/im/v2/component/sidebar/src/components/elements/copilot-role/css/videos/";const e={ru:"copilot-roles-promo-ru.webm",en:"copilot-roles-promo-en.webm"};const i=$.Loc.getMessage("LANGUAGE_ID");return i==="ru"?`${t}${e.ru}`:`${t}${e.en}`}},created(){this.promoPopup=new g.PromoVideoPopup({videoSrc:this.videoSource,title:"Copilot",text:this.text,targetOptions:this.bindElement,angleOptions:{position:BX.UI.AnglePosition.RIGHT,offset:98},colors:{iconBackground:"#8e52ec",title:"#b095dc"},icon:BX.UI.IconSet.Main.COPILOT_AI,offset:{top:-125,left:-510}});this.promoPopup.subscribe(g.PromoVideoPopupEvents.ACCEPT,this.onAccept);this.promoPopup.subscribe(g.PromoVideoPopupEvents.HIDE,this.onHide)},mounted(){this.promoPopup.show()},beforeUnmount(){if(!this.promoPopup){return}this.promoPopup.hide();this.promoPopup.unsubscribe(g.PromoVideoPopupEvents.ACCEPT,this.onAccept);this.promoPopup.unsubscribe(g.PromoVideoPopupEvents.HIDE,this.onHide)},methods:{onHide(){this.$emit("hide");this.promoPopup.hide()},onAccept(){this.$emit("accept");this.promoPopup.hide()},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<template></template>\n\t`};const ce={name:"CopilotRole",components:{ChangeRolePromo:de,CopilotRolesDialog:h.CopilotRolesDialog},props:{dialogId:{type:String,required:true}},data(){return{shouldShowChangeRolePromo:false,showRolesDialog:false}},computed:{chatRole(){const t=this.$store.getters["copilot/chats/getRole"](this.dialogId);if(!t){return this.$store.getters["copilot/roles/getDefault"]}return t},roleName(){return this.chatRole.name},canShowChangeRolePromo(){const t=p.PromoManager.getInstance().needToShow(j.PromoId.copilotInRecentTab);const e=p.PromoManager.getInstance().needToShow(j.PromoId.addUsersToCopilotChat);const i=p.PromoManager.getInstance().needToShow(j.PromoId.changeRoleCopilot);return!t&&!e&&i}},mounted(){setTimeout((()=>{this.shouldShowChangeRolePromo=this.canShowChangeRolePromo}),300)},beforeUnmount(){this.showRolesDialog=false;this.shouldShowChangeRolePromo=false},methods:{handleChangeRole(){this.showRolesDialog=true},loc(t){return this.$Bitrix.Loc.getMessage(t)},onChangeRolePromoAccept(){this.shouldShowChangeRolePromo=false;void p.PromoManager.getInstance().markAsWatched(j.PromoId.changeRoleCopilot)},onCopilotDialogSelectRole(t){void(new oe).updateRole({dialogId:this.dialogId,role:t})}},template:`\n\t\t<div class="bx-im-sidebar-copilot-role__container" @click="handleChangeRole" ref="change-role">\n\t\t\t<div class="bx-im-sidebar-copilot-role__title">\n\t\t\t\t<div class="bx-im-sidebar-copilot-role__title-icon"></div>\n\t\t\t\t<div class="bx-im-sidebar-copilot-role__title-text">\n\t\t\t\t\t{{ roleName }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-copilot-role__arrow-icon"></div>\n\t\t\t<ChangeRolePromo \n\t\t\t\tv-if="shouldShowChangeRolePromo"\n\t\t\t\t:bindElement="$refs['change-role']"\n\t\t\t\t@accept="onChangeRolePromoAccept"\n\t\t\t\t@hide="shouldShowChangeRolePromo = false"\n\t\t\t/>\n\t\t\t<CopilotRolesDialog\n\t\t\t\tv-if="showRolesDialog"\n\t\t\t\t:title="loc('IM_SIDEBAR_COPILOT_CHANGE_ROLE_DIALOG_TITLE')"\n\t\t\t\t@selectRole="onCopilotDialogSelectRole"\n\t\t\t\t@close="showRolesDialog = false"\n\t\t\t/>\n\t\t</div>\n\t`};const he={name:"CopilotPreview",components:{ChatAvatar:z.ChatAvatar,ChatTitle:G.ChatTitle,MuteChat:Zt,ChatMembersAvatars:ee,CopilotRole:ce},props:{dialogId:{type:String,required:true}},computed:{AvatarSize:()=>z.AvatarSize,dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},showMembers(){return this.dialog.userCounter>2}},template:`\n\t\t<div class="bx-im-sidebar-copilot-preview__scope">\n\t\t\t<div class="bx-im-sidebar-copilot-preview-group-chat__avatar-container">\n\t\t\t\t<ChatAvatar\n\t\t\t\t\t:avatarDialogId="dialogId"\n\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t:size="AvatarSize.XXXL"\n\t\t\t\t\t:withSpecialTypes="false"\n\t\t\t\t/>\n\t\t\t\t<ChatTitle :dialogId="dialogId" :twoLine="true" class="bx-im-sidebar-copilot-preview-group-chat__title" />\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-copilot-preview-group-chat__chat-members">\n\t\t\t\t<ChatMembersAvatars :showMembers="showMembers" :dialogId="dialogId" />\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-copilot-preview-group-chat__settings">\n\t\t\t\t<CopilotRole :dialogId="dialogId" />\n\t\t\t\t<MuteChat :dialogId="dialogId" />\n\t\t\t</div>\n\t\t</div>\n\t`};const ue={name:"SupportPreview",components:{ChatAvatar:z.ChatAvatar,ChatTitle:G.ChatTitle,AutoDelete:te},props:{dialogId:{type:String,required:true}},computed:{AvatarSize:()=>z.AvatarSize},template:`\n\t\t<div class="bx-im-sidebar-main-preview__scope">\n\t\t\t<div class="bx-im-sidebar-main-preview-group-chat__avatar-container">\n\t\t\t\t<div class="bx-im-sidebar-main-preview-group-chat__avatar">\n\t\t\t\t\t<ChatAvatar :size="AvatarSize.XXXL" :avatarDialogId="dialogId" :contextDialogId="dialogId" />\n\t\t\t\t</div>\n\t\t\t\t<ChatTitle :dialogId="dialogId" :twoLine="true" class="bx-im-sidebar-main-preview-group-chat__title" />\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-main-preview-group-chat__settings">\n\t\t\t\t<AutoDelete :dialogId="dialogId" />\n\t\t\t</div>\n\t\t</div>\n\t`};const ge={name:"MultidialogPreview",props:{dialogId:{type:String,required:true}},computed:{chatId(){return this.$store.getters["chats/get"](this.dialogId,true).chatId},numberRequests(){const t=this.$store.getters["sidebar/multidialog/getChatsCount"];return t>999?"999+":t},totalChatCounter(){const t=this.$store.getters["sidebar/multidialog/getTotalChatCounter"];return t>99?"99+":t}},methods:{loc(t){return this.$Bitrix.Loc.getMessage(t)},onOpenDetail(){V.EventEmitter.emit(j.EventType.sidebar.open,{panel:j.SidebarDetailBlock.multidialog,dialogId:this.dialogId,standalone:true})}},template:`\n\t\t<div class="bx-im-sidebar-multidialog-preview__scope">\n\t\t\t<div class="bx-im-sidebar-multidialog-preview__container" @click="onOpenDetail">\n\t\t\t\t<div class="bx-im-sidebar-multidialog-preview__questions-container">\n\t\t\t\t\t<div class="bx-im-sidebar-multidialog-preview__questions-text">\n\t\t\t\t\t\t{{ loc('IM_SIDEBAR_SUPPORT_TICKET_TITLE') }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="bx-im-sidebar-multidialog-preview__questions-count">\n\t\t\t\t\t\t{{ numberRequests }}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-sidebar-multidialog-preview__new-message-container">\n\t\t\t\t\t<div v-if="totalChatCounter" class="bx-im-sidebar-multidialog-preview__new-message-counter">\n\t\t\t\t\t\t{{ totalChatCounter }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="bx-im-sidebar__forward-icon" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`};const me={name:"TariffLimit",props:{dialogId:{type:String,required:true},panel:{type:String,required:true}},computed:{dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},title(){return b.FeatureManager.chatHistory.getLimitTitle()},preparedDescription(){return b.FeatureManager.chatHistory.getLimitSubtitle(true).replace("[action_emphasis]",'<em class="bx-im-sidebar-elements-tariff-limit__description-accent">').replace("[/action_emphasis]","</em>")},tooltipText(){return b.FeatureManager.chatHistory.getTooltipText()}},watch:{dialogId(){this.sendAnalyticsOnCreate()},panel(){this.sendAnalyticsOnCreate()}},created(){this.sendAnalyticsOnCreate()},methods:{onDetailClick(){this.sendAnalyticsOnClick();b.FeatureManager.chatHistory.openFeatureSlider()},loc(t){return this.$Bitrix.Loc.getMessage(t)},sendAnalyticsOnClick(){L.Analytics.getInstance().historyLimit.onSidebarBannerClick({dialogId:this.dialogId,panel:this.panel})},sendAnalyticsOnCreate(){L.Analytics.getInstance().historyLimit.onSidebarLimitExceeded({dialogId:this.dialogId,panel:this.panel})}},template:`\n\t\t<div\n\t\t\tclass="bx-im-sidebar-elements-tariff-limit__container"\n\t\t\t:title="tooltipText"\n\t\t\t@click="onDetailClick"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-elements-tariff-limit__header">\n\t\t\t\t<div class="bx-im-sidebar-elements-tariff-limit__title-container">\n\t\t\t\t\t<div class="bx-im-sidebar-elements-tariff-limit__icon"></div>\n\t\t\t\t\t<div class="bx-im-sidebar-elements-tariff-limit__title --line-clamp-2">{{ title }}</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-sidebar-elements-tariff-limit__arrow bx-im-sidebar__forward-green-icon"></div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-elements-tariff-limit__delimiter"></div>\n\t\t\t<div class="bx-im-sidebar-elements-tariff-limit__content">\n\t\t\t\t<div class="bx-im-sidebar-elements-tariff-limit__description" v-html="preparedDescription"></div>\n\t\t\t</div>\n\t\t</div>\n\t`};const pe={name:"TariffLimitPreview",components:{TariffLimit:me},props:{dialogId:{type:String,required:true}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock},template:`\n\t\t<TariffLimit :dialogId="dialogId" :panel="SidebarDetailBlock.main" />\n\t`};const be="collab";const ve="collab_guest";const Ie={name:"CollabHelpdeskPreview",props:{dialogId:{type:String,required:true}},data(){return{needToShow:p.PromoManager.getInstance().needToShow(j.PromoId.collabHelpdeskSidebar)}},computed:{isCurrentUserCollaber(){const t=this.$store.getters["users/get"](X.Core.getUserId(),true);return t.type===j.UserType.collaber}},methods:{close(){this.needToShow=false;void p.PromoManager.getInstance().markAsWatched(j.PromoId.collabHelpdeskSidebar)},openHelpdesk(){const t=this.isCurrentUserCollaber?ve:be;const e={utm_source:"portal",utm_content:"widget"};m.Manual.show(t,e)},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div v-if="needToShow" class="bx-im-sidebar-collab-helpdesk__container" @click="openHelpdesk">\n\t\t\t<div class="bx-im-sidebar-collab-helpdesk__icon"></div>\n\t\t\t<div class="bx-im-sidebar-collab-helpdesk__content">\n\t\t\t\t<div class="bx-im-sidebar-collab-helpdesk__title">\n\t\t\t\t\t{{ loc('IM_SIDEBAR_COLLAB_HELPDESK_TITLE') }}\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-sidebar-collab-helpdesk__description --line-clamp-3">\n\t\t\t\t\t{{ loc('IM_SIDEBAR_COLLAB_HELPDESK_DESCRIPTION') }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-collab-helpdesk__close" @click.stop="close"></div>\n\t\t</div>\n\t`};const Se={name:"NotesPreview",components:{ChatAvatar:z.ChatAvatar,ChatTitle:G.ChatTitle},props:{dialogId:{type:String,required:true}},computed:{ChatAvatarType:()=>z.ChatAvatarType,AvatarSize:()=>z.AvatarSize,ChatTitleType:()=>G.ChatTitleType},methods:{loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-notes-preview">\n\t\t\t<div class="bx-im-sidebar-notes-preview__avatar">\n\t\t\t\t<ChatAvatar \n\t\t\t\t\t:avatarDialogId="dialogId"\n\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t:size="AvatarSize.XXXL"\n\t\t\t\t\t:customType="ChatAvatarType.notes"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-notes-preview__head">\n\t\t\t\t<ChatTitle :dialogId="dialogId" :customType="ChatTitleType.notes" :showItsYou="false"/>\n\t\t\t\t<span class="bx-im-sidebar-notes-preview__description">\n\t\t\t\t\t{{ loc('IM_SIDEBAR_NOTES_PREVIEW_DESCRIPTION') }}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t`};const fe={name:"TaskPreview",components:{ChatTitle:G.ChatTitle,ChatMembersAvatars:ee},props:{dialogId:{type:String,required:true}},template:`\n\t\t<div class="bx-im-sidebar-task-preview__container">\n\t\t\t<div class="bx-im-sidebar-task-preview__avatar-container">\n\t\t\t\t<div class="bx-im-sidebar-task-preview__avatar"></div>\n\t\t\t\t<ChatTitle :dialogId="dialogId" :twoLine="true" class="bx-im-sidebar-task-preview__title" />\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-task-preview__chat-members">\n\t\t\t\t<ChatMembersAvatars :dialogId="dialogId" />\n\t\t\t</div>\n\t\t</div>\n\t`};const _e={[j.SidebarMainPanelBlock.chat]:ie,[j.SidebarMainPanelBlock.notes]:Se,[j.SidebarMainPanelBlock.post]:se,[j.SidebarMainPanelBlock.user]:ae,[j.SidebarMainPanelBlock.support]:ue,[j.SidebarMainPanelBlock.info]:Ht,[j.SidebarMainPanelBlock.fileList]:Ut,[j.SidebarMainPanelBlock.task]:fe,[j.SidebarMainPanelBlock.taskList]:qt,[j.SidebarMainPanelBlock.meetingList]:Wt,[j.SidebarMainPanelBlock.fileUnsortedList]:Ut,[j.SidebarMainPanelBlock.marketAppList]:Vt,[j.SidebarMainPanelBlock.multidialog]:ge,[j.SidebarMainPanelBlock.copilot]:he,[j.SidebarMainPanelBlock.copilotInfo]:Jt,[j.SidebarMainPanelBlock.tariffLimit]:pe,[j.SidebarMainPanelBlock.collabHelpdesk]:Ie};const Ce={name:"SidebarSkeleton",template:`\n\t\t<div class="bx-im-sidebar-skeleton__container">\n\t\t\t<div class="bx-im-sidebar-skeleton__block">\n\t\t\t\t<div class="bx-im-sidebar-skeleton__avatar"></div>\n\t\t\t\t<div class="bx-im-sidebar-skeleton__invite-button"></div>\n\t\t\t\t<div class="bx-im-sidebar-skeleton__settings"></div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-skeleton__block">\n\t\t\t\t<div class="bx-im-sidebar-skeleton__info"></div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-skeleton__block">\n\t\t\t\t<div class="bx-im-sidebar-skeleton__files"></div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-skeleton__block">\n\t\t\t\t<div class="bx-im-sidebar-skeleton__tasks"></div>\n\t\t\t</div>\n\t\t</div>\n\t`};const Me={name:"MainPanel",components:{MainHeader:Et,SidebarSkeleton:Ce},props:{dialogId:{type:String,required:true}},data(){return{isLoading:true}},computed:{blocks(){const t=i.SidebarManager.getInstance().getConfig(this.dialogId);const e=t.getBlocks(this.dialogId);return e.map((t=>_e[t]))},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},dialogInited(){return this.dialog.inited},chatId(){return this.dialog.chatId},hasInitialData(){return this.$store.getters["sidebar/isInited"](this.chatId)}},watch:{dialogId(){this.initializeSidebar()},dialogInited(){this.initializeSidebar()}},created(){this.initializeSidebar()},methods:{initializeSidebar(){if(!this.dialogInited){return}if(this.hasInitialData){this.isLoading=false;return}this.sidebarService=new St({dialogId:this.dialogId});this.isLoading=true;this.sidebarService.requestInitialData().then((()=>{this.isLoading=false})).catch((t=>{H.Logger.warn("Sidebar: request initial data error:",t)}))}},template:`\n\t\t<div class="bx-im-sidebar-main-panel__container">\n\t\t\t<MainHeader :dialogId="dialogId" />\n\t\t\t<SidebarSkeleton v-if="isLoading || !dialogInited" />\n\t\t\t<div v-else class="bx-im-sidebar-main-panel__blocks">\n\t\t\t\t<component\n\t\t\t\t\tv-for="block in blocks"\n\t\t\t\t\t:key="block.name"\n\t\t\t\t\t:is="block"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\tclass="bx-im-sidebar-main-panel__block"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t`};function ye(t,e){return[...t,...e].sort(((t,e)=>e-t))}const xe=50;var Te=babelHelpers.classPrivateFieldLooseKey("query");var Le=babelHelpers.classPrivateFieldLooseKey("processSearchResponse");class ke{constructor({dialogId:t}){Object.defineProperty(this,Le,{value:Ee});this.hasMoreItemsToLoad=true;Object.defineProperty(this,Te,{writable:true,value:""});this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}searchOnServer(t){if(babelHelpers.classPrivateFieldLooseBase(this,Te)[Te]!==t){babelHelpers.classPrivateFieldLooseBase(this,Te)[Te]=t;this.hasMoreItemsToLoad=true}return this.request()}resetSearchState(){babelHelpers.classPrivateFieldLooseBase(this,Te)[Te]="";this.hasMoreItemsToLoad=true;void this.store.dispatch("sidebar/tasks/clearSearch",{})}async request(){const t=this.getQueryParams();let e={};try{const i=await this.restClient.callMethod(j.RestMethod.imChatTaskGet,t);e=i.data()}catch(t){console.error("SidebarSearch: Im.imChatTaskGet: page request error",t)}return babelHelpers.classPrivateFieldLooseBase(this,Le)[Le](e)}getQueryParams(){const t={CHAT_ID:this.chatId,LIMIT:xe,SEARCH_TASK_NAME:babelHelpers.classPrivateFieldLooseBase(this,Te)[Te]};const e=this.store.getters["sidebar/tasks/getSearchResultCollectionLastId"](this.chatId);if(e>0){t.LAST_ID=e}return t}updateModels(t){const{list:e,users:i,tariffRestrictions:s={}}=t;const a=Boolean(s.isHistoryLimitExceeded);const r=e.length===xe;const n=tt(e);const o=this.userManager.setUsersToModel(i);const l=this.store.dispatch("sidebar/tasks/setSearch",{chatId:this.chatId,tasks:e,hasNextPage:r,lastId:n,isHistoryLimitExceeded:a});return Promise.all([l,o])}}function Ee(t){return this.updateModels(t).then((()=>t.list.map((t=>t.messageId))))}const De={name:"DateGroup",props:{dateText:{type:String,required:true}},template:`\n\t\t<div class="bx-im-sidebar-date-group__container bx-im-sidebar-date-group__scope">\n\t\t\t<div class="bx-im-sidebar-date-group__text">\n\t\t\t\t{{ dateText }}\n\t\t\t</div>\n\t\t</div>\n\t`};const Be={name:"DetailHeader",components:{ChatButton:W.ChatButton,SearchInput:U.SearchInput},props:{dialogId:{type:String,required:true},title:{type:String,required:true},secondLevel:{type:Boolean,default:false},withAddButton:{type:Boolean,default:false},withSearch:{type:Boolean,default:false},isSearchHeaderOpened:{type:Boolean,default:false},delayForFocusOnStart:{type:Number||null,default:null}},emits:["back","addClick","changeQuery","toggleSearchPanelOpened"],computed:{ButtonSize:()=>W.ButtonSize,ButtonColor:()=>W.ButtonColor,isCopilotLayout(){const{name:t}=this.$store.getters["application/getLayout"];return t===j.Layout.copilot.name},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},isCollab(){return this.dialog.type===j.ChatType.collab},addButtonColor(){if(this.isCollab){return this.ButtonColor.Collab}return this.ButtonColor.PrimaryLight}},methods:{loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-detail-header__container bx-im-sidebar-detail-header__scope">\n\t\t\t<div class="bx-im-sidebar-detail-header__title-container">\n\t\t\t\t<button\n\t\t\t\t\t:class="{'bx-im-messenger__cross-icon': !secondLevel, 'bx-im-sidebar__back-icon': secondLevel}"\n\t\t\t\t\t@click="$emit('back')"\n\t\t\t\t/>\n\t\t\t\t<div v-if="!isSearchHeaderOpened" class="bx-im-sidebar-detail-header__title-text">{{ title }}</div>\n\t\t\t\t<slot name="action">\n\t\t\t\t\t<div v-if="withAddButton && !isSearchHeaderOpened" class="bx-im-sidebar-detail-header__add-button" ref="add-button">\n\t\t\t\t\t\t<ChatButton\n\t\t\t\t\t\t\t:text="loc('IM_SIDEBAR_ADD_BUTTON_TEXT')"\n\t\t\t\t\t\t\t:size="ButtonSize.S"\n\t\t\t\t\t\t\t:color="addButtonColor"\n\t\t\t\t\t\t\t:isRounded="true"\n\t\t\t\t\t\t\t:isUppercase="false"\n\t\t\t\t\t\t\ticon="plus"\n\t\t\t\t\t\t\t@click="$emit('addClick', {target: $refs['add-button']})"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</slot>\n\t\t\t\t<div v-if="withSearch" class="bx-im-sidebar-detail-header__search">\n\t\t\t\t\t<SearchInput\n\t\t\t\t\t\tv-if="isSearchHeaderOpened"\n\t\t\t\t\t\t:placeholder="loc('IM_SIDEBAR_SEARCH_MESSAGE_PLACEHOLDER')"\n\t\t\t\t\t\t:withIcon="false"\n\t\t\t\t\t\t:delayForFocusOnStart="delayForFocusOnStart"\n\t\t\t\t\t\t@queryChange="$emit('changeQuery', $event)"\n\t\t\t\t\t\t@close="$emit('toggleSearchPanelOpened', $event)"\n\t\t\t\t\t\tclass="bx-im-sidebar-search-header__input"\n\t\t\t\t\t/>\n\t\t\t\t\t<div v-else @click="$emit('toggleSearchPanelOpened', $event)" class="bx-im-sidebar-detail-header__search__icon --search"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`};const Ae={name:"DetailEmptySearchState",props:{title:{type:String,required:true},subTitle:{type:String,required:false,default:""}},template:`\n\t\t<div class="bx-im-detail-empty-search-state__container">\n\t\t\t<div class="bx-im-detail-empty-search-state__icon"></div>\n\t\t\t<div class="bx-im-detail-empty-search-state__title">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\t\t\t<div class="bx-im-detail-empty-search-state__subtitle">\n\t\t\t\t{{ subTitle }}\n\t\t\t</div>\n\t\t</div>\n\t`};class Pe{constructor(){this.cachedDateGroups={}}format(t){const e={};t.forEach((t=>{const i=this.getDateGroup(t.date);if(!e[i.title]){e[i.title]={dateGroupTitle:i.title,items:[]}}e[i.title].items.push(t)}));return Object.values(e)}getDateGroup(t){const e=10;const i=t.toJSON().slice(0,e);if(this.cachedDateGroups[i]){return this.cachedDateGroups[i]}this.cachedDateGroups[i]={id:i,title:J.DateFormatter.formatByTemplate(t,J.DateTemplate.dateGroup)};return this.cachedDateGroups[i]}destroy(){this.cachedDateGroups={}}}const we=3;const Re={name:"TaskPanel",components:{TaskItem:zt,DateGroup:De,DetailHeader:Be,DetailEmptyState:Nt,StartState:Nt,DetailEmptySearchState:Ae,Loader:Y.Loader,TariffLimit:me},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{isLoading:false,isSearchHeaderOpened:false,searchQuery:"",searchResult:[],currentServerQueries:0,minTokenSize:we}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,tasks(){if(this.isSearchHeaderOpened){return this.$store.getters["sidebar/tasks/getSearchResultCollection"](this.chatId)}return this.$store.getters["sidebar/tasks/get"](this.chatId)},formattedCollection(){return this.collectionFormatter.format(this.tasks)},isEmptyState(){return this.formattedCollection.length===0},showAddButton(){return w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.createTask,this.dialogId)},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},preparedQuery(){return this.searchQuery.trim().toLowerCase()},isSearchQueryMinimumSize(){return this.preparedQuery.length<this.minTokenSize},hasHistoryLimit(){return this.$store.getters["sidebar/tasks/isHistoryLimitExceeded"](this.chatId)}},watch:{preparedQuery(t,e){if(t===e){return}this.cleanSearchResult();this.startSearch()}},created(){this.initSettings();this.collectionFormatter=new Pe;this.contextMenu=new Gt;this.service=new lt({dialogId:this.dialogId});this.serviceSearch=new ke({dialogId:this.dialogId});this.searchOnServerDelayed=$.Runtime.debounce(this.searchOnServer,500,this)},beforeUnmount(){this.collectionFormatter.destroy();this.contextMenu.destroy()},methods:{initSettings(){const t=$.Extension.getSettings("im.v2.component.sidebar");this.minTokenSize=t.get("minSearchTokenSize",we)},searchOnServer(t){this.currentServerQueries++;this.serviceSearch.searchOnServer(t).then((e=>{if(t!==this.preparedQuery){this.isLoading=false;return}this.searchResult=ye(this.searchResult,e)})).catch((t=>{console.error(t)})).finally((()=>{this.currentServerQueries--;this.stopLoader();if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}}))},stopLoader(){if(this.currentServerQueries>0){return}this.isLoading=false},startSearch(){if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}else{this.isLoading=true;this.searchOnServerDelayed(this.preparedQuery)}},cleanSearchResult(){this.serviceSearch.resetSearchState();this.searchResult=[]},onChangeQuery(t){this.searchQuery=t},toggleSearchPanelOpened(){this.isSearchHeaderOpened=!this.isSearchHeaderOpened},onContextMenuClick(t,e){const i={...t,dialogId:this.dialogId};this.contextMenu.openMenu(i,e)},onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.task})},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.searchQuery.length>0?"sidebar/tasks/hasNextPageSearch":"sidebar/tasks/hasNextPage";const a=this.$store.getters[s](this.chatId);return i&&a},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;if(this.isSearchQueryMinimumSize){await this.service.loadNextPage()}else{await this.serviceSearch.request()}this.isLoading=false},onAddClick(){new T.EntityCreator(this.chatId).createTaskForChat()},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-sidebar-task-detail__scope">\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="loc('IM_SIDEBAR_TASK_DETAIL_TITLE')"\n\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t:withAddButton="showAddButton"\n\t\t\t\t:isSearchHeaderOpened="isSearchHeaderOpened"\n\t\t\t\t:delayForFocusOnStart="0"\n\t\t\t\twithSearch\n\t\t\t\t@changeQuery="onChangeQuery"\n\t\t\t\t@toggleSearchPanelOpened="toggleSearchPanelOpened"\n\t\t\t\t@addClick="onAddClick"\n\t\t\t\t@back="onBackClick"\n\t\t\t/>\n\t\t\t<div class="bx-im-sidebar-task-detail__container bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t\t<div v-for="dateGroup in formattedCollection" class="bx-im-sidebar-task-detail__date-group_container">\n\t\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle" />\n\t\t\t\t\t<TaskItem\n\t\t\t\t\t\tv-for="task in dateGroup.items"\n\t\t\t\t\t\t:task="task"\n\t\t\t\t\t\t:searchQuery="searchQuery"\n\t\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<TariffLimit\n\t\t\t\t\tv-if="hasHistoryLimit"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t:panel="SidebarDetailBlock.task"\n\t\t\t\t\tclass="bx-im-sidebar-task-detail__tariff-limit-container"\n\t\t\t\t/>\n\t\t\t\t<template v-if="!isLoading">\n\t\t\t\t\t<template v-if="isSearchHeaderOpened">\n\t\t\t\t\t\t<StartState\n\t\t\t\t\t\t\tv-if="preparedQuery.length === 0"\n\t\t\t\t\t\t\t:title="loc('IM_SIDEBAR_SEARCH_MESSAGE_START_TITLE')"\n\t\t\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DetailEmptySearchState\n\t\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t\t:title="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_EXTENDED')"\n\t\t\t\t\t\t\t:subTitle="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_DESCRIPTION_EXTENDED')"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</template>\n\t\t\t\t\t<DetailEmptyState\n\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_TASKS_EMPTY')"\n\t\t\t\t\t\t:iconType="SidebarDetailBlock.task"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<Loader v-if="isLoading" class="bx-im-sidebar-detail__loader-container" />\n\t\t\t</div>\n\t\t</div>\n\t`};const Fe=50;const He={name:"DetailTabs",props:{tabs:{type:Array,default:()=>[]}},emits:["tabSelect"],data(){return{hasLeftControl:false,hasRightControl:false,currentElementIndex:0,highlightOffsetLeft:0,highlightWidth:0}},computed:{highlightStyle(){return{left:`${this.highlightOffsetLeft}px`,width:`${this.highlightWidth}px`}}},watch:{currentElementIndex(t){this.updateHighlightPosition(t);this.$emit("tabSelect",this.tabs[t]);this.scrollToElement(t)}},mounted(){if(this.$refs.tabs.scrollWidth>this.$refs.tabs.offsetWidth){this.hasRightControl=true}this.updateHighlightPosition(this.currentElementIndex)},methods:{getElementNodeByIndex(t){return[...this.$refs.tabs.children].filter((t=>!$.Dom.hasClass(t,"bx-sidebar-tabs-highlight")))[t]},updateHighlightPosition(t){const e=this.getElementNodeByIndex(t);this.highlightOffsetLeft=e.offsetLeft;this.highlightWidth=e.offsetWidth},scrollToElement(t){const e=this.getElementNodeByIndex(t);this.$refs.tabs.scroll({left:e.offsetLeft-Fe,behavior:"smooth"})},onTabClick(t){this.currentElementIndex=t.index},getTabTitle(t){const e=`IM_SIDEBAR_FILES_${t.toUpperCase()}_TAB`;return this.$Bitrix.Loc.getMessage(e)},isSelectedTab(t){return t===this.currentElementIndex},onLeftClick(){if(this.currentElementIndex<=0){return}this.currentElementIndex--},onRightClick(){if(this.currentElementIndex>=this.tabs.length-1){return}this.currentElementIndex++},updateControlsVisibility(){this.hasRightControl=this.$refs.tabs.scrollWidth>this.$refs.tabs.scrollLeft+this.$refs.tabs.clientWidth;this.hasLeftControl=this.$refs.tabs.scrollLeft>0}},template:`\n\t\t<div class="bx-im-sidebar-detail-tabs__container bx-im-sidebar-detail-tabs__scope">\n\t\t\t<div v-if="hasLeftControl" @click.stop="onLeftClick" class="bx-im-sidebar-ears__control --left">\n\t\t\t\t<div class="bx-im-sidebar__forward-icon"></div>\n\t\t\t</div>\n\t\t\t<div v-if="hasRightControl" @click.stop="onRightClick" class="bx-im-sidebar-ears__control --right">\n\t\t\t\t<div class="bx-im-sidebar__forward-icon"></div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-ears__elements" ref="tabs" @scroll.passive="updateControlsVisibility">\n\t\t\t\t<div class="bx-sidebar-tabs-highlight" :style="highlightStyle"></div>\n\t\t\t\t<div\n\t\t\t\t\tv-for="(tab, index) in tabs"\n\t\t\t\t\t:key="tab"\n\t\t\t\t\tclass="bx-im-sidebar-detail-tabs__item"\n\t\t\t\t\t:class="[isSelectedTab(index) ? '--selected' : '']"\n\t\t\t\t\t@click="onTabClick({index: index})"\n\t\t\t\t>\n\t\t\t\t\t<div class="bx-im-sidebar-detail-tabs__item-title">{{ getTabTitle(tab) }}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`};const Oe=50;var Ne=babelHelpers.classPrivateFieldLooseKey("query");var Ue=babelHelpers.classPrivateFieldLooseKey("processSearchResponse");class $e{constructor({dialogId:t}){Object.defineProperty(this,Ue,{value:Qe});this.hasMoreItemsToLoad=true;Object.defineProperty(this,Ne,{writable:true,value:""});this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}searchOnServer(t,e){if(babelHelpers.classPrivateFieldLooseBase(this,Ne)[Ne]!==t){babelHelpers.classPrivateFieldLooseBase(this,Ne)[Ne]=t;this.hasMoreItemsToLoad=true}return this.request(e)}resetSearchState(){babelHelpers.classPrivateFieldLooseBase(this,Ne)[Ne]="";this.hasMoreItemsToLoad=true;void this.store.dispatch("sidebar/files/clearSearch",{})}async request(t){const e=this.getQueryParams(t);let i={};try{const t=await this.restClient.callMethod(j.RestMethod.imChatFileGet,e);i=t.data()}catch(t){console.error("SidebarSearch: Im.imChatFileGet: page request error",t)}return babelHelpers.classPrivateFieldLooseBase(this,Ue)[Ue](i)}updateModels(t){const{list:e,users:i,files:s,tariffRestrictions:a={}}=t;const r=Boolean(a.isHistoryLimitExceeded);const n=this.store.dispatch("sidebar/files/setHistoryLimitExceeded",{chatId:this.chatId,isHistoryLimitExceeded:r});const o=this.userManager.setUsersToModel(i);const l=this.store.dispatch("files/set",s);const d={};e.forEach((t=>{if(!d[t.group]){d[t.group]=[]}d[t.group].push(t)}));const c=[];Object.keys(d).forEach((t=>{const e=d[t];c.push(this.store.dispatch("sidebar/files/setSearch",{chatId:this.chatId,files:e,group:t}),this.store.dispatch("sidebar/files/setHasNextPageSearch",{chatId:this.chatId,group:t,hasNextPage:e.length===Oe}),this.store.dispatch("sidebar/files/setLastIdSearch",{chatId:this.chatId,group:t,lastId:tt(e)}))}));return Promise.all([l,o,n,...c])}loadNextPage(t,e){if(babelHelpers.classPrivateFieldLooseBase(this,Ne)[Ne]!==e){babelHelpers.classPrivateFieldLooseBase(this,Ne)[Ne]=e}return this.request(t)}getQueryParams(t){const e={CHAT_ID:this.chatId,SEARCH_FILE_NAME:babelHelpers.classPrivateFieldLooseBase(this,Ne)[Ne],GROUP:t.toUpperCase(),LIMIT:Oe};const i=this.store.getters["sidebar/files/getSearchResultCollectionLastId"](this.chatId,t);if(i>0){e.LAST_ID=i}return e}}function Qe(t){return this.updateModels(t).then((()=>t.files.map((t=>t.id))))}const Ge={name:"MediaDetailItem",components:{MessageAvatar:z.MessageAvatar},props:{fileItem:{type:Object,required:true},contextDialogId:{type:String,required:true}},emits:["contextMenuClick"],data(){return{showContextButton:false,videoDuration:0}},computed:{AvatarSize:()=>z.AvatarSize,sidebarFileItem(){return this.fileItem},file(){return this.$store.getters["files/get"](this.sidebarFileItem.fileId,true)},previewPicture(){if(!this.hasPreview){return{}}return{backgroundImage:`url('${this.imageSrc}')`}},hasPreview(){return $.Type.isStringFilled(this.file.urlPreview)},isImage(){return this.file.type==="image"},isVideo(){return this.file.type==="video"},viewerAttributes(){return Q.Utils.file.getViewerDataAttributes({viewerAttributes:this.file.viewerAttrs,previewImageSrc:this.imageSrc,context:j.FileViewerContext.sidebarTabMedia})},videoDurationText(){if(this.videoDuration===0){return"--:--"}return this.formatTime(this.videoDuration)},canBeOpenedWithViewer(){var t;return this.file.viewerAttrs&&((t=BX.UI)==null?void 0:t.Viewer)},imageSrc(){const t=["gif","webp"].includes(this.file.extension);return t?this.file.urlShow:this.file.urlPreview}},methods:{formatTime(t){t=Math.floor(t);const e=Math.floor(t/60/60);if(e>0){t-=e*60*60}const i=Math.floor(t/60);if(i>0){t-=i*60}const s=e>0?`${e}:`:"";const a=s>0?`${i.toString().padStart(2,"0")}:`:`${i}:`;const r=t.toString().padStart(2,"0");return s+a+r},handleVideoEvent(){if(!this.$refs.video){return}this.videoDuration=this.$refs.video.duration},onContextMenuClick(t){this.$emit("contextMenuClick",{sidebarFile:this.sidebarFileItem,file:this.file,messageId:this.sidebarFileItem.messageId},t.currentTarget)},download(){if(this.file.progress!==100||this.canBeOpenedWithViewer){return}window.open(this.file.urlDownload,"_blank")}},template:`\n\t\t<div \n\t\t\tclass="bx-im-sidebar-file-media-detail-item__container bx-im-sidebar-file-media-detail-item__scope"\n\t\t\t@mouseover="showContextButton = true"\n\t\t\t@mouseleave="showContextButton = false"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-file-media-detail-item__header-container">\n\t\t\t\t<div class="bx-im-sidebar-file-media-detail-item__avatar-container">\n\t\t\t\t\t<MessageAvatar \n\t\t\t\t\t\t:messageId="sidebarFileItem.messageId" \n\t\t\t\t\t\t:authorId="sidebarFileItem.authorId"\n\t\t\t\t\t\t:size="AvatarSize.S" \n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<button\n\t\t\t\t\tv-if="showContextButton"\n\t\t\t\t\tclass="bx-im-sidebar-file-media-detail-item__context-menu bx-im-messenger__context-menu-icon"\n\t\t\t\t\t@click="onContextMenuClick"\n\t\t\t\t></button>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-if="isImage"\n\t\t\t\tclass="bx-im-sidebar-file-media-detail-item__content --image" \n\t\t\t\t:style="previewPicture"\n\t\t\t\tv-bind="viewerAttributes"\n\t\t\t\t:title="file.name"\n\t\t\t\t@click="download"\n\t\t\t>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-if="isVideo"\n\t\t\t\tclass="bx-im-sidebar-file-media-detail-item__content --video"\n\t\t\t\t:style="previewPicture"\n\t\t\t\tv-bind="viewerAttributes"\n\t\t\t\t:title="file.name"\n\t\t\t\t@click="download"\n\t\t\t>\n\t\t\t\t<video\n\t\t\t\t\tv-show="!hasPreview"\n\t\t\t\t\t:src="file.urlDownload"\n\t\t\t\t\tref="video"\n\t\t\t\t\tclass="bx-im-sidebar-file-media-detail-item__video" \n\t\t\t\t\tpreload="metadata" \n\t\t\t\t\t@durationchange="handleVideoEvent"\n\t\t\t\t\t@loadeddata="handleVideoEvent"\n\t\t\t\t\t@loadedmetadata="handleVideoEvent"\n\t\t\t\t></video>\n\t\t\t</div>\n\t\t\t<div v-if="isVideo" class="bx-im-sidebar-file-media-detail-item__video-controls">\n\t\t\t\t<span class="bx-im-sidebar-file-media-detail-item__video-controls-icon"></span>\n\t\t\t\t<span class="bx-im-sidebar-file-media-detail-item__video-controls-time">{{ videoDurationText }}</span>\n\t\t\t</div>\n\t\t</div>\n\t`};class ze{constructor(){this.store=X.Core.getStore();this.diskService=new I.DiskService}delete(t){void this.store.dispatch("sidebar/files/delete",{dialogId:t.chatId,id:t.id});void this.diskService.delete({chatId:t.chatId,fileId:t.fileId})}saveOnDisk(t){return this.diskService.save(t)}}class qe extends $t{constructor(){super();this.id="im-sidebar-context-menu";this.mediaManager=new ze}getMenuItems(){return[this.getOpenContextMessageItem(),this.getDownloadFileItem(),this.getSaveFileOnDiskItem(),this.getDeleteFileItem()]}getDownloadFileItem(){if(!this.context.file.urlDownload){return null}return{html:this.getDownloadHtml(this.context.file.urlDownload,this.context.file.name),onclick:function(){this.menuInstance.close()}.bind(this)}}getSaveFileOnDiskItem(){if(!this.context.sidebarFile.fileId){return null}return{text:$.Loc.getMessage("IM_SIDEBAR_MENU_SAVE_FILE_ON_DISK_MSGVER_1"),onclick:async function(){this.menuInstance.close();await this.mediaManager.saveOnDisk([this.context.sidebarFile.fileId]);D.Notifier.file.onDiskSaveComplete()}.bind(this)}}getDeleteFileItem(){if(this.getCurrentUserId()!==this.context.sidebarFile.authorId){return null}return{text:$.Loc.getMessage("IM_SIDEBAR_MENU_DELETE_FILE"),onclick:function(){this.mediaManager.delete(this.context.sidebarFile);this.menuInstance.close()}.bind(this)}}getDownloadHtml(t,e){const i=$.Dom.create("a",{text:$.Loc.getMessage("IM_SIDEBAR_MENU_DOWNLOAD_FILE")});$.Dom.style(i,"display","block");$.Dom.style(i,"color","inherit");$.Dom.style(i,"text-decoration","inherit");i.setAttribute("href",t);i.setAttribute("download",e);return i}}const Xe=3;const Ve={name:"MediaTab",components:{DateGroup:De,MediaDetailItem:Ge,DetailEmptyState:Nt,StartState:Nt,DetailEmptySearchState:Ae,Loader:Y.Loader},props:{dialogId:{type:String,required:true},searchResult:{type:Array,required:false,default:()=>[]},isSearch:{type:Boolean,required:false},isLoadingSearch:{type:Boolean,required:false},searchQuery:{type:String,default:""}},data(){return{isLoading:false,minTokenSize:Xe}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},files(){if(this.isSearch){return this.$store.getters["sidebar/files/getSearchResultCollection"](this.chatId,j.SidebarFileGroups.media)}return this.$store.getters["sidebar/files/get"](this.chatId,j.SidebarFileGroups.media)},formattedCollection(){return this.collectionFormatter.format(this.files)},isEmptyState(){return this.formattedCollection.length===0},isSearchQueryMinimumSize(){return this.searchQuery.length<this.minTokenSize}},created(){this.initSettings();this.service=new nt({dialogId:this.dialogId});this.serviceSearch=new $e({dialogId:this.dialogId});this.collectionFormatter=new Pe;this.contextMenu=new qe},beforeUnmount(){this.collectionFormatter.destroy();this.contextMenu.destroy()},methods:{initSettings(){const t=$.Extension.getSettings("im.v2.component.sidebar");this.minTokenSize=t.get("minSearchTokenSize",Xe)},onContextMenuClick(t,e){const i={...t,dialogId:this.dialogId};this.contextMenu.openMenu(i,e)},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.searchQuery.length>0?"sidebar/files/hasNextPageSearch":"sidebar/files/hasNextPage";const a=this.$store.getters[s](this.chatId,j.SidebarFileGroups.media);return i&&a},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;if(this.isSearchQueryMinimumSize){await this.service.loadNextPage(j.SidebarFileGroups.media)}else{await this.serviceSearch.loadNextPage(j.SidebarFileGroups.media,this.searchQuery)}this.isLoading=false},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-sidebar-file-media-detail__scope bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t<div v-for="dateGroup in formattedCollection" class="bx-im-sidebar-file-media-detail__date-group_container">\n\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle" />\n\t\t\t\t<div class="bx-im-sidebar-file-media-detail__items-group">\n\t\t\t\t\t<MediaDetailItem\n\t\t\t\t\t\tv-for="file in dateGroup.items"\n\t\t\t\t\t\t:fileItem="file"\n\t\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<template v-if="!isLoading && !isLoadingSearch">\n\t\t\t\t<template v-if="isSearch">\n\t\t\t\t\t<StartState\n\t\t\t\t\t\tv-if="searchQuery.length === 0"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_SEARCH_RESULT_START_TITLE')"\n\t\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t\t/>\n\t\t\t\t\t<DetailEmptySearchState\n\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_EXTENDED')"\n\t\t\t\t\t\t:subTitle="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_DESCRIPTION_EXTENDED')"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<DetailEmptyState\n\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t:title="loc('IM_SIDEBAR_MEDIA_EMPTY')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.media"\n\t\t\t\t/>\n\t\t\t</template>\n\t\t\t<Loader v-if="isLoading || isLoadingSearch" class="bx-im-sidebar-detail__loader-container" />\n\t\t</div>\n\t`};const Ke={name:"AudioDetailItem",components:{AudioPlayer:f.AudioPlayer},props:{id:{type:Number,required:true},fileItem:{type:Object,required:true}},emits:["contextMenuClick"],data(){return{timelineType:0}},computed:{sidebarFileItem(){return this.fileItem},file(){return this.$store.getters["files/get"](this.sidebarFileItem.fileId,true)},audioUrl(){return this.file.urlDownload}},created(){this.timelineType=Math.floor(Math.random()*5)},methods:{onContextMenuClick(t){this.$emit("contextMenuClick",{sidebarFile:this.sidebarFileItem,file:this.file,messageId:this.sidebarFileItem.messageId},t.currentTarget)}},template:`\n\t\t<div class="bx-im-sidebar-file-audio-detail-item__container bx-im-sidebar-file-audio-detail-item__scope">\n\t\t\t<AudioPlayer \n\t\t\t\t:id="id"\n\t\t\t\t:src="audioUrl" \n\t\t\t\t:file="file" \n\t\t\t\t:messageId="sidebarFileItem.messageId"\n\t\t\t\t:timelineType="timelineType" \n\t\t\t\t:authorId="sidebarFileItem.authorId"\n\t\t\t\t:withPlaybackRateControl="true"\n\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t/>\n\t\t</div>\n\t`};const je=3;const Ye={name:"AudioTab",components:{DetailEmptyState:Nt,AudioDetailItem:Ke,DateGroup:De,StartState:Nt,DetailEmptySearchState:Ae,Loader:Y.Loader},props:{dialogId:{type:String,required:true},searchResult:{type:Array,required:false,default:()=>[]},isSearch:{type:Boolean,required:false},isLoadingSearch:{type:Boolean,required:false},searchQuery:{type:String,default:""}},data(){return{isLoading:false,minTokenSize:je}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,files(){if(this.isSearch){return this.$store.getters["sidebar/files/getSearchResultCollection"](this.chatId,j.SidebarFileGroups.audio)}return this.$store.getters["sidebar/files/get"](this.chatId,j.SidebarFileGroups.audio)},formattedCollection(){return this.collectionFormatter.format(this.files)},isEmptyState(){return this.formattedCollection.length===0},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},isSearchQueryMinimumSize(){return this.searchQuery.length<this.minTokenSize}},created(){this.initSettings();this.service=new nt({dialogId:this.dialogId});this.serviceSearch=new $e({dialogId:this.dialogId});this.collectionFormatter=new Pe;this.contextMenu=new qe},beforeUnmount(){this.collectionFormatter.destroy();this.contextMenu.destroy()},methods:{initSettings(){const t=$.Extension.getSettings("im.v2.component.sidebar");this.minTokenSize=t.get("minSearchTokenSize",je)},onContextMenuClick(t,e){const i={...t,dialogId:this.dialogId};this.contextMenu.openMenu(i,e)},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.searchQuery.length>0?"sidebar/files/hasNextPageSearch":"sidebar/files/hasNextPage";const a=this.$store.getters[s](this.chatId,j.SidebarFileGroups.audio);return i&&a},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;if(this.isSearchQueryMinimumSize){await this.service.loadNextPage(j.SidebarFileGroups.audio)}else{await this.serviceSearch.loadNextPage(j.SidebarFileGroups.audio,this.searchQuery)}this.isLoading=false},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-sidebar-file-audio-detail__scope bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t<div v-for="dateGroup in formattedCollection" class="bx-im-sidebar-file-audio-detail__date-group_container">\n\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle" />\n\t\t\t\t<AudioDetailItem\n\t\t\t\t\tv-for="file in dateGroup.items"\n\t\t\t\t\t:id="file.id"\n\t\t\t\t\t:fileItem="file"\n\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<template v-if="!isLoading && !isLoadingSearch">\n\t\t\t\t<template v-if="isSearch">\n\t\t\t\t\t<StartState\n\t\t\t\t\t\tv-if="searchQuery.length === 0"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_SEARCH_RESULT_START_TITLE')"\n\t\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t\t/>\n\t\t\t\t\t<DetailEmptySearchState\n\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_EXTENDED')"\n\t\t\t\t\t\t:subTitle="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_DESCRIPTION_EXTENDED')"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<DetailEmptyState\n\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t:title="loc('IM_SIDEBAR_AUDIO_EMPTY')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.audio"\n\t\t\t\t/>\n\t\t\t</template>\n\t\t\t<Loader v-if="isLoading || isLoadingSearch" class="bx-im-sidebar-detail__loader-container" />\n\t\t</div>\n\t`};const We={name:"BriefItem",components:{MessageAvatar:z.MessageAvatar,ChatTitle:G.ChatTitle},props:{brief:{type:Object,required:true},contextDialogId:{type:String,required:true},searchQuery:{type:String,default:"",required:false}},emits:["contextMenuClick"],data(){return{showContextButton:false}},computed:{AvatarSize:()=>z.AvatarSize,sidebarFileItem(){return this.brief},file(){return this.$store.getters["files/get"](this.sidebarFileItem.fileId,true)},fileShortName(){const t=15;const e=Q.Utils.file.getShortFileName(this.file.name,t);if(this.searchQuery.length===0){return $.Text.encode(e)}return N.highlightText($.Text.encode(e),this.searchQuery)},fileSize(){return Q.Utils.file.formatFileSize(this.file.size)},viewerAttributes(){return Q.Utils.file.getViewerDataAttributes({viewerAttributes:this.file.viewerAttrs,previewImageSrc:this.file.urlPreview,context:j.FileViewerContext.sidebarTabBriefs})},isViewerAvailable(){return Object.keys(this.viewerAttributes).length>0}},methods:{download(){if(this.isViewerAvailable){return}window.open(this.file.urlDownload,"_blank")},onContextMenuClick(t){this.$emit("contextMenuClick",{sidebarFile:this.sidebarFileItem,file:this.file,messageId:this.sidebarFileItem.messageId},t.currentTarget)}},template:`\n\t\t<div \n\t\t\tclass="bx-im-sidebar-brief-item__container bx-im-sidebar-brief-item__scope"\n\t\t\t@mouseover="showContextButton = true"\n\t\t\t@mouseleave="showContextButton = false"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-brief-item__icon-container"></div>\n\t\t\t<div class="bx-im-sidebar-brief-item__content-container">\n\t\t\t\t<div class="bx-im-sidebar-brief-item__content">\n\t\t\t\t\t<div class="bx-im-sidebar-brief-item__title" @click="download" v-bind="viewerAttributes">\n\t\t\t\t\t\t<span class="bx-im-sidebar-brief-item__title-text" :title="file.name" v-html="fileShortName"></span>\n\t\t\t\t\t\t<span class="bx-im-sidebar-brief-item__size-text">{{fileSize}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="bx-im-sidebar-brief-item__author-container">\n\t\t\t\t\t\t<MessageAvatar \n\t\t\t\t\t\t\t:messageId="sidebarFileItem.messageId"\n\t\t\t\t\t\t\t:authorId="sidebarFileItem.authorId"\n\t\t\t\t\t\t\t:size="AvatarSize.XS"\n\t\t\t\t\t\t\tclass="bx-im-sidebar-brief-item__author-avatar" \n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ChatTitle :dialogId="sidebarFileItem.authorId" :showItsYou="false" />\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\tv-if="showContextButton"\n\t\t\t\tclass="bx-im-messenger__context-menu-icon bx-im-sidebar-brief-item__context-menu-button"\n\t\t\t\t@click="onContextMenuClick"\n\t\t\t></button>\n\t\t</div>\n\t`};const Je=3;const Ze={name:"BriefTab",components:{DateGroup:De,BriefItem:We,DetailEmptyState:Nt,StartState:Nt,DetailEmptySearchState:Ae,Loader:Y.Loader},props:{dialogId:{type:String,required:true},searchResult:{type:Array,required:false,default:()=>[]},isSearch:{type:Boolean,required:false},isLoadingSearch:{type:Boolean,required:false},searchQuery:{type:String,default:""}},data(){return{isLoading:false,minTokenSize:Je}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,files(){if(this.isSearch){return this.$store.getters["sidebar/files/getSearchResultCollection"](this.chatId,j.SidebarFileGroups.brief)}return this.$store.getters["sidebar/files/get"](this.chatId,j.SidebarFileGroups.brief)},formattedCollection(){return this.collectionFormatter.format(this.files)},isEmptyState(){return this.formattedCollection.length===0},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},isSearchQueryMinimumSize(){return this.searchQuery.length<this.minTokenSize}},created(){this.initSettings();this.service=new nt({dialogId:this.dialogId});this.serviceSearch=new $e({dialogId:this.dialogId});this.collectionFormatter=new Pe;this.contextMenu=new qe},beforeUnmount(){this.collectionFormatter.destroy();this.contextMenu.destroy()},methods:{initSettings(){const t=$.Extension.getSettings("im.v2.component.sidebar");this.minTokenSize=t.get("minSearchTokenSize",Je)},onContextMenuClick(t,e){const i={...t,dialogId:this.dialogId};this.contextMenu.openMenu(i,e)},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.searchQuery.length>0?"sidebar/files/hasNextPageSearch":"sidebar/files/hasNextPage";const a=this.$store.getters[s](this.chatId,j.SidebarFileGroups.brief);return i&&a},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;if(this.isSearchQueryMinimumSize){await this.service.loadNextPage(j.SidebarFileGroups.brief)}else{await this.serviceSearch.loadNextPage(j.SidebarFileGroups.brief,this.searchQuery)}this.isLoading=false},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-sidebar-brief-detail__scope bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t<div v-for="dateGroup in formattedCollection" class="bx-im-sidebar-brief-detail__date-group_container">\n\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle"/>\n\t\t\t\t<BriefItem\n\t\t\t\t\tv-for="file in dateGroup.items"\n\t\t\t\t\t:brief="file"\n\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t:searchQuery="searchQuery"\n\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<template v-if="!isLoading && !isLoadingSearch">\n\t\t\t\t<template v-if="isSearch">\n\t\t\t\t\t<StartState\n\t\t\t\t\t\tv-if="searchQuery.length === 0"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_SEARCH_RESULT_START_TITLE')"\n\t\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t\t/>\n\t\t\t\t\t<DetailEmptySearchState\n\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_EXTENDED')"\n\t\t\t\t\t\t:subTitle="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_DESCRIPTION_EXTENDED')"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<DetailEmptyState\n\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t:title="loc('IM_SIDEBAR_BRIEFS_EMPTY')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.document"\n\t\t\t\t/>\n\t\t\t</template>\n\t\t\t<Loader v-if="isLoading || isLoadingSearch" class="bx-im-sidebar-detail__loader-container" />\n\t\t</div>\n\t`};const ti={name:"FileDetailItem",components:{MessageAvatar:z.MessageAvatar,ChatTitle:G.ChatTitle},props:{fileItem:{type:Object,required:true},contextDialogId:{type:String,required:true},searchQuery:{type:String,default:"",required:false},viewerContext:{type:String,default:""}},emits:["contextMenuClick"],data(){return{showContextButton:false}},computed:{AvatarSize:()=>z.AvatarSize,sidebarFileItem(){return this.fileItem},file(){return this.$store.getters["files/get"](this.sidebarFileItem.fileId,true)},fileIconClass(){return`ui-icon ui-icon-file-${this.file.icon}`},fileShortName(){const t=15;const e=Q.Utils.file.getShortFileName(this.file.name,t);if(this.searchQuery.length===0){return $.Text.encode(e)}return N.highlightText($.Text.encode(e),this.searchQuery)},fileSize(){return Q.Utils.file.formatFileSize(this.file.size)},viewerAttributes(){return Q.Utils.file.getViewerDataAttributes({viewerAttributes:this.file.viewerAttrs,previewImageSrc:this.file.urlPreview,context:this.viewerContext})},isViewerAvailable(){return Object.keys(this.viewerAttributes).length>0},authorId(){return this.sidebarFileItem.authorId}},methods:{download(){if(this.isViewerAvailable){return}window.open(this.file.urlDownload,"_blank")},onContextMenuClick(t){this.$emit("contextMenuClick",{sidebarFile:this.sidebarFileItem,file:this.file,messageId:this.sidebarFileItem.messageId},t.currentTarget)}},template:`\n\t\t<div \n\t\t\tclass="bx-im-sidebar-file-detail-item__container bx-im-sidebar-file-detail-item__scope"\n\t\t\t@mouseover="showContextButton = true"\n\t\t\t@mouseleave="showContextButton = false"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-file-detail-item__icon-container">\n\t\t\t\t<div :class="fileIconClass"><i></i></div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-file-detail-item__content-container" v-bind="viewerAttributes">\n\t\t\t\t<div class="bx-im-sidebar-file-detail-item__content">\n\t\t\t\t\t<div class="bx-im-sidebar-file-detail-item__file-title" @click="download" :title="file.name">\n\t\t\t\t\t\t<span class="bx-im-sidebar-file-detail-item__file-title-text" v-html="fileShortName"></span>\n\t\t\t\t\t\t<span class="bx-im-sidebar-file-detail-item__file-size">{{fileSize}}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="bx-im-sidebar-file-detail-item__author-container">\n\t\t\t\t\t\t<template v-if="authorId > 0">\n\t\t\t\t\t\t\t<MessageAvatar\n\t\t\t\t\t\t\t\t:messageId="sidebarFileItem.messageId"\n\t\t\t\t\t\t\t\t:authorId="sidebarFileItem.authorId"\n\t\t\t\t\t\t\t\t:size="AvatarSize.XS"\n\t\t\t\t\t\t\t\tclass="bx-im-sidebar-file-detail-item__author-avatar"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<ChatTitle :dialogId="authorId" :showItsYou="false" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t\t<span v-else class="bx-im-sidebar-file-detail-item__system-author-text">\n\t\t\t\t\t\t\t{{ $Bitrix.Loc.getMessage('IM_SIDEBAR_SYSTEM_USER') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\tv-if="showContextButton"\n\t\t\t\tclass="bx-im-messenger__context-menu-icon" \n\t\t\t\t@click="onContextMenuClick"\n\t\t\t></button>\n\t\t</div>\n\t`};const ei=3;const ii={name:"FileTab",components:{DateGroup:De,FileDetailItem:ti,DetailEmptyState:Nt,StartState:Nt,DetailEmptySearchState:Ae,Loader:Y.Loader},props:{dialogId:{type:String,required:true},searchResult:{type:Array,required:false,default:()=>[]},isSearch:{type:Boolean,required:false},isLoadingSearch:{type:Boolean,required:false},searchQuery:{type:String,default:""}},data(){return{isLoading:false,minTokenSize:ei}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,FileViewerContext:()=>j.FileViewerContext,files(){if(this.isSearch){return this.$store.getters["sidebar/files/getSearchResultCollection"](this.chatId,j.SidebarFileGroups.file)}return this.$store.getters["sidebar/files/get"](this.chatId,j.SidebarFileGroups.file)},formattedCollection(){return this.collectionFormatter.format(this.files)},isEmptyState(){return this.formattedCollection.length===0},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},isSearchQueryMinimumSize(){return this.searchQuery.length<this.minTokenSize}},created(){this.initSettings();this.service=new nt({dialogId:this.dialogId});this.serviceSearch=new $e({dialogId:this.dialogId});this.collectionFormatter=new Pe;this.contextMenu=new qe},beforeUnmount(){this.collectionFormatter.destroy();this.contextMenu.destroy()},methods:{initSettings(){const t=$.Extension.getSettings("im.v2.component.sidebar");this.minTokenSize=t.get("minSearchTokenSize",ei)},onContextMenuClick(t,e){const i={...t,dialogId:this.dialogId};this.contextMenu.openMenu(i,e)},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.searchQuery.length>0?"sidebar/files/hasNextPageSearch":"sidebar/files/hasNextPage";const a=this.$store.getters[s](this.chatId,j.SidebarFileGroups.file);return i&&a},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;if(this.isSearchQueryMinimumSize){await this.service.loadNextPage(j.SidebarFileGroups.file)}else{await this.serviceSearch.loadNextPage(j.SidebarFileGroups.file,this.searchQuery)}this.isLoading=false},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-sidebar-file-detail__scope bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t<div v-for="dateGroup in formattedCollection" class="bx-im-sidebar-file-detail__date-group_container">\n\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle" />\n\t\t\t\t<FileDetailItem\n\t\t\t\t\tv-for="file in dateGroup.items"\n\t\t\t\t\t:fileItem="file"\n\t\t\t\t\t:searchQuery="searchQuery"\n\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t:viewerContext="FileViewerContext.sidebarTabFiles"\n\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<template v-if="!isLoading && !isLoadingSearch">\n\t\t\t\t<template v-if="isSearch">\n\t\t\t\t\t<StartState\n\t\t\t\t\t\tv-if="searchQuery.length === 0"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_SEARCH_RESULT_START_TITLE')"\n\t\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t\t/>\n\t\t\t\t\t<DetailEmptySearchState\n\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_EXTENDED')"\n\t\t\t\t\t\t:subTitle="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_DESCRIPTION_EXTENDED')"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<DetailEmptyState\n\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t:title="loc('IM_SIDEBAR_FILES_EMPTY')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.document"\n\t\t\t\t/>\n\t\t\t</template>\n\t\t\t<Loader v-if="isLoading || isLoadingSearch" class="bx-im-sidebar-detail__loader-container" />\n\t\t</div>\n\t`};const si=3;const ai={name:"FilePanel",components:{DetailHeader:Be,DetailTabs:He,MediaTab:Ve,AudioTab:Ye,FileTab:ii,BriefTab:Ze,Loader:Y.Loader,TariffLimit:me},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{tab:j.SidebarFileTabGroups.media,isSearchHeaderOpened:false,searchQuery:"",searchResult:[],currentServerQueries:0,isLoading:false,minTokenSize:si}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,tabComponentName(){return`${$.Text.capitalize(this.tab)}Tab`},tabs(){const t=Object.values(j.SidebarFileTabGroups);const e=b.FeatureManager.isFeatureAvailable(b.Feature.sidebarBriefs);if(!e){return t.filter((t=>t!==j.SidebarDetailBlock.brief))}return t},preparedQuery(){return this.searchQuery.trim().toLowerCase()},isSearchQueryMinimumSize(){return this.preparedQuery.length<this.minTokenSize},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},hasHistoryLimit(){return this.$store.getters["sidebar/files/isHistoryLimitExceeded"](this.chatId)}},watch:{preparedQuery(t,e){if(t===e){return}this.cleanSearchResult();this.startSearch()}},created(){this.initSettings();this.service=new nt({dialogId:this.dialogId,tab:this.tab});this.serviceSearch=new $e({dialogId:this.dialogId,tab:this.tab});this.searchOnServerDelayed=$.Runtime.debounce(this.searchOnServer,500,this)},methods:{initSettings(){const t=$.Extension.getSettings("im.v2.component.sidebar");this.minTokenSize=t.get("minSearchTokenSize",si)},searchOnServer(t){this.currentServerQueries++;this.serviceSearch.searchOnServer(t,this.tab).then((e=>{if(t!==this.preparedQuery){this.isLoading=false;return}this.searchResult=ye(this.searchResult,e)})).catch((t=>{console.error(t)})).finally((()=>{this.currentServerQueries--;this.stopLoader();if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}}))},stopLoader(){if(this.currentServerQueries>0){return}this.isLoading=false},startSearch(){if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}else{this.isLoading=true;this.searchOnServerDelayed(this.preparedQuery)}},cleanSearchResult(){this.serviceSearch.resetSearchState();this.searchResult=[]},onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.file})},onTabSelect(t){this.tab=t;if(!this.isSearchQueryMinimumSize){this.cleanSearchResult();this.startSearch()}},onChangeQuery(t){this.searchQuery=t},toggleSearchPanelOpened(){this.isSearchHeaderOpened=!this.isSearchHeaderOpened},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div>\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="loc('IM_SIDEBAR_MEDIA_DETAIL_TITLE')"\n\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t:isSearchHeaderOpened="isSearchHeaderOpened"\n\t\t\t\t:delayForFocusOnStart="0"\n\t\t\t\t@changeQuery="onChangeQuery"\n\t\t\t\t@toggleSearchPanelOpened="toggleSearchPanelOpened"\n\t\t\t\twithSearch\n\t\t\t\t@back="onBackClick"\n\t\t\t/>\n\t\t\t<TariffLimit\n\t\t\t\tv-if="hasHistoryLimit"\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:panel="SidebarDetailBlock.file"\n\t\t\t\tclass="bx-im-sidebar-file__tariff-limit-container" \n\t\t\t/>\n\t\t\t<DetailTabs :tabs="tabs" @tabSelect="onTabSelect" />\n\t\t\t<KeepAlive>\n\t\t\t\t<component \n\t\t\t\t\t:is="tabComponentName" \n\t\t\t\t\t:dialogId="dialogId" \n\t\t\t\t\t:searchResult="searchResult" \n\t\t\t\t\t:isSearch="isSearchHeaderOpened" \n\t\t\t\t\t:searchQuery="searchQuery" \n\t\t\t\t\t:isLoadingSearch="isLoading"\n\t\t\t\t/>\n\t\t\t</KeepAlive>\n\t\t</div>\n\t`};const ri={name:"FileUnsortedPanel",components:{DateGroup:De,FileDetailItem:ti,DetailEmptyState:Nt,DetailHeader:Be,Loader:Y.Loader,TariffLimit:me},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{isLoading:false}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,FileViewerContext:()=>j.FileViewerContext,files(){return this.$store.getters["sidebar/files/get"](this.chatId,j.SidebarFileGroups.fileUnsorted)},formattedCollection(){return this.collectionFormatter.format(this.files)},isEmptyState(){return this.formattedCollection.length===0},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},hasHistoryLimit(){return this.$store.getters["sidebar/files/isHistoryLimitExceeded"](this.chatId)}},created(){this.service=new bt({dialogId:this.dialogId});this.collectionFormatter=new Pe;this.contextMenu=new qe},beforeUnmount(){this.collectionFormatter.destroy();this.contextMenu.destroy()},methods:{needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.$store.getters["sidebar/files/hasNextPage"](this.chatId,j.SidebarFileGroups.fileUnsorted);return i&&s},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;await this.service.loadNextPage();this.isLoading=false},onContextMenuClick(t,e){const i={...t,dialogId:this.dialogId};this.contextMenu.openMenu(i,e)},onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.fileUnsorted})}},template:`\n\t\t<div class="bx-im-sidebar-file-unsorted-detail__scope">\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="$Bitrix.Loc.getMessage('IM_SIDEBAR_FILEUNSORTED_DETAIL_TITLE')"\n\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t@back="onBackClick"\n\t\t\t/>\n\t\t\t<div class="bx-im-sidebar-file-unsorted-detail__container bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t\t<div v-for="dateGroup in formattedCollection" class="bx-im-sidebar-file-unsorted-detail__date-group_container">\n\t\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle" />\n\t\t\t\t\t<FileDetailItem\n\t\t\t\t\t\tv-for="file in dateGroup.items"\n\t\t\t\t\t\t:fileItem="file"\n\t\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t\t:viewerContext="FileViewerContext.sidebarTabFileUnsorted"\n\t\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<TariffLimit\n\t\t\t\t\tv-if="hasHistoryLimit"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t:panel="SidebarDetailBlock.fileUnsorted"\n\t\t\t\t\tclass="bx-im-sidebar-file-unsorted-detail__tariff-limit-container"\n\t\t\t\t/>\n\t\t\t\t<DetailEmptyState\n\t\t\t\t\tv-if="!isLoading && isEmptyState"\n\t\t\t\t\t:title="$Bitrix.Loc.getMessage('IM_SIDEBAR_FILES_EMPTY')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.document"\n\t\t\t\t/>\n\t\t\t\t<Loader v-if="isLoading" class="bx-im-sidebar-detail__loader-container" />\n\t\t\t</div>\n\t\t</div>\n\t`};const ni={name:"LinkItem",components:{MessageAvatar:z.MessageAvatar,ChatTitle:G.ChatTitle},props:{link:{type:Object,required:true},contextDialogId:{type:String,required:true},searchQuery:{type:String,default:""}},emits:["contextMenuClick"],data(){return{showContextButton:false}},computed:{AvatarSize:()=>z.AvatarSize,linkItem(){return this.link},source(){return this.linkItem.source},shortDescription(){let t="";try{t=new URL(this.source).hostname}catch(e){t=this.source;console.error(e)}return t},description(){const{name:t,description:e}=this.linkItem.richData;const i=e||t||this.source;if(this.searchQuery.length===0){return Q.Utils.text.convertHtmlEntities(i)}return N.highlightText($.Text.encode(i),this.searchQuery)},authorDialogId(){return this.linkItem.authorId.toString()},hasPreview(){var t;return Boolean((t=this.linkItem.richData)==null?void 0:t.previewUrl)},previewStyles(){var t;return{backgroundImage:`url('${(t=this.linkItem.richData)==null?void 0:t.previewUrl}')`,backgroundSize:"cover",backgroundRepeat:"no-repeat"}},iconTypeClass(){var t;switch((t=this.linkItem.richData)==null?void 0:t.type){case"TASKS":return"--task";case"LANDING":return"--landing";case"POST":return"--post";case"CALENDAR":return"--calendar";default:return"--common"}}},methods:{onContextMenuClick(t){this.$emit("contextMenuClick",{id:this.linkItem.id,authorId:this.linkItem.authorId,messageId:this.linkItem.messageId,source:this.source,target:t.currentTarget})}},template:`\n\t\t<div \n\t\t\tclass="bx-im-link-item__container bx-im-link-item__scope"\n\t\t\t@mouseover="showContextButton = true"\n\t\t\t@mouseleave="showContextButton = false"\n\t\t>\n\t\t\t<template v-if="hasPreview">\n\t\t\t\t<div class="bx-im-link-item__icon-container" :style="previewStyles"></div>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<div class="bx-im-link-item__icon-container" :class="iconTypeClass">\n\t\t\t\t\t<div class="bx-im-link-item__icon" :class="iconTypeClass" ></div>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t\t<div class="bx-im-link-item__content">\n\t\t\t\t<div class="bx-im-link-item__short-description-text">{{ shortDescription }}</div>\n\t\t\t\t<a :href="source" :title="source" target="_blank" class="bx-im-link-item__description-text" v-html="description"></a>\n\t\t\t\t<div class="bx-im-link-item__author-container">\n\t\t\t\t\t<MessageAvatar \n\t\t\t\t\t\t:messageId="linkItem.messageId" \n\t\t\t\t\t\t:authorId="linkItem.authorId"\n\t\t\t\t\t\t:size="AvatarSize.XS"\n\t\t\t\t\t\tclass="bx-im-link-item__author-avatar" \n\t\t\t\t\t/>\n\t\t\t\t\t<ChatTitle :dialogId="authorDialogId" :showItsYou="false" class="bx-im-link-item__author-text" />\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-if="showContextButton" class="bx-im-link-item__context-menu">\n\t\t\t\t<button class="bx-im-messenger__context-menu-icon" @click="onContextMenuClick"></button>\n\t\t\t</div>\n\t\t</div>\n\t`};const oi=50;var li=babelHelpers.classPrivateFieldLooseKey("query");var di=babelHelpers.classPrivateFieldLooseKey("processSearchResponse");var ci=babelHelpers.classPrivateFieldLooseKey("updateModels");class hi{constructor({dialogId:t}){Object.defineProperty(this,ci,{value:gi});Object.defineProperty(this,di,{value:ui});this.hasMoreItemsToLoad=true;Object.defineProperty(this,li,{writable:true,value:""});this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}searchOnServer(t){if(babelHelpers.classPrivateFieldLooseBase(this,li)[li]!==t){babelHelpers.classPrivateFieldLooseBase(this,li)[li]=t;this.hasMoreItemsToLoad=true}return this.request()}resetSearchState(){babelHelpers.classPrivateFieldLooseBase(this,li)[li]="";this.hasMoreItemsToLoad=true;void this.store.dispatch("sidebar/links/clearSearch",{})}async request(){const t=this.getQueryParams();let e={};try{const i=await this.restClient.callMethod(j.RestMethod.imChatUrlGet,t);e=i.data()}catch(t){console.error("SidebarSearch: Im.imChatUrlGet: page request error",t)}return babelHelpers.classPrivateFieldLooseBase(this,di)[di](e)}getQueryParams(){const t={CHAT_ID:this.chatId,LIMIT:oi,SEARCH_URL:babelHelpers.classPrivateFieldLooseBase(this,li)[li]};const e=this.getLinksCountFromModel();if($.Type.isNumber(e)&&e>0){t.OFFSET=e}return t}getLinksCountFromModel(){return this.store.getters["sidebar/links/getSearchResultCollectionSize"](this.chatId)}}function ui(t){return babelHelpers.classPrivateFieldLooseBase(this,ci)[ci](t).then((()=>t.list.map((t=>t.messageId))))}function gi(t){const{list:e,users:i,tariffRestrictions:s={}}=t;const a=Boolean(s.isHistoryLimitExceeded);const r=this.userManager.setUsersToModel(i);const n=this.store.dispatch("sidebar/links/setSearch",{chatId:this.chatId,links:e,hasNextPage:e.length===oi,isHistoryLimitExceeded:a});return Promise.all([n,r])}class mi{constructor(){this.store=X.Core.getStore();this.restClient=X.Core.getRestClient()}delete(t){this.store.dispatch("sidebar/links/delete",{chatId:t.chatId,id:t.id});const e={LINK_ID:t.id};this.restClient.callMethod(j.RestMethod.imChatUrlDelete,e).catch((t=>{console.error("Im.Sidebar: error deleting link",t)}))}}class pi extends $t{constructor(){super();this.linkManager=new mi}getMenuItems(){return[this.getOpenContextMessageItem(),this.getCopyLinkItem($.Loc.getMessage("IM_SIDEBAR_MENU_COPY_LINK")),this.getDeleteLinkItem()]}getDeleteLinkItem(){if(this.context.authorId!==this.getCurrentUserId()){return null}return{text:$.Loc.getMessage("IM_SIDEBAR_MENU_DELETE_FROM_LINKS"),onclick:function(){this.linkManager.delete(this.context);this.menuInstance.close()}.bind(this)}}}const bi=3;const vi={name:"LinkPanel",components:{DetailHeader:Be,LinkItem:ni,DateGroup:De,DetailEmptyState:Nt,StartState:Nt,DetailEmptySearchState:Ae,Loader:Y.Loader,TariffLimit:me},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{isLoading:false,isSearchHeaderOpened:false,searchQuery:"",searchResult:[],currentServerQueries:0,minTokenSize:bi}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,links(){if(this.isSearchHeaderOpened){return this.$store.getters["sidebar/links/getSearchResultCollection"](this.chatId)}return this.$store.getters["sidebar/links/get"](this.chatId)},formattedCollection(){return this.collectionFormatter.format(this.links)},isEmptyState(){return this.formattedCollection.length===0},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},preparedQuery(){return this.searchQuery.trim().toLowerCase()},isSearchQueryMinimumSize(){return this.preparedQuery.length<this.minTokenSize},hasHistoryLimit(){return this.$store.getters["sidebar/links/isHistoryLimitExceeded"](this.chatId)}},watch:{preparedQuery(t,e){if(t===e){return}this.cleanSearchResult();this.startSearch()}},created(){this.initSettings();this.collectionFormatter=new Pe;this.contextMenu=new pi;this.service=new at({dialogId:this.dialogId});this.serviceSearch=new hi({dialogId:this.dialogId});this.searchOnServerDelayed=$.Runtime.debounce(this.searchOnServer,500,this)},beforeUnmount(){this.contextMenu.destroy();this.collectionFormatter.destroy()},methods:{initSettings(){const t=$.Extension.getSettings("im.v2.component.sidebar");this.minTokenSize=t.get("minSearchTokenSize",bi)},searchOnServer(t){this.currentServerQueries++;this.serviceSearch.searchOnServer(t).then((e=>{if(t!==this.preparedQuery){this.isLoading=false;return}this.searchResult=ye(this.searchResult,e)})).catch((t=>{console.error(t)})).finally((()=>{this.currentServerQueries--;this.stopLoader();if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}}))},stopLoader(){if(this.currentServerQueries>0){return}this.isLoading=false},startSearch(){if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}else{this.isLoading=true;this.searchOnServerDelayed(this.preparedQuery)}},cleanSearchResult(){this.searchResult=[];this.serviceSearch.resetSearchState()},onChangeQuery(t){this.searchQuery=t},toggleSearchPanelOpened(){this.isSearchHeaderOpened=!this.isSearchHeaderOpened},onContextMenuClick(t){const e={id:t.id,messageId:t.messageId,dialogId:this.dialogId,chatId:this.chatId,source:t.source,authorId:t.authorId};this.contextMenu.openMenu(e,t.target)},onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.link})},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.searchQuery.length>0?"sidebar/links/hasNextPageSearch":"sidebar/links/hasNextPage";const a=this.$store.getters[s](this.chatId);return i&&a},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;if(this.isSearchQueryMinimumSize){await this.service.loadNextPage()}else{await this.serviceSearch.request()}this.isLoading=false},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-sidebar-link-detail__scope">\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="loc('IM_SIDEBAR_LINK_DETAIL_TITLE')"\n\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t:isSearchHeaderOpened="isSearchHeaderOpened"\n\t\t\t\t:delayForFocusOnStart="0"\n\t\t\t\t@changeQuery="onChangeQuery"\n\t\t\t\t@toggleSearchPanelOpened="toggleSearchPanelOpened"\n\t\t\t\twithSearch\n\t\t\t\t@back="onBackClick"\n\t\t\t/>\n\t\t\t<div class="bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t\t<div v-for="dateGroup in formattedCollection" class="bx-im-sidebar-link-detail__date-group_container">\n\t\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle" />\n\t\t\t\t\t<template v-for="link in dateGroup.items">\n\t\t\t\t\t\t<LinkItem\n\t\t\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t\t\t:searchQuery="searchQuery"\n\t\t\t\t\t\t\t:link="link" \n\t\t\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t\t<TariffLimit\n\t\t\t\t\tv-if="hasHistoryLimit"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t:panel="SidebarDetailBlock.link"\n\t\t\t\t\tclass="bx-im-sidebar-link-detail__tariff-limit-container"\n\t\t\t\t/>\n\t\t\t\t<template v-if="!isLoading">\n\t\t\t\t\t<template v-if="isSearchHeaderOpened">\n\t\t\t\t\t\t<StartState\n\t\t\t\t\t\t\tv-if="preparedQuery.length === 0"\n\t\t\t\t\t\t\t:title="loc('IM_SIDEBAR_SEARCH_MESSAGE_START_TITLE')"\n\t\t\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DetailEmptySearchState\n\t\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t\t:title="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_EXTENDED')"\n\t\t\t\t\t\t\t:subTitle="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_DESCRIPTION_EXTENDED')"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</template>\n\t\t\t\t\t<DetailEmptyState\n\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_LINKS_EMPTY')"\n\t\t\t\t\t\t:iconType="SidebarDetailBlock.link"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<Loader v-if="isLoading" class="bx-im-sidebar-detail__loader-container" />\n\t\t\t</div>\n\t\t</div>\n\t`};const Ii={name:"MarketPanel",components:{Spinner:Y.Spinner,DetailHeader:Be},props:{dialogId:{type:String,required:true},entityId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{isLoading:true}},computed:{SpinnerSize:()=>Y.SpinnerSize,SidebarDetailBlock:()=>j.SidebarDetailBlock,placement(){const t=Number.parseInt(this.entityId,10);return this.$store.getters["market/getById"](t)},title(){if(this.placement&&$.Type.isStringFilled(this.placement.title)){return this.placement.title}return this.$Bitrix.Loc.getMessage("IM_SIDEBAR_MARKET_DETAIL_TITLE")}},created(){this.marketManager=x.MarketManager.getInstance()},async mounted(){const t={dialogId:this.dialogId};const e=await this.marketManager.loadPlacement(this.entityId,t);this.isLoading=false;$.Runtime.html(this.$refs["im-messenger-sidebar-placement"],e)},methods:{onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.market})}},template:`\n\t\t<div class="bx-im-sidebar-favorite-detail__scope">\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="title"\n\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t@back="onBackClick"\n\t\t\t/>\n\t\t\t<div class="bx-im-sidebar-market-detail__container">\n\t\t\t\t<div v-if="isLoading" class="bx-im-sidebar-market-detail__loader-container">\n\t\t\t\t\t<Spinner :size="SpinnerSize.S" />\n\t\t\t\t</div>\n\t\t\t\t<div \n\t\t\t\t\tclass="bx-im-sidebar-market-detail__placement-container" \n\t\t\t\t\tref="im-messenger-sidebar-placement"\n\t\t\t\t></div>\n\t\t\t</div>\n\t\t</div>\n\t`};const Si=50;var fi=babelHelpers.classPrivateFieldLooseKey("query");var _i=babelHelpers.classPrivateFieldLooseKey("processSearchResponse");class Ci{constructor({dialogId:t}){Object.defineProperty(this,_i,{value:Mi});this.hasMoreItemsToLoad=true;Object.defineProperty(this,fi,{writable:true,value:""});this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}searchOnServer(t){if(babelHelpers.classPrivateFieldLooseBase(this,fi)[fi]!==t){babelHelpers.classPrivateFieldLooseBase(this,fi)[fi]=t;this.hasMoreItemsToLoad=true}return this.request()}resetSearchState(){babelHelpers.classPrivateFieldLooseBase(this,fi)[fi]="";this.hasMoreItemsToLoad=true;void this.store.dispatch("sidebar/meetings/clearSearch",{})}async request(){const t=this.getQueryParams();let e={};try{const i=await this.restClient.callMethod(j.RestMethod.imChatCalendarGet,t);e=i.data()}catch(t){console.error("SidebarSearch: Im.imChatCalendarGet: page request error",t)}return babelHelpers.classPrivateFieldLooseBase(this,_i)[_i](e)}getQueryParams(){const t={CHAT_ID:this.chatId,LIMIT:Si,SEARCH_TITLE:babelHelpers.classPrivateFieldLooseBase(this,fi)[fi]};const e=this.store.getters["sidebar/meetings/getSearchResultCollectionLastId"](this.chatId);if(e>0){t.LAST_ID=e}return t}updateModels(t){const{list:e,users:i,tariffRestrictions:s={}}=t;const a=Boolean(s.isHistoryLimitExceeded);const r=e.length===Si;const n=tt(e);const o=this.userManager.setUsersToModel(i);const l=this.store.dispatch("sidebar/meetings/setSearch",{chatId:this.chatId,meetings:e,hasNextPage:r,lastId:n,isHistoryLimitExceeded:a});return Promise.all([l,o])}}function Mi(t){return this.updateModels(t).then((()=>t.list.map((t=>t.messageId))))}const yi=3;const xi={name:"MeetingPanel",components:{MeetingItem:Yt,DateGroup:De,DetailEmptyState:Nt,StartState:Nt,DetailHeader:Be,DetailEmptySearchState:Ae,Loader:Y.Loader,TariffLimit:me},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{isLoading:false,isSearchHeaderOpened:false,searchQuery:"",searchResult:[],currentServerQueries:0,minTokenSize:yi}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,meetings(){if(this.isSearchHeaderOpened){return this.$store.getters["sidebar/meetings/getSearchResultCollection"](this.chatId)}return this.$store.getters["sidebar/meetings/get"](this.chatId)},formattedCollection(){return this.collectionFormatter.format(this.meetings)},isEmptyState(){return this.formattedCollection.length===0},showAddButton(){return w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.createMeeting,this.dialogId)},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},preparedQuery(){return this.searchQuery.trim().toLowerCase()},isSearchQueryMinimumSize(){return this.preparedQuery.length<this.minTokenSize},hasHistoryLimit(){return this.$store.getters["sidebar/meetings/isHistoryLimitExceeded"](this.chatId)}},watch:{preparedQuery(t,e){if(t===e){return}this.cleanSearchResult();this.startSearch()}},created(){this.initSettings();this.collectionFormatter=new Pe;this.contextMenu=new jt;this.service=new ct({dialogId:this.dialogId});this.serviceSearch=new Ci({dialogId:this.dialogId});this.searchOnServerDelayed=$.Runtime.debounce(this.searchOnServer,500,this)},beforeUnmount(){this.collectionFormatter.destroy();this.contextMenu.destroy()},methods:{initSettings(){const t=$.Extension.getSettings("im.v2.component.sidebar");this.minTokenSize=t.get("minSearchTokenSize",yi)},searchOnServer(t){this.currentServerQueries++;this.serviceSearch.searchOnServer(t).then((e=>{if(t!==this.preparedQuery){this.isLoading=false;return}this.searchResult=ye(this.searchResult,e)})).catch((t=>{console.error(t)})).finally((()=>{this.currentServerQueries--;this.stopLoader();if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}}))},stopLoader(){if(this.currentServerQueries>0){return}this.isLoading=false},startSearch(){if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}else{this.isLoading=true;this.searchOnServerDelayed(this.preparedQuery)}},cleanSearchResult(){this.serviceSearch.resetSearchState();this.searchResult=[]},onChangeQuery(t){this.searchQuery=t},toggleSearchPanelOpened(){this.isSearchHeaderOpened=!this.isSearchHeaderOpened},onContextMenuClick(t,e){const i={...t,dialogId:this.dialogId};this.contextMenu.openMenu(i,e)},onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.meeting})},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.searchQuery.length>0?"sidebar/meetings/hasNextPageSearch":"sidebar/meetings/hasNextPage";const a=this.$store.getters[s](this.chatId);return i&&a},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;if(this.isSearchQueryMinimumSize){await this.service.loadNextPage()}else{await this.serviceSearch.request()}this.isLoading=false},onAddClick(){new T.EntityCreator(this.chatId).createMeetingForChat()},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-sidebar-meeting-detail__scope">\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="loc('IM_SIDEBAR_MEETING_DETAIL_TITLE')"\n\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t:withAddButton="showAddButton"\n\t\t\t\t:isSearchHeaderOpened="isSearchHeaderOpened"\n\t\t\t\t:delayForFocusOnStart="0"\n\t\t\t\twithSearch\n\t\t\t\t@changeQuery="onChangeQuery"\n\t\t\t\t@toggleSearchPanelOpened="toggleSearchPanelOpened"\n\t\t\t\t@addClick="onAddClick"\n\t\t\t\t@back="onBackClick"\n\t\t\t/>\n\t\t\t<div class="bx-im-sidebar-meeting-detail__container bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t\t<div v-for="dateGroup in formattedCollection" class="bx-im-sidebar-meeting-detail__date-group_container">\n\t\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle" />\n\t\t\t\t\t<MeetingItem\n\t\t\t\t\t\tv-for="meeting in dateGroup.items"\n\t\t\t\t\t\t:meeting="meeting"\n\t\t\t\t\t\t:searchQuery="searchQuery"\n\t\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<TariffLimit\n\t\t\t\t\tv-if="hasHistoryLimit"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t:panel="SidebarDetailBlock.meeting"\n\t\t\t\t\tclass="bx-im-sidebar-meeting-detail__tariff-limit-container"\n\t\t\t\t/>\n\t\t\t\t<template v-if="!isLoading">\n\t\t\t\t\t<template v-if="isSearchHeaderOpened">\n\t\t\t\t\t\t<StartState\n\t\t\t\t\t\t\tv-if="preparedQuery.length === 0"\n\t\t\t\t\t\t\t:title="loc('IM_SIDEBAR_SEARCH_MESSAGE_START_TITLE')"\n\t\t\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DetailEmptySearchState\n\t\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t\t:title="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_EXTENDED')"\n\t\t\t\t\t\t\t:subTitle="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_DESCRIPTION_EXTENDED')"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</template>\n\t\t\t\t\t<DetailEmptyState\n\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_MEETINGS_EMPTY')"\n\t\t\t\t\t\t:iconType="SidebarDetailBlock.meeting"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<Loader v-if="isLoading" class="bx-im-sidebar-detail__loader-container" />\n\t\t\t</div>\n\t\t</div>\n\t`};const Ti={name:"DetailUser",components:{ChatAvatar:z.ChatAvatar,ChatTitle:G.ChatTitle},props:{dialogId:{type:String,required:true},contextDialogId:{type:String,required:true},isOwner:{type:Boolean,default:false},isManager:{type:Boolean,default:false}},data(){return{showContextButton:false}},computed:{AvatarSize:()=>z.AvatarSize,position(){if(this.isCopilot){return this.$store.getters["copilot/getProvider"]}return this.$store.getters["users/getPosition"](this.dialogId)},user(){return this.$store.getters["users/get"](this.dialogId,true)},userLink(){return Q.Utils.user.getProfileLink(this.dialogId)},needContextMenu(){const t=this.$store.getters["users/bots/getByUserId"](this.dialogId);if(!t){return true}return t.code!=="copilot"},isCopilot(){const t=Number.parseInt(this.dialogId,10);return this.$store.getters["users/bots/isCopilot"](t)},hasLink(){return!this.isCopilot}},methods:{onClickContextMenu(t){this.$emit("contextMenuClick",{userDialogId:this.dialogId,target:t.currentTarget})}},template:`\n\t\t<div\n\t\t\tclass="bx-im-sidebar-main-detail__user"\n\t\t\t@mouseover="showContextButton = true"\n\t\t\t@mouseleave="showContextButton = false"\n\t\t>\n\t\t\t<div class="bx-im-sidebar-main-detail__avatar-container">\n\t\t\t\t<ChatAvatar \n\t\t\t\t\t:size="AvatarSize.L"\n\t\t\t\t\t:avatarDialogId="dialogId"\n\t\t\t\t\t:contextDialogId="contextDialogId"\n\t\t\t\t/>\n\t\t\t\t<span v-if="isOwner" class="bx-im-sidebar-main-detail__avatar-owner-icon"></span>\n\t\t\t\t<span v-else-if="isManager" class="bx-im-sidebar-main-detail__avatar-manager-icon"></span>\n\t\t\t</div>\n\t\t\t<div class="bx-im-sidebar-main-detail__user-info-container">\n\t\t\t\t<div class="bx-im-sidebar-main-detail__user-title-container">\n\t\t\t\t\t<a v-if="hasLink" :href="userLink" target="_blank" class="bx-im-sidebar-main-detail__user-title-link">\n\t\t\t\t\t\t<ChatTitle :dialogId="dialogId" :withLeftIcon="!isCopilot" />\n\t\t\t\t\t</a>\n\t\t\t\t\t<div v-else class="bx-im-sidebar-main-detail__user-title-link">\n\t\t\t\t\t\t<ChatTitle :dialogId="dialogId" :withLeftIcon="!isCopilot" />\n\t\t\t\t\t</div>\n\t\t\t\t\t<div\n\t\t\t\t\t\tv-if="needContextMenu && showContextButton"\n\t\t\t\t\t\tclass="bx-im-sidebar-main-detail__context-menu-icon bx-im-messenger__context-menu-icon"\n\t\t\t\t\t\t@click="onClickContextMenu"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-sidebar-main-detail__position-text" :title="position">\n\t\t\t\t\t{{ position }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\t\n\t`};class Li extends B.UserMenu{constructor(){super();this.chatService=new P.ChatService;this.callManager=A.CallManager.getInstance();this.permissionManager=w.PermissionManager.getInstance()}getMenuItems(){if(this.context.user.id===X.Core.getUserId()){return[this.getProfileItem(),this.getOpenUserCalendarItem(),this.getLeaveItem()]}return[this.getMentionItem(),this.getSendItem(),this.getManagerItem(),this.getCallItem(),this.getProfileItem(),this.getOpenUserCalendarItem(),this.getKickItem()]}getManagerItem(){const t=this.context.user.id===this.context.dialog.ownerId;const e=w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.changeManagers,this.context.dialog.dialogId);const i=this.context.dialog.type===j.ChatType.collab;if(t||!e||i){return null}const s=this.context.dialog.managerList.includes(this.context.user.id);return{text:s?$.Loc.getMessage("IM_SIDEBAR_MENU_MANAGER_REMOVE"):$.Loc.getMessage("IM_SIDEBAR_MENU_MANAGER_ADD"),onclick:()=>{if(s){this.chatService.removeManager(this.context.dialog.dialogId,this.context.user.id)}else{this.chatService.addManager(this.context.dialog.dialogId,this.context.user.id)}this.menuInstance.close()}}}getCallItem(){const t=this.context.user.id.toString();const e=this.callManager.chatCanBeCalled(t);const i=this.permissionManager.canPerformActionByRole(j.ActionByRole.call,t);if(!e||!i){return null}return{text:$.Loc.getMessage("IM_LIB_MENU_CALL_2"),onclick:()=>{this.callManager.startCall(t);this.menuInstance.close()}}}getOpenUserCalendarItem(){if(this.isBot()){return null}const t=Q.Utils.user.getCalendarLink(this.context.user.id);const e=this.context.user.id===X.Core.getUserId();const i=e?"IM_LIB_MENU_OPEN_OWN_CALENDAR":"IM_LIB_MENU_OPEN_CALENDAR_V2";return{text:$.Loc.getMessage(i),onclick:()=>{BX.SidePanel.Instance.open(t);this.menuInstance.close()}}}getLeaveItem(){if(this.isCollabChat()&&!this.canLeaveCollab()){return null}const t=this.permissionManager.canPerformActionByRole(j.ActionByRole.leave,this.context.dialog.dialogId);if(!t){return null}return{text:$.Loc.getMessage("IM_LIB_MENU_LEAVE_MSGVER_1"),onclick:async()=>{this.menuInstance.close();const t=await R.showLeaveChatConfirm(this.context.dialog.dialogId);if(!t){return}if(this.isCollabChat()){this.chatService.leaveCollab(this.context.dialog.dialogId)}else{this.chatService.leaveChat(this.context.dialog.dialogId)}}}}isBot(){return this.context.user.type===j.UserType.bot}canLeaveCollab(){return this.permissionManager.canPerformActionByUserType(j.ActionByUserType.leaveCollab)}}const ki={[j.ChatType.channel]:"IM_SIDEBAR_MEMBERS_CHANNEL_DETAIL_TITLE",[j.ChatType.openChannel]:"IM_SIDEBAR_MEMBERS_CHANNEL_DETAIL_TITLE",[j.ChatType.generalChannel]:"IM_SIDEBAR_MEMBERS_CHANNEL_DETAIL_TITLE",default:"IM_SIDEBAR_MEMBERS_DETAIL_TITLE"};const Ei={name:"MembersPanel",components:{DetailUser:Ti,ChatButton:W.ChatButton,DetailHeader:Be,Loader:Y.Loader,AddToChat:E.AddToChat},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{isLoading:false,showAddToChatPopup:false,showAddToChatTarget:null}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,ButtonSize:()=>W.ButtonSize,ButtonColor:()=>W.ButtonColor,dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},userDialogIds(){const t=this.$store.getters["sidebar/members/get"](this.chatId);return t.map((t=>t.toString()))},chatLink(){const t=k.LayoutManager.getInstance().getLayout().name;const e=t===j.Layout.copilot.name;const i=e?j.GetParameter.openCopilotChat:j.GetParameter.openChat;const s=new URLSearchParams({[i]:this.dialogId});return`${X.Core.getHost()}${j.Path.online}?${s.toString()}`},hasNextPage(){return this.$store.getters["sidebar/members/hasNextPage"](this.chatId)},panelInited(){return this.$store.getters["sidebar/members/getInited"](this.chatId)},chatId(){return this.dialog.chatId},title(){var t;let e=this.dialog.userCounter;if(e>=1e3){e=`${Math.floor(e/1e3)}k`}const i=(t=ki[this.dialog.type])!=null?t:ki.default;return this.loc(i,{"#NUMBER#":e})},needAddButton(){return w.PermissionManager.getInstance().canPerformActionByRole(j.ActionByRole.extend,this.dialogId)},needCopyLinkButton(){return this.dialog.type!==j.ChatType.collab},addMembersPopupComponent(){return this.dialog.type===j.ChatType.collab?E.AddToCollab:E.AddToChat}},watch:{dialogId(t){this.service=new ut({dialogId:t});void this.loadFirstPage()}},created(){this.contextMenu=new Li;this.service=new ut({dialogId:this.dialogId});void this.loadFirstPage()},beforeUnmount(){this.contextMenu.destroy()},methods:{async loadFirstPage(){if(this.panelInited||this.isLoading){return}this.isLoading=true;this.chats=await this.service.loadFirstPage();this.isLoading=false},isOwner(t){const e=Number.parseInt(t,10);return this.dialog.ownerId===e},isManager(t){const e=Number.parseInt(t,10);return this.dialog.managerList.includes(e)},onContextMenuClick(t){const e=this.$store.getters["users/get"](t.userDialogId,true);const i={user:e,dialog:this.dialog};this.contextMenu.openMenu(i,t.target)},onCopyInviteClick(){if(BX.clipboard.copy(this.chatLink)){D.Notifier.onCopyLinkComplete()}},onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.members})},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;return i&&this.hasNextPage},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;await this.service.loadNextPage();this.isLoading=false},onAddClick(t){L.Analytics.getInstance().userAdd.onChatSidebarClick(this.dialogId);this.showAddToChatPopup=true;this.showAddToChatTarget=t.target},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-sidebar-main-detail__scope">\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="title"\n\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t:withAddButton="needAddButton"\n\t\t\t\t@addClick="onAddClick"\n\t\t\t\t@back="onBackClick" \n\t\t\t/>\n\t\t\t<div class="bx-im-sidebar-detail__container bx-im-sidebar-main-detail__container" @scroll="onScroll">\n\t\t\t\t<div v-if="needCopyLinkButton" class="bx-im-sidebar-main-detail__invitation-button-container">\n\t\t\t\t\t<ChatButton\n\t\t\t\t\t\t:text="loc('IM_SIDEBAR_COPY_INVITE_LINK')"\n\t\t\t\t\t\t:size="ButtonSize.M"\n\t\t\t\t\t\t:color="ButtonColor.PrimaryBorder"\n\t\t\t\t\t\t:isRounded="true"\n\t\t\t\t\t\t:isUppercase="false"\n\t\t\t\t\t\ticon="link"\n\t\t\t\t\t\t@click="onCopyInviteClick"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<DetailUser\n\t\t\t\t\tv-for="userDialogId in userDialogIds"\n\t\t\t\t\t:dialogId="userDialogId"\n\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t:isOwner="isOwner(userDialogId)"\n\t\t\t\t\t:isManager="isManager(userDialogId)"\n\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t/>\n\t\t\t\t<Loader v-if="isLoading" class="bx-im-sidebar-detail__loader-container" />\n\t\t\t</div>\n\t\t\t<component\n\t\t\t\tv-if="showAddToChatPopup"\n\t\t\t\t:is="addMembersPopupComponent"\n\t\t\t\t:bindElement="showAddToChatTarget || {}"\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:popupConfig="{offsetTop: 0, offsetLeft: 0}"\n\t\t\t\t@close="showAddToChatPopup = false"\n\t\t\t/>\n\t\t</div>\n\t`};class Di extends $t{constructor(){super();this.id="im-sidebar-context-menu"}getMenuItems(){return[this.getOpenContextMessageItem(),this.getDeleteFromFavoriteItem()]}getDeleteFromFavoriteItem(){return{text:$.Loc.getMessage("IM_SIDEBAR_MENU_REMOVE_FROM_SAVED_V2"),onclick:function(){const t=new F.MessageService({chatId:this.context.chatId});t.removeMessageFromFavorite(this.context.messageId);this.menuInstance.close()}.bind(this)}}}const Bi=50;var Ai=babelHelpers.classPrivateFieldLooseKey("query");var Pi=babelHelpers.classPrivateFieldLooseKey("processSearchResponse");class wi{constructor({dialogId:t}){Object.defineProperty(this,Pi,{value:Ri});this.hasMoreItemsToLoad=true;Object.defineProperty(this,Ai,{writable:true,value:""});this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}searchOnServer(t){if(babelHelpers.classPrivateFieldLooseBase(this,Ai)[Ai]!==t){babelHelpers.classPrivateFieldLooseBase(this,Ai)[Ai]=t;this.hasMoreItemsToLoad=true}return this.request()}resetSearchState(){babelHelpers.classPrivateFieldLooseBase(this,Ai)[Ai]="";this.hasMoreItemsToLoad=true;void this.store.dispatch("sidebar/favorites/clearSearch",{})}async request(){const t=this.getQueryParams();let e={};try{const i=await this.restClient.callMethod(j.RestMethod.imChatFavoriteGet,t);e=i.data()}catch(t){console.error("SidebarSearch: Im.imChatFavoriteGet: page request error",t)}return babelHelpers.classPrivateFieldLooseBase(this,Pi)[Pi](e)}getQueryParams(){const t={CHAT_ID:this.chatId,LIMIT:Bi,SEARCH_MESSAGE:babelHelpers.classPrivateFieldLooseBase(this,Ai)[Ai]};const e=this.store.getters["sidebar/favorites/getSearchResultCollectionLastId"](this.chatId);if(e>0){t.LAST_ID=e}return t}updateModels(t){const{list:e=[],users:i=[],files:s=[],tariffRestrictions:a={}}=t;const r=this.userManager.setUsersToModel(i);const n=Boolean(a.isHistoryLimitExceeded);const o=e.map((t=>t.message));const l=e.length===Bi;const d=tt(e);const c=this.store.dispatch("files/set",s);const h=this.store.dispatch("messages/store",o);const u=this.store.dispatch("sidebar/favorites/setSearch",{chatId:this.chatId,favorites:e,hasNextPage:l,lastId:d,isHistoryLimitExceeded:n});return Promise.all([c,h,u,r])}}function Ri(t){return this.updateModels(t).then((()=>t.list.map((t=>t.messageId))))}const Fi={name:"FavoriteItem",components:{MessageAvatar:z.MessageAvatar,MessageAuthorTitle:G.MessageAuthorTitle},props:{favorite:{type:Object,required:true},chatId:{type:Number,required:true},dialogId:{type:String,required:true},searchQuery:{type:String,default:""}},emits:["contextMenuClick"],data(){return{showContextButton:false}},computed:{AvatarSize:()=>z.AvatarSize,favoriteItem(){return this.favorite},favoriteMessage(){return this.$store.getters["messages/getById"](this.favoriteItem.messageId)},authorDialogId(){return this.favoriteMessage.authorId.toString()},messageText(){const t=O.Parser.purifyMessage(this.favoriteMessage);const e=$.Text.encode(t);if(this.searchQuery.length===0){return e}return N.highlightText(e,this.searchQuery)},isCopilot(){return this.$store.getters["users/bots/isCopilot"](this.favoriteMessage.authorId)}},methods:{onContextMenuClick(t){this.$emit("contextMenuClick",{id:this.favoriteItem.id,messageId:this.favorite.messageId,target:t.currentTarget})},onItemClick(){V.EventEmitter.emit(j.EventType.dialog.goToMessageContext,{messageId:this.favorite.messageId,dialogId:this.dialogId})}},template:`\n\t\t<div \n\t\t\tclass="bx-im-favorite-item__container bx-im-favorite-item__scope" \n\t\t\t@click.stop="onItemClick"\n\t\t\t@mouseover="showContextButton = true"\n\t\t\t@mouseleave="showContextButton = false"\n\t\t>\n\t\t\t<div class="bx-im-favorite-item__header-container">\n\t\t\t\t<div class="bx-im-favorite-item__author-container">\n\t\t\t\t\t<MessageAvatar\n\t\t\t\t\t\t:messageId="favoriteItem.messageId"\n\t\t\t\t\t\t:authorId="authorDialogId"\n\t\t\t\t\t\t:size="AvatarSize.XS"\n\t\t\t\t\t\tclass="bx-im-favorite-item__author-avatar"\n\t\t\t\t\t/>\n\t\t\t\t\t<MessageAuthorTitle \n\t\t\t\t\t\t:dialogId="authorDialogId"\n\t\t\t\t\t\t:messageId="favoriteItem.messageId"\n\t\t\t\t\t\t:withLeftIcon="!isCopilot"\n\t\t\t\t\t\t:showItsYou="false" \n\t\t\t\t\t\tclass="bx-im-favorite-item__author-text"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<button \n\t\t\t\t\tv-if="showContextButton"\n\t\t\t\t\tclass="bx-im-messenger__context-menu-icon"\n\t\t\t\t\t@click.stop="onContextMenuClick"\n\t\t\t\t></button>\n\t\t\t</div>\n\t\t\t<div class="bx-im-favorite-item__message-text" v-html="messageText"></div>\n\t\t</div>\n\t`};const Hi=3;const Oi={name:"FavoritePanel",components:{FavoriteItem:Fi,DateGroup:De,StartState:Nt,DetailEmptyState:Nt,DetailHeader:Be,DetailEmptySearchState:Ae,Loader:Y.Loader,TariffLimit:me},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{isLoading:false,isSearchHeaderOpened:false,searchQuery:"",searchResult:[],currentServerQueries:0,minTokenSize:Hi}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,favorites(){if(this.isSearchHeaderOpened){return this.$store.getters["sidebar/favorites/getSearchResultCollection"](this.chatId)}return this.$store.getters["sidebar/favorites/get"](this.chatId)},formattedCollection(){return this.collectionFormatter.format(this.favorites)},isEmptyState(){return this.formattedCollection.length===0},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},preparedQuery(){return this.searchQuery.trim().toLowerCase()},isSearchQueryMinimumSize(){return this.preparedQuery.length<this.minTokenSize},hasHistoryLimit(){return this.$store.getters["sidebar/favorites/isHistoryLimitExceeded"](this.chatId)}},watch:{preparedQuery(t,e){if(t===e){return}this.cleanSearchResult();this.startSearch()}},created(){this.initSettings();this.collectionFormatter=new Pe;this.contextMenu=new Di;this.service=new it({dialogId:this.dialogId});this.serviceSearch=new wi({dialogId:this.dialogId});this.searchOnServerDelayed=$.Runtime.debounce(this.searchOnServer,500,this)},beforeUnmount(){this.contextMenu.destroy();this.collectionFormatter.destroy()},methods:{initSettings(){const t=$.Extension.getSettings("im.v2.component.sidebar");this.minTokenSize=t.get("minSearchTokenSize",Hi)},searchOnServer(t){this.currentServerQueries++;this.serviceSearch.searchOnServer(t).then((()=>{if(t!==this.preparedQuery){this.isLoading=false}})).catch((t=>{console.error(t)})).finally((()=>{this.currentServerQueries--;this.stopLoader();if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}}))},stopLoader(){if(this.currentServerQueries>0){return}this.isLoading=false},startSearch(){if(this.isSearchQueryMinimumSize){this.cleanSearchResult()}else{this.isLoading=true;this.searchOnServerDelayed(this.preparedQuery)}},cleanSearchResult(){this.searchResult=[];this.serviceSearch.resetSearchState()},onChangeQuery(t){this.searchQuery=t},toggleSearchPanelOpened(){this.isSearchHeaderOpened=!this.isSearchHeaderOpened},onContextMenuClick(t){const e={id:t.id,messageId:t.messageId,dialogId:this.dialogId,chatId:this.chatId};this.contextMenu.openMenu(e,t.target)},onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.favorite})},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.searchQuery.length>0?"sidebar/favorites/hasNextPageSearch":"sidebar/favorites/hasNextPage";const a=this.$store.getters[s](this.chatId);return i&&a},async onScroll(t){this.contextMenu.destroy();if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;if(this.isSearchQueryMinimumSize){await this.service.loadNextPage()}else{await this.serviceSearch.request()}this.isLoading=false},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-sidebar-favorite-detail__scope">\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="loc('IM_SIDEBAR_FAVORITE_DETAIL_TITLE')"\n\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t:isSearchHeaderOpened="isSearchHeaderOpened"\n\t\t\t\t:delayForFocusOnStart="0"\n\t\t\t\t@changeQuery="onChangeQuery"\n\t\t\t\t@toggleSearchPanelOpened="toggleSearchPanelOpened"\n\t\t\t\twithSearch\n\t\t\t\t@back="onBackClick"\n\t\t\t/>\n\t\t\t<div class="bx-im-sidebar-favorite-detail__container bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t\t<div\n\t\t\t\t\tv-for="dateGroup in formattedCollection"\n\t\t\t\t\tclass="bx-im-sidebar-favorite-detail__date-group_container"\n\t\t\t\t>\n\t\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle" />\n\t\t\t\t\t<FavoriteItem\n\t\t\t\t\t\tv-for="favorite in dateGroup.items"\n\t\t\t\t\t\t:favorite="favorite"\n\t\t\t\t\t\t:chatId="chatId"\n\t\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t\t:searchQuery="searchQuery"\n\t\t\t\t\t\t@contextMenuClick="onContextMenuClick"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<TariffLimit\n\t\t\t\t\tv-if="hasHistoryLimit"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t:panel="SidebarDetailBlock.favorite"\n\t\t\t\t\tclass="bx-im-sidebar-favorite-detail__tariff-limit-container"\n\t\t\t\t/>\n\t\t\t\t<template v-if="!isLoading">\n\t\t\t\t\t<template v-if="isSearchHeaderOpened">\n\t\t\t\t\t\t<StartState\n\t\t\t\t\t\t\tv-if="preparedQuery.length === 0"\n\t\t\t\t\t\t\t:title="loc('IM_SIDEBAR_SEARCH_MESSAGE_START_TITLE')"\n\t\t\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<DetailEmptySearchState\n\t\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t\t:title="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_EXTENDED')"\n\t\t\t\t\t\t\t:subTitle="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_DESCRIPTION_EXTENDED')"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</template>\n\t\t\t\t\t<DetailEmptyState\n\t\t\t\t\t\tv-else-if="isEmptyState"\n\t\t\t\t\t\t:title="loc('IM_SIDEBAR_FAVORITES_EMPTY')"\n\t\t\t\t\t\t:iconType="SidebarDetailBlock.favorite"\n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<Loader v-if="isLoading" class="bx-im-sidebar-detail__loader-container" />\n\t\t\t</div>\n\t\t</div>\n\t`};const Ni=50;var Ui=babelHelpers.classPrivateFieldLooseKey("lastMessageId");var $i=babelHelpers.classPrivateFieldLooseKey("query");var Qi=babelHelpers.classPrivateFieldLooseKey("request");var Gi=babelHelpers.classPrivateFieldLooseKey("processSearchResponse");var zi=babelHelpers.classPrivateFieldLooseKey("updateModels");class qi{constructor({dialogId:t}){Object.defineProperty(this,zi,{value:Ki});Object.defineProperty(this,Gi,{value:Vi});Object.defineProperty(this,Qi,{value:Xi});this.hasMoreItemsToLoad=true;Object.defineProperty(this,Ui,{writable:true,value:0});Object.defineProperty(this,$i,{writable:true,value:""});this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.chatId=Z(t);this.userManager=new q.UserManager}searchOnServer(t){if(babelHelpers.classPrivateFieldLooseBase(this,$i)[$i]!==t){babelHelpers.classPrivateFieldLooseBase(this,$i)[$i]=t;this.hasMoreItemsToLoad=true;babelHelpers.classPrivateFieldLooseBase(this,Ui)[Ui]=0}return babelHelpers.classPrivateFieldLooseBase(this,Qi)[Qi]()}loadNextPage(){return babelHelpers.classPrivateFieldLooseBase(this,Qi)[Qi]()}loadFirstPage(){return Promise.resolve()}resetSearchState(){babelHelpers.classPrivateFieldLooseBase(this,Ui)[Ui]=0;babelHelpers.classPrivateFieldLooseBase(this,$i)[$i]="";this.hasMoreItemsToLoad=true}}function Xi(){const t={SEARCH_MESSAGE:babelHelpers.classPrivateFieldLooseBase(this,$i)[$i],CHAT_ID:this.chatId};if(babelHelpers.classPrivateFieldLooseBase(this,Ui)[Ui]>0){t.LAST_ID=babelHelpers.classPrivateFieldLooseBase(this,Ui)[Ui]}return new Promise(((e,i)=>{this.restClient.callMethod(j.RestMethod.imDialogMessagesSearch,t).then((t=>{const i=t.data();e(babelHelpers.classPrivateFieldLooseBase(this,Gi)[Gi](i))})).catch((t=>i(t)))}))}function Vi(t){babelHelpers.classPrivateFieldLooseBase(this,Ui)[Ui]=tt(t.messages);if(t.messages.length<Ni){this.hasMoreItemsToLoad=false}return babelHelpers.classPrivateFieldLooseBase(this,zi)[zi](t).then((()=>t.messages.map((t=>t.id))))}function Ki(t){const{files:e,users:i,usersShort:s,reactions:a,additionalMessages:r,messages:n,tariffRestrictions:o={}}=t;const l=Boolean(o.isHistoryLimitExceeded);const d=this.store.dispatch("sidebar/messageSearch/setHistoryLimitExceeded",{chatId:this.chatId,isHistoryLimitExceeded:l});const c=Promise.all([this.userManager.setUsersToModel(i),this.userManager.addUsersToModel(s)]);const h=this.store.dispatch("files/set",e);const u=this.store.dispatch("messages/reactions/set",a);const g=this.store.dispatch("messages/store",r);const m=this.store.dispatch("messages/store",n);return Promise.all([h,c,u,g,m,d])}const ji={name:"SearchItem",components:{ChatAvatar:z.ChatAvatar,ChatTitle:G.ChatTitle},props:{messageId:{type:[String,Number],required:true},dialogId:{type:String,required:true},query:{type:String,default:""}},computed:{AvatarSize:()=>z.AvatarSize,message(){return this.$store.getters["messages/getById"](this.messageId)},authorDialogId(){return this.message.authorId.toString()},isSystem(){return this.message.authorId===0},messageText(){const t=O.Parser.purifyMessage(this.message);return N.highlightText($.Text.encode(t),this.query)}},methods:{onItemClick(){V.EventEmitter.emit(j.EventType.dialog.goToMessageContext,{messageId:this.messageId,dialogId:this.dialogId})},onMessageBodyClick(t){if(t.target.tagName==="A"){t.stopPropagation()}}},template:`\n\t\t<div \n\t\t\tclass="bx-im-message-search-item__container bx-im-message-search-item__scope" \n\t\t\t@click.stop="onItemClick"\n\t\t>\n\t\t\t<div class="bx-im-message-search-item__header-container">\n\t\t\t\t<div class="bx-im-message-search-item__author-container">\n\t\t\t\t\t<template v-if="!isSystem">\n\t\t\t\t\t\t<ChatAvatar\n\t\t\t\t\t\t\t:size="AvatarSize.XS"\n\t\t\t\t\t\t\t:avatarDialogId="authorDialogId"\n\t\t\t\t\t\t\t:contextDialogId="dialogId"\n\t\t\t\t\t\t\tclass="bx-im-message-search-item__author-avatar"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<ChatTitle \n\t\t\t\t\t\t\t:dialogId="authorDialogId" \n\t\t\t\t\t\t\t:showItsYou="false" \n\t\t\t\t\t\t\tclass="bx-im-message-search-item__author-text" \n\t\t\t\t\t\t/>\n\t\t\t\t\t</template>\n\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t<span class="bx-im-message-search-item__system-author">\n\t\t\t\t\t\t\t{{ $Bitrix.Loc.getMessage('IM_SIDEBAR_SYSTEM_MESSAGE') }}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</template>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class="bx-im-message-search-item__message-text" v-html="messageText" @click="onMessageBodyClick"></div>\n\t\t</div>\n\t`};const Yi={name:"SearchHeader",components:{SearchInput:U.SearchInput},props:{secondLevel:{type:Boolean,default:false}},emits:["back","changeQuery"],template:`\n\t\t<div class="bx-im-sidebar-search-header__container bx-im-sidebar-search-header__scope">\n\t\t\t<div class="bx-im-sidebar-search-header__title-container">\n\t\t\t\t<button\n\t\t\t\t\t:class="{'bx-im-messenger__cross-icon': !secondLevel, 'bx-im-sidebar__back-icon': secondLevel}"\n\t\t\t\t\t@click="$emit('back')"\n\t\t\t\t></button>\n\t\t\t\t<SearchInput\n\t\t\t\t\t:placeholder="$Bitrix.Loc.getMessage('IM_SIDEBAR_SEARCH_MESSAGE_PLACEHOLDER')"\n\t\t\t\t\t:withIcon="false"\n\t\t\t\t\t:delayForFocusOnStart="300"\n\t\t\t\t\t@queryChange="$emit('changeQuery', $event)"\n\t\t\t\t\tclass="bx-im-sidebar-search-header__input"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t`};const Wi={name:"MessageSearchPanel",components:{DateGroup:De,SearchItem:ji,Loader:Y.Loader,StartState:Nt,SearchHeader:Yi,DetailEmptySearchState:Ae,TariffLimit:me},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{searchQuery:"",isLoading:false,searchResult:[],currentServerQueries:0}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,formattedCollection(){const t=this.searchResult.map((t=>this.$store.getters["messages/getById"](t))).filter((t=>Boolean(t)));return this.collectionFormatter.format(t)},isEmptyState(){return this.preparedQuery.length>0&&this.formattedCollection.length===0},preparedQuery(){return this.searchQuery.trim().toLowerCase()},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId},hasHistoryLimit(){return this.$store.getters["sidebar/messageSearch/isHistoryLimitExceeded"](this.chatId)}},watch:{preparedQuery(t,e){if(t===e){return}this.service.resetSearchState();this.searchResult=[];this.startSearch(t)}},created(){this.service=new qi({dialogId:this.dialogId});this.collectionFormatter=new Pe;this.searchOnServerDelayed=$.Runtime.debounce(this.searchOnServer,500,this)},beforeUnmount(){this.collectionFormatter.destroy()},methods:{searchOnServer(t){this.currentServerQueries++;this.service.searchOnServer(t).then((e=>{if(t!==this.preparedQuery){this.isLoading=false;return}this.searchResult=this.mergeResult(e)})).catch((t=>{console.error(t)})).finally((()=>{this.currentServerQueries--;this.stopLoader()}))},startSearch(t){if(t.length<3){return}if(t.length>=3){this.isLoading=true;this.searchOnServerDelayed(t)}if(t.length===0){this.cleanSearchResult()}},stopLoader(){if(this.currentServerQueries>0){return}this.isLoading=false},cleanSearchResult(){this.searchResult=[]},needToLoadNextPage(t){const e=t.target;return e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight},onScroll(t){if(this.isLoading||this.preparedQuery.length===0){return}if(!this.needToLoadNextPage(t)||!this.service.hasMoreItemsToLoad){return}this.isLoading=true;this.service.loadNextPage().then((t=>{this.searchResult=this.mergeResult(t);this.isLoading=false})).catch((t=>{H.Logger.warn("Message Search: loadNextPage error",t)}))},mergeResult(t){return[...this.searchResult,...t].sort(((t,e)=>e-t))},onChangeQuery(t){this.searchQuery=t},onClickBack(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.messageSearch})},loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-message-search-detail__scope">\n\t\t\t<SearchHeader :secondLevel="secondLevel" @changeQuery="onChangeQuery" @back="onClickBack" />\n\t\t\t<div class="bx-im-message-search-detail__container bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t\t<StartState \n\t\t\t\t\tv-if="!isLoading && preparedQuery.length === 0"\n\t\t\t\t\t:title="loc('IM_SIDEBAR_SEARCH_MESSAGE_START_TITLE')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t/>\n\t\t\t\t<DetailEmptySearchState\n\t\t\t\t\tv-if="!isLoading && isEmptyState"\n\t\t\t\t\t:title="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND')"\n\t\t\t\t\t:subTitle="loc('IM_SIDEBAR_MESSAGE_SEARCH_NOT_FOUND_DESCRIPTION')"\n\t\t\t\t/>\n\t\t\t\t<Loader v-if="isLoading && isEmptyState" class="bx-im-message-search-detail__loader" />\n\t\t\t\t<div v-for="dateGroup in formattedCollection" class="bx-im-message-search-detail__date-group_container">\n\t\t\t\t\t<DateGroup :dateText="dateGroup.dateGroupTitle" />\n\t\t\t\t\t<SearchItem\n\t\t\t\t\t\tv-for="item in dateGroup.items"\n\t\t\t\t\t\t:messageId="item.id"\n\t\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t\t:query="preparedQuery"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t<TariffLimit\n\t\t\t\t\tv-if="hasHistoryLimit"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t:panel="SidebarDetailBlock.messageSearch"\n\t\t\t\t\tclass="bx-im-message-search-detail__tariff-limit-container"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t`};const Ji={[j.ChatType.channel]:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_CHANNEL"),[j.ChatType.openChannel]:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_CHANNEL"),[j.ChatType.generalChannel]:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_CHANNEL"),[j.ChatType.collab]:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_COLLAB"),default:$.Loc.getMessage("IM_SIDEBAR_CHAT_TYPE_GROUP_V2")};const Zi={name:"ChatItem",components:{ChatAvatar:z.ChatAvatar,ChatTitle:G.ChatTitle},props:{dialogId:{type:String,required:true},dateMessage:{type:String,default:""}},emits:["clickItem"],computed:{AvatarSize:()=>z.AvatarSize,dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatItemText(){var t;return(t=Ji[this.dialog.type])!=null?t:Ji.default},formattedDate(){if(!this.dateMessage){return""}const t=Q.Utils.date.cast(this.dateMessage);return this.formatDate(t)}},methods:{onClick(t){this.$emit("clickItem",{dialogId:this.dialogId,nativeEvent:t})},formatDate(t){return J.DateFormatter.formatByTemplate(t,J.DateTemplate.recent)}},template:`\n\t\t<div \n\t\t\t@click="onClick"\n\t\t\tclass="bx-im-chat-with-user-item__container bx-im-chat-with-user-item__scope"\n\t\t>\n\t\t\t<div class="bx-im-chat-with-user-item__avatar-container">\n\t\t\t\t<ChatAvatar \n\t\t\t\t\t:avatarDialogId="dialogId" \n\t\t\t\t\t:contextDialogId="dialogId" \n\t\t\t\t\t:size="AvatarSize.XL" \n\t\t\t\t/>\n\t\t\t</div>\n\t\t\t<div class="bx-im-chat-with-user-item__content-container">\n\t\t\t\t<div class="bx-im-chat-with-user-item__content_header">\n\t\t\t\t\t<ChatTitle :dialogId="dialogId" />\n\t\t\t\t\t<div v-if="formattedDate.length > 0" class="bx-im-chat-with-user-item__date">\n\t\t\t\t\t\t<span>{{ formattedDate }}</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-chat-with-user-item__item-text" :title="chatItemText">\n\t\t\t\t\t{{ chatItemText }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`};const ts=50;var es=babelHelpers.classPrivateFieldLooseKey("chatsCount");var is=babelHelpers.classPrivateFieldLooseKey("getRequestParams");var ss=babelHelpers.classPrivateFieldLooseKey("requestPage");var as=babelHelpers.classPrivateFieldLooseKey("handleResponse");var rs=babelHelpers.classPrivateFieldLooseKey("updateModels");var ns=babelHelpers.classPrivateFieldLooseKey("setDialoguesPromise");class os{constructor({dialogId:t}){Object.defineProperty(this,ns,{value:us});Object.defineProperty(this,rs,{value:hs});Object.defineProperty(this,as,{value:cs});Object.defineProperty(this,ss,{value:ds});Object.defineProperty(this,is,{value:ls});this.hasMoreItemsToLoad=true;Object.defineProperty(this,es,{writable:true,value:0});this.store=X.Core.getStore();this.restClient=X.Core.getRestClient();this.dialogId=t;this.userManager=new q.UserManager}loadFirstPage(){return babelHelpers.classPrivateFieldLooseBase(this,ss)[ss]()}loadNextPage(){return babelHelpers.classPrivateFieldLooseBase(this,ss)[ss]()}}function ls(){const t=Number.parseInt(this.dialogId,10);const e={filter:{userId:t},limit:ts};if(babelHelpers.classPrivateFieldLooseBase(this,es)[es]>0){e.offset=babelHelpers.classPrivateFieldLooseBase(this,es)[es]}return e}async function ds(){const t=babelHelpers.classPrivateFieldLooseBase(this,is)[is]();const e=await this.restClient.callMethod(j.RestMethod.imV2ChatListShared,t);return babelHelpers.classPrivateFieldLooseBase(this,as)[as](e.data())}async function cs(t){const{chats:e}=t;babelHelpers.classPrivateFieldLooseBase(this,es)[es]+=e.length;if(e.length<ts){this.hasMoreItemsToLoad=false}await babelHelpers.classPrivateFieldLooseBase(this,rs)[rs](e);return e.map((t=>({dialogId:t.dialogId,dateMessage:t.dateMessage})))}function hs(t){return babelHelpers.classPrivateFieldLooseBase(this,ns)[ns](t)}function us(t){return this.store.dispatch("chats/set",t)}const gs={name:"ChatsWithUserPanel",components:{DetailHeader:Be,ChatItem:Zi,DetailEmptyState:Nt,Loader:Y.Loader},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{isLoading:false,chats:[]}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,isEmptyState(){return!this.isLoading&&this.chats.length===0},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},chatId(){return this.dialog.chatId}},watch:{dialogId(){this.chats=[];this.service=new os({dialogId:this.dialogId});void this.loadFirstPage()}},created(){this.service=new os({dialogId:this.dialogId});void this.loadFirstPage()},methods:{onClick(t){const{dialogId:e}=t;void K.Messenger.openChat(e)},async loadFirstPage(){this.isLoading=true;this.chats=await this.service.loadFirstPage();this.isLoading=false},needToLoadNextPage(t){const e=t.target;return e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight},async onScroll(t){if(this.isLoading){return}if(!this.needToLoadNextPage(t)||!this.service.hasMoreItemsToLoad){return}this.isLoading=true;const e=await this.service.loadNextPage();this.chats=[...this.chats,...e];this.isLoading=false},onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.chatsWithUser})},loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-sidebar-chats-with-user-detail__scope">\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="loc('IM_SIDEBAR_SHARED_CHAT_DETAIL_TITLE')"\n\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t@back="onBackClick"\n\t\t\t/>\n\t\t\t<div \n\t\t\t\tclass="bx-im-sidebar-chats-with-user-detail__container" \n\t\t\t\t@scroll="onScroll"\n\t\t\t>\n\t\t\t\t<ChatItem\n\t\t\t\t\tv-for="chat in chats"\n\t\t\t\t\t:dialogId="chat.dialogId"\n\t\t\t\t\t:dateMessage="chat.dateMessage"\n\t\t\t\t\t@clickItem="onClick"\n\t\t\t\t/>\n\t\t\t\t<DetailEmptyState\n\t\t\t\t\tv-if="!isLoading && isEmptyState"\n\t\t\t\t\t:title="loc('IM_SIDEBAR_CHATS_WITH_USER_EMPTY')"\n\t\t\t\t\t:iconType="SidebarDetailBlock.messageSearch"\n\t\t\t\t/>\n\t\t\t\t<Loader v-if="isLoading" class="bx-im-sidebar-chats-with-user-detail__loader-container" />\n\t\t\t</div>\n\t\t</div>\n\t`};const ms={name:"MultidialogItem",props:{item:{type:Object,required:true}},computed:{multidialogItem(){return this.item},dialogId(){return this.multidialogItem.dialogId},chatId(){return this.multidialogItem.chatId},title(){const t=this.$store.getters["chats/get"](this.dialogId);return t.name},status(){return this.multidialogItem.status},transferredStatus(){const t=`IM_SIDEBAR_SUPPORT_TICKET_STATUS_${this.status.toUpperCase()}`;return this.loc(t)},containerClasses(){const t=`--${this.status}`;const e=this.$store.getters["application/isChatOpen"](this.dialogId);return[t,{"--selected":e}]},counter(){var t;const e=(t=this.$store.getters["counters/getChatCounterByChatId"](this.chatId))!=null?t:0;return e>99?"99+":e},formatDate(){const t=this.multidialogItem.date;return J.DateFormatter.formatByTemplate(t,J.DateTemplate.recent)}},methods:{loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div\n\t\t\tclass="bx-im-multidialog-item__container bx-im-sidebar-multidialog-preview__scope"\n\t\t \t:class="containerClasses"\n\t\t\t:title="title"\n\t\t>\n\t\t\t<span class="bx-im-multidialog-item__title">{{ title }}</span>\n\t\t\t<span class="bx-im-multidialog-item__date">\n\t\t\t\t{{ formatDate }}\n\t\t\t</span>\n\t\t\t<div class="bx-im-multidialog-item__status">\n\t\t\t\t{{ transferredStatus }}\n\t\t\t</div>\n\t\t\t<div v-show="counter" class="bx-im-multidialog-item__count bx-im-sidebar-multidialog-preview__new-message-counter">\n\t\t\t\t{{ counter }}\n\t\t\t</div>\n\t\t</div>\n\t`};const ps={name:"MultidialogPanel",components:{DetailHeader:Be,MultidialogItem:ms,ChatButton:W.ChatButton,Loader:Y.Loader},props:{dialogId:{type:String,required:true},secondLevel:{type:Boolean,default:false}},data(){return{isLoading:false,isCreating:false}},computed:{ButtonSize:()=>W.ButtonSize,ButtonColor:()=>W.ButtonColor,SidebarDetailBlock:()=>j.SidebarDetailBlock,activeMultidialogs(){const t=this.$store.getters["sidebar/multidialog/getMultidialogsByStatus"]([j.MultidialogStatus.new,j.MultidialogStatus.open]);return t.sort(((t,e)=>e.date-t.date))},closedMultidialogs(){const t=this.$store.getters["sidebar/multidialog/getMultidialogsByStatus"]([j.MultidialogStatus.close]);return t.sort(((t,e)=>e.date-t.date))},limitReached(){const t=this.$store.getters["sidebar/multidialog/getMultidialogsByStatus"]([j.MultidialogStatus.open]);const e=this.$store.getters["sidebar/multidialog/getOpenSessionsLimit"];return e<=t.length},isInitedDetail(){return this.$store.getters["sidebar/multidialog/isInitedDetail"]},isDisabledButtonCreate(){return this.limitReached||!this.isInitedDetail},buttonCreateTitle(){if(!this.limitReached||!this.isInitedDetail){return""}return this.loc("IM_SIDEBAR_SUPPORT_TICKET_LIMIT")}},created(){this.service=new mt},mounted(){void this.loadFirstPage()},methods:{loc(t){return this.$Bitrix.Loc.getMessage(t)},onBackClick(){V.EventEmitter.emit(j.EventType.sidebar.close,{panel:j.SidebarDetailBlock.multidialog})},needToLoadNextPage(t){const e=t.target;const i=e.scrollTop+e.clientHeight>=e.scrollHeight-e.clientHeight;const s=this.$store.getters["sidebar/multidialog/hasNextPage"];return i&&s},async loadFirstPage(){if(this.isLoading){return}this.isLoading=true;await this.service.loadFirstPage();this.isLoading=false},async onScroll(t){if(this.isLoading||!this.needToLoadNextPage(t)){return}this.isLoading=true;await this.service.loadNextPage();this.isLoading=false},async onAddSupport(){if(this.isCreating){return}this.isCreating=true;const t=await this.service.createSupportChat();if(t){this.openChat(t)}this.isCreating=false},openChat(t){void K.Messenger.openChat(t)}},template:`\n\t\t<div class="bx-im-sidebar-multidialog-detail__scope">\n\t\t\t<DetailHeader\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:title="loc('IM_SIDEBAR_SUPPORT_TICKET_DETAIL_TITLE')"\n\t\t\t\t:secondLevel="true"\n\t\t\t\t@back="onBackClick"\n\t\t\t>\n\t\t\t\t<template #action>\n\t\t\t\t\t<div :title="buttonCreateTitle" class="bx-im-sidebar-detail-header__add-button">\n\t\t\t\t\t\t<ChatButton\n\t\t\t\t\t\t\t:text="loc('IM_SIDEBAR_SUPPORT_TICKET_ADD_BUTTON_TEXT')"\n\t\t\t\t\t\t\t:size="ButtonSize.S"\n\t\t\t\t\t\t\t:color="ButtonColor.PrimaryLight"\n\t\t\t\t\t\t\t:isLoading="isCreating"\n\t\t\t\t\t\t\t:isDisabled="isDisabledButtonCreate"\n\t\t\t\t\t\t\t:isRounded="true"\n\t\t\t\t\t\t\t:isUppercase="false"\n\t\t\t\t\t\t\ticon="plus"\n\t\t\t\t\t\t\t@click="onAddSupport"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</DetailHeader>\n\t\t\t<div class="bx-im-sidebar-multidialog-detail__container bx-im-sidebar-detail__container" @scroll="onScroll">\n\t\t\t\t<MultidialogItem\n\t\t\t\t\tv-for="multidialog in activeMultidialogs"\n\t\t\t\t\t:key="multidialog.chatId"\n\t\t\t\t\t:item="multidialog"\n\t\t\t\t\t@click="openChat(multidialog.dialogId)"\n\t\t\t\t/>\n\t\t\t\t<MultidialogItem\n\t\t\t\t\tv-for="multidialog in closedMultidialogs"\n\t\t\t\t\t:key="multidialog.chatId"\n\t\t\t\t\t:item="multidialog"\n\t\t\t\t\t@click="openChat(multidialog.dialogId)"\n\t\t\t\t/>\n\t\t\t\t<Loader v-if="isLoading" class="bx-im-sidebar-detail__loader-container" />\n\t\t\t</div>\n\t\t</div>\n\t`};const bs={name:"SidebarPanel",components:{MainPanel:Me,ChatsWithUserPanel:gs,MembersPanel:Ei,FavoritePanel:Oi,LinkPanel:vi,FilePanel:ai,TaskPanel:Re,MeetingPanel:xi,MarketPanel:Ii,MessageSearchPanel:Wi,FileUnsortedPanel:ri,MultidialogPanel:ps},props:{dialogId:{type:String,required:true},panel:{type:String,required:true},secondLevel:{type:Boolean,default:false},entityId:{type:String,default:""}},computed:{panelComponentName(){return`${$.Text.capitalize(this.panel)}Panel`}},template:`\n\t\t<div class="bx-im-sidebar-panel__container" :class="{'--second-level': secondLevel}">\n\t\t\t<KeepAlive>\n\t\t\t\t<component\n\t\t\t\t\t:is="panelComponentName"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t:entityId="entityId"\n\t\t\t\t\t:secondLevel="secondLevel"\n\t\t\t\t\tclass="bx-im-sidebar-panel__component"\n\t\t\t\t/>\n\t\t\t</KeepAlive>\n\t\t</div>\n\t`};const vs={name:"ChatSidebar",components:{SidebarPanel:bs},props:{originDialogId:{type:String,required:true},isActive:{type:Boolean,default:true}},emits:["changePanel"],data(){return{needTopLevelTransition:true,needSecondLevelTransition:true,topLevelPanelType:"",topLevelPanelDialogId:"",topLevelPanelStandalone:false,secondLevelPanelType:"",secondLevelPanelDialogId:"",secondLevelPanelEntityId:"",secondLevelPanelStandalone:false}},computed:{SidebarDetailBlock:()=>j.SidebarDetailBlock,topLevelTransitionName(){return this.needTopLevelTransition?"top-level-panel":""},secondLevelTransitionName(){return this.needSecondLevelTransition?"second-level-panel":""},canShowTopPanel(){const t=this.topLevelPanelType===j.SidebarDetailBlock.members;const e=!this.originDialogId.startsWith("chat");if(t&&e){return false}const i=this.topLevelPanelType===j.SidebarDetailBlock.messageSearch;return!i},sidebarOpened(){return this.topLevelPanelType||this.secondLevelPanelType}},watch:{originDialogId(t,e){const i=Boolean(t&&e);if(i){this.needTopLevelTransition=false}if(!this.topLevelPanelStandalone){this.updateTopPanelOriginDialogId(t)}const s=this.secondLevelPanelType.length>0;if(s&&!this.secondLevelPanelStandalone){this.closeSecondLevelPanel()}if(!this.canShowTopPanel){this.closeTopPanel()}},topLevelPanelType(t,e){this.needTopLevelTransition=e.length===0||t.length===0;const i=t===j.SidebarDetailBlock.main;this.saveSidebarOpenedState(i)},secondLevelPanelType(t,e){this.needSecondLevelTransition=!(t&&e)}},created(){H.Logger.warn("ChatSidebar: created");this.restoreOpenState()},mounted(){V.EventEmitter.subscribe(j.EventType.sidebar.open,this.onSidebarOpen);V.EventEmitter.subscribe(j.EventType.sidebar.close,this.onSidebarClose)},beforeUnmount(){V.EventEmitter.unsubscribe(j.EventType.sidebar.open,this.onSidebarOpen);V.EventEmitter.unsubscribe(j.EventType.sidebar.close,this.onSidebarClose)},methods:{onSidebarOpen(t){if(!this.isActive){return}const{panel:e="",standalone:i=false,dialogId:s,entityId:a=""}=t.getData();const r=!i&&e&&this.secondLevelPanelType===e;if(r){this.closeSecondLevelPanel();return}const n=this.topLevelPanelType&&this.topLevelPanelType!==e;if(n){this.openSecondLevelPanel(e,s,i,a)}else{this.openTopPanel(e,s,i)}},onSidebarClose(t){if(!this.isActive){return}this.needTopLevelTransition=true;const{panel:e=""}=t.getData();const i=e&&this.secondLevelPanelType===e;if(i){this.closeSecondLevelPanel()}else{this.closeSecondLevelPanel();this.closeTopPanel()}},restoreOpenState(){const t=e.LocalStorageManager.getInstance().get(j.LocalStorageKey.sidebarOpened);if(!t){return}this.openTopPanel(j.SidebarDetailBlock.main,this.originDialogId,false)},saveSidebarOpenedState(t){const i=200;clearTimeout(this.saveSidebarStateTimeout);this.saveSidebarStateTimeout=setTimeout((()=>{e.LocalStorageManager.getInstance().set(j.LocalStorageKey.sidebarOpened,t)}),i)},openTopPanel(t,e,i=false){this.topLevelPanelType=t;this.topLevelPanelDialogId=e;this.topLevelPanelStandalone=i;this.$emit("changePanel",{panel:this.topLevelPanelType})},updateTopPanelOriginDialogId(t){this.topLevelPanelDialogId=t},openSecondLevelPanel(t,e,i=false,s=""){this.secondLevelPanelType=t;this.secondLevelPanelDialogId=e;this.secondLevelPanelStandalone=i;this.secondLevelPanelEntityId=s;this.$emit("changePanel",{panel:this.secondLevelPanelType})},closeTopPanel(){this.topLevelPanelType="";this.topLevelPanelDialogId="";this.topLevelPanelStandalone=false;this.$emit("changePanel",{panel:""})},closeSecondLevelPanel(){this.secondLevelPanelType="";this.secondLevelPanelDialogId="";this.secondLevelPanelStandalone=false;this.$emit("changePanel",{panel:this.topLevelPanelType})}},template:`\n\t\t<div class="bx-im-sidebar__container" :class="{'--opened': sidebarOpened}">\n\t\t\t<Transition :name="topLevelTransitionName">\n\t\t\t\t<SidebarPanel\n\t\t\t\t\tv-if="topLevelPanelType"\n\t\t\t\t\t:dialogId="topLevelPanelDialogId"\n\t\t\t\t\t:panel="topLevelPanelType"\n\t\t\t\t/>\n\t\t\t</Transition>\n\t\t\t<Transition :name="secondLevelTransitionName">\n\t\t\t\t<SidebarPanel\n\t\t\t\t\tv-if="secondLevelPanelType"\n\t\t\t\t\t:dialogId="secondLevelPanelDialogId" \n\t\t\t\t\t:panel="secondLevelPanelType"\n\t\t\t\t\t:entityId="secondLevelPanelEntityId"\n\t\t\t\t\t:secondLevel="true"\n\t\t\t\t/>\n\t\t\t</Transition>\n\t\t</div>\n\t`};t.ChatSidebar=vs})(this.BX.Messenger.v2.Component=this.BX.Messenger.v2.Component||{},BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Vue3.Directives,BX.UI,BX.Main,BX.Messenger.v2.Lib,BX.Messenger.v2.Component.Elements,BX.Messenger.v2.Component.Elements,BX.Messenger.v2.Lib,BX.Vue3.Directives,BX.Messenger.v2.Component.Elements,BX.Messenger.v2.Lib,BX.UI,BX.UI.Manual,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.UI.Viewer,BX.Messenger.v2.Service,BX.Messenger.v2.Model,BX.Messenger.v2.Component.Elements,BX,BX,BX,BX.Vue3.Vuex,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Component.EntitySelector,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Service,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Service,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Component.Elements,BX,BX.Messenger.v2.Lib,BX.Messenger.v2.Component.Elements,BX.Messenger.v2.Component.Elements,BX.Messenger.v2.Lib,BX.Messenger.v2.Application,BX.Event,BX.Messenger.v2.Lib,BX.Messenger.v2.Const,BX.Messenger.v2.Component.Elements,BX.Messenger.v2.Component.Elements,BX.Messenger.v2.Lib);
//# sourceMappingURL=sidebar.bundle.map.js

Youez - 2016 - github.com/yon3zu
LinuXploit