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.js.map
{"version":3,"file":"sidebar.bundle.js","sources":["../src/classes/panels/helpers/get-chat-id.js","../src/classes/panels/helpers/get-last-element-id.js","../src/classes/panels/favorite.js","../src/classes/panels/link.js","../src/classes/panels/file.js","../src/classes/panels/task.js","../src/classes/panels/meeting.js","../src/classes/panels/members.js","../src/classes/panels/multidialog.js","../src/classes/panels/file-unsorted.js","../src/classes/panels/main.js","../src/classes/context-menu/main/main-menu.js","../src/components/panels/main/components/header.js","../src/components/elements/chat-links/chat-links.js","../src/components/elements/chat-favourites/chat-favourites.js","../src/components/elements/chat-description/chat-description.js","../src/components/elements/chat-shared/chat-shared.js","../src/components/panels/main/blocks/info.js","../src/components/panels/file/components/file-preview-item.js","../src/components/elements/detail-empty-state/detail-empty-state.js","../src/components/panels/main/blocks/file-list.js","../src/classes/context-menu/sidebar-base-menu.js","../src/classes/context-menu/task/task-manager.js","../src/classes/context-menu/task/task-menu.js","../src/components/panels/task/task-item.js","../src/components/panels/main/blocks/task-list.js","../src/components/elements/market-item/market-item.js","../src/components/panels/main/blocks/market-app-list.js","../src/classes/context-menu/meeting/meeting-manager.js","../src/classes/context-menu/meeting/meeting-menu.js","../src/components/panels/meeting/meeting-item.js","../src/components/panels/main/blocks/meeting-list.js","../src/components/panels/main/blocks/copilot-info.js","../src/components/elements/mute-chat/mute-chat.js","../src/components/elements/auto-delete/auto-delete.js","../src/components/elements/chat-members-avatars/chat-members-avatars.js","../src/components/panels/main/blocks/chat.js","../src/components/panels/main/blocks/post.js","../src/components/panels/main/blocks/user.js","../src/components/elements/copilot-role/classes/copilot-serivce.js","../src/components/elements/copilot-role/components/change-role-promo.js","../src/components/elements/copilot-role/copilot-role.js","../src/components/panels/main/blocks/copilot.js","../src/components/panels/main/blocks/support.js","../src/components/panels/main/blocks/multidialog.js","../src/components/elements/tariff-limit/tariff-limit.js","../src/components/panels/main/blocks/tariff-limit.js","../src/components/panels/main/blocks/collab-helpdesk.js","../src/components/panels/main/blocks/notes.js","../src/components/panels/main/blocks/task.js","../src/components/panels/main/config/component-map.js","../src/components/elements/skeleton/skeleton.js","../src/components/panels/main/main-panel.js","../src/classes/panels/helpers/concat-and-sort-search-result.js","../src/classes/panels/search/task-search.js","../src/components/elements/date-group/date-group.js","../src/components/elements/detail-header/detail-header.js","../src/components/elements/detail-empty-search-state/detail-empty-search-state.js","../src/classes/sidebar-collection-formatter.js","../src/components/panels/task/task-panel.js","../src/components/panels/file/components/detail-tabs.js","../src/classes/panels/search/file-search.js","../src/components/panels/file/components/media-detail-item.js","../src/classes/context-menu/file/file-manager.js","../src/classes/context-menu/file/file-menu.js","../src/components/panels/file/components/media-tab.js","../src/components/panels/file/components/audio-detail-item.js","../src/components/panels/file/components/audio-tab.js","../src/components/panels/file/components/brief-item.js","../src/components/panels/file/components/brief-tab.js","../src/components/panels/file/components/file-detail-item.js","../src/components/panels/file/components/file-tab.js","../src/components/panels/file/file-panel.js","../src/components/panels/file-unsorted/file-unsorted-panel.js","../src/components/panels/info/link-item.js","../src/classes/panels/search/link-search.js","../src/classes/context-menu/link/link-manager.js","../src/classes/context-menu/link/link-menu.js","../src/components/panels/info/link-panel.js","../src/components/panels/market/detail.js","../src/classes/panels/search/meeting-search.js","../src/components/panels/meeting/meeting-panel.js","../src/components/panels/members/detail-user.js","../src/classes/context-menu/main/members-menu.js","../src/components/panels/members/members-panel.js","../src/classes/context-menu/favorite/favorite-menu.js","../src/classes/panels/search/favorite-search.js","../src/components/panels/info/favorite-item.js","../src/components/panels/info/favorite-panel.js","../src/classes/panels/search/message-search.js","../src/components/panels/message-search/search-item.js","../src/components/panels/message-search/search-header.js","../src/components/panels/message-search/message-search-panel.js","../src/components/panels/chats-with-user/chat-item.js","../src/classes/panels/chats-with-user.js","../src/components/panels/chats-with-user/chats-with-user-panel.js","../src/components/panels/multidialog/multidialog-item.js","../src/components/panels/multidialog/multidialog-panel.js","../src/components/sidebar-panel.js","../src/sidebar.js"],"sourcesContent":["import { Core } from 'im.v2.application.core';\n\nexport function getChatId(dialogId: string): number\n{\n\tconst dialog = Core.getStore().getters['chats/get'](dialogId, true);\n\n\treturn dialog.chatId;\n}\n","import { Type } from 'main.core';\n\nexport function getLastElementId(collection: {id: number}[], sort: 'ASC' | 'DESC' = 'ASC'): ?number\n{\n\tif (collection.length === 0)\n\t{\n\t\treturn null;\n\t}\n\n\tcollection.sort((a, b) => {\n\t\tif (sort === 'ASC')\n\t\t{\n\t\t\treturn a.id - b.id;\n\t\t}\n\n\t\treturn b.id - a.id;\n\t});\n\n\tconst [lastCollectionItem] = collection;\n\n\tif (Type.isNumber(lastCollectionItem.id))\n\t{\n\t\treturn lastCollectionItem.id;\n\t}\n\n\treturn null;\n}\n","import { Core } from 'im.v2.application.core';\nimport { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\n\nimport { getChatId } from './helpers/get-chat-id';\nimport { getLastElementId } from './helpers/get-last-element-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { JsonObject } from 'main.core';\nimport type { RestClient } from 'rest.client';\n\nconst REQUEST_ITEMS_LIMIT = 50;\nexport class Favorite\n{\n\tstore: Store;\n\tdialogId: string;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tgetInitialQuery(): {[$Values<typeof RestMethod>]: JsonObject}\n\t{\n\t\treturn {\n\t\t\t[RestMethod.imChatFavoriteCounterGet]: { chat_id: this.chatId },\n\t\t\t[RestMethod.imChatFavoriteGet]: { chat_id: this.chatId, limit: REQUEST_ITEMS_LIMIT },\n\t\t};\n\t}\n\n\tgetResponseHandler(): Function\n\t{\n\t\treturn (response) => {\n\t\t\tif (!response[RestMethod.imChatFavoriteCounterGet])\n\t\t\t{\n\t\t\t\treturn Promise.reject(new Error('SidebarInfo service error: no response'));\n\t\t\t}\n\n\t\t\tconst favoriteCounterGetResponse = response[RestMethod.imChatFavoriteCounterGet];\n\t\t\tconst setCounterResult = this.store.dispatch('sidebar/favorites/setCounter', {\n\t\t\t\tchatId: this.chatId,\n\t\t\t\tcounter: favoriteCounterGetResponse.counter,\n\t\t\t});\n\n\t\t\tconst setFavoriteResult = this.handleResponse(response[RestMethod.imChatFavoriteGet]);\n\n\t\t\treturn Promise.all([setCounterResult, setFavoriteResult]);\n\t\t};\n\t}\n\n\tloadNextPage(): Promise\n\t{\n\t\tconst queryParams = this.getQueryParams();\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tgetQueryParams(): Object\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t};\n\n\t\tconst lastId = this.store.getters['sidebar/favorites/getLastId'](this.chatId);\n\t\tif (lastId > 0)\n\t\t{\n\t\t\tqueryParams.LAST_ID = lastId;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\trequestPage(queryParams): Promise\n\t{\n\t\treturn this.restClient.callMethod(RestMethod.imChatFavoriteGet, queryParams).then((response) => {\n\t\t\treturn this.handleResponse(response.data());\n\t\t}).catch((error) => {\n\t\t\tconsole.error('SidebarInfo: Im.imChatFavoriteGet: page request error', error);\n\t\t});\n\t}\n\n\thandleResponse(response): Promise\n\t{\n\t\treturn this.updateModels(response);\n\t}\n\n\tupdateModels(resultData: {list: [], users: [], files: []}): Promise\n\t{\n\t\tconst { list = [], users = [], files = [], tariffRestrictions = {} } = resultData;\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\n\t\tconst rawMessages = list.map((favorite) => favorite.message);\n\t\tconst hasNextPage = list.length === REQUEST_ITEMS_LIMIT;\n\t\tconst lastId = getLastElementId(list);\n\n\t\tconst setFilesPromise = this.store.dispatch('files/set', files);\n\t\tconst storeMessagesPromise = this.store.dispatch('messages/store', rawMessages);\n\t\tconst setFavoritesPromise = this.store.dispatch('sidebar/favorites/set', {\n\t\t\tchatId: this.chatId,\n\t\t\tfavorites: list,\n\t\t\thasNextPage,\n\t\t\tlastId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\treturn Promise.all([\n\t\t\tsetFilesPromise, storeMessagesPromise, setFavoritesPromise, addUsersPromise,\n\t\t]);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from './helpers/get-chat-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { JsonObject } from 'main.core';\nimport type { RestClient } from 'rest.client';\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\ntype UrlGetQueryParams = {\n\tCHAT_ID: number,\n\tLIMIT: number,\n\tOFFSET?: number\n}\n\nexport class Link\n{\n\tstore: Store;\n\tdialogId: string;\n\tchatId: number;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tgetInitialQuery(): {[string]: JsonObject}\n\t{\n\t\treturn {\n\t\t\t[RestMethod.imChatUrlCounterGet]: { chat_id: this.chatId },\n\t\t\t[RestMethod.imChatUrlGet]: { chat_id: this.chatId, limit: REQUEST_ITEMS_LIMIT },\n\t\t};\n\t}\n\n\tgetResponseHandler(): Function\n\t{\n\t\treturn (response) => {\n\t\t\tif (!response[RestMethod.imChatUrlCounterGet] || !response[RestMethod.imChatUrlGet])\n\t\t\t{\n\t\t\t\treturn Promise.reject(new Error('SidebarInfo service error: no response'));\n\t\t\t}\n\n\t\t\tconst urlGetResult = this.handleUrlGetResponse(response[RestMethod.imChatUrlGet]);\n\t\t\tconst counterGetResult = this.handleCounterGetResponse(response[RestMethod.imChatUrlCounterGet]);\n\n\t\t\treturn Promise.all([urlGetResult, counterGetResult]);\n\t\t};\n\t}\n\n\tloadNextPage(): Promise\n\t{\n\t\tconst linksCount = this.getLinksCountFromModel();\n\t\tif (linksCount === 0)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst queryParams = this.getQueryParams(linksCount);\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tgetQueryParams(offset: number = 0): UrlGetQueryParams\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t};\n\n\t\tif (Type.isNumber(offset) && offset > 0)\n\t\t{\n\t\t\tqueryParams.OFFSET = offset;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\trequestPage(queryParams: UrlGetQueryParams): Promise\n\t{\n\t\treturn this.restClient.callMethod(RestMethod.imChatUrlGet, queryParams).then((response) => {\n\t\t\treturn this.handleUrlGetResponse(response.data());\n\t\t}).catch((error) => {\n\t\t\tconsole.error('SidebarInfo: Im.chatUrlList: page request error', error);\n\t\t});\n\t}\n\n\thandleUrlGetResponse(response: {list: [], users: []}): Promise\n\t{\n\t\tconst { list, users, tariffRestrictions = {} } = response;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tconst setLinksPromise = this.store.dispatch('sidebar/links/set', {\n\t\t\tchatId: this.chatId,\n\t\t\tlinks: list,\n\t\t\thasNextPage: list.length === REQUEST_ITEMS_LIMIT,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\treturn Promise.all([setLinksPromise, addUsersPromise]);\n\t}\n\n\thandleCounterGetResponse(response: {counter: number}): Promise\n\t{\n\t\tconst counter = response.counter;\n\n\t\treturn this.store.dispatch('sidebar/links/setCounter', {\n\t\t\tchatId: this.chatId,\n\t\t\tcounter,\n\t\t});\n\t}\n\n\tgetLinksCountFromModel(): number\n\t{\n\t\treturn this.store.getters['sidebar/links/getSize'](this.chatId);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { RestMethod, SidebarFileGroups } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from './helpers/get-chat-id';\nimport { getLastElementId } from './helpers/get-last-element-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { JsonObject } from 'main.core';\nimport type { RestClient } from 'rest.client';\n\ntype QueryParams = {\n\tCHAT_ID: number,\n\tGROUP: string,\n\tLIMIT: number,\n\tLAST_ID?: number,\n}\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\nexport class File\n{\n\tstore: Store;\n\tdialogId: string;\n\tchatId: number;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tgetInitialQuery(): {[$Values<typeof RestMethod>]: JsonObject}\n\t{\n\t\treturn {\n\t\t\t[RestMethod.imChatFileCollectionGet]: { chat_id: this.chatId, limit: REQUEST_ITEMS_LIMIT },\n\t\t};\n\t}\n\n\tgetResponseHandler(): Function\n\t{\n\t\treturn (response) => {\n\t\t\tif (!response[RestMethod.imChatFileCollectionGet])\n\t\t\t{\n\t\t\t\treturn Promise.reject(new Error('SidebarInfo service error: no response'));\n\t\t\t}\n\n\t\t\treturn this.updateModels(response[RestMethod.imChatFileCollectionGet]);\n\t\t};\n\t}\n\n\tupdateModels(resultData, group: string = ''): Promise\n\t{\n\t\tconst { list, users, files, tariffRestrictions = {} } = resultData;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\t\tconst historyLimitPromise = this.store.dispatch('sidebar/files/setHistoryLimitExceeded', {\n\t\t\tchatId: this.chatId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\tif (group && !Type.isArrayFilled(list))\n\t\t{\n\t\t\treturn this.store.dispatch('sidebar/files/setHasNextPage', {\n\t\t\t\tchatId: this.chatId,\n\t\t\t\tgroup,\n\t\t\t\thasNextPage: false,\n\t\t\t});\n\t\t}\n\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tconst setFilesPromise = this.store.dispatch('files/set', files);\n\n\t\tconst sortedGroups = {};\n\t\tlist.forEach((file) => {\n\t\t\tconst fileGroup = file.group ?? SidebarFileGroups.fileUnsorted;\n\t\t\tif (!sortedGroups[fileGroup])\n\t\t\t{\n\t\t\t\tsortedGroups[fileGroup] = [];\n\t\t\t}\n\t\t\tsortedGroups[fileGroup].push(file);\n\t\t});\n\n\t\tconst setSidebarFilesPromises = [];\n\t\tObject.entries(sortedGroups).forEach(([groupName, listByGroup]) => {\n\t\t\tsetSidebarFilesPromises.push(\n\t\t\t\tthis.store.dispatch('sidebar/files/set', {\n\t\t\t\t\tchatId: this.chatId,\n\t\t\t\t\tfiles: listByGroup,\n\t\t\t\t\tgroup: groupName,\n\t\t\t\t}),\n\t\t\t\tthis.store.dispatch('sidebar/files/setHasNextPage', {\n\t\t\t\t\tchatId: this.chatId,\n\t\t\t\t\tgroup: groupName,\n\t\t\t\t\thasNextPage: listByGroup.length === REQUEST_ITEMS_LIMIT,\n\t\t\t\t}),\n\t\t\t\tthis.store.dispatch('sidebar/files/setLastId', {\n\t\t\t\t\tchatId: this.chatId,\n\t\t\t\t\tgroup: groupName,\n\t\t\t\t\tlastId: getLastElementId(listByGroup),\n\t\t\t\t}),\n\t\t\t);\n\t\t});\n\n\t\treturn Promise.all([\n\t\t\tsetFilesPromise, addUsersPromise, historyLimitPromise, ...setSidebarFilesPromises,\n\t\t]);\n\t}\n\n\tloadFirstPage(group: string): Promise\n\t{\n\t\treturn this.loadFirstPageByGroup(group);\n\t}\n\n\tloadNextPage(group: string): Promise\n\t{\n\t\treturn this.loadNextPageByGroup(group);\n\t}\n\n\tloadFirstPageByGroup(group: string): Promise\n\t{\n\t\tconst filesCount = this.getFilesCountFromModel(group);\n\t\tif (filesCount > REQUEST_ITEMS_LIMIT)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst queryParams = this.getQueryParams(group);\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tloadNextPageByGroup(group: string): Promise\n\t{\n\t\tconst queryParams = this.getQueryParams(group);\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tgetQueryParams(group: string): QueryParams\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tGROUP: group,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t};\n\n\t\tconst lastId = this.store.getters['sidebar/files/getLastId'](this.chatId, group);\n\t\tif (lastId > 0)\n\t\t{\n\t\t\tqueryParams.LAST_ID = lastId;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\trequestPage(queryParams: QueryParams): Promise\n\t{\n\t\treturn this.restClient.callMethod(RestMethod.imChatFileGet, queryParams).then((response) => {\n\t\t\treturn this.updateModels(response.data(), queryParams.GROUP);\n\t\t}).catch((error) => {\n\t\t\tconsole.error('SidebarInfo: imChatFileGet: page request error', error);\n\t\t});\n\t}\n\n\tgetFilesCountFromModel(group): number\n\t{\n\t\treturn this.store.getters['sidebar/files/getSize'](this.chatId, group);\n\t}\n}\n","import { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from './helpers/get-chat-id';\nimport { getLastElementId } from './helpers/get-last-element-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { JsonObject } from 'main.core';\nimport type { RestClient } from 'rest.client';\n\nconst REQUEST_ITEMS_LIMIT = 50;\nexport class Task\n{\n\tstore: Store;\n\tdialogId: string;\n\tchatId: number;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tgetInitialQuery(): {[$Values<typeof RestMethod>]: JsonObject}\n\t{\n\t\treturn {\n\t\t\t[RestMethod.imChatTaskGet]: { chat_id: this.chatId, limit: REQUEST_ITEMS_LIMIT },\n\t\t};\n\t}\n\n\tgetResponseHandler(): Function\n\t{\n\t\treturn (response) => {\n\t\t\tif (!response[RestMethod.imChatTaskGet])\n\t\t\t{\n\t\t\t\treturn Promise.reject(new Error('SidebarInfo service error: no response'));\n\t\t\t}\n\n\t\t\treturn this.updateModels(response[RestMethod.imChatTaskGet]);\n\t\t};\n\t}\n\n\tloadFirstPage(): Promise\n\t{\n\t\tconst tasksCount = this.getTasksCountFromModel();\n\t\tif (tasksCount > REQUEST_ITEMS_LIMIT)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst queryParams = this.getQueryParams();\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tloadNextPage(): Promise\n\t{\n\t\tconst queryParams = this.getQueryParams();\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tgetQueryParams(): Object\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t};\n\n\t\tconst lastId = this.store.getters['sidebar/tasks/getLastId'](this.chatId);\n\t\tif (lastId > 0)\n\t\t{\n\t\t\tqueryParams.LAST_ID = lastId;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\trequestPage(queryParams): Promise\n\t{\n\t\treturn this.restClient.callMethod(RestMethod.imChatTaskGet, queryParams).then((response) => {\n\t\t\treturn this.updateModels(response.data());\n\t\t}).catch((error) => {\n\t\t\tconsole.error('SidebarInfo: Im.imChatFavoriteGet: page request error', error);\n\t\t});\n\t}\n\n\tupdateModels(resultData): Promise\n\t{\n\t\tconst { list, users, tariffRestrictions = {} } = resultData;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\t\tconst hasNextPage = list.length === REQUEST_ITEMS_LIMIT;\n\t\tconst lastId = getLastElementId(list);\n\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tconst setTasksPromise = this.store.dispatch('sidebar/tasks/set', {\n\t\t\tchatId: this.chatId,\n\t\t\ttasks: list,\n\t\t\thasNextPage,\n\t\t\tlastId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\treturn Promise.all([setTasksPromise, addUsersPromise]);\n\t}\n\n\tgetTasksCountFromModel(): number\n\t{\n\t\treturn this.store.getters['sidebar/tasks/getSize'](this.chatId);\n\t}\n}\n","import { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from './helpers/get-chat-id';\nimport { getLastElementId } from './helpers/get-last-element-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { JsonObject } from 'main.core';\nimport type { RestClient } from 'rest.client';\n\nconst REQUEST_ITEMS_LIMIT = 50;\nexport class Meeting\n{\n\tstore: Store;\n\tdialogId: string;\n\tchatId: number;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tgetInitialQuery(): {[$Values<typeof RestMethod>]: JsonObject}\n\t{\n\t\treturn {\n\t\t\t[RestMethod.imChatCalendarGet]: {\n\t\t\t\tchat_id: this.chatId,\n\t\t\t\tlimit: REQUEST_ITEMS_LIMIT,\n\t\t\t},\n\t\t};\n\t}\n\n\tgetResponseHandler(): Function\n\t{\n\t\treturn (response) => {\n\t\t\tif (!response[RestMethod.imChatCalendarGet])\n\t\t\t{\n\t\t\t\treturn Promise.reject(new Error('SidebarInfo service error: no response'));\n\t\t\t}\n\n\t\t\treturn this.updateModels(response[RestMethod.imChatCalendarGet]);\n\t\t};\n\t}\n\n\tloadFirstPage(): Promise\n\t{\n\t\tconst meetingsCount = this.getMeetingsCountFromState();\n\t\tif (meetingsCount > REQUEST_ITEMS_LIMIT)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst queryParams = this.getQueryParams();\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tloadNextPage(): Promise\n\t{\n\t\tconst queryParams = this.getQueryParams();\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tgetQueryParams(): Object\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t};\n\n\t\tconst lastId = this.store.getters['sidebar/meetings/getLastId'](this.chatId);\n\t\tif (lastId > 0)\n\t\t{\n\t\t\tqueryParams.LAST_ID = lastId;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\trequestPage(queryParams): Promise\n\t{\n\t\treturn this.restClient.callMethod(RestMethod.imChatCalendarGet, queryParams).then((response) => {\n\t\t\treturn this.updateModels(response.data());\n\t\t}).catch((error) => {\n\t\t\tconsole.error('SidebarInfo: Im.imChatCalendarGet: page request error', error);\n\t\t});\n\t}\n\n\tupdateModels(resultData): Promise\n\t{\n\t\tconst { list, users, tariffRestrictions = {} } = resultData;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\n\t\tconst hasNextPage = list.length === REQUEST_ITEMS_LIMIT;\n\t\tconst lastId = getLastElementId(list);\n\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tconst setMeetingsPromise = this.store.dispatch('sidebar/meetings/set', {\n\t\t\tchatId: this.chatId,\n\t\t\tmeetings: list,\n\t\t\thasNextPage,\n\t\t\tlastId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\treturn Promise.all([setMeetingsPromise, addUsersPromise]);\n\t}\n\n\tgetMeetingsCountFromState(): number\n\t{\n\t\treturn this.store.getters['sidebar/meetings/getSize'](this.chatId);\n\t}\n}\n","import { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from './helpers/get-chat-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { JsonObject } from 'main.core';\nimport type { RestClient } from 'rest.client';\nimport type { RawUser } from 'im.v2.provider.service';\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\ntype QueryParams = {\n\tdialogId: string,\n\tlimit: number,\n\tcursor?: MembersPaginationCursor,\n};\n\ntype MembersRestResult = {\n\tusers: RawUser[],\n\tnextCursor: MembersPaginationCursor | null,\n};\n\ntype MembersPaginationCursor = JsonObject;\n\nexport class MembersService\n{\n\tstore: Store;\n\tdialogId: string;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tgetInitialQuery(): {[$Values<typeof RestMethod>]: JsonObject}\n\t{\n\t\treturn {\n\t\t\t[RestMethod.imV2ChatMemberTail]: {\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\tlimit: REQUEST_ITEMS_LIMIT,\n\t\t\t},\n\t\t};\n\t}\n\n\tloadFirstPage(): Promise\n\t{\n\t\tconst membersCount = this.getMembersCountFromModel();\n\t\tif (membersCount > REQUEST_ITEMS_LIMIT)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst queryParams = this.getQueryParams();\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tloadNextPage(): Promise\n\t{\n\t\tconst queryParams = this.getQueryParams();\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tgetQueryParams(): QueryParams\n\t{\n\t\tconst queryParams = {\n\t\t\tdialogId: this.dialogId,\n\t\t\tlimit: REQUEST_ITEMS_LIMIT,\n\t\t};\n\n\t\tconst nextCursor = this.store.getters['sidebar/members/getNextCursor'](this.chatId);\n\t\tif (nextCursor)\n\t\t{\n\t\t\tqueryParams.cursor = nextCursor;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\tasync requestPage(queryParams: QueryParams): Promise\n\t{\n\t\tlet restResult: MembersRestResult = {};\n\n\t\ttry\n\t\t{\n\t\t\tconst response = await this.restClient.callMethod(RestMethod.imV2ChatMemberTail, queryParams);\n\t\t\trestResult = response.data();\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tconsole.error('SidebarMain: Im.DialogUsersList: page request error', error);\n\t\t}\n\n\t\treturn this.updateModels(restResult);\n\t}\n\n\tgetResponseHandler(): Function\n\t{\n\t\treturn (response) => {\n\t\t\treturn this.updateModels(response[RestMethod.imV2ChatMemberTail]);\n\t\t};\n\t}\n\n\tupdateModels(restResult: MembersRestResult): Promise\n\t{\n\t\tconst { users, nextCursor } = restResult;\n\n\t\tconst userIds = [];\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tusers.forEach((user) => {\n\t\t\tuserIds.push(user.id);\n\t\t});\n\n\t\tconst setMembersPromise = this.store.dispatch('sidebar/members/set', {\n\t\t\tchatId: this.chatId,\n\t\t\tusers: userIds,\n\t\t\thasNextPage: users.length === REQUEST_ITEMS_LIMIT,\n\t\t});\n\n\t\tlet cursorPromise = Promise.resolve();\n\t\tif (nextCursor)\n\t\t{\n\t\t\tcursorPromise = this.store.dispatch('sidebar/members/setNextCursor', {\n\t\t\t\tchatId: this.chatId,\n\t\t\t\tnextCursor,\n\t\t\t});\n\t\t}\n\n\t\treturn Promise.all([addUsersPromise, setMembersPromise, cursorPromise]);\n\t}\n\n\tgetMembersCountFromModel(): number\n\t{\n\t\treturn this.store.getters['sidebar/members/getSize'](this.chatId);\n\t}\n}\n","import { Type } from 'main.core';\n\nimport { RestMethod } from 'im.v2.const';\nimport { Core } from 'im.v2.application.core';\nimport { Logger } from 'im.v2.lib.logger';\nimport { runAction } from 'im.v2.lib.rest';\nimport { UserManager } from 'im.v2.lib.user';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { JsonObject } from 'main.core';\n\nconst REQUEST_ITEMS_LIMIT = 25;\n\ntype ChatsGetQueryParams = {\n\tlimit: number,\n\toffset?: number\n}\nexport class Multidialog\n{\n\tstore: Store;\n\tdialogId: string;\n\tchatId: number;\n\n\tconstructor()\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tgetInitialQuery(): {[$Values<typeof RestMethod>]: JsonObject}\n\t{\n\t\tif (this.isInitedMultidialogBlock())\n\t\t{\n\t\t\treturn {};\n\t\t}\n\n\t\treturn {\n\t\t\t[RestMethod.imBotNetworkChatCount]: {},\n\t\t};\n\t}\n\n\tgetResponseHandler(): Function\n\t{\n\t\treturn (response) => {\n\t\t\tif (this.isInitedMultidialogBlock())\n\t\t\t{\n\t\t\t\treturn Promise.resolve();\n\t\t\t}\n\n\t\t\tif (!response[RestMethod.imBotNetworkChatCount])\n\t\t\t{\n\t\t\t\treturn Promise.reject(new Error('SidebarInfo service error: no response'));\n\t\t\t}\n\n\t\t\tconst setInitedPromise = this.store.dispatch('sidebar/multidialog/setInited', true);\n\t\t\tconst updateModelsPromise = this.updateModels(response[RestMethod.imBotNetworkChatCount]);\n\n\t\t\treturn Promise.all([setInitedPromise, updateModelsPromise]);\n\t\t};\n\t}\n\n\tloadNextPage(): Promise\n\t{\n\t\tconst hasNextPage = this.store.getters['sidebar/multidialog/hasNextPage'];\n\t\tif (!hasNextPage)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst offset = this.store.getters['sidebar/multidialog/getNumberMultidialogs'];\n\t\tconst config = { data: this.getQueryParams({ offset }) };\n\n\t\treturn this.requestPage(config);\n\t}\n\n\tgetQueryParams(params: ChatsGetQueryParams): ChatsGetQueryParams\n\t{\n\t\tconst queryParams: ChatsGetQueryParams = {\n\t\t\toffset: 0,\n\t\t\tlimit: REQUEST_ITEMS_LIMIT,\n\t\t\t...params,\n\t\t};\n\n\t\tObject.keys(queryParams).forEach((key) => {\n\t\t\tconst value = queryParams[key];\n\t\t\tif (Type.isNumber(value) && value > 0)\n\t\t\t{\n\t\t\t\tqueryParams[key] = value;\n\t\t\t}\n\t\t});\n\n\t\treturn queryParams;\n\t}\n\n\trequestPage(config): Promise\n\t{\n\t\treturn runAction(RestMethod.imBotNetworkChatList, config).then((response) => {\n\t\t\treturn this.updateModels(response);\n\t\t}).catch((error) => {\n\t\t\tconsole.error('SidebarInfo: imBotNetworkChatList: page request error', error);\n\t\t});\n\t}\n\n\tcreateSupportChat(): Promise<string>\n\t{\n\t\tLogger.warn('SidebarInfo: imBotNetworkChatAdd');\n\n\t\treturn runAction(RestMethod.imBotNetworkChatAdd)\n\t\t\t.then((response) => {\n\t\t\t\tvoid this.updateModels({ chats: response });\n\t\t\t\tconst { dialogId } = response;\n\t\t\t\tLogger.warn('SidebarInfo: createSupportChat result', response);\n\n\t\t\t\treturn dialogId;\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error('SidebarInfo: createSupportChat error:', error);\n\t\t\t});\n\t}\n\n\tloadFirstPage(): Promise\n\t{\n\t\tconst isInitedDetail = this.store.getters['sidebar/multidialog/isInitedDetail'];\n\t\tif (isInitedDetail)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst numberMultidialogs = this.store.getters['sidebar/multidialog/getNumberMultidialogs'];\n\t\tconst limit = REQUEST_ITEMS_LIMIT < numberMultidialogs ? numberMultidialogs : REQUEST_ITEMS_LIMIT;\n\t\tconst config = { data: this.getQueryParams({ limit }) };\n\n\t\treturn this.requestPage(config)\n\t\t\t.then(() => {\n\t\t\t\treturn this.store.dispatch('sidebar/multidialog/setInitedDetail', true);\n\t\t\t});\n\t}\n\n\tupdateModels(resultData): Promise\n\t{\n\t\tconst { count, chatIdsWithCounters, multidialogs, chats, users, openSessionsLimit } = resultData;\n\n\t\tconst promises = [];\n\t\tif (chats)\n\t\t{\n\t\t\tconst setChatsPromise = this.store.dispatch('chats/set', chats);\n\t\t\tpromises.push(setChatsPromise);\n\t\t}\n\n\t\tif (users)\n\t\t{\n\t\t\tconst setUsersPromise = this.userManager.setUsersToModel(users);\n\t\t\tpromises.push(setUsersPromise);\n\t\t}\n\n\t\tconst setSupportTicketPromise = this.store.dispatch('sidebar/multidialog/set', {\n\t\t\tchatsCount: count,\n\t\t\tunreadChats: chatIdsWithCounters,\n\t\t\tmultidialogs,\n\t\t\topenSessionsLimit,\n\t\t});\n\t\tpromises.push(setSupportTicketPromise);\n\n\t\treturn Promise.all(promises);\n\t}\n\n\tisInitedMultidialogBlock(): boolean\n\t{\n\t\treturn this.store.getters['sidebar/multidialog/isInited'];\n\t}\n}\n","import { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\nimport { RestMethod, SidebarDetailBlock } from 'im.v2.const';\n\nimport { getLastElementId } from './helpers/get-last-element-id';\n\nimport type { JsonObject } from 'main.core';\nimport type { RestClient } from 'rest.client';\nimport type { Store } from 'ui.vue3.vuex';\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\nexport class FileUnsorted\n{\n\tstore: Store;\n\tdialogId: string;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = this.getChatId();\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tgetInitialQuery(): {[$Values<typeof RestMethod>]: JsonObject}\n\t{\n\t\treturn {\n\t\t\t[RestMethod.imDiskFolderListGet]: { chat_id: this.chatId, limit: REQUEST_ITEMS_LIMIT },\n\t\t};\n\t}\n\n\tgetResponseHandler(): Function\n\t{\n\t\treturn (response) => {\n\t\t\tif (!response[RestMethod.imDiskFolderListGet])\n\t\t\t{\n\t\t\t\treturn Promise.reject(new Error('SidebarInfo service error: no response'));\n\t\t\t}\n\n\t\t\treturn this.updateModels(response[RestMethod.imDiskFolderListGet]);\n\t\t};\n\t}\n\n\tloadFirstPage(): Promise\n\t{\n\t\tconst filesCount = this.getFilesCountFromModel(SidebarDetailBlock.fileUnsorted);\n\t\tif (filesCount > REQUEST_ITEMS_LIMIT)\n\t\t{\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tconst queryParams = this.getQueryParams();\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tloadNextPage(): Promise\n\t{\n\t\tconst queryParams = this.getQueryParams();\n\n\t\treturn this.requestPage(queryParams);\n\t}\n\n\tgetQueryParams(): Object\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t};\n\n\t\tconst lastId = this.store.getters['sidebar/files/getLastId'](this.chatId, SidebarDetailBlock.fileUnsorted);\n\t\tif (lastId > 0)\n\t\t{\n\t\t\tqueryParams.LAST_ID = lastId;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\trequestPage(queryParams): Promise\n\t{\n\t\treturn this.restClient.callMethod(RestMethod.imDiskFolderListGet, queryParams).then((response) => {\n\t\t\treturn this.handleResponse(response.data());\n\t\t}).catch((error) => {\n\t\t\tconsole.error('SidebarInfo: Im.imDiskFolderListGet: page request error', error);\n\t\t});\n\t}\n\n\thandleResponse(response): Promise\n\t{\n\t\tconst diskFolderListGetResult = response;\n\t\tif (diskFolderListGetResult.files.length < REQUEST_ITEMS_LIMIT)\n\t\t{\n\t\t\tthis.hasMoreItemsToLoad = false;\n\t\t}\n\n\t\tconst lastId = getLastElementId(diskFolderListGetResult.files);\n\t\tif (lastId)\n\t\t{\n\t\t\tthis.lastId = lastId;\n\t\t}\n\n\t\treturn this.updateModels(diskFolderListGetResult);\n\t}\n\n\tupdateModels(resultData): Promise\n\t{\n\t\tconst { users, files, tariffRestrictions = {} } = resultData;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\t\tconst historyLimitPromise = this.store.dispatch('sidebar/files/setHistoryLimitExceeded', {\n\t\t\tchatId: this.chatId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\tconst preparedFiles = files.map((file) => {\n\t\t\treturn { ...file, group: SidebarDetailBlock.fileUnsorted };\n\t\t});\n\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tconst setFilesPromise = this.store.dispatch('files/set', preparedFiles);\n\t\tconst setSidebarFilesPromise = this.store.dispatch('sidebar/files/set', {\n\t\t\tchatId: this.chatId,\n\t\t\tfiles: preparedFiles,\n\t\t\tgroup: SidebarDetailBlock.fileUnsorted,\n\t\t});\n\n\t\tconst hasNextPagePromise = this.store.dispatch('sidebar/files/setHasNextPage', {\n\t\t\tchatId: this.chatId,\n\t\t\tgroup: SidebarDetailBlock.fileUnsorted,\n\t\t\thasNextPage: preparedFiles.length === REQUEST_ITEMS_LIMIT,\n\t\t});\n\n\t\tconst setLastIdPromise = this.store.dispatch('sidebar/files/setLastId', {\n\t\t\tchatId: this.chatId,\n\t\t\tgroup: SidebarDetailBlock.fileUnsorted,\n\t\t\tlastId: getLastElementId(preparedFiles),\n\t\t});\n\n\t\treturn Promise.all([\n\t\t\tsetFilesPromise,\n\t\t\tsetSidebarFilesPromise,\n\t\t\taddUsersPromise,\n\t\t\thasNextPagePromise,\n\t\t\tsetLastIdPromise,\n\t\t\thistoryLimitPromise,\n\t\t]);\n\t}\n\n\tgetFilesCountFromModel(group): number\n\t{\n\t\treturn this.store.getters['sidebar/files/getSize'](this.chatId, group);\n\t}\n\n\tgetChatId(): number\n\t{\n\t\tconst dialog = this.store.getters['chats/get'](this.dialogId, true);\n\n\t\treturn dialog.chatId;\n\t}\n}\n","import { Text } from 'main.core';\n\nimport { Core } from 'im.v2.application.core';\nimport { callBatch } from 'im.v2.lib.rest';\nimport { SidebarDetailBlock, SidebarMainPanelBlock } from 'im.v2.const';\nimport { SidebarManager } from 'im.v2.lib.sidebar';\n\nimport { Favorite } from './favorite';\nimport { getChatId } from './helpers/get-chat-id';\nimport { Link } from './link';\nimport { File } from './file';\nimport { Task } from './task';\nimport { Meeting } from './meeting';\nimport { MembersService as Members } from './members';\nimport { Multidialog } from './multidialog';\n\nimport { FileUnsorted } from './file-unsorted';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { RestClient } from 'rest.client';\n\nconst MainPanelServiceClasses = {\n\tMembers,\n\tFavorite,\n\tLink,\n\tTask,\n\tFile,\n\tMeeting,\n\tFileUnsorted,\n\tMultidialog,\n};\n\nconst BlockToServices = Object.freeze({\n\t[SidebarMainPanelBlock.chat]: [SidebarDetailBlock.members],\n\t[SidebarMainPanelBlock.copilot]: [SidebarDetailBlock.members],\n\t[SidebarMainPanelBlock.task]: [SidebarDetailBlock.members],\n\t[SidebarMainPanelBlock.copilotInfo]: [SidebarDetailBlock.favorite],\n\t[SidebarMainPanelBlock.info]: [SidebarDetailBlock.favorite, SidebarDetailBlock.link],\n\t[SidebarMainPanelBlock.fileList]: [SidebarDetailBlock.file],\n\t[SidebarMainPanelBlock.fileUnsortedList]: [SidebarDetailBlock.fileUnsorted],\n\t[SidebarMainPanelBlock.taskList]: [SidebarDetailBlock.task],\n\t[SidebarMainPanelBlock.meetingList]: [SidebarDetailBlock.meeting],\n\t[SidebarMainPanelBlock.multidialog]: [SidebarDetailBlock.multidialog],\n});\n\ntype BlockService = {\n\tinitialQuery: Object;\n\tresponseHandler: Function;\n};\n\nexport class Main\n{\n\tblockServices: BlockService[] = [];\n\tdialogId: string;\n\tstore: Store;\n\trestClient: RestClient;\n\n\tconstructor({ dialogId })\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.buildBlocks();\n\t}\n\n\t// region public methods\n\tasync requestInitialData(): Promise\n\t{\n\t\tconst query = this.getInitialQuery();\n\t\tconst response = await callBatch(query);\n\n\t\treturn this.handleBatchRequestResult(response);\n\t}\n\t// endregion\n\n\tbuildBlocks(): BlockService[]\n\t{\n\t\tconst classNames = this.getServiceClassesForBlocks();\n\n\t\tthis.blockServices = classNames.map((ClassName: string): BlockService => {\n\t\t\tconst blockService = new MainPanelServiceClasses[ClassName]({\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\tinitialQuery: blockService.getInitialQuery(),\n\t\t\t\tresponseHandler: blockService.getResponseHandler(),\n\t\t\t};\n\t\t});\n\t}\n\n\tgetServiceClassesForBlocks(): string[]\n\t{\n\t\tconst services = [];\n\t\tconst sidebarConfig = SidebarManager.getInstance().getConfig(this.dialogId);\n\t\tconst blockList = sidebarConfig.getBlocks(this.dialogId);\n\n\t\tblockList.forEach((block: string) => {\n\t\t\tconst blockServices = BlockToServices[block];\n\t\t\tif (blockServices)\n\t\t\t{\n\t\t\t\tservices.push(...blockServices);\n\t\t\t}\n\t\t});\n\n\t\treturn services.map((service) => Text.capitalize(service));\n\t}\n\n\tgetInitialQuery(): Object\n\t{\n\t\tlet query = {};\n\t\tthis.blockServices.forEach((block) => {\n\t\t\tquery = Object.assign(query, block.initialQuery);\n\t\t});\n\n\t\treturn query;\n\t}\n\n\thandleBatchRequestResult(response): Promise\n\t{\n\t\tconst responseHandlersResult = [];\n\t\tthis.blockServices.forEach((block) => {\n\t\t\tresponseHandlersResult.push(block.responseHandler(response));\n\t\t});\n\n\t\treturn Promise.all(responseHandlersResult)\n\t\t\t.then(() => {\n\t\t\t\treturn this.setInited();\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t});\n\t}\n\n\tsetInited(): Promise\n\t{\n\t\treturn this.store.dispatch('sidebar/setInited', getChatId(this.dialogId));\n\t}\n}\n","import { Loc } from 'main.core';\n\nimport { ChatService } from 'im.v2.provider.service.chat';\nimport { Utils } from 'im.v2.lib.utils';\nimport { RecentMenu } from 'im.v2.lib.menu';\nimport { LayoutManager } from 'im.v2.lib.layout';\nimport { ActionByRole, ActionByUserType, ChatType, Layout } from 'im.v2.const';\nimport { PermissionManager } from 'im.v2.lib.permission';\nimport { Analytics } from 'im.v2.lib.analytics';\nimport { showDeleteChatConfirm } from 'im.v2.lib.confirm';\nimport { Notifier } from 'im.v2.lib.notifier';\n\nimport type { MenuItem } from 'im.v2.lib.menu';\n\nexport class MainMenu extends RecentMenu\n{\n\tpermissionManager: PermissionManager;\n\n\tstatic events = {\n\t\tonAddToChatShow: 'onAddToChatShow',\n\t};\n\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.id = 'im-sidebar-context-menu';\n\t\tthis.permissionManager = PermissionManager.getInstance();\n\t}\n\n\tgetMenuOptions(): Object\n\t{\n\t\treturn {\n\t\t\t...super.getMenuOptions(),\n\t\t\tclassName: this.getMenuClassName(),\n\t\t\tangle: false,\n\t\t};\n\t}\n\n\tgetMenuItems(): MenuItem[]\n\t{\n\t\treturn [\n\t\t\tthis.getPinMessageItem(),\n\t\t\tthis.getEditItem(),\n\t\t\tthis.getAddMembersToChatItem(),\n\t\t\tthis.getOpenProfileItem(),\n\t\t\tthis.getOpenUserCalendarItem(),\n\t\t\tthis.getChatsWithUserItem(),\n\t\t\tthis.getHideItem(),\n\t\t\tthis.getLeaveItem(),\n\t\t\tthis.getDeleteItem(),\n\t\t];\n\t}\n\n\tgetEditItem(): ?MenuItem\n\t{\n\t\tif (!this.permissionManager.canPerformActionByRole(ActionByRole.update, this.context.dialogId))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_UPDATE_CHAT'),\n\t\t\tonclick: () => {\n\t\t\t\tAnalytics.getInstance().chatEdit.onOpenForm(this.context.dialogId);\n\n\t\t\t\tvoid LayoutManager.getInstance().setLayout({\n\t\t\t\t\tname: Layout.updateChat.name,\n\t\t\t\t\tentityId: this.context.dialogId,\n\t\t\t\t});\n\t\t\t},\n\t\t};\n\t}\n\n\tgetDeleteItem(): ?MenuItem\n\t{\n\t\tif (!this.permissionManager.canPerformActionByRole(ActionByRole.delete, this.context.dialogId))\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_DELETE_CHAT'),\n\t\t\tclassName: 'menu-popup-no-icon bx-im-sidebar__context-menu_delete',\n\t\t\tonclick: async () => {\n\t\t\t\tAnalytics.getInstance().chatDelete.onClick(this.context.dialogId);\n\t\t\t\tif (await this.#isDeletionCancelled())\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tAnalytics.getInstance().chatDelete.onConfirm(this.context.dialogId);\n\n\t\t\t\tif (this.isCollabChat())\n\t\t\t\t{\n\t\t\t\t\tthis.#deleteCollab();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.#deleteChat();\n\t\t\t},\n\t\t};\n\t}\n\n\tgetOpenUserCalendarItem(): ?MenuItem\n\t{\n\t\tif (!this.isUser())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tif (this.isBot())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst profileUri = Utils.user.getCalendarLink(this.context.dialogId);\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_LIB_MENU_OPEN_CALENDAR_V2'),\n\t\t\tonclick: () => {\n\t\t\t\tBX.SidePanel.Instance.open(profileUri);\n\t\t\t\tthis.menuInstance.close();\n\t\t\t},\n\t\t};\n\t}\n\n\tgetAddMembersToChatItem(): MenuItem\n\t{\n\t\tif (this.isBot() || this.isChatWithCurrentUser())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst hasCreateChatAccess = this.permissionManager.canPerformActionByUserType(ActionByUserType.createChat);\n\t\tif (this.#isPersonalChat() && !hasCreateChatAccess)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst hasAccessByRole = this.permissionManager.canPerformActionByRole(ActionByRole.extend, this.context.dialogId);\n\t\tif (!hasAccessByRole)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst text = this.isChannel()\n\t\t\t? Loc.getMessage('IM_SIDEBAR_MENU_INVITE_SUBSCRIBERS')\n\t\t\t: Loc.getMessage('IM_SIDEBAR_MENU_INVITE_MEMBERS_V2');\n\n\t\treturn {\n\t\t\ttext,\n\t\t\tonclick: () => {\n\t\t\t\tAnalytics.getInstance().userAdd.onChatSidebarClick(this.dialogId);\n\t\t\t\tthis.emit(MainMenu.events.onAddToChatShow);\n\t\t\t\tthis.menuInstance.close();\n\t\t\t},\n\t\t};\n\t}\n\n\tasync #deleteChat(): ?MenuItem\n\t{\n\t\tawait (new ChatService()).deleteChat(this.context.dialogId);\n\t\tvoid LayoutManager.getInstance().clearCurrentLayoutEntityId();\n\t}\n\n\tasync #deleteCollab(): ?MenuItem\n\t{\n\t\tNotifier.collab.onBeforeDelete();\n\t\tawait (new ChatService()).deleteCollab(this.context.dialogId);\n\t\tvoid LayoutManager.getInstance().clearCurrentLayoutEntityId();\n\t\tvoid LayoutManager.getInstance().deleteLastOpenedElementById(this.context.dialogId);\n\t}\n\n\tasync #isDeletionCancelled(): Promise<boolean>\n\t{\n\t\tconst { dialogId } = this.context;\n\n\t\tconst confirmResult = await showDeleteChatConfirm(dialogId);\n\t\tif (!confirmResult)\n\t\t{\n\t\t\tAnalytics.getInstance().chatDelete.onCancel(dialogId);\n\n\t\t\treturn true;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t#isPersonalChat(): boolean\n\t{\n\t\tconst chat = this.getChat(this.context.dialogId);\n\n\t\treturn chat.type === ChatType.user;\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\n\nimport { EventType, ChatType, ActionByRole } from 'im.v2.const';\nimport { PermissionManager } from 'im.v2.lib.permission';\nimport { SidebarManager, SidebarConfig } from 'im.v2.lib.sidebar';\nimport { AddToChat, AddToCollab } from 'im.v2.component.entity-selector';\n\nimport { MainMenu } from '../../../../classes/context-menu/main/main-menu';\n\nimport '../css/header.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { BitrixVueComponentProps } from 'ui.vue3';\nimport type { ImModelRecentItem, ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const MainHeader = {\n\tname: 'MainHeader',\n\tcomponents: { AddToChat, AddToCollab },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tshowAddToChatPopup: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\trecentItem(): ImModelRecentItem\n\t\t{\n\t\t\treturn this.$store.getters['recent/get'](this.dialogId, true);\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tsidebarConfig(): SidebarConfig\n\t\t{\n\t\t\treturn SidebarManager.getInstance().getConfig(this.dialogId);\n\t\t},\n\t\theaderTitle(): string\n\t\t{\n\t\t\treturn this.sidebarConfig.getHeaderTitle();\n\t\t},\n\t\tshowMenuIcon(): boolean\n\t\t{\n\t\t\treturn this.canOpenMenu && this.isMenuEnabled;\n\t\t},\n\t\tcanOpenMenu(): boolean\n\t\t{\n\t\t\treturn PermissionManager.getInstance().canPerformActionByRole(ActionByRole.openSidebarMenu, this.dialogId);\n\t\t},\n\t\tisMenuEnabled(): boolean\n\t\t{\n\t\t\treturn this.sidebarConfig.isMenuEnabled();\n\t\t},\n\t\taddMembersPopupComponent(): BitrixVueComponentProps\n\t\t{\n\t\t\treturn this.dialog.type === ChatType.collab ? AddToCollab : AddToChat;\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.contextMenu = new MainMenu();\n\t\tthis.contextMenu.subscribe(MainMenu.events.onAddToChatShow, this.onAddChatShow);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.contextMenu.destroy();\n\t\tthis.contextMenu.unsubscribe(MainMenu.events.onAddToChatShow, this.onAddChatShow);\n\t},\n\tmethods:\n\t{\n\t\tonAddChatShow()\n\t\t{\n\t\t\tthis.showAddToChatPopup = true;\n\t\t},\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\t...this.recentItem,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, event.target);\n\t\t},\n\t\tonSidebarCloseClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close);\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\nimport { hint } from 'ui.vue3.directives.hint';\n\nimport { SidebarDetailBlock, EventType } from 'im.v2.const';\n\nimport './chat-links.css';\n\nimport type { ImModelChat } from 'im.v2.model';\nimport type { JsonObject } from 'main.core';\n\n// @vue/component\nexport const ChatLinks = {\n\tname: 'ChatLinks',\n\tdirectives: { hint },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\texpanded: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\turlCounter(): string\n\t\t{\n\t\t\tconst counter = this.$store.getters['sidebar/links/getCounter'](this.chatId);\n\n\t\t\treturn this.getCounterString(counter);\n\t\t},\n\t\tisLinksAvailable(): boolean\n\t\t{\n\t\t\treturn this.$store.state.sidebar.isLinksMigrated;\n\t\t},\n\t\thintDirectiveContent(): Object\n\t\t{\n\t\t\treturn {\n\t\t\t\ttext: this.$Bitrix.Loc.getMessage('IM_SIDEBAR_LINKS_NOT_AVAILABLE'),\n\t\t\t\tpopupOptions: {\n\t\t\t\t\tangle: true,\n\t\t\t\t\ttargetContainer: document.body,\n\t\t\t\t\toffsetLeft: 141,\n\t\t\t\t\toffsetTop: -10,\n\t\t\t\t\tbindOptions: {\n\t\t\t\t\t\tposition: 'top',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tgetCounterString(counter: number): string\n\t\t{\n\t\t\tconst MAX_COUNTER = 100;\n\t\t\tif (counter >= MAX_COUNTER)\n\t\t\t{\n\t\t\t\treturn '99+';\n\t\t\t}\n\n\t\t\treturn counter.toString();\n\t\t},\n\t\tonLinkClick()\n\t\t{\n\t\t\tif (!this.isLinksAvailable)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tEventEmitter.emit(EventType.sidebar.open, {\n\t\t\t\tpanel: SidebarDetailBlock.link,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\n\nimport { SidebarDetailBlock, EventType, Layout } from 'im.v2.const';\n\nimport './css/chat-favourites.css';\n\nimport type { ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const ChatFavourites = {\n\tname: 'ChatFavourites',\n\tprops:\n\t\t{\n\t\t\tdialogId: {\n\t\t\t\ttype: String,\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t},\n\tcomputed:\n\t{\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tfavoriteCounter(): string\n\t\t{\n\t\t\tconst counter = this.$store.getters['sidebar/favorites/getCounter'](this.chatId);\n\n\t\t\treturn this.getCounterString(counter);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tisCopilotLayout(): boolean\n\t\t{\n\t\t\tconst { name: currentLayoutName } = this.$store.getters['application/getLayout'];\n\n\t\t\treturn currentLayoutName === Layout.copilot.name;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tgetCounterString(counter: number): string\n\t\t{\n\t\t\tconst MAX_COUNTER = 100;\n\t\t\tif (counter >= MAX_COUNTER)\n\t\t\t{\n\t\t\t\treturn '99+';\n\t\t\t}\n\n\t\t\treturn counter.toString();\n\t\t},\n\t\tonFavouriteClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.open, {\n\t\t\t\tpanel: SidebarDetailBlock.favorite,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Loc } from 'main.core';\n\nimport { ChatType, Layout, UserType } from 'im.v2.const';\n\nimport './chat-description.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat, ImModelUser } from 'im.v2.model';\n\nconst MAX_DESCRIPTION_SYMBOLS = 25;\nconst NEW_LINE_SYMBOL = '\\n';\n\nconst DescriptionByChatType = {\n\t[ChatType.user]: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_USER'),\n\t[ChatType.channel]: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_CHANNEL'),\n\t[ChatType.openChannel]: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_CHANNEL'),\n\t[ChatType.generalChannel]: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_CHANNEL'),\n\t[ChatType.comment]: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_COMMENTS'),\n\tdefault: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_GROUP_V2'),\n};\n\n// @vue/component\nexport const ChatDescription = {\n\tname: 'ChatDescription',\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\texpanded: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tisUser(): boolean\n\t\t{\n\t\t\treturn this.dialog.type === ChatType.user;\n\t\t},\n\t\tisBot(): boolean\n\t\t{\n\t\t\tconst user: ImModelUser = this.$store.getters['users/get'](this.dialogId, true);\n\n\t\t\treturn user.type === UserType.bot;\n\t\t},\n\t\tisCollabChat(): boolean\n\t\t{\n\t\t\treturn this.dialog.type === ChatType.collab;\n\t\t},\n\t\tisLongDescription(): boolean\n\t\t{\n\t\t\tconst hasNewLine = this.dialog.description.includes(NEW_LINE_SYMBOL);\n\n\t\t\treturn this.dialog.description.length > MAX_DESCRIPTION_SYMBOLS || hasNewLine;\n\t\t},\n\t\tpreviewDescription(): string\n\t\t{\n\t\t\tif (this.dialog.description.length === 0)\n\t\t\t{\n\t\t\t\treturn this.chatTypeText;\n\t\t\t}\n\n\t\t\tif (this.isLongDescription)\n\t\t\t{\n\t\t\t\treturn `${this.dialog.description.slice(0, MAX_DESCRIPTION_SYMBOLS)}...`;\n\t\t\t}\n\n\t\t\treturn this.dialog.description;\n\t\t},\n\t\tdescriptionToShow(): string\n\t\t{\n\t\t\treturn this.expanded ? this.dialog.description : this.previewDescription;\n\t\t},\n\t\tchatTypeText(): string\n\t\t{\n\t\t\tif (this.isCopilotLayout)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['copilot/getProvider'];\n\t\t\t}\n\n\t\t\tif (this.isBot)\n\t\t\t{\n\t\t\t\treturn this.loc('IM_SIDEBAR_CHAT_TYPE_BOT');\n\t\t\t}\n\n\t\t\tif (this.isCollabChat)\n\t\t\t{\n\t\t\t\treturn this.loc('IM_SIDEBAR_CHAT_TYPE_COLLAB');\n\t\t\t}\n\n\t\t\treturn DescriptionByChatType[this.dialog.type] ?? DescriptionByChatType.default;\n\t\t},\n\t\tshowExpandButton(): boolean\n\t\t{\n\t\t\tif (this.expanded)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.isLongDescription;\n\t\t},\n\t\tisCopilotLayout(): boolean\n\t\t{\n\t\t\tconst { name: currentLayoutName } = this.$store.getters['application/getLayout'];\n\n\t\t\treturn currentLayoutName === Layout.copilot.name;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\n\nimport { SidebarDetailBlock, EventType } from 'im.v2.const';\n\nimport './chat-shared.css';\n\n// @vue/component\nexport const ChatShared = {\n\tname: 'ChatShared',\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tasync onLinkClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.open, {\n\t\t\t\tpanel: SidebarDetailBlock.chatsWithUser,\n\t\t\t\tstandalone: true,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Core } from 'im.v2.application.core';\nimport { ChatType, UserType } from 'im.v2.const';\n\nimport { ChatLinks } from '../../../elements/chat-links/chat-links';\nimport { ChatFavourites } from '../../../elements/chat-favourites/chat-favourites';\nimport { ChatDescription } from '../../../elements/chat-description/chat-description';\nimport { ChatShared } from '../../../elements/chat-shared/chat-shared';\n\nimport '../css/info.css';\n\nimport type { ImModelChat, ImModelUser } from 'im.v2.model';\n\n// @vue/component\nexport const InfoPreview = {\n\tname: 'InfoPreview',\n\tcomponents: { ChatDescription, ChatLinks, ChatFavourites, ChatShared },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tuser(): ImModelUser\n\t\t{\n\t\t\treturn this.$store.getters['users/get'](this.dialogId, true);\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tisUser(): boolean\n\t\t{\n\t\t\treturn this.dialog.type === ChatType.user;\n\t\t},\n\t\tisSelfChat(): boolean\n\t\t{\n\t\t\treturn this.isUser && this.user.id === Core.getUserId();\n\t\t},\n\t\tisUserOrBot(): boolean\n\t\t{\n\t\t\treturn this.isUser && [UserType.bot, UserType.user].includes(this.user.type);\n\t\t},\n\t\tshowSharedChats(): boolean\n\t\t{\n\t\t\treturn this.isUserOrBot && !this.isSelfChat;\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import 'ui.icons';\nimport 'ui.viewer';\nimport { lazyload } from 'ui.vue3.directives.lazyload';\n\nimport { FileViewerContext } from 'im.v2.const';\nimport { Utils } from 'im.v2.lib.utils';\n\nimport '../css/file-preview-item.css';\n\nimport type { ImModelFile, ImModelSidebarFileItem } from 'im.v2.model';\n\n// @vue/component\nexport const FilePreviewItem = {\n\tname: 'FilePreviewItem',\n\tdirectives: { lazyload },\n\tprops: {\n\t\tfileItem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tsidebarFileItem(): ImModelSidebarFileItem\n\t\t{\n\t\t\treturn this.fileItem;\n\t\t},\n\t\tfile(): ImModelFile\n\t\t{\n\t\t\treturn this.$store.getters['files/get'](this.sidebarFileItem.fileId, true);\n\t\t},\n\t\tpreviewImageStyles(): Object\n\t\t{\n\t\t\tif (!this.hasPreview)\n\t\t\t{\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbackgroundImage: `url('${this.file.urlPreview}')`,\n\t\t\t};\n\t\t},\n\t\thasPreview(): boolean\n\t\t{\n\t\t\treturn this.file.urlPreview !== '';\n\t\t},\n\t\tfileShortName(): string\n\t\t{\n\t\t\tconst NAME_MAX_LENGTH = 22;\n\n\t\t\treturn Utils.file.getShortFileName(this.file.name, NAME_MAX_LENGTH);\n\t\t},\n\t\tviewerAttributes(): Object\n\t\t{\n\t\t\treturn Utils.file.getViewerDataAttributes({\n\t\t\t\tviewerAttributes: this.file.viewerAttrs,\n\t\t\t\tpreviewImageSrc: this.imageSrc,\n\t\t\t\tcontext: FileViewerContext.sidebarMain,\n\t\t\t});\n\t\t},\n\t\tisImage(): boolean\n\t\t{\n\t\t\treturn this.file.type === 'image';\n\t\t},\n\t\tisVideo(): boolean\n\t\t{\n\t\t\treturn this.file.type === 'video';\n\t\t},\n\t\tisAudio(): boolean\n\t\t{\n\t\t\treturn this.file.type === 'audio';\n\t\t},\n\t\tfileIconClass(): string\n\t\t{\n\t\t\treturn `ui-icon ui-icon-file-${this.file.icon}`;\n\t\t},\n\t\tisViewerAvailable(): boolean\n\t\t{\n\t\t\treturn Object.keys(this.viewerAttributes).length > 0;\n\t\t},\n\t\timageSrc(): string\n\t\t{\n\t\t\tconst isAnimation = ['gif', 'webp'].includes(this.file.extension);\n\n\t\t\treturn isAnimation ? this.file.urlShow : this.file.urlPreview;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tdownload()\n\t\t{\n\t\t\tif (this.isViewerAvailable)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindow.open(this.file.urlDownload, '_blank');\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Text } from 'main.core';\n\nimport './css/detail-empty-state.css';\n\n// @vue/component\nexport const DetailEmptyState = {\n\tname: 'DetailEmptyState',\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticonType: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t\t{\n\t\t\ticonClass(): string\n\t\t\t{\n\t\t\t\treturn `--${Text.toKebabCase(this.iconType)}`;\n\t\t\t},\n\t\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\n\nimport { SidebarDetailBlock, EventType } from 'im.v2.const';\n\nimport { FilePreviewItem } from '../../file/components/file-preview-item';\nimport { DetailEmptyState } from '../../../elements/detail-empty-state/detail-empty-state';\n\nimport '../css/file.css';\n\nimport type { ImModelChat, ImModelSidebarFileItem } from 'im.v2.model';\n\n// @vue/component\nexport const FileListPreview = {\n\tname: 'FileListPreview',\n\tcomponents: { DetailEmptyState, FilePreviewItem },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tfiles(): ImModelSidebarFileItem[]\n\t\t{\n\t\t\tif (this.isMigrationFinished)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['sidebar/files/getLatest'](this.chatId);\n\t\t\t}\n\n\t\t\treturn this.$store.getters['sidebar/files/getLatestUnsorted'](this.chatId);\n\t\t},\n\t\thasFiles(): boolean\n\t\t{\n\t\t\treturn this.files.length > 0;\n\t\t},\n\t\tisMigrationFinished(): boolean\n\t\t{\n\t\t\treturn this.$store.state.sidebar.isFilesMigrated;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonOpenDetail()\n\t\t{\n\t\t\tif (!this.hasFiles)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst panel = this.isMigrationFinished ? SidebarDetailBlock.file : SidebarDetailBlock.fileUnsorted;\n\n\t\t\tEventEmitter.emit(EventType.sidebar.open, {\n\t\t\t\tpanel,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Loc } from 'main.core';\nimport { EventEmitter } from 'main.core.events';\n\nimport { BaseMenu } from 'im.v2.lib.menu';\nimport { Notifier } from 'im.v2.lib.notifier';\nimport { EventType } from 'im.v2.const';\n\nimport type { MenuItem } from 'im.v2.lib.menu';\n\nexport class SidebarMenu extends BaseMenu\n{\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.id = 'im-sidebar-context-menu';\n\t}\n\n\tgetMenuOptions(): Object\n\t{\n\t\treturn {\n\t\t\t...super.getMenuOptions(),\n\t\t\tclassName: this.getMenuClassName(),\n\t\t};\n\t}\n\n\tgetOpenContextMessageItem(): ?MenuItem\n\t{\n\t\tif (!this.context.messageId || this.context.messageId === 0)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_GO_TO_CONTEXT_MESSAGE'),\n\t\t\tonclick: () => {\n\t\t\t\tEventEmitter.emit(EventType.dialog.goToMessageContext, {\n\t\t\t\t\tmessageId: this.context.messageId,\n\t\t\t\t\tdialogId: this.context.dialogId,\n\t\t\t\t});\n\n\t\t\t\tthis.menuInstance.close();\n\t\t\t},\n\t\t};\n\t}\n\n\tgetCopyLinkItem(title: string): ?MenuItem\n\t{\n\t\tif (!BX.clipboard.isCopySupported())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttext: title,\n\t\t\tonclick: () => {\n\t\t\t\tif (BX.clipboard.copy(this.context.source))\n\t\t\t\t{\n\t\t\t\t\tNotifier.onCopyLinkComplete();\n\t\t\t\t}\n\t\t\t\tthis.menuInstance.close();\n\t\t\t},\n\t\t};\n\t}\n}\n","import { Store } from 'ui.vue3.vuex';\nimport { RestClient } from 'rest.client';\n\nimport { RestMethod } from 'im.v2.const';\nimport { Core } from 'im.v2.application.core';\n\nexport class TaskManager\n{\n\tstore: Store;\n\trestClient: RestClient;\n\n\tconstructor()\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t}\n\n\tdelete({ id, chatId })\n\t{\n\t\tthis.store.dispatch('sidebar/tasks/delete', { chatId, id });\n\n\t\tconst queryParams = { LINK_ID: id };\n\t\tthis.restClient.callMethod(RestMethod.imChatTaskDelete, queryParams).catch((error) => {\n\t\t\tconsole.error('Im.Sidebar: error deleting task', error);\n\t\t});\n\t}\n}\n","import 'ui.notification';\nimport { Loc } from 'main.core';\n\nimport { SidebarMenu } from '../sidebar-base-menu';\nimport { TaskManager } from './task-manager';\n\nimport type { ImModelSidebarTaskItem } from 'im.v2.model';\nimport type { MenuItem } from 'im.v2.lib.menu';\n\ntype TaskMenuContext = {\n\ttask: ImModelSidebarTaskItem,\n\tmessageId: number,\n\tdialogId: string,\n\tsource: string,\n}\n\nexport class TaskMenu extends SidebarMenu\n{\n\tcontext: TaskMenuContext;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis.id = 'im-sidebar-context-menu';\n\t\tthis.taskManager = new TaskManager();\n\t}\n\n\tgetMenuItems(): MenuItem[]\n\t{\n\t\treturn [\n\t\t\tthis.getOpenContextMessageItem(),\n\t\t\tthis.getCopyLinkItem(Loc.getMessage('IM_SIDEBAR_MENU_COPY_TASK_LINK')),\n\t\t\tthis.getDeleteItem(),\n\t\t];\n\t}\n\n\tgetDeleteItem(): MenuItem\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_DELETE_TASK_CONNECTION'),\n\t\t\tonclick: function() {\n\t\t\t\tthis.taskManager.delete(this.context.task);\n\t\t\t\tthis.menuInstance.close();\n\t\t\t}.bind(this),\n\t\t};\n\t}\n}\n","import { Type, Text } from 'main.core';\nimport { LabelColor } from 'ui.label';\n\nimport { Utils } from 'im.v2.lib.utils';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\nimport { highlightText } from 'im.v2.lib.text-highlighter';\n\nimport './css/task-item.css';\n\nimport type { ImModelSidebarTaskItem } from 'im.v2.model';\n\n// @vue/component\nexport const TaskItem = {\n\tname: 'TaskItem',\n\tcomponents: { ChatAvatar, AvatarSize },\n\tprops: {\n\t\ttask: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcontextDialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\temits: ['contextMenuClick'],\n\tdata(): { showContextButton: boolean } {\n\t\treturn {\n\t\t\tshowContextButton: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\ttaskItem(): ImModelSidebarTaskItem\n\t\t{\n\t\t\treturn this.task;\n\t\t},\n\t\ttaskTitle(): string\n\t\t{\n\t\t\tif (this.searchQuery.length === 0)\n\t\t\t{\n\t\t\t\treturn Text.encode(this.taskItem.task.title);\n\t\t\t}\n\n\t\t\treturn highlightText(Text.encode(this.taskItem.task.title), this.searchQuery);\n\t\t},\n\t\ttaskAuthorDialogId(): string\n\t\t{\n\t\t\treturn this.taskItem.task.creatorId.toString();\n\t\t},\n\t\ttaskResponsibleDialogId(): string\n\t\t{\n\t\t\treturn this.taskItem.task.responsibleId.toString();\n\t\t},\n\t\ttaskDeadlineText(): string\n\t\t{\n\t\t\tconst statusToShow = Type.isStringFilled(this.taskItem.task.state)\n\t\t\t\t? this.taskItem.task.state\n\t\t\t\t: this.taskItem.task.statusTitle\n\t\t\t;\n\n\t\t\treturn Utils.text.convertHtmlEntities(statusToShow);\n\t\t},\n\t\ttaskBackgroundColorClass(): string\n\t\t{\n\t\t\tif (this.taskItem.task.status === 5)\n\t\t\t{\n\t\t\t\treturn '--completed';\n\t\t\t}\n\n\t\t\treturn '';\n\t\t},\n\t\tstatusColorClass(): string\n\t\t{\n\t\t\tif (!this.taskItem.task.color || !LabelColor[this.taskItem.task.color.toUpperCase()])\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn `ui-label-${this.taskItem.task.color.toLowerCase()}`;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonTaskClick()\n\t\t{\n\t\t\tBX.SidePanel.Instance.open(this.taskItem.task.source, { cacheable: false });\n\t\t},\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tthis.$emit('contextMenuClick', {\n\t\t\t\ttask: this.taskItem,\n\t\t\t\tsource: this.taskItem.task.source,\n\t\t\t\tmessageId: this.taskItem.messageId,\n\t\t\t}, event.currentTarget);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\n\nimport { Analytics } from 'im.v2.lib.analytics';\nimport { EntityCreator } from 'im.v2.lib.entity-creator';\nimport { EventType, SidebarDetailBlock, ActionByRole } from 'im.v2.const';\nimport { PermissionManager } from 'im.v2.lib.permission';\nimport { ChatButton, ButtonColor, ButtonSize } from 'im.v2.component.elements.button';\n\nimport { TaskMenu } from '../../../../classes/context-menu/task/task-menu';\nimport { DetailEmptyState } from '../../../elements/detail-empty-state/detail-empty-state';\nimport { TaskItem } from '../../task/task-item';\n\nimport '../css/task-list.css';\n\nimport type { ImModelSidebarTaskItem, ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const TaskListPreview = {\n\tname: 'TaskListPreview',\n\tcomponents: { DetailEmptyState, TaskItem, ChatButton },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tButtonSize: () => ButtonSize,\n\t\tButtonColor: () => ButtonColor,\n\t\tfirstTask(): ?ImModelSidebarTaskItem\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/tasks/get'](this.chatId)[0];\n\t\t},\n\t\tshowAddButton(): boolean\n\t\t{\n\t\t\treturn PermissionManager.getInstance().canPerformActionByRole(ActionByRole.createTask, this.dialogId);\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\taddButtonColor(): ButtonColor\n\t\t{\n\t\t\treturn this.ButtonColor.PrimaryLight;\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.contextMenu = new TaskMenu();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tgetEntityCreator(): EntityCreator\n\t\t{\n\t\t\treturn (new EntityCreator(this.chatId));\n\t\t},\n\t\tonAddClick()\n\t\t{\n\t\t\tAnalytics.getInstance().chatEntities.onCreateTaskFromSidebarClick(this.dialogId);\n\t\t\tvoid this.getEntityCreator().createTaskForChat();\n\t\t},\n\t\tonOpenDetail()\n\t\t{\n\t\t\tif (!this.firstTask)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tEventEmitter.emit(EventType.sidebar.open, {\n\t\t\t\tpanel: SidebarDetailBlock.task,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\t\t},\n\t\tonContextMenuClick(event, target)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\t...event,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, target);\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import './market-item.css';\n\nimport type { ImModelMarketApplication } from 'im.v2.model';\n\n// @vue/component\nexport const MarketItem = {\n\tname: 'MarketItem',\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tmarketItem(): ImModelMarketApplication\n\t\t{\n\t\t\treturn this.item;\n\t\t},\n\t\ticonClass(): string\n\t\t{\n\t\t\treturn `fa ${this.marketItem.options.iconName}`;\n\t\t},\n\t\ticonColor(): string\n\t\t{\n\t\t\treturn this.marketItem.options.color;\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\n\nimport { MarketManager } from 'im.v2.lib.market';\nimport { EventType, PlacementType, SidebarDetailBlock } from 'im.v2.const';\n\nimport { MarketItem } from '../../../elements/market-item/market-item';\n\nimport '../css/market.css';\n\nimport type { ImModelMarketApplication } from 'im.v2.model';\n\n// @vue/component\nexport const MarketAppListPreview = {\n\tname: 'MarketAppListPreview',\n\tcomponents: { MarketItem },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: ['openDetail'],\n\tcomputed:\n\t{\n\t\tmarketMenuItems(): ImModelMarketApplication[]\n\t\t{\n\t\t\treturn MarketManager.getInstance().getAvailablePlacementsByType(PlacementType.sidebar, this.dialogId);\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonMarketItemClick(entityId)\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.open, {\n\t\t\t\tpanel: SidebarDetailBlock.market,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\tentityId,\n\t\t\t});\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { RestClient } from 'rest.client';\nimport { Store } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\nimport { RestMethod } from 'im.v2.const';\n\nexport class MeetingManager\n{\n\tstore: Store;\n\trestClient: RestClient;\n\n\tconstructor()\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t}\n\n\tdelete({ id, chatId })\n\t{\n\t\tthis.store.dispatch('sidebar/meetings/delete', { chatId, id });\n\n\t\tconst queryParams = { LINK_ID: id };\n\t\tthis.restClient.callMethod(RestMethod.imChatCalendarDelete, queryParams).catch((error) => {\n\t\t\tconsole.error('Im.Sidebar: error deleting meeting', error);\n\t\t});\n\t}\n}\n","import 'ui.notification';\nimport { Loc } from 'main.core';\n\nimport { SidebarMenu } from '../sidebar-base-menu';\nimport { MeetingManager } from './meeting-manager';\n\nimport type { MenuItem } from 'im.v2.lib.menu';\nimport type { ImModelSidebarMeetingItem } from 'im.v2.model';\n\ntype MeetingMenuContext = {\n\tmeeting: ImModelSidebarMeetingItem,\n\tmessageId: number,\n\tdialogId: string,\n\tsource: string,\n}\n\nexport class MeetingMenu extends SidebarMenu\n{\n\tcontext: MeetingMenuContext;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis.id = 'im-sidebar-context-menu';\n\t\tthis.meetingManager = new MeetingManager();\n\t}\n\n\tgetMenuItems(): MenuItem[]\n\t{\n\t\treturn [\n\t\t\tthis.getOpenContextMessageItem(),\n\t\t\tthis.getCopyLinkItem(Loc.getMessage('IM_SIDEBAR_MENU_COPY_MEETING_LINK')),\n\t\t\tthis.getDeleteItem(),\n\t\t];\n\t}\n\n\tgetDeleteItem(): MenuItem\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_DELETE_MEETING_CONNECTION'),\n\t\t\tonclick: function() {\n\t\t\t\tthis.meetingManager.delete(this.context.meeting);\n\t\t\t\tthis.menuInstance.close();\n\t\t\t}.bind(this),\n\t\t};\n\t}\n}\n","import { DateTimeFormat } from 'main.date';\nimport { Text } from 'main.core';\nimport { DateFormatter, DateTemplate } from 'im.v2.lib.date-formatter';\n\nimport './css/meeting-item.css';\n\nimport type { ImModelSidebarMeetingItem } from 'im.v2.model';\nimport { highlightText } from 'im.v2.lib.text-highlighter';\n\n// @vue/component\nexport const MeetingItem = {\n\tname: 'MeetingItem',\n\tprops: {\n\t\tmeeting: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\temits: ['contextMenuClick'],\n\tdata(): { showContextButton: boolean } {\n\t\treturn {\n\t\t\tshowContextButton: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tmeetingItem(): ImModelSidebarMeetingItem\n\t\t{\n\t\t\treturn this.meeting;\n\t\t},\n\t\ttitle(): string\n\t\t{\n\t\t\tif (this.searchQuery.length === 0)\n\t\t\t{\n\t\t\t\treturn Text.encode(this.meetingItem.meeting.title);\n\t\t\t}\n\n\t\t\treturn highlightText(Text.encode(this.meetingItem.meeting.title), this.searchQuery);\n\t\t},\n\t\tdate(): string\n\t\t{\n\t\t\tconst meetingDate = this.meetingItem.meeting.dateFrom;\n\n\t\t\treturn DateFormatter.formatByTemplate(meetingDate, DateTemplate.meeting);\n\t\t},\n\t\tday(): string\n\t\t{\n\t\t\treturn this.meetingItem.meeting.dateFrom.getDate().toString();\n\t\t},\n\t\tmonthShort(): string\n\t\t{\n\t\t\treturn DateTimeFormat.format('M', this.meetingItem.meeting.dateFrom);\n\t\t},\n\t\tisActive(): boolean\n\t\t{\n\t\t\treturn this.meetingItem.meeting.dateFrom.getTime() > Date.now();\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonMeetingClick()\n\t\t{\n\t\t\t// todo replace this call to something\n\t\t\tnew (window.top.BX || window.BX).Calendar.SliderLoader(this.meetingItem.meeting.id).show();\n\t\t},\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tthis.$emit('contextMenuClick', {\n\t\t\t\tmeeting: this.meetingItem,\n\t\t\t\tsource: this.meetingItem.meeting.source,\n\t\t\t\tmessageId: this.meetingItem.messageId,\n\t\t\t}, event.currentTarget);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\n\nimport { Analytics } from 'im.v2.lib.analytics';\nimport { ImModelSidebarMeetingItem, ImModelChat } from 'im.v2.model';\nimport { ChatButton, ButtonColor, ButtonSize } from 'im.v2.component.elements.button';\nimport { EventType, SidebarDetailBlock, ActionByRole, Layout } from 'im.v2.const';\nimport { EntityCreator } from 'im.v2.lib.entity-creator';\nimport { PermissionManager } from 'im.v2.lib.permission';\n\nimport { MeetingMenu } from '../../../../classes/context-menu/meeting/meeting-menu';\nimport { DetailEmptyState } from '../../../elements/detail-empty-state/detail-empty-state';\nimport { MeetingItem } from '../../meeting/meeting-item';\n\nimport '../css/meeting.css';\n\n// @vue/component\nexport const MeetingListPreview = {\n\tname: 'MeetingListPreview',\n\tcomponents: { MeetingItem, DetailEmptyState, ChatButton },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tButtonSize: () => ButtonSize,\n\t\tButtonColor: () => ButtonColor,\n\t\tfirstMeeting(): ?ImModelSidebarMeetingItem\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/meetings/get'](this.chatId)[0];\n\t\t},\n\t\tshowAddButton(): boolean\n\t\t{\n\t\t\treturn PermissionManager.getInstance().canPerformActionByRole(ActionByRole.createMeeting, this.dialogId);\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\taddButtonColor(): ButtonColor\n\t\t{\n\t\t\treturn this.ButtonColor.PrimaryLight;\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.contextMenu = new MeetingMenu();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tgetEntityCreator(): EntityCreator\n\t\t{\n\t\t\treturn (new EntityCreator(this.chatId));\n\t\t},\n\t\tonAddClick()\n\t\t{\n\t\t\tAnalytics.getInstance().chatEntities.onCreateEventFromSidebarClick(this.dialogId);\n\n\t\t\tvoid this.getEntityCreator().createMeetingForChat();\n\t\t},\n\t\tonOpenDetail()\n\t\t{\n\t\t\tif (!this.firstMeeting)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tEventEmitter.emit(EventType.sidebar.open, {\n\t\t\t\tpanel: SidebarDetailBlock.meeting,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\t\t},\n\t\tonContextMenuClick(event, target)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\t...event,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, target);\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { ChatLinks } from '../../../elements/chat-links/chat-links';\nimport { ChatFavourites } from '../../../elements/chat-favourites/chat-favourites';\nimport { ChatDescription } from '../../../elements/chat-description/chat-description';\n\nimport '../css/info.css';\n\n// @vue/component\nexport const CopilotInfoPreview = {\n\tname: 'CopilotInfoPreview',\n\tcomponents: { ChatDescription, ChatLinks, ChatFavourites },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { hint } from 'ui.vue3.directives.hint';\n\nimport { ActionByRole, Layout } from 'im.v2.const';\nimport { Core } from 'im.v2.application.core';\nimport { ChatService } from 'im.v2.provider.service.chat';\nimport { PermissionManager } from 'im.v2.lib.permission';\nimport { Toggle, ToggleSize } from 'im.v2.component.elements.toggle';\n\nimport type { ImModelChat } from 'im.v2.model';\n\nimport './css/mute-chat.css';\n\n// @vue/component\nexport const MuteChat = {\n\tname: 'MuteChat',\n\tdirectives: { hint },\n\tcomponents: { Toggle },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tToggleSize: () => ToggleSize,\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tisGroupChat(): boolean\n\t\t{\n\t\t\treturn this.dialogId.startsWith('chat');\n\t\t},\n\t\tcanBeMuted(): boolean\n\t\t{\n\t\t\treturn PermissionManager.getInstance().canPerformActionByRole(ActionByRole.mute, this.dialogId);\n\t\t},\n\t\tisChatMuted(): boolean\n\t\t{\n\t\t\tconst isMuted = this.dialog.muteList.find((element) => {\n\t\t\t\treturn element === Core.getUserId();\n\t\t\t});\n\n\t\t\treturn Boolean(isMuted);\n\t\t},\n\t\thintMuteNotAvailable(): ?Object\n\t\t{\n\t\t\tif (this.canBeMuted)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttext: this.$Bitrix.Loc.getMessage('IM_SIDEBAR_MUTE_NOT_AVAILABLE'),\n\t\t\t\tpopupOptions: {\n\t\t\t\t\tangle: true,\n\t\t\t\t\ttargetContainer: document.body,\n\t\t\t\t\toffsetLeft: 141,\n\t\t\t\t\toffsetTop: -10,\n\t\t\t\t\tbindOptions: {\n\t\t\t\t\t\tposition: 'top',\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tisCopilotLayout(): boolean\n\t\t{\n\t\t\tconst { name: currentLayoutName } = this.$store.getters['application/getLayout'];\n\n\t\t\treturn currentLayoutName === Layout.copilot.name;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tgetChatService(): ChatService\n\t\t{\n\t\t\tif (!this.chatService)\n\t\t\t{\n\t\t\t\tthis.chatService = new ChatService();\n\t\t\t}\n\n\t\t\treturn this.chatService;\n\t\t},\n\t\tmuteActionHandler()\n\t\t{\n\t\t\tif (!this.canBeMuted)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.isChatMuted)\n\t\t\t{\n\t\t\t\tthis.getChatService().unmuteChat(this.dialogId);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getChatService().muteChat(this.dialogId);\n\t\t\t}\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { hint } from 'ui.vue3.directives.hint';\n\nimport { ChannelManager } from 'im.v2.lib.channel';\nimport { Toggle, ToggleSize } from 'im.v2.component.elements.toggle';\nimport { AutoDeleteDropdown, AutoDeletePopup, AutoDeleteHint } from 'im.v2.component.elements.auto-delete';\nimport { Feature, FeatureManager } from 'im.v2.lib.feature';\nimport { ChatService } from 'im.v2.provider.service.chat';\nimport { ChatType, UserType, AutoDeleteDelay } from 'im.v2.const';\nimport { AutoDeleteManager } from 'im.v2.lib.auto-delete';\n\nimport './css/auto-delete.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat, ImModelUser } from 'im.v2.model';\n\n// @vue/component\nexport const AutoDelete = {\n\tname: 'AutoDelete',\n\tdirectives: { hint },\n\tcomponents: { Toggle, AutoDeleteHint, AutoDeleteDropdown, AutoDeletePopup },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tshowHint: false,\n\t\t\tshowPopup: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tToggleSize: () => ToggleSize,\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tautoDeleteDelayInHours(): number\n\t\t{\n\t\t\treturn this.$store.getters['chats/autoDelete/getDelay'](this.chatId);\n\t\t},\n\t\tisAutoDeleteFeatureAvailable(): boolean\n\t\t{\n\t\t\treturn FeatureManager.isFeatureAvailable(Feature.messagesAutoDeleteAvailable);\n\t\t},\n\t\tisAutoDeleteFeatureEnabled(): boolean\n\t\t{\n\t\t\treturn FeatureManager.isFeatureAvailable(Feature.messagesAutoDeleteEnabled);\n\t\t},\n\t\tisAutoDeleteAllowed(): boolean\n\t\t{\n\t\t\treturn AutoDeleteManager.isAutoDeleteAllowed(this.dialogId);\n\t\t},\n\t\thintAutoDelete(): ?Object\n\t\t{\n\t\t\tif (this.isAutoDeleteFeatureAvailable)\n\t\t\t{\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\ttext: this.loc('IM_MESSENGER_NOT_AVAILABLE'),\n\t\t\t\tpopupOptions: {\n\t\t\t\t\tbindOptions: {\n\t\t\t\t\t\tposition: 'top',\n\t\t\t\t\t},\n\t\t\t\t\tangle: true,\n\t\t\t\t\ttargetContainer: document.body,\n\t\t\t\t\toffsetLeft: 125,\n\t\t\t\t\toffsetTop: -10,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\tisBot(): boolean\n\t\t{\n\t\t\tconst user: ImModelUser = this.$store.getters['users/get'](this.dialogId, true);\n\n\t\t\treturn user.type === UserType.bot;\n\t\t},\n\t\tisAutoDeleteAvailableByChatType(): boolean\n\t\t{\n\t\t\tconst NoAutoDeleteChatTypes = [\n\t\t\t\tChatType.copilot,\n\t\t\t\tChatType.lines,\n\t\t\t\tChatType.videoconf,\n\t\t\t\t...ChannelManager.getChannelTypes(),\n\t\t\t];\n\n\t\t\tif (NoAutoDeleteChatTypes.includes(this.dialog.type))\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn !this.isBot;\n\t\t},\n\t\tisAutoDeleteActive(): boolean\n\t\t{\n\t\t\treturn this.autoDeleteDelayInHours > 0;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tgetChatService(): ChatService\n\t\t{\n\t\t\tif (!this.chatService)\n\t\t\t{\n\t\t\t\tthis.chatService = new ChatService();\n\t\t\t}\n\n\t\t\treturn this.chatService;\n\t\t},\n\t\tchangeAutoDeleteActionHandler(): void\n\t\t{\n\t\t\tif (!this.isAutoDeleteFeatureAvailable)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.isAutoDeleteAllowed)\n\t\t\t{\n\t\t\t\tthis.showHint = true;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.isAutoDeleteActive)\n\t\t\t{\n\t\t\t\tthis.updateAutoDeleteDelay(AutoDeleteDelay.Off);\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.isAutoDeleteFeatureEnabled)\n\t\t\t{\n\t\t\t\tFeatureManager.messagesAutoDelete.openFeatureSlider();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.showPopup = true;\n\t\t},\n\t\tupdateAutoDeleteDelay(delay: number): void\n\t\t{\n\t\t\tthis.getChatService().setMessagesAutoDeleteDelay(this.dialogId, delay);\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t\tonAutoDeleteDelayChange(delay: number): void\n\t\t{\n\t\t\tthis.updateAutoDeleteDelay(delay);\n\t\t\tthis.$emit('close');\n\t\t},\n\t\tonDropDownClick(event: PointerEvent)\n\t\t{\n\t\t\tif (this.isAutoDeleteAllowed)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tevent.stopPropagation();\n\t\t\tthis.showHint = true;\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Analytics } from 'im.v2.lib.analytics';\nimport { PermissionManager } from 'im.v2.lib.permission';\nimport { AddToChat, AddToCollab } from 'im.v2.component.entity-selector';\nimport { ActionByRole, ChatType, EventType, SidebarDetailBlock } from 'im.v2.const';\n\nimport { EventEmitter } from 'main.core.events';\nimport { ChatButton, ButtonSize, ButtonColor } from 'im.v2.component.elements.button';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport './chat-members-avatars.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat } from 'im.v2.model';\nimport type { BitrixVueComponentProps } from 'ui.vue3';\n\n// @vue/component\nexport const ChatMembersAvatars = {\n\tname: 'ChatMembersAvatars',\n\tcomponents: { ChatAvatar, ChatButton, AddToChat },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tshowMembers: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tshowAddToChatPopup: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tButtonSize: () => ButtonSize,\n\t\tButtonColor: () => ButtonColor,\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tdialogIds(): string[]\n\t\t{\n\t\t\tconst PREVIEW_USERS_COUNT = 4;\n\t\t\tconst userIds = this.$store.getters['sidebar/members/get'](this.chatId);\n\n\t\t\treturn userIds.map((id: number) => id.toString()).slice(0, PREVIEW_USERS_COUNT);\n\t\t},\n\t\tcanSeeMembers(): boolean\n\t\t{\n\t\t\treturn PermissionManager.getInstance().canPerformActionByRole(ActionByRole.userList, this.dialogId);\n\t\t},\n\t\tcanInviteMembers(): boolean\n\t\t{\n\t\t\treturn PermissionManager.getInstance().canPerformActionByRole(\n\t\t\t\tActionByRole.extend,\n\t\t\t\tthis.dialogId,\n\t\t\t);\n\t\t},\n\t\tusersInChatCount(): number\n\t\t{\n\t\t\treturn this.dialog.userCounter;\n\t\t},\n\t\tmoreUsersCount(): number\n\t\t{\n\t\t\treturn Math.max(this.usersInChatCount - this.dialogIds.length, 0);\n\t\t},\n\t\tisCollab(): boolean\n\t\t{\n\t\t\treturn this.dialog.type === ChatType.collab;\n\t\t},\n\t\taddUsersButtonColor(): ButtonColor\n\t\t{\n\t\t\tif (this.isCollab)\n\t\t\t{\n\t\t\t\treturn this.ButtonColor.Collab;\n\t\t\t}\n\n\t\t\treturn this.ButtonColor.PrimaryLight;\n\t\t},\n\t\taddMembersPopupComponent(): BitrixVueComponentProps\n\t\t{\n\t\t\treturn this.dialog.type === ChatType.collab ? AddToCollab : AddToChat;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonOpenUsers()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.open, {\n\t\t\t\tpanel: SidebarDetailBlock.members,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\t\t},\n\t\tonOpenInvitePopup()\n\t\t{\n\t\t\tAnalytics.getInstance().userAdd.onChatSidebarClick(this.dialogId);\n\t\t\tthis.showAddToChatPopup = true;\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport { MuteChat } from '../../../elements/mute-chat/mute-chat';\nimport { AutoDelete } from '../../../elements/auto-delete/auto-delete';\nimport { ChatMembersAvatars } from '../../../elements/chat-members-avatars/chat-members-avatars';\n\nimport '../css/chat-preview.css';\n\n// @vue/component\nexport const ChatPreview = {\n\tname: 'ChatPreview',\n\tcomponents: { ChatAvatar, ChatTitle, MuteChat, ChatMembersAvatars, AutoDelete },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t},\n\ttemplate: `\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`,\n};\n","import { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport { MuteChat } from '../../../elements/mute-chat/mute-chat';\nimport { AutoDelete } from '../../../elements/auto-delete/auto-delete';\nimport { ChatMembersAvatars } from '../../../elements/chat-members-avatars/chat-members-avatars';\n\nimport '../css/post-preview.css';\n\nimport type { ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const PostPreview = {\n\tname: 'PostPreview',\n\tcomponents: { ChatAvatar, ChatTitle, MuteChat, ChatMembersAvatars, AutoDelete },\n\tprops:\n\t{\n\t\tdialogId:\n\t\t{\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tpostDialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/getByChatId'](this.dialog.parentChatId);\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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<!-- TODO: follow toggle -->\n\t\t\t</div>\n\t\t</div>\n\t`,\n};\n","import { Analytics } from 'im.v2.lib.analytics';\nimport { hint } from 'ui.vue3.directives.hint';\n\nimport { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { ChatButton, ButtonColor, ButtonSize } from 'im.v2.component.elements.button';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\nimport { ActionByRole, ActionByUserType, UserType } from 'im.v2.const';\nimport { Utils } from 'im.v2.lib.utils';\nimport { AddToChat } from 'im.v2.component.entity-selector';\nimport { PermissionManager } from 'im.v2.lib.permission';\n\nimport { AutoDelete } from '../../../elements/auto-delete/auto-delete';\n\nimport '../css/user-preview.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat, ImModelUser } from 'im.v2.model';\n\n// @vue/component\nexport const UserPreview = {\n\tname: 'UserPreview',\n\tdirectives: { hint },\n\tcomponents: { ChatAvatar, ChatTitle, ChatButton, AddToChat, AutoDelete },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tshowAddToChatPopup: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tButtonSize: () => ButtonSize,\n\t\tButtonColor: () => ButtonColor,\n\t\tuserPosition(): string\n\t\t{\n\t\t\treturn this.$store.getters['users/getPosition'](this.dialogId);\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tuser(): ImModelUser\n\t\t{\n\t\t\treturn this.$store.getters['users/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tcanInviteMembers(): boolean\n\t\t{\n\t\t\tconst canCreateChat = PermissionManager.getInstance().canPerformActionByUserType(ActionByUserType.createChat);\n\t\t\tconst canExtendChat = PermissionManager.getInstance().canPerformActionByRole(ActionByRole.extend, this.dialogId);\n\n\t\t\treturn canCreateChat && canExtendChat;\n\t\t},\n\t\tshowInviteButton(): boolean\n\t\t{\n\t\t\tif (this.isBot)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.canInviteMembers;\n\t\t},\n\t\tuserLink(): string\n\t\t{\n\t\t\treturn Utils.user.getProfileLink(this.dialogId);\n\t\t},\n\t\tisBot(): boolean\n\t\t{\n\t\t\treturn this.user.type === UserType.bot;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonAddClick()\n\t\t{\n\t\t\tAnalytics.getInstance().userAdd.onChatSidebarClick(this.dialogId);\n\t\t\tthis.showAddToChatPopup = true;\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Store } from 'ui.vue3.vuex';\n\nimport { runAction } from 'im.v2.lib.rest';\nimport { Core } from 'im.v2.application.core';\nimport { Logger } from 'im.v2.lib.logger';\nimport { RestMethod } from 'im.v2.const';\n\nimport type { JsonObject } from 'main.core';\n\nexport class CopilotService\n{\n\t#store: Store;\n\n\tconstructor()\n\t{\n\t\tthis.#store = Core.getStore();\n\t}\n\n\tupdateRole({ dialogId, role }: {dialogId: string, role: JsonObject}): Promise\n\t{\n\t\tLogger.warn('CopilotService: update role', dialogId);\n\t\tvoid this.#store.dispatch('copilot/chats/add', { dialogId, role: role.code });\n\t\tvoid this.#store.dispatch('copilot/roles/add', [role]);\n\n\t\treturn this.#sendRequest({ dialogId, role: role.code });\n\t}\n\n\t#sendRequest({ dialogId, role }: {dialogId: string, role: string}): Promise\n\t{\n\t\tconst requestParams = { data: { dialogId, role } };\n\n\t\treturn runAction(RestMethod.imV2ChatCopilotUpdateRole, requestParams);\n\t}\n}\n","import { PromoVideoPopup, PromoVideoPopupEvents } from 'ui.promo-video-popup';\nimport { Loc } from 'main.core';\n\nimport '../css/change-role-promo.css';\n\n// @vue/component\nexport const ChangeRolePromo = {\n\tname: 'ChangeRolePromo',\n\tprops:\n\t{\n\t\tbindElement: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: ['hide', 'accept'],\n\tcomputed:\n\t{\n\t\ttext(): string\n\t\t{\n\t\t\treturn Loc.getMessage('IM_SIDEBAR_COPILOT_CHANGE_ROLE_PROMO_TEXT', {\n\t\t\t\t'[copilot_color]': '<em class=\"bx-im-copilot-change-role-promo__copilot\">',\n\t\t\t\t'[/copilot_color]': '</em>',\n\t\t\t});\n\t\t},\n\t\tvideoSource(): string\n\t\t{\n\t\t\tconst basePath = '/bitrix/js/im/v2/component/sidebar/src/components/elements/copilot-role/css/videos/';\n\t\t\tconst sources = {\n\t\t\t\tru: 'copilot-roles-promo-ru.webm',\n\t\t\t\ten: 'copilot-roles-promo-en.webm',\n\t\t\t};\n\n\t\t\tconst language = Loc.getMessage('LANGUAGE_ID');\n\n\t\t\treturn language === 'ru' ? `${basePath}${sources.ru}` : `${basePath}${sources.en}`;\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.promoPopup = new PromoVideoPopup({\n\t\t\tvideoSrc: this.videoSource,\n\t\t\ttitle: 'Copilot',\n\t\t\ttext: this.text,\n\t\t\ttargetOptions: this.bindElement,\n\t\t\tangleOptions: {\n\t\t\t\tposition: BX.UI.AnglePosition.RIGHT,\n\t\t\t\toffset: 98,\n\t\t\t},\n\t\t\tcolors: {\n\t\t\t\ticonBackground: '#8e52ec',\n\t\t\t\ttitle: '#b095dc',\n\t\t\t},\n\t\t\ticon: BX.UI.IconSet.Main.COPILOT_AI,\n\t\t\toffset: {\n\t\t\t\ttop: -125,\n\t\t\t\tleft: -510,\n\t\t\t},\n\t\t});\n\n\t\tthis.promoPopup.subscribe(PromoVideoPopupEvents.ACCEPT, this.onAccept);\n\t\tthis.promoPopup.subscribe(PromoVideoPopupEvents.HIDE, this.onHide);\n\t},\n\tmounted()\n\t{\n\t\tthis.promoPopup.show();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tif (!this.promoPopup)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tthis.promoPopup.hide();\n\n\t\tthis.promoPopup.unsubscribe(PromoVideoPopupEvents.ACCEPT, this.onAccept);\n\t\tthis.promoPopup.unsubscribe(PromoVideoPopupEvents.HIDE, this.onHide);\n\t},\n\tmethods:\n\t{\n\t\tonHide()\n\t\t{\n\t\t\tthis.$emit('hide');\n\t\t\tthis.promoPopup.hide();\n\t\t},\n\t\tonAccept()\n\t\t{\n\t\t\tthis.$emit('accept');\n\t\t\tthis.promoPopup.hide();\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\n\t\t<template></template>\n\t`,\n};\n","import { CopilotRolesDialog } from 'im.v2.component.elements.copilot-roles-dialog';\nimport { PromoManager } from 'im.v2.lib.promo';\nimport { PromoId } from 'im.v2.const';\n\nimport { CopilotService } from './classes/copilot-serivce';\nimport { ChangeRolePromo } from './components/change-role-promo';\n\nimport './css/copilot-role.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelCopilotRole } from 'im.v2.model';\n\n// @vue/component\nexport const CopilotRole = {\n\tname: 'CopilotRole',\n\tcomponents: { ChangeRolePromo, CopilotRolesDialog },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tshouldShowChangeRolePromo: false,\n\t\t\tshowRolesDialog: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tchatRole(): ImModelCopilotRole\n\t\t{\n\t\t\tconst chatRole = this.$store.getters['copilot/chats/getRole'](this.dialogId);\n\t\t\tif (!chatRole)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['copilot/roles/getDefault'];\n\t\t\t}\n\n\t\t\treturn chatRole;\n\t\t},\n\t\troleName(): string\n\t\t{\n\t\t\treturn this.chatRole.name;\n\t\t},\n\t\tcanShowChangeRolePromo(): boolean\n\t\t{\n\t\t\tconst needCopilotInRecentTabHint = PromoManager.getInstance().needToShow(PromoId.copilotInRecentTab);\n\t\t\tconst needShowAddUsersToChatHint = PromoManager.getInstance().needToShow(PromoId.addUsersToCopilotChat);\n\t\t\tconst needToShowChangeRolePromo = PromoManager.getInstance().needToShow(PromoId.changeRoleCopilot);\n\n\t\t\treturn !needCopilotInRecentTabHint && !needShowAddUsersToChatHint && needToShowChangeRolePromo;\n\t\t},\n\t},\n\tmounted()\n\t{\n\t\t// Show promo after sidebar animation is over.\n\t\tsetTimeout(() => {\n\t\t\tthis.shouldShowChangeRolePromo = this.canShowChangeRolePromo;\n\t\t}, 300);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.showRolesDialog = false;\n\t\tthis.shouldShowChangeRolePromo = false;\n\t},\n\tmethods:\n\t{\n\t\thandleChangeRole()\n\t\t{\n\t\t\tthis.showRolesDialog = true;\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t\tonChangeRolePromoAccept()\n\t\t{\n\t\t\tthis.shouldShowChangeRolePromo = false;\n\t\t\tvoid PromoManager.getInstance().markAsWatched(PromoId.changeRoleCopilot);\n\t\t},\n\t\tonCopilotDialogSelectRole(role)\n\t\t{\n\t\t\tvoid (new CopilotService()).updateRole({\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\trole,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport { CopilotRole } from '../../../elements/copilot-role/copilot-role';\nimport { MuteChat } from '../../../elements/mute-chat/mute-chat';\nimport { ChatMembersAvatars } from '../../../elements/chat-members-avatars/chat-members-avatars';\n\nimport '../css/copilot-preview.css';\n\nimport type { ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const CopilotPreview = {\n\tname: 'CopilotPreview',\n\tcomponents: { ChatAvatar, ChatTitle, MuteChat, ChatMembersAvatars, CopilotRole },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tshowMembers(): boolean\n\t\t{\n\t\t\treturn this.dialog.userCounter > 2;\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport { AutoDelete } from '../../../elements/auto-delete/auto-delete';\n\n// @vue/component\nexport const SupportPreview = {\n\tname: 'SupportPreview',\n\tcomponents: { ChatAvatar, ChatTitle, AutoDelete },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\n\nimport { EventType, SidebarDetailBlock } from 'im.v2.const';\n\nimport '../css/multidialog.css';\n\n// @vue/component\nexport const MultidialogPreview = {\n\tname: 'MultidialogPreview',\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true).chatId;\n\t\t},\n\t\tnumberRequests(): number\n\t\t{\n\t\t\tconst chatsCount = this.$store.getters['sidebar/multidialog/getChatsCount'];\n\n\t\t\treturn chatsCount > 999 ? '999+' : chatsCount;\n\t\t},\n\t\ttotalChatCounter(): number\n\t\t{\n\t\t\tconst counter = this.$store.getters['sidebar/multidialog/getTotalChatCounter'];\n\n\t\t\treturn counter > 99 ? '99+' : counter;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t\tonOpenDetail()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.open, {\n\t\t\t\tpanel: SidebarDetailBlock.multidialog,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\tstandalone: true,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { FeatureManager } from 'im.v2.lib.feature';\nimport { Analytics } from 'im.v2.lib.analytics';\n\nimport './tariff-limit.css';\n\nimport type { ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const TariffLimit = {\n\tname: 'TariffLimit',\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tpanel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\ttitle(): string\n\t\t{\n\t\t\treturn FeatureManager.chatHistory.getLimitTitle();\n\t\t},\n\t\tpreparedDescription(): string\n\t\t{\n\t\t\treturn FeatureManager.chatHistory.getLimitSubtitle(true)\n\t\t\t\t.replace('[action_emphasis]', '<em class=\"bx-im-sidebar-elements-tariff-limit__description-accent\">')\n\t\t\t\t.replace('[/action_emphasis]', '</em>');\n\t\t},\n\t\ttooltipText(): string\n\t\t{\n\t\t\treturn FeatureManager.chatHistory.getTooltipText();\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tdialogId()\n\t\t{\n\t\t\tthis.sendAnalyticsOnCreate();\n\t\t},\n\t\tpanel()\n\t\t{\n\t\t\tthis.sendAnalyticsOnCreate();\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.sendAnalyticsOnCreate();\n\t},\n\tmethods:\n\t{\n\t\tonDetailClick()\n\t\t{\n\t\t\tthis.sendAnalyticsOnClick();\n\t\t\tFeatureManager.chatHistory.openFeatureSlider();\n\t\t},\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t\tsendAnalyticsOnClick()\n\t\t{\n\t\t\tAnalytics.getInstance().historyLimit.onSidebarBannerClick({\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\tpanel: this.panel,\n\t\t\t});\n\t\t},\n\t\tsendAnalyticsOnCreate()\n\t\t{\n\t\t\tAnalytics.getInstance().historyLimit.onSidebarLimitExceeded({\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\tpanel: this.panel,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { SidebarDetailBlock } from 'im.v2.const';\n\nimport { TariffLimit } from '../../../elements/tariff-limit/tariff-limit';\n\n// @vue/component\nexport const TariffLimitPreview = {\n\tname: 'TariffLimitPreview',\n\tcomponents: { TariffLimit },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t},\n\ttemplate: `\n\t\t<TariffLimit :dialogId=\"dialogId\" :panel=\"SidebarDetailBlock.main\" />\n\t`,\n};\n","import { Manual } from 'ui.manual';\n\nimport { PromoId, UserType } from 'im.v2.const';\nimport { PromoManager } from 'im.v2.lib.promo';\nimport { Core } from 'im.v2.application.core';\n\nimport '../css/collab-helpdesk.css';\n\nimport type { JsonObject } from 'main.core';\n\nconst INTRANET_MANUAL_CODE = 'collab';\nconst COLLABER_MANUAL_CODE = 'collab_guest';\n\n// @vue/component\nexport const CollabHelpdeskPreview = {\n\tname: 'CollabHelpdeskPreview',\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tneedToShow: PromoManager.getInstance().needToShow(PromoId.collabHelpdeskSidebar),\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tisCurrentUserCollaber(): boolean\n\t\t{\n\t\t\tconst currentUser = this.$store.getters['users/get'](Core.getUserId(), true);\n\n\t\t\treturn currentUser.type === UserType.collaber;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tclose()\n\t\t{\n\t\t\tthis.needToShow = false;\n\t\t\tvoid PromoManager.getInstance().markAsWatched(PromoId.collabHelpdeskSidebar);\n\t\t},\n\t\topenHelpdesk()\n\t\t{\n\t\t\tconst manualCode = this.isCurrentUserCollaber ? COLLABER_MANUAL_CODE : INTRANET_MANUAL_CODE;\n\n\t\t\tconst urlParams = {\n\t\t\t\tutm_source: 'portal',\n\t\t\t\tutm_content: 'widget',\n\t\t\t};\n\n\t\t\tManual.show(manualCode, urlParams);\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { ChatTitle, ChatTitleType } from 'im.v2.component.elements.chat-title';\nimport { ChatAvatar, AvatarSize, ChatAvatarType } from 'im.v2.component.elements.avatar';\n\nimport '../css/sidebar-notes-preview.css';\n\n// @vue/component\nexport const NotesPreview = {\n\tname: 'NotesPreview',\n\tcomponents: { ChatAvatar, ChatTitle },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tChatAvatarType: () => ChatAvatarType,\n\t\tAvatarSize: () => AvatarSize,\n\t\tChatTitleType: () => ChatTitleType,\n\t},\n\tmethods: {\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { ChatTitle } from 'im.v2.component.elements.chat-title';\n\nimport { ChatMembersAvatars } from '../../../elements/chat-members-avatars/chat-members-avatars';\n\nimport '../css/task.css';\n\n// @vue/component\nexport const TaskPreview = {\n\tname: 'TaskPreview',\n\tcomponents: { ChatTitle, ChatMembersAvatars },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { SidebarMainPanelBlock } from 'im.v2.const';\n\nimport { InfoPreview } from '../blocks/info';\nimport { FileListPreview } from '../blocks/file-list';\nimport { TaskListPreview } from '../blocks/task-list';\nimport { MarketAppListPreview } from '../blocks/market-app-list';\nimport { MeetingListPreview } from '../blocks/meeting-list';\nimport { CopilotInfoPreview } from '../blocks/copilot-info';\nimport { ChatPreview } from '../blocks/chat';\nimport { PostPreview } from '../blocks/post';\nimport { UserPreview } from '../blocks/user';\nimport { CopilotPreview } from '../blocks/copilot';\nimport { SupportPreview } from '../blocks/support';\nimport { FileUnsortedListPreview } from '../blocks/file-unsorted-list';\nimport { MultidialogPreview } from '../blocks/multidialog';\nimport { TariffLimitPreview } from '../blocks/tariff-limit';\nimport { CollabHelpdeskPreview } from '../blocks/collab-helpdesk';\nimport { NotesPreview } from '../blocks/notes';\nimport { TaskPreview } from '../blocks/task';\n\nexport const ComponentMap = {\n\t[SidebarMainPanelBlock.chat]: ChatPreview,\n\t[SidebarMainPanelBlock.notes]: NotesPreview,\n\t[SidebarMainPanelBlock.post]: PostPreview,\n\t[SidebarMainPanelBlock.user]: UserPreview,\n\t[SidebarMainPanelBlock.support]: SupportPreview,\n\t[SidebarMainPanelBlock.info]: InfoPreview,\n\t[SidebarMainPanelBlock.fileList]: FileListPreview,\n\t[SidebarMainPanelBlock.task]: TaskPreview,\n\t[SidebarMainPanelBlock.taskList]: TaskListPreview,\n\t[SidebarMainPanelBlock.meetingList]: MeetingListPreview,\n\t[SidebarMainPanelBlock.fileUnsortedList]: FileUnsortedListPreview,\n\t[SidebarMainPanelBlock.marketAppList]: MarketAppListPreview,\n\t[SidebarMainPanelBlock.multidialog]: MultidialogPreview,\n\t[SidebarMainPanelBlock.copilot]: CopilotPreview,\n\t[SidebarMainPanelBlock.copilotInfo]: CopilotInfoPreview,\n\t[SidebarMainPanelBlock.tariffLimit]: TariffLimitPreview,\n\t[SidebarMainPanelBlock.collabHelpdesk]: CollabHelpdeskPreview,\n};\n","import './css/skeleton.css';\n\n// @vue/component\nexport const SidebarSkeleton = {\n\tname: 'SidebarSkeleton',\n\ttemplate: `\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`,\n};\n","import { Logger } from 'im.v2.lib.logger';\nimport { SidebarManager } from 'im.v2.lib.sidebar';\n\nimport { Main } from '../../../classes/panels/main';\n\nimport { MainHeader } from './components/header';\nimport { ComponentMap } from './config/component-map';\nimport { SidebarSkeleton } from '../../elements/skeleton/skeleton';\n\nimport './css/main-panel.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { BitrixVueComponentProps} from 'ui.vue3';\nimport type { ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const MainPanel = {\n\tname: 'MainPanel',\n\tcomponents: {\n\t\tMainHeader,\n\t\tSidebarSkeleton,\n\t},\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tblocks(): BitrixVueComponentProps[]\n\t\t{\n\t\t\tconst sidebarConfig = SidebarManager.getInstance().getConfig(this.dialogId);\n\t\t\tconst blocks = sidebarConfig.getBlocks(this.dialogId);\n\n\t\t\treturn blocks.map((block) => {\n\t\t\t\treturn ComponentMap[block];\n\t\t\t});\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tdialogInited(): boolean\n\t\t{\n\t\t\treturn this.dialog.inited;\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\thasInitialData(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/isInited'](this.chatId);\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tdialogId()\n\t\t{\n\t\t\tthis.initializeSidebar();\n\t\t},\n\t\tdialogInited()\n\t\t{\n\t\t\tthis.initializeSidebar();\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initializeSidebar();\n\t},\n\tmethods:\n\t{\n\t\tinitializeSidebar()\n\t\t{\n\t\t\tif (!this.dialogInited)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (this.hasInitialData)\n\t\t\t{\n\t\t\t\tthis.isLoading = false;\n\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.sidebarService = new Main({ dialogId: this.dialogId });\n\n\t\t\tthis.isLoading = true;\n\t\t\tthis.sidebarService.requestInitialData().then(() => {\n\t\t\t\tthis.isLoading = false;\n\t\t\t}).catch((error) => {\n\t\t\t\tLogger.warn('Sidebar: request initial data error:', error);\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","export function concatAndSortSearchResult(concatArrayFirst: number[], concatArraySecond: number[]): number[]\n{\n\treturn [...concatArrayFirst, ...concatArraySecond].sort((a, z) => z - a);\n}\n","import { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from '../helpers/get-chat-id';\nimport { getLastElementId } from '../helpers/get-last-element-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { RestClient } from 'rest.client';\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\ntype RestResponse = {\n\tlist: [],\n\tusers: [],\n};\n\ntype UrlGetQueryParams = {\n\tCHAT_ID: number,\n\tLIMIT: number,\n\tLAST_ID?: number,\n\tSEARCH_TASK_NAME?: string,\n}\n\nexport class TaskSearch\n{\n\tstore: Store;\n\tdialogId: string;\n\tchatId: number;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\thasMoreItemsToLoad: boolean = true;\n\t#query: string = '';\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tsearchOnServer(query: string): Promise<number[]>\n\t{\n\t\tif (this.#query !== query)\n\t\t{\n\t\t\tthis.#query = query;\n\t\t\tthis.hasMoreItemsToLoad = true;\n\t\t}\n\n\t\treturn this.request();\n\t}\n\n\tresetSearchState()\n\t{\n\t\tthis.#query = '';\n\t\tthis.hasMoreItemsToLoad = true;\n\t\tvoid this.store.dispatch('sidebar/tasks/clearSearch', {});\n\t}\n\n\tasync request(): Promise<number[]>\n\t{\n\t\tconst queryParams = this.getQueryParams();\n\t\tlet responseData: RestResponse = {};\n\t\ttry\n\t\t{\n\t\t\tconst response = await this.restClient.callMethod(RestMethod.imChatTaskGet, queryParams);\n\t\t\tresponseData = response.data();\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tconsole.error('SidebarSearch: Im.imChatTaskGet: page request error', error);\n\t\t}\n\n\t\treturn this.#processSearchResponse(responseData);\n\t}\n\n\t#processSearchResponse(response: RestResponse): Promise<number[]>\n\t{\n\t\treturn this.updateModels(response).then(() => {\n\t\t\treturn response.list.map((message) => message.messageId);\n\t\t});\n\t}\n\n\tgetQueryParams(): UrlGetQueryParams\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t\tSEARCH_TASK_NAME: this.#query,\n\t\t};\n\n\t\tconst lastId = this.store.getters['sidebar/tasks/getSearchResultCollectionLastId'](this.chatId);\n\t\tif (lastId > 0)\n\t\t{\n\t\t\tqueryParams.LAST_ID = lastId;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\tupdateModels(resultData: RestResponse): Promise\n\t{\n\t\tconst { list, users, tariffRestrictions = {} } = resultData;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\t\tconst hasNextPage = list.length === REQUEST_ITEMS_LIMIT;\n\t\tconst lastId = getLastElementId(list);\n\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tconst setTasksPromise = this.store.dispatch('sidebar/tasks/setSearch', {\n\t\t\tchatId: this.chatId,\n\t\t\ttasks: list,\n\t\t\thasNextPage,\n\t\t\tlastId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\treturn Promise.all([setTasksPromise, addUsersPromise]);\n\t}\n}\n","import './date-group.css';\n\n// @vue/component\nexport const DateGroup = {\n\tname: 'DateGroup',\n\tprops: {\n\t\tdateText: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { SearchInput } from 'im.v2.component.elements.search-input';\nimport { ChatButton, ButtonSize, ButtonColor } from 'im.v2.component.elements.button';\nimport { ChatType, Layout } from 'im.v2.const';\n\nimport './detail-header.css';\n\nimport type { ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const DetailHeader = {\n\tname: 'DetailHeader',\n\tcomponents: { ChatButton, SearchInput },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\twithAddButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\twithSearch: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisSearchHeaderOpened: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tdelayForFocusOnStart: {\n\t\t\ttype: Number || null,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\temits: ['back', 'addClick', 'changeQuery', 'toggleSearchPanelOpened'],\n\tcomputed:\n\t{\n\t\tButtonSize: () => ButtonSize,\n\t\tButtonColor: () => ButtonColor,\n\t\tisCopilotLayout(): boolean\n\t\t{\n\t\t\tconst { name: currentLayoutName } = this.$store.getters['application/getLayout'];\n\n\t\t\treturn currentLayoutName === Layout.copilot.name;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tisCollab(): boolean\n\t\t{\n\t\t\treturn this.dialog.type === ChatType.collab;\n\t\t},\n\t\taddButtonColor(): ButtonColor\n\t\t{\n\t\t\tif (this.isCollab)\n\t\t\t{\n\t\t\t\treturn this.ButtonColor.Collab;\n\t\t\t}\n\n\t\t\treturn this.ButtonColor.PrimaryLight;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import './css/detail-empty-search-state.css';\n\n// @vue/component\nexport const DetailEmptySearchState = {\n\tname: 'DetailEmptySearchState',\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsubTitle: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { DateFormatter, DateTemplate } from 'im.v2.lib.date-formatter';\n\ntype FormattableCollection = {\n\tdate: Date,\n};\n\ntype DateGroup = {\n\tid: number,\n\ttitle: string\n};\n\nexport class SidebarCollectionFormatter\n{\n\tcachedDateGroups: Object = {};\n\n\tformat(collection: FormattableCollection[]): Object[]\n\t{\n\t\tconst dateGroups = {};\n\n\t\tcollection.forEach((item) => {\n\t\t\tconst dateGroup = this.getDateGroup(item.date);\n\t\t\tif (!dateGroups[dateGroup.title])\n\t\t\t{\n\t\t\t\tdateGroups[dateGroup.title] = {\n\t\t\t\t\tdateGroupTitle: dateGroup.title,\n\t\t\t\t\titems: [],\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tdateGroups[dateGroup.title].items.push(item);\n\t\t});\n\n\t\treturn Object.values(dateGroups);\n\t}\n\n\tgetDateGroup(date: Date): DateGroup\n\t{\n\t\tconst INDEX_BETWEEN_DATE_AND_TIME = 10;\n\t\t// 2022-10-25T14:58:44.000Z => 2022-10-25\n\t\tconst shortDate = date.toJSON().slice(0, INDEX_BETWEEN_DATE_AND_TIME);\n\t\tif (this.cachedDateGroups[shortDate])\n\t\t{\n\t\t\treturn this.cachedDateGroups[shortDate];\n\t\t}\n\n\t\tthis.cachedDateGroups[shortDate] = {\n\t\t\tid: shortDate,\n\t\t\ttitle: DateFormatter.formatByTemplate(date, DateTemplate.dateGroup),\n\t\t};\n\n\t\treturn this.cachedDateGroups[shortDate];\n\t}\n\n\tdestroy()\n\t{\n\t\tthis.cachedDateGroups = {};\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\nimport { Runtime, Extension } from 'main.core';\n\nimport { Loader } from 'im.v2.component.elements.loader';\nimport { EntityCreator } from 'im.v2.lib.entity-creator';\nimport { PermissionManager } from 'im.v2.lib.permission';\nimport { EventType, SidebarDetailBlock, ActionByRole } from 'im.v2.const';\n\nimport { concatAndSortSearchResult } from '../../../classes/panels/helpers/concat-and-sort-search-result';\nimport { TariffLimit } from '../../elements/tariff-limit/tariff-limit';\nimport { TaskItem } from './task-item';\nimport { Task } from '../../../classes/panels/task';\nimport { TaskSearch } from '../../../classes/panels/search/task-search';\nimport { DateGroup } from '../../elements/date-group/date-group';\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\nimport { DetailEmptyState as StartState, DetailEmptyState } from '../../elements/detail-empty-state/detail-empty-state';\nimport { DetailEmptySearchState } from '../../elements/detail-empty-search-state/detail-empty-search-state';\nimport { TaskMenu } from '../../../classes/context-menu/task/task-menu';\nimport { SidebarCollectionFormatter } from '../../../classes/sidebar-collection-formatter';\n\nimport './css/task-panel.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat, ImModelSidebarTaskItem } from 'im.v2.model';\n\nconst DEFAULT_MIN_TOKEN_SIZE = 3;\n\n// @vue/component\nexport const TaskPanel = {\n\tname: 'TaskPanel',\n\tcomponents: {\n\t\tTaskItem,\n\t\tDateGroup,\n\t\tDetailHeader,\n\t\tDetailEmptyState,\n\t\tStartState,\n\t\tDetailEmptySearchState,\n\t\tLoader,\n\t\tTariffLimit,\n\t},\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tisSearchHeaderOpened: false,\n\t\t\tsearchQuery: '',\n\t\t\tsearchResult: [],\n\t\t\tcurrentServerQueries: 0,\n\t\t\tminTokenSize: DEFAULT_MIN_TOKEN_SIZE,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\ttasks(): ImModelSidebarTaskItem[]\n\t\t{\n\t\t\tif (this.isSearchHeaderOpened)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['sidebar/tasks/getSearchResultCollection'](this.chatId);\n\t\t\t}\n\n\t\t\treturn this.$store.getters['sidebar/tasks/get'](this.chatId);\n\t\t},\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\treturn this.collectionFormatter.format(this.tasks);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.formattedCollection.length === 0;\n\t\t},\n\t\tshowAddButton(): boolean\n\t\t{\n\t\t\treturn PermissionManager.getInstance().canPerformActionByRole(ActionByRole.createTask, this.dialogId);\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tpreparedQuery(): string\n\t\t{\n\t\t\treturn this.searchQuery.trim().toLowerCase();\n\t\t},\n\t\tisSearchQueryMinimumSize(): boolean\n\t\t{\n\t\t\treturn this.preparedQuery.length < this.minTokenSize;\n\t\t},\n\t\thasHistoryLimit(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/tasks/isHistoryLimitExceeded'](this.chatId);\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tpreparedQuery(newQuery: string, previousQuery: string)\n\t\t{\n\t\t\tif (newQuery === previousQuery)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.cleanSearchResult();\n\t\t\tthis.startSearch();\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.contextMenu = new TaskMenu();\n\t\tthis.service = new Task({ dialogId: this.dialogId });\n\t\tthis.serviceSearch = new TaskSearch({ dialogId: this.dialogId });\n\t\tthis.searchOnServerDelayed = Runtime.debounce(this.searchOnServer, 500, this);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.collectionFormatter.destroy();\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.sidebar');\n\t\t\tthis.minTokenSize = settings.get('minSearchTokenSize', DEFAULT_MIN_TOKEN_SIZE);\n\t\t},\n\t\tsearchOnServer(query: string)\n\t\t{\n\t\t\tthis.currentServerQueries++;\n\n\t\t\tthis.serviceSearch.searchOnServer(query).then((messageIds: string[]) => {\n\t\t\t\tif (query !== this.preparedQuery)\n\t\t\t\t{\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.searchResult = concatAndSortSearchResult(this.searchResult, messageIds);\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t}).finally(() => {\n\t\t\t\tthis.currentServerQueries--;\n\t\t\t\tthis.stopLoader();\n\t\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t\t{\n\t\t\t\t\tthis.cleanSearchResult();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tstopLoader()\n\t\t{\n\t\t\tif (this.currentServerQueries > 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tstartSearch()\n\t\t{\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tthis.cleanSearchResult();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.searchOnServerDelayed(this.preparedQuery);\n\t\t\t}\n\t\t},\n\t\tcleanSearchResult()\n\t\t{\n\t\t\tthis.serviceSearch.resetSearchState();\n\t\t\tthis.searchResult = [];\n\t\t},\n\t\tonChangeQuery(query: string)\n\t\t{\n\t\t\tthis.searchQuery = query;\n\t\t},\n\t\ttoggleSearchPanelOpened()\n\t\t{\n\t\t\tthis.isSearchHeaderOpened = !this.isSearchHeaderOpened;\n\t\t},\n\t\tonContextMenuClick(event, target)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\t...event,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, target);\n\t\t},\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.task });\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst nameGetter = this.searchQuery.length > 0 ? 'sidebar/tasks/hasNextPageSearch' : 'sidebar/tasks/hasNextPage';\n\t\t\tconst hasNextPage = this.$store.getters[nameGetter](this.chatId);\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event): Promise<void>\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tawait this.service.loadNextPage();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawait this.serviceSearch.request();\n\t\t\t}\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tonAddClick()\n\t\t{\n\t\t\t(new EntityCreator(this.chatId)).createTaskForChat();\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Dom } from 'main.core';\n\nimport '../css/detail-tabs.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarFileTab } from 'im.v2.model';\n\nconst ARROW_CONTROL_SIZE = 50;\n\n// @vue/component\nexport const DetailTabs = {\n\tname: 'DetailTabs',\n\tprops:\n\t{\n\t\ttabs: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t},\n\temits: ['tabSelect'],\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\thasLeftControl: false,\n\t\t\thasRightControl: false,\n\t\t\tcurrentElementIndex: 0,\n\t\t\thighlightOffsetLeft: 0,\n\t\t\thighlightWidth: 0,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\thighlightStyle(): JsonObject\n\t\t{\n\t\t\treturn {\n\t\t\t\tleft: `${this.highlightOffsetLeft}px`,\n\t\t\t\twidth: `${this.highlightWidth}px`,\n\t\t\t};\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tcurrentElementIndex(newIndex: number)\n\t\t{\n\t\t\tthis.updateHighlightPosition(newIndex);\n\t\t\tthis.$emit('tabSelect', this.tabs[newIndex]);\n\t\t\tthis.scrollToElement(newIndex);\n\t\t},\n\t},\n\tmounted()\n\t{\n\t\tif (this.$refs.tabs.scrollWidth > this.$refs.tabs.offsetWidth)\n\t\t{\n\t\t\tthis.hasRightControl = true;\n\t\t}\n\n\t\tthis.updateHighlightPosition(this.currentElementIndex);\n\t},\n\tmethods:\n\t{\n\t\tgetElementNodeByIndex(index: number): HTMLElement\n\t\t{\n\t\t\treturn [...this.$refs.tabs.children].filter((node) => {\n\t\t\t\treturn !Dom.hasClass(node, 'bx-sidebar-tabs-highlight');\n\t\t\t})[index];\n\t\t},\n\t\tupdateHighlightPosition(index: number)\n\t\t{\n\t\t\tconst element = this.getElementNodeByIndex(index);\n\t\t\tthis.highlightOffsetLeft = element.offsetLeft;\n\t\t\tthis.highlightWidth = element.offsetWidth;\n\t\t},\n\t\tscrollToElement(elementIndex: number)\n\t\t{\n\t\t\tconst element = this.getElementNodeByIndex(elementIndex);\n\t\t\tthis.$refs.tabs.scroll({ left: element.offsetLeft - ARROW_CONTROL_SIZE, behavior: 'smooth' });\n\t\t},\n\t\tonTabClick(event)\n\t\t{\n\t\t\tthis.currentElementIndex = event.index;\n\t\t},\n\t\tgetTabTitle(tab: ImModelSidebarFileTab): string\n\t\t{\n\t\t\tconst langPhraseCode = `IM_SIDEBAR_FILES_${tab.toUpperCase()}_TAB`;\n\n\t\t\treturn this.$Bitrix.Loc.getMessage(langPhraseCode);\n\t\t},\n\t\tisSelectedTab(index: number): boolean\n\t\t{\n\t\t\treturn index === this.currentElementIndex;\n\t\t},\n\t\tonLeftClick()\n\t\t{\n\t\t\tif (this.currentElementIndex <= 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.currentElementIndex--;\n\t\t},\n\t\tonRightClick()\n\t\t{\n\t\t\tif (this.currentElementIndex >= this.tabs.length - 1)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.currentElementIndex++;\n\t\t},\n\t\tupdateControlsVisibility()\n\t\t{\n\t\t\tthis.hasRightControl = this.$refs.tabs.scrollWidth > this.$refs.tabs.scrollLeft + this.$refs.tabs.clientWidth;\n\t\t\tthis.hasLeftControl = this.$refs.tabs.scrollLeft > 0;\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from '../helpers/get-chat-id';\nimport { getLastElementId } from '../helpers/get-last-element-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { RestClient } from 'rest.client';\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\ntype RestResponse = {\n\tfiles: [],\n\tlist: [],\n\tusers: [],\n};\n\ntype UrlGetQueryParams = {\n\tCHAT_ID: number,\n\tLIMIT: number,\n\tGROUP: string,\n\tSEARCH_FILE_NAME?: string,\n\tLAST_ID?: number,\n};\n\nexport class FileSearch\n{\n\tstore: Store;\n\tdialogId: string;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\thasMoreItemsToLoad: boolean = true;\n\t#query: string = '';\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tsearchOnServer(query: string, group: string): Promise<number[]>\n\t{\n\t\tif (this.#query !== query)\n\t\t{\n\t\t\tthis.#query = query;\n\t\t\tthis.hasMoreItemsToLoad = true;\n\t\t}\n\n\t\treturn this.request(group);\n\t}\n\n\tresetSearchState()\n\t{\n\t\tthis.#query = '';\n\t\tthis.hasMoreItemsToLoad = true;\n\t\tvoid this.store.dispatch('sidebar/files/clearSearch', {});\n\t}\n\n\tasync request(group: string): Promise<number[]>\n\t{\n\t\tconst queryParams = this.getQueryParams(group);\n\t\tlet responseData: RestResponse = {};\n\t\ttry\n\t\t{\n\t\t\tconst response = await this.restClient.callMethod(RestMethod.imChatFileGet, queryParams);\n\t\t\tresponseData = response.data();\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tconsole.error('SidebarSearch: Im.imChatFileGet: page request error', error);\n\t\t}\n\n\t\treturn this.#processSearchResponse(responseData);\n\t}\n\n\t#processSearchResponse(response: RestResponse): Promise<number[]>\n\t{\n\t\treturn this.updateModels(response).then(() => {\n\t\t\treturn response.files.map((file) => file.id);\n\t\t});\n\t}\n\n\tupdateModels(resultData: RestResponse): Promise\n\t{\n\t\tconst { list, users, files, tariffRestrictions = {} } = resultData;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\t\tconst historyLimitPromise = this.store.dispatch('sidebar/files/setHistoryLimitExceeded', {\n\t\t\tchatId: this.chatId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tconst setFilesPromise = this.store.dispatch('files/set', files);\n\n\t\tconst sortedGroups = {};\n\t\tlist.forEach((file) => {\n\t\t\tif (!sortedGroups[file.group])\n\t\t\t{\n\t\t\t\tsortedGroups[file.group] = [];\n\t\t\t}\n\t\t\tsortedGroups[file.group].push(file);\n\t\t});\n\n\t\tconst setSidebarFilesPromises = [];\n\t\tObject.keys(sortedGroups).forEach((group) => {\n\t\t\tconst listByType = sortedGroups[group];\n\t\t\tsetSidebarFilesPromises.push(\n\t\t\t\tthis.store.dispatch('sidebar/files/setSearch', {\n\t\t\t\t\tchatId: this.chatId,\n\t\t\t\t\tfiles: listByType,\n\t\t\t\t\tgroup,\n\t\t\t\t}),\n\t\t\t\tthis.store.dispatch('sidebar/files/setHasNextPageSearch', {\n\t\t\t\t\tchatId: this.chatId,\n\t\t\t\t\tgroup,\n\t\t\t\t\thasNextPage: listByType.length === REQUEST_ITEMS_LIMIT,\n\t\t\t\t}),\n\t\t\t\tthis.store.dispatch('sidebar/files/setLastIdSearch', {\n\t\t\t\t\tchatId: this.chatId,\n\t\t\t\t\tgroup,\n\t\t\t\t\tlastId: getLastElementId(listByType),\n\t\t\t\t}),\n\t\t\t);\n\t\t});\n\n\t\treturn Promise.all([\n\t\t\tsetFilesPromise, addUsersPromise, historyLimitPromise, ...setSidebarFilesPromises,\n\t\t]);\n\t}\n\n\tloadNextPage(group: string, searchQuery: string): Promise\n\t{\n\t\tif (this.#query !== searchQuery)\n\t\t{\n\t\t\tthis.#query = searchQuery;\n\t\t}\n\n\t\treturn this.request(group);\n\t}\n\n\tgetQueryParams(group: string): UrlGetQueryParams\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tSEARCH_FILE_NAME: this.#query,\n\t\t\tGROUP: group.toUpperCase(),\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t};\n\n\t\tconst lastId = this.store.getters['sidebar/files/getSearchResultCollectionLastId'](this.chatId, group);\n\t\tif (lastId > 0)\n\t\t{\n\t\t\tqueryParams.LAST_ID = lastId;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n}\n","import 'ui.viewer';\nimport { Type } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\nimport { FileViewerContext } from 'im.v2.const';\nimport { MessageAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport '../css/media-detail-item.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarFileItem, ImModelFile } from 'im.v2.model';\n\n// @vue/component\nexport const MediaDetailItem = {\n\tname: 'MediaDetailItem',\n\tcomponents: { MessageAvatar },\n\tprops: {\n\t\tfileItem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcontextDialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: ['contextMenuClick'],\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tshowContextButton: false,\n\t\t\tvideoDuration: 0,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tsidebarFileItem(): ImModelSidebarFileItem\n\t\t{\n\t\t\treturn this.fileItem;\n\t\t},\n\t\tfile(): ImModelFile\n\t\t{\n\t\t\treturn this.$store.getters['files/get'](this.sidebarFileItem.fileId, true);\n\t\t},\n\t\tpreviewPicture(): Object\n\t\t{\n\t\t\tif (!this.hasPreview)\n\t\t\t{\n\t\t\t\treturn {};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tbackgroundImage: `url('${this.imageSrc}')`,\n\t\t\t};\n\t\t},\n\t\thasPreview(): boolean\n\t\t{\n\t\t\treturn Type.isStringFilled(this.file.urlPreview);\n\t\t},\n\t\tisImage(): boolean\n\t\t{\n\t\t\treturn this.file.type === 'image';\n\t\t},\n\t\tisVideo(): boolean\n\t\t{\n\t\t\treturn this.file.type === 'video';\n\t\t},\n\t\tviewerAttributes(): Object\n\t\t{\n\t\t\treturn Utils.file.getViewerDataAttributes({\n\t\t\t\tviewerAttributes: this.file.viewerAttrs,\n\t\t\t\tpreviewImageSrc: this.imageSrc,\n\t\t\t\tcontext: FileViewerContext.sidebarTabMedia,\n\t\t\t});\n\t\t},\n\t\tvideoDurationText(): string\n\t\t{\n\t\t\tif (this.videoDuration === 0)\n\t\t\t{\n\t\t\t\treturn '--:--';\n\t\t\t}\n\n\t\t\treturn this.formatTime(this.videoDuration);\n\t\t},\n\t\tcanBeOpenedWithViewer(): boolean\n\t\t{\n\t\t\treturn this.file.viewerAttrs && BX.UI?.Viewer;\n\t\t},\n\t\timageSrc(): string\n\t\t{\n\t\t\tconst isAnimation = ['gif', 'webp'].includes(this.file.extension);\n\n\t\t\treturn isAnimation ? this.file.urlShow : this.file.urlPreview;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tformatTime(rawSeconds: number): string\n\t\t{\n\t\t\trawSeconds = Math.floor(rawSeconds);\n\t\t\tconst durationHours = Math.floor(rawSeconds / 60 / 60);\n\t\t\tif (durationHours > 0)\n\t\t\t{\n\t\t\t\trawSeconds -= durationHours * 60 * 60;\n\t\t\t}\n\n\t\t\tconst durationMinutes = Math.floor(rawSeconds / 60);\n\t\t\tif (durationMinutes > 0)\n\t\t\t{\n\t\t\t\trawSeconds -= durationMinutes * 60;\n\t\t\t}\n\n\t\t\tconst hours = durationHours > 0 ? `${durationHours}:` : '';\n\t\t\tconst minutes = hours > 0 ? `${durationMinutes.toString().padStart(2, '0')}:` : `${durationMinutes}:`;\n\t\t\tconst seconds = rawSeconds.toString().padStart(2, '0');\n\n\t\t\treturn hours + minutes + seconds;\n\t\t},\n\t\thandleVideoEvent()\n\t\t{\n\t\t\tif (!this.$refs.video)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.videoDuration = this.$refs.video.duration;\n\t\t},\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tthis.$emit('contextMenuClick', {\n\t\t\t\tsidebarFile: this.sidebarFileItem,\n\t\t\t\tfile: this.file,\n\t\t\t\tmessageId: this.sidebarFileItem.messageId,\n\t\t\t}, event.currentTarget);\n\t\t},\n\t\tdownload()\n\t\t{\n\t\t\tif (this.file.progress !== 100 || this.canBeOpenedWithViewer)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindow.open(this.file.urlDownload, '_blank');\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Store } from 'ui.vue3.vuex';\n\nimport { Core } from 'im.v2.application.core';\nimport { DiskService } from 'im.v2.provider.service.disk';\n\nimport type { ImModelSidebarFileItem } from 'im.v2.model';\n\nexport class FileManager\n{\n\tstore: Store;\n\n\tconstructor()\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.diskService = new DiskService();\n\t}\n\n\tdelete(sidebarFile: ImModelSidebarFileItem): void\n\t{\n\t\tvoid this.store.dispatch('sidebar/files/delete', {\n\t\t\tdialogId: sidebarFile.chatId,\n\t\t\tid: sidebarFile.id,\n\t\t});\n\n\t\tvoid this.diskService.delete({ chatId: sidebarFile.chatId, fileId: sidebarFile.fileId });\n\t}\n\n\tsaveOnDisk(fileIds: number[]): Promise\n\t{\n\t\treturn this.diskService.save(fileIds);\n\t}\n}\n","import 'ui.viewer';\nimport { Loc, Dom } from 'main.core';\n\nimport { SidebarMenu } from '../sidebar-base-menu';\nimport { FileManager } from './file-manager';\n\nimport { Notifier } from 'im.v2.lib.notifier';\n\nimport type { MenuItem } from 'im.v2.lib.menu';\nimport type { ImModelFile, ImModelSidebarFileItem } from 'im.v2.model';\n\ntype MediaMenuContext = {\n\tsidebarFile: ImModelSidebarFileItem,\n\tfile: ImModelFile,\n\tmessageId: number,\n\tdialogId: string,\n}\n\nexport class FileMenu extends SidebarMenu\n{\n\tcontext: MediaMenuContext;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis.id = 'im-sidebar-context-menu';\n\t\tthis.mediaManager = new FileManager();\n\t}\n\n\tgetMenuItems(): MenuItem[]\n\t{\n\t\treturn [\n\t\t\tthis.getOpenContextMessageItem(),\n\t\t\tthis.getDownloadFileItem(),\n\t\t\tthis.getSaveFileOnDiskItem(),\n\t\t\tthis.getDeleteFileItem(),\n\t\t];\n\t}\n\n\tgetDownloadFileItem(): ?MenuItem\n\t{\n\t\tif (!this.context.file.urlDownload)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\thtml: this.getDownloadHtml(this.context.file.urlDownload, this.context.file.name),\n\t\t\tonclick: function() {\n\t\t\t\tthis.menuInstance.close();\n\t\t\t}.bind(this),\n\t\t};\n\t}\n\n\tgetSaveFileOnDiskItem(): ?MenuItem\n\t{\n\t\tif (!this.context.sidebarFile.fileId)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_SAVE_FILE_ON_DISK_MSGVER_1'),\n\t\t\tonclick: async function() {\n\t\t\t\tthis.menuInstance.close();\n\t\t\t\tawait this.mediaManager.saveOnDisk([this.context.sidebarFile.fileId]);\n\t\t\t\tNotifier.file.onDiskSaveComplete();\n\t\t\t}.bind(this),\n\t\t};\n\t}\n\n\tgetDeleteFileItem(): MenuItem\n\t{\n\t\tif (this.getCurrentUserId() !== this.context.sidebarFile.authorId)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_DELETE_FILE'),\n\t\t\tonclick: function() {\n\t\t\t\tthis.mediaManager.delete(this.context.sidebarFile);\n\t\t\t\tthis.menuInstance.close();\n\t\t\t}.bind(this),\n\t\t};\n\t}\n\n\tgetDownloadHtml(urlDownload: string, fileName: string): HTMLAnchorElement\n\t{\n\t\tconst a = Dom.create('a', {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_DOWNLOAD_FILE'),\n\t\t});\n\n\t\tDom.style(a, 'display', 'block');\n\t\tDom.style(a, 'color', 'inherit');\n\t\tDom.style(a, 'text-decoration', 'inherit');\n\n\t\ta.setAttribute('href', urlDownload);\n\t\ta.setAttribute('download', fileName);\n\n\t\treturn a;\n\t}\n}\n","import { SidebarDetailBlock, SidebarFileGroups } from 'im.v2.const';\nimport { Loader } from 'im.v2.component.elements.loader';\n\nimport { File } from '../../../../classes/panels/file';\nimport { FileSearch } from '../../../../classes/panels/search/file-search';\nimport { DateGroup } from '../../../elements/date-group/date-group';\nimport { MediaDetailItem } from './media-detail-item';\nimport { DetailEmptyState as StartState, DetailEmptyState } from '../../../elements/detail-empty-state/detail-empty-state';\nimport { DetailEmptySearchState } from '../../../elements/detail-empty-search-state/detail-empty-search-state';\nimport { FileMenu } from '../../../../classes/context-menu/file/file-menu';\nimport { SidebarCollectionFormatter } from '../../../../classes/sidebar-collection-formatter';\nimport { Extension } from 'main.core';\n\nimport '../css/media-tab.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarFileItem, ImModelChat } from 'im.v2.model';\n\nconst DEFAULT_MIN_TOKEN_SIZE = 3;\n\n// @vue/component\nexport const MediaTab = {\n\tname: 'MediaTab',\n\tcomponents: { DateGroup, MediaDetailItem, DetailEmptyState, StartState, DetailEmptySearchState, Loader },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchResult: {\n\t\t\ttype: Array,\n\t\t\trequired: false,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tisSearch: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t},\n\t\tisLoadingSearch: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tminTokenSize: DEFAULT_MIN_TOKEN_SIZE,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tfiles(): ImModelSidebarFileItem[]\n\t\t{\n\t\t\tif (this.isSearch)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['sidebar/files/getSearchResultCollection'](this.chatId, SidebarFileGroups.media);\n\t\t\t}\n\n\t\t\treturn this.$store.getters['sidebar/files/get'](this.chatId, SidebarFileGroups.media);\n\t\t},\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\treturn this.collectionFormatter.format(this.files);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.formattedCollection.length === 0;\n\t\t},\n\t\tisSearchQueryMinimumSize(): boolean\n\t\t{\n\t\t\treturn this.searchQuery.length < this.minTokenSize;\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.service = new File({ dialogId: this.dialogId });\n\t\tthis.serviceSearch = new FileSearch({ dialogId: this.dialogId });\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.contextMenu = new FileMenu();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.collectionFormatter.destroy();\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.sidebar');\n\t\t\tthis.minTokenSize = settings.get('minSearchTokenSize', DEFAULT_MIN_TOKEN_SIZE);\n\t\t},\n\t\tonContextMenuClick(event, target)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\t...event,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, target);\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst nameGetter = this.searchQuery.length > 0 ? 'sidebar/files/hasNextPageSearch' : 'sidebar/files/hasNextPage';\n\t\t\tconst hasNextPage = this.$store.getters[nameGetter](this.chatId, SidebarFileGroups.media);\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event)\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tawait this.service.loadNextPage(SidebarFileGroups.media);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawait this.serviceSearch.loadNextPage(SidebarFileGroups.media, this.searchQuery);\n\t\t\t}\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { ImModelSidebarFileItem, ImModelFile } from 'im.v2.model';\nimport { AudioPlayer } from 'im.v2.component.elements.audioplayer';\n\nimport '../css/audio-detail-item.css';\n\n// @vue/component\nexport const AudioDetailItem = {\n\tname: 'AudioDetailItem',\n\tcomponents: { AudioPlayer },\n\tprops: {\n\t\tid: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tfileItem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\temits: ['contextMenuClick'],\n\tdata() {\n\t\treturn {\n\t\t\ttimelineType: 0,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tsidebarFileItem(): ImModelSidebarFileItem\n\t\t{\n\t\t\treturn this.fileItem;\n\t\t},\n\t\tfile(): ImModelFile\n\t\t{\n\t\t\treturn this.$store.getters['files/get'](this.sidebarFileItem.fileId, true);\n\t\t},\n\t\taudioUrl(): string\n\t\t{\n\t\t\treturn this.file.urlDownload;\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.timelineType = Math.floor(Math.random() * 5);\n\t},\n\tmethods:\n\t{\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tthis.$emit('contextMenuClick', {\n\t\t\t\tsidebarFile: this.sidebarFileItem,\n\t\t\t\tfile: this.file,\n\t\t\t\tmessageId: this.sidebarFileItem.messageId,\n\t\t\t}, event.currentTarget);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { SidebarDetailBlock, SidebarFileGroups } from 'im.v2.const';\nimport { Loader } from 'im.v2.component.elements.loader';\n\nimport { File } from '../../../../classes/panels/file';\nimport { FileSearch } from '../../../../classes/panels/search/file-search';\nimport { DateGroup } from '../../../elements/date-group/date-group';\nimport { AudioDetailItem } from './audio-detail-item';\nimport { DetailEmptyState as StartState, DetailEmptyState } from '../../../elements/detail-empty-state/detail-empty-state';\nimport { DetailEmptySearchState } from '../../../elements/detail-empty-search-state/detail-empty-search-state';\nimport { FileMenu } from '../../../../classes/context-menu/file/file-menu';\nimport { SidebarCollectionFormatter } from '../../../../classes/sidebar-collection-formatter';\nimport { Extension } from 'main.core';\n\nimport '../css/audio-tab.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat, ImModelSidebarFileItem } from 'im.v2.model';\n\nconst DEFAULT_MIN_TOKEN_SIZE = 3;\n\n// @vue/component\nexport const AudioTab = {\n\tname: 'AudioTab',\n\tcomponents: { DetailEmptyState, AudioDetailItem, DateGroup, StartState, DetailEmptySearchState, Loader },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchResult: {\n\t\t\ttype: Array,\n\t\t\trequired: false,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tisSearch: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t},\n\t\tisLoadingSearch: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tminTokenSize: DEFAULT_MIN_TOKEN_SIZE,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tfiles(): ImModelSidebarFileItem[]\n\t\t{\n\t\t\tif (this.isSearch)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['sidebar/files/getSearchResultCollection'](this.chatId, SidebarFileGroups.audio);\n\t\t\t}\n\n\t\t\treturn this.$store.getters['sidebar/files/get'](this.chatId, SidebarFileGroups.audio);\n\t\t},\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\treturn this.collectionFormatter.format(this.files);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.formattedCollection.length === 0;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tisSearchQueryMinimumSize(): boolean\n\t\t{\n\t\t\treturn this.searchQuery.length < this.minTokenSize;\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.service = new File({ dialogId: this.dialogId });\n\t\tthis.serviceSearch = new FileSearch({ dialogId: this.dialogId });\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.contextMenu = new FileMenu();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.collectionFormatter.destroy();\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.sidebar');\n\t\t\tthis.minTokenSize = settings.get('minSearchTokenSize', DEFAULT_MIN_TOKEN_SIZE);\n\t\t},\n\t\tonContextMenuClick(event, target)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\t...event,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, target);\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst nameGetter = this.searchQuery.length > 0 ? 'sidebar/files/hasNextPageSearch' : 'sidebar/files/hasNextPage';\n\t\t\tconst hasNextPage = this.$store.getters[nameGetter](this.chatId, SidebarFileGroups.audio);\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event)\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tawait this.service.loadNextPage(SidebarFileGroups.audio);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawait this.serviceSearch.loadNextPage(SidebarFileGroups.audio, this.searchQuery);\n\t\t\t}\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import 'ui.icons';\nimport { Text } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\nimport { FileViewerContext } from 'im.v2.const';\nimport { highlightText } from 'im.v2.lib.text-highlighter';\nimport { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { MessageAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport '../css/brief-item.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarFileItem, ImModelFile } from 'im.v2.model';\n\n// @vue/component\nexport const BriefItem = {\n\tname: 'BriefItem',\n\tcomponents: { MessageAvatar, ChatTitle },\n\tprops: {\n\t\tbrief: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcontextDialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: false,\n\t\t},\n\t},\n\temits: ['contextMenuClick'],\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tshowContextButton: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tsidebarFileItem(): ImModelSidebarFileItem\n\t\t{\n\t\t\treturn this.brief;\n\t\t},\n\t\tfile(): ImModelFile\n\t\t{\n\t\t\treturn this.$store.getters['files/get'](this.sidebarFileItem.fileId, true);\n\t\t},\n\t\tfileShortName(): string\n\t\t{\n\t\t\tconst NAME_MAX_LENGTH = 15;\n\t\t\tconst shortName = Utils.file.getShortFileName(this.file.name, NAME_MAX_LENGTH);\n\t\t\tif (this.searchQuery.length === 0)\n\t\t\t{\n\t\t\t\treturn Text.encode(shortName);\n\t\t\t}\n\n\t\t\treturn highlightText(Text.encode(shortName), this.searchQuery);\n\t\t},\n\t\tfileSize(): string\n\t\t{\n\t\t\treturn Utils.file.formatFileSize(this.file.size);\n\t\t},\n\t\tviewerAttributes(): Object\n\t\t{\n\t\t\treturn Utils.file.getViewerDataAttributes({\n\t\t\t\tviewerAttributes: this.file.viewerAttrs,\n\t\t\t\tpreviewImageSrc: this.file.urlPreview,\n\t\t\t\tcontext: FileViewerContext.sidebarTabBriefs,\n\t\t\t});\n\t\t},\n\t\tisViewerAvailable(): boolean\n\t\t{\n\t\t\treturn Object.keys(this.viewerAttributes).length > 0;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tdownload()\n\t\t{\n\t\t\tif (this.isViewerAvailable)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindow.open(this.file.urlDownload, '_blank');\n\t\t},\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tthis.$emit('contextMenuClick', {\n\t\t\t\tsidebarFile: this.sidebarFileItem,\n\t\t\t\tfile: this.file,\n\t\t\t\tmessageId: this.sidebarFileItem.messageId,\n\t\t\t}, event.currentTarget);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { SidebarFileGroups, SidebarDetailBlock } from 'im.v2.const';\nimport { Loader } from 'im.v2.component.elements.loader';\n\nimport { File } from '../../../../classes/panels/file';\nimport { FileSearch } from '../../../../classes/panels/search/file-search';\nimport { BriefItem } from './brief-item';\nimport { DateGroup } from '../../../elements/date-group/date-group';\nimport { DetailEmptyState as StartState, DetailEmptyState } from '../../../elements/detail-empty-state/detail-empty-state';\nimport { DetailEmptySearchState } from '../../../elements/detail-empty-search-state/detail-empty-search-state';\nimport { FileMenu } from '../../../../classes/context-menu/file/file-menu';\nimport { SidebarCollectionFormatter } from '../../../../classes/sidebar-collection-formatter';\nimport { Extension } from 'main.core';\n\nimport '../css/brief-tab.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat, ImModelSidebarFileItem } from 'im.v2.model';\n\nconst DEFAULT_MIN_TOKEN_SIZE = 3;\n\n// @vue/component\nexport const BriefTab = {\n\tname: 'BriefTab',\n\tcomponents: { DateGroup, BriefItem, DetailEmptyState, StartState, DetailEmptySearchState, Loader },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchResult: {\n\t\t\ttype: Array,\n\t\t\trequired: false,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tisSearch: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t},\n\t\tisLoadingSearch: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tminTokenSize: DEFAULT_MIN_TOKEN_SIZE,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tfiles(): ImModelSidebarFileItem[]\n\t\t{\n\t\t\tif (this.isSearch)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['sidebar/files/getSearchResultCollection'](this.chatId, SidebarFileGroups.brief);\n\t\t\t}\n\n\t\t\treturn this.$store.getters['sidebar/files/get'](this.chatId, SidebarFileGroups.brief);\n\t\t},\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\treturn this.collectionFormatter.format(this.files);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.formattedCollection.length === 0;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tisSearchQueryMinimumSize(): boolean\n\t\t{\n\t\t\treturn this.searchQuery.length < this.minTokenSize;\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.service = new File({ dialogId: this.dialogId });\n\t\tthis.serviceSearch = new FileSearch({ dialogId: this.dialogId });\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.contextMenu = new FileMenu();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.collectionFormatter.destroy();\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.sidebar');\n\t\t\tthis.minTokenSize = settings.get('minSearchTokenSize', DEFAULT_MIN_TOKEN_SIZE);\n\t\t},\n\t\tonContextMenuClick(event, target)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\t...event,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, target);\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst nameGetter = this.searchQuery.length > 0 ? 'sidebar/files/hasNextPageSearch' : 'sidebar/files/hasNextPage';\n\t\t\tconst hasNextPage = this.$store.getters[nameGetter](this.chatId, SidebarFileGroups.brief);\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event)\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tawait this.service.loadNextPage(SidebarFileGroups.brief);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawait this.serviceSearch.loadNextPage(SidebarFileGroups.brief, this.searchQuery);\n\t\t\t}\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import 'ui.icons';\nimport { Text } from 'main.core';\n\nimport { Utils } from 'im.v2.lib.utils';\nimport { highlightText } from 'im.v2.lib.text-highlighter';\nimport { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { MessageAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport '../css/file-detail-item.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarFileItem, ImModelFile } from 'im.v2.model';\n\n// @vue/component\nexport const FileDetailItem = {\n\tname: 'FileDetailItem',\n\tcomponents: { MessageAvatar, ChatTitle },\n\tprops: {\n\t\tfileItem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcontextDialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t\trequired: false,\n\t\t},\n\t\tviewerContext: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\temits: ['contextMenuClick'],\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tshowContextButton: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tsidebarFileItem(): ImModelSidebarFileItem\n\t\t{\n\t\t\treturn this.fileItem;\n\t\t},\n\t\tfile(): ImModelFile\n\t\t{\n\t\t\treturn this.$store.getters['files/get'](this.sidebarFileItem.fileId, true);\n\t\t},\n\t\tfileIconClass(): string\n\t\t{\n\t\t\treturn `ui-icon ui-icon-file-${this.file.icon}`;\n\t\t},\n\t\tfileShortName(): string\n\t\t{\n\t\t\tconst NAME_MAX_LENGTH = 15;\n\t\t\tconst shortName = Utils.file.getShortFileName(this.file.name, NAME_MAX_LENGTH);\n\n\t\t\tif (this.searchQuery.length === 0)\n\t\t\t{\n\t\t\t\treturn Text.encode(shortName);\n\t\t\t}\n\n\t\t\treturn highlightText(Text.encode(shortName), this.searchQuery);\n\t\t},\n\t\tfileSize(): string\n\t\t{\n\t\t\treturn Utils.file.formatFileSize(this.file.size);\n\t\t},\n\t\tviewerAttributes(): Object\n\t\t{\n\t\t\treturn Utils.file.getViewerDataAttributes({\n\t\t\t\tviewerAttributes: this.file.viewerAttrs,\n\t\t\t\tpreviewImageSrc: this.file.urlPreview,\n\t\t\t\tcontext: this.viewerContext,\n\t\t\t});\n\t\t},\n\t\tisViewerAvailable(): boolean\n\t\t{\n\t\t\treturn Object.keys(this.viewerAttributes).length > 0;\n\t\t},\n\t\tauthorId(): number\n\t\t{\n\t\t\treturn this.sidebarFileItem.authorId;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tdownload()\n\t\t{\n\t\t\tif (this.isViewerAvailable)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\twindow.open(this.file.urlDownload, '_blank');\n\t\t},\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tthis.$emit('contextMenuClick', {\n\t\t\t\tsidebarFile: this.sidebarFileItem,\n\t\t\t\tfile: this.file,\n\t\t\t\tmessageId: this.sidebarFileItem.messageId,\n\t\t\t}, event.currentTarget);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Extension } from 'main.core';\n\nimport { Loader } from 'im.v2.component.elements.loader';\nimport { SidebarDetailBlock, SidebarFileGroups, FileViewerContext } from 'im.v2.const';\n\nimport { File } from '../../../../classes/panels/file';\nimport { FileDetailItem } from './file-detail-item';\nimport { DateGroup } from '../../../elements/date-group/date-group';\nimport { FileMenu } from '../../../../classes/context-menu/file/file-menu';\nimport { FileSearch } from '../../../../classes/panels/search/file-search';\nimport { SidebarCollectionFormatter } from '../../../../classes/sidebar-collection-formatter';\nimport { DetailEmptySearchState } from '../../../elements/detail-empty-search-state/detail-empty-search-state';\nimport { DetailEmptyState as StartState, DetailEmptyState } from '../../../elements/detail-empty-state/detail-empty-state';\n\nimport '../css/file-tab.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat, ImModelSidebarFileItem } from 'im.v2.model';\n\nconst DEFAULT_MIN_TOKEN_SIZE = 3;\n\n// @vue/component\nexport const FileTab = {\n\tname: 'FileTab',\n\tcomponents: { DateGroup, FileDetailItem, DetailEmptyState, StartState, DetailEmptySearchState, Loader },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchResult: {\n\t\t\ttype: Array,\n\t\t\trequired: false,\n\t\t\tdefault: () => [],\n\t\t},\n\t\tisSearch: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t},\n\t\tisLoadingSearch: {\n\t\t\ttype: Boolean,\n\t\t\trequired: false,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tminTokenSize: DEFAULT_MIN_TOKEN_SIZE,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tFileViewerContext: () => FileViewerContext,\n\t\tfiles(): ImModelSidebarFileItem[]\n\t\t{\n\t\t\tif (this.isSearch)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['sidebar/files/getSearchResultCollection'](this.chatId, SidebarFileGroups.file);\n\t\t\t}\n\n\t\t\treturn this.$store.getters['sidebar/files/get'](this.chatId, SidebarFileGroups.file);\n\t\t},\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\treturn this.collectionFormatter.format(this.files);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.formattedCollection.length === 0;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tisSearchQueryMinimumSize(): boolean\n\t\t{\n\t\t\treturn this.searchQuery.length < this.minTokenSize;\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.service = new File({ dialogId: this.dialogId });\n\t\tthis.serviceSearch = new FileSearch({ dialogId: this.dialogId });\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.contextMenu = new FileMenu();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.collectionFormatter.destroy();\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.sidebar');\n\t\t\tthis.minTokenSize = settings.get('minSearchTokenSize', DEFAULT_MIN_TOKEN_SIZE);\n\t\t},\n\t\tonContextMenuClick(event, target)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\t...event,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, target);\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst nameGetter = this.searchQuery.length > 0 ? 'sidebar/files/hasNextPageSearch' : 'sidebar/files/hasNextPage';\n\t\t\tconst hasNextPage = this.$store.getters[nameGetter](this.chatId, SidebarFileGroups.file);\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event)\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tawait this.service.loadNextPage(SidebarFileGroups.file);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawait this.serviceSearch.loadNextPage(SidebarFileGroups.file, this.searchQuery);\n\t\t\t}\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\nimport { Text, Runtime, Extension } from 'main.core';\n\nimport { Loader } from 'im.v2.component.elements.loader';\nimport { Feature, FeatureManager } from 'im.v2.lib.feature';\nimport { SidebarFileTabGroups, SidebarDetailBlock, EventType } from 'im.v2.const';\n\nimport { File } from '../../../classes/panels/file';\nimport { DetailTabs } from './components/detail-tabs';\nimport { MediaTab } from './components/media-tab';\nimport { AudioTab } from './components/audio-tab';\nimport { BriefTab } from './components/brief-tab';\nimport { FileTab } from './components/file-tab';\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\nimport { TariffLimit } from '../../elements/tariff-limit/tariff-limit';\nimport { FileSearch } from '../../../classes/panels/search/file-search';\nimport { concatAndSortSearchResult } from '../../../classes/panels/helpers/concat-and-sort-search-result';\n\nimport './css/file-panel.css';\n\nimport type { ImModelChat } from 'im.v2.model';\nimport type { JsonObject } from 'main.core';\n\nconst DEFAULT_MIN_TOKEN_SIZE = 3;\n\n// @vue/component\nexport const FilePanel = {\n\tname: 'FilePanel',\n\tcomponents: { DetailHeader, DetailTabs, MediaTab, AudioTab, FileTab, BriefTab, Loader, TariffLimit },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\ttab: SidebarFileTabGroups.media,\n\t\t\tisSearchHeaderOpened: false,\n\t\t\tsearchQuery: '',\n\t\t\tsearchResult: [],\n\t\t\tcurrentServerQueries: 0,\n\t\t\tisLoading: false,\n\t\t\tminTokenSize: DEFAULT_MIN_TOKEN_SIZE,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\ttabComponentName(): string\n\t\t{\n\t\t\treturn `${Text.capitalize(this.tab)}Tab`;\n\t\t},\n\t\ttabs(): string[]\n\t\t{\n\t\t\tconst tabTypes = Object.values(SidebarFileTabGroups);\n\t\t\tconst canShowBriefs = FeatureManager.isFeatureAvailable(Feature.sidebarBriefs);\n\t\t\tif (!canShowBriefs)\n\t\t\t{\n\t\t\t\treturn tabTypes.filter((tab) => tab !== SidebarDetailBlock.brief);\n\t\t\t}\n\n\t\t\treturn tabTypes;\n\t\t},\n\t\tpreparedQuery(): string\n\t\t{\n\t\t\treturn this.searchQuery.trim().toLowerCase();\n\t\t},\n\t\tisSearchQueryMinimumSize(): boolean\n\t\t{\n\t\t\treturn this.preparedQuery.length < this.minTokenSize;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\thasHistoryLimit(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/files/isHistoryLimitExceeded'](this.chatId);\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tpreparedQuery(newQuery: string, previousQuery: string)\n\t\t{\n\t\t\tif (newQuery === previousQuery)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.cleanSearchResult();\n\t\t\tthis.startSearch();\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.service = new File({ dialogId: this.dialogId, tab: this.tab });\n\t\tthis.serviceSearch = new FileSearch({ dialogId: this.dialogId, tab: this.tab });\n\t\tthis.searchOnServerDelayed = Runtime.debounce(this.searchOnServer, 500, this);\n\t},\n\tmethods:\n\t{\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.sidebar');\n\t\t\tthis.minTokenSize = settings.get('minSearchTokenSize', DEFAULT_MIN_TOKEN_SIZE);\n\t\t},\n\t\tsearchOnServer(query: string)\n\t\t{\n\t\t\tthis.currentServerQueries++;\n\n\t\t\tthis.serviceSearch.searchOnServer(query, this.tab).then((messageIds: string[]) => {\n\t\t\t\tif (query !== this.preparedQuery)\n\t\t\t\t{\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.searchResult = concatAndSortSearchResult(this.searchResult, messageIds);\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t}).finally(() => {\n\t\t\t\tthis.currentServerQueries--;\n\t\t\t\tthis.stopLoader();\n\t\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t\t{\n\t\t\t\t\tthis.cleanSearchResult();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tstopLoader()\n\t\t{\n\t\t\tif (this.currentServerQueries > 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tstartSearch()\n\t\t{\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tthis.cleanSearchResult();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.searchOnServerDelayed(this.preparedQuery);\n\t\t\t}\n\t\t},\n\t\tcleanSearchResult()\n\t\t{\n\t\t\tthis.serviceSearch.resetSearchState();\n\t\t\tthis.searchResult = [];\n\t\t},\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.file });\n\t\t},\n\t\tonTabSelect(tabName: $Keys<typeof SidebarFileTabGroups>)\n\t\t{\n\t\t\tthis.tab = tabName;\n\t\t\tif (!this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tthis.cleanSearchResult();\n\t\t\t\tthis.startSearch();\n\t\t\t}\n\t\t},\n\t\tonChangeQuery(query: string)\n\t\t{\n\t\t\tthis.searchQuery = query;\n\t\t},\n\t\ttoggleSearchPanelOpened()\n\t\t{\n\t\t\tthis.isSearchHeaderOpened = !this.isSearchHeaderOpened;\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\n\nimport { Loader } from 'im.v2.component.elements.loader';\nimport { EventType, FileViewerContext, SidebarDetailBlock, SidebarFileGroups } from 'im.v2.const';\n\nimport { DateGroup } from '../../elements/date-group/date-group';\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\nimport { FileUnsorted } from '../../../classes/panels/file-unsorted';\nimport { DetailEmptyState } from '../../elements/detail-empty-state/detail-empty-state';\nimport { FileMenu } from '../../../classes/context-menu/file/file-menu';\nimport { TariffLimit } from '../../elements/tariff-limit/tariff-limit';\nimport { FileDetailItem } from '../file/components/file-detail-item';\nimport { SidebarCollectionFormatter } from '../../../classes/sidebar-collection-formatter';\n\nimport './detail.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarFileItem, ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const FileUnsortedPanel = {\n\tname: 'FileUnsortedPanel',\n\tcomponents: { DateGroup, FileDetailItem, DetailEmptyState, DetailHeader, Loader, TariffLimit },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tFileViewerContext: () => FileViewerContext,\n\t\tfiles(): ImModelSidebarFileItem[]\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/files/get'](this.chatId, SidebarFileGroups.fileUnsorted);\n\t\t},\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\treturn this.collectionFormatter.format(this.files);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.formattedCollection.length === 0;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\thasHistoryLimit(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/files/isHistoryLimitExceeded'](this.chatId);\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.service = new FileUnsorted({ dialogId: this.dialogId });\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.contextMenu = new FileMenu();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.collectionFormatter.destroy();\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst hasNextPage = this.$store.getters['sidebar/files/hasNextPage'](this.chatId, SidebarFileGroups.fileUnsorted);\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event)\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.service.loadNextPage();\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tonContextMenuClick(event, target)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\t...event,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, target);\n\t\t},\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.fileUnsorted });\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Text } from 'main.core';\n\nimport { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { MessageAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\nimport { Utils } from 'im.v2.lib.utils';\nimport { highlightText } from 'im.v2.lib.text-highlighter';\n\nimport './css/link-item.css';\n\nimport type { ImModelSidebarLinkItem } from 'im.v2.model';\n\n// @vue/component\nexport const LinkItem = {\n\tname: 'LinkItem',\n\tcomponents: { MessageAvatar, ChatTitle },\n\tprops:\n\t{\n\t\tlink: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tcontextDialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\temits: ['contextMenuClick'],\n\tdata(): { showContextButton: boolean } {\n\t\treturn {\n\t\t\tshowContextButton: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tlinkItem(): ImModelSidebarLinkItem\n\t\t{\n\t\t\treturn this.link;\n\t\t},\n\t\tsource(): string\n\t\t{\n\t\t\treturn this.linkItem.source;\n\t\t},\n\t\tshortDescription(): string\n\t\t{\n\t\t\tlet hostName = '';\n\t\t\ttry\n\t\t\t{\n\t\t\t\thostName = new URL(this.source).hostname;\n\t\t\t}\n\t\t\tcatch (error)\n\t\t\t{\n\t\t\t\thostName = this.source;\n\t\t\t\tconsole.error(error);\n\t\t\t}\n\n\t\t\treturn hostName;\n\t\t},\n\t\tdescription(): string\n\t\t{\n\t\t\tconst { name, description } = this.linkItem.richData;\n\t\t\tconst descriptionToShow = description || name || this.source;\n\n\t\t\tif (this.searchQuery.length === 0)\n\t\t\t{\n\t\t\t\treturn Utils.text.convertHtmlEntities(descriptionToShow);\n\t\t\t}\n\n\t\t\treturn highlightText(Text.encode(descriptionToShow), this.searchQuery);\n\t\t},\n\t\tauthorDialogId(): string\n\t\t{\n\t\t\treturn this.linkItem.authorId.toString();\n\t\t},\n\t\thasPreview(): boolean\n\t\t{\n\t\t\treturn Boolean(this.linkItem.richData?.previewUrl);\n\t\t},\n\t\tpreviewStyles(): Object\n\t\t{\n\t\t\treturn {\n\t\t\t\tbackgroundImage: `url('${this.linkItem.richData?.previewUrl}')`,\n\t\t\t\tbackgroundSize: 'cover',\n\t\t\t\tbackgroundRepeat: 'no-repeat',\n\t\t\t};\n\t\t},\n\t\ticonTypeClass(): string\n\t\t{\n\t\t\tswitch (this.linkItem.richData?.type)\n\t\t\t{\n\t\t\t\tcase 'TASKS':\n\t\t\t\t\treturn '--task';\n\t\t\t\tcase 'LANDING':\n\t\t\t\t\treturn '--landing';\n\t\t\t\tcase 'POST':\n\t\t\t\t\treturn '--post';\n\t\t\t\tcase 'CALENDAR':\n\t\t\t\t\treturn '--calendar';\n\t\t\t\tdefault:\n\t\t\t\t\treturn '--common';\n\t\t\t}\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tthis.$emit('contextMenuClick', {\n\t\t\t\tid: this.linkItem.id,\n\t\t\t\tauthorId: this.linkItem.authorId,\n\t\t\t\tmessageId: this.linkItem.messageId,\n\t\t\t\tsource: this.source,\n\t\t\t\ttarget: event.currentTarget,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Type } from 'main.core';\n\nimport { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from '../helpers/get-chat-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { RestClient } from 'rest.client';\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\ntype UrlGetQueryParams = {\n\tCHAT_ID: number,\n\tLIMIT: number,\n\tOFFSET?: number,\n\tSEARCH_URL?: string,\n}\n\ntype RestResponse = {\n\tlist: [],\n\tusers: [],\n};\n\nexport class LinkSearch\n{\n\tstore: Store;\n\tdialogId: string;\n\tchatId: number;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\thasMoreItemsToLoad: boolean = true;\n\t#query: string = '';\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tsearchOnServer(query: string): Promise<number[]>\n\t{\n\t\tif (this.#query !== query)\n\t\t{\n\t\t\tthis.#query = query;\n\t\t\tthis.hasMoreItemsToLoad = true;\n\t\t}\n\n\t\treturn this.request();\n\t}\n\n\tresetSearchState()\n\t{\n\t\tthis.#query = '';\n\t\tthis.hasMoreItemsToLoad = true;\n\t\tvoid this.store.dispatch('sidebar/links/clearSearch', {});\n\t}\n\n\tasync request(): Promise<number[]>\n\t{\n\t\tconst queryParams = this.getQueryParams();\n\t\tlet responseData: RestResponse = {};\n\t\ttry\n\t\t{\n\t\t\tconst response = await this.restClient.callMethod(RestMethod.imChatUrlGet, queryParams);\n\t\t\tresponseData = response.data();\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tconsole.error('SidebarSearch: Im.imChatUrlGet: page request error', error);\n\t\t}\n\n\t\treturn this.#processSearchResponse(responseData);\n\t}\n\n\t#processSearchResponse(response: RestResponse): Promise<number[]>\n\t{\n\t\treturn this.#updateModels(response).then(() => {\n\t\t\treturn response.list.map((message) => message.messageId);\n\t\t});\n\t}\n\n\t#updateModels(resultData: RestResponse): Promise\n\t{\n\t\tconst { list, users, tariffRestrictions = {} } = resultData;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tconst setLinksPromise = this.store.dispatch('sidebar/links/setSearch', {\n\t\t\tchatId: this.chatId,\n\t\t\tlinks: list,\n\t\t\thasNextPage: list.length === REQUEST_ITEMS_LIMIT,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\treturn Promise.all([setLinksPromise, addUsersPromise]);\n\t}\n\n\tgetQueryParams(): UrlGetQueryParams\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t\tSEARCH_URL: this.#query,\n\t\t};\n\t\tconst linksCount = this.getLinksCountFromModel();\n\t\tif (Type.isNumber(linksCount) && linksCount > 0)\n\t\t{\n\t\t\tqueryParams.OFFSET = linksCount;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\tgetLinksCountFromModel(): number\n\t{\n\t\treturn this.store.getters['sidebar/links/getSearchResultCollectionSize'](this.chatId);\n\t}\n}\n","import { RestClient } from 'rest.client';\nimport { Store } from 'ui.vue3.vuex';\n\nimport { RestMethod } from 'im.v2.const';\nimport { Core } from 'im.v2.application.core';\n\nexport class LinkManager\n{\n\tstore: Store;\n\trestClient: RestClient;\n\n\tconstructor()\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t}\n\n\tdelete(link: Object)\n\t{\n\t\tthis.store.dispatch('sidebar/links/delete', { chatId: link.chatId, id: link.id });\n\n\t\tconst queryParams = { LINK_ID: link.id };\n\t\tthis.restClient.callMethod(RestMethod.imChatUrlDelete, queryParams).catch((error) => {\n\t\t\tconsole.error('Im.Sidebar: error deleting link', error);\n\t\t});\n\t}\n}\n","import 'ui.notification';\nimport { Loc } from 'main.core';\n\nimport { SidebarMenu } from '../sidebar-base-menu';\nimport { LinkManager } from './link-manager';\n\nimport type { MenuItem } from 'im.v2.lib.menu';\n\nexport class LinkMenu extends SidebarMenu\n{\n\tconstructor()\n\t{\n\t\tsuper();\n\t\tthis.linkManager = new LinkManager();\n\t}\n\n\tgetMenuItems(): MenuItem[]\n\t{\n\t\treturn [\n\t\t\tthis.getOpenContextMessageItem(),\n\t\t\tthis.getCopyLinkItem(Loc.getMessage('IM_SIDEBAR_MENU_COPY_LINK')),\n\t\t\tthis.getDeleteLinkItem(),\n\t\t];\n\t}\n\n\tgetDeleteLinkItem(): ?MenuItem\n\t{\n\t\tif (this.context.authorId !== this.getCurrentUserId())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_DELETE_FROM_LINKS'),\n\t\t\tonclick: function() {\n\t\t\t\tthis.linkManager.delete(this.context);\n\t\t\t\tthis.menuInstance.close();\n\t\t\t}.bind(this),\n\t\t};\n\t}\n}\n","import { Runtime, Extension } from 'main.core';\nimport { EventEmitter } from 'main.core.events';\n\nimport { Loader } from 'im.v2.component.elements.loader';\nimport { EventType, SidebarDetailBlock } from 'im.v2.const';\n\nimport { concatAndSortSearchResult } from '../../../classes/panels/helpers/concat-and-sort-search-result';\nimport { TariffLimit } from '../../elements/tariff-limit/tariff-limit';\nimport { LinkItem } from './link-item';\nimport { Link } from '../../../classes/panels/link';\nimport { LinkSearch } from '../../../classes/panels/search/link-search';\nimport { DateGroup } from '../../elements/date-group/date-group';\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\nimport { DetailEmptySearchState } from '../../elements/detail-empty-search-state/detail-empty-search-state';\nimport { DetailEmptyState as StartState, DetailEmptyState } from '../../elements/detail-empty-state/detail-empty-state';\nimport { LinkMenu } from '../../../classes/context-menu/link/link-menu';\nimport { SidebarCollectionFormatter } from '../../../classes/sidebar-collection-formatter';\n\nimport './css/link-panel.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat, ImModelSidebarLinkItem } from 'im.v2.model';\n\nconst DEFAULT_MIN_TOKEN_SIZE = 3;\n\n// @vue/component\nexport const LinkPanel = {\n\tname: 'LinkPanel',\n\tcomponents: {\n\t\tDetailHeader,\n\t\tLinkItem,\n\t\tDateGroup,\n\t\tDetailEmptyState,\n\t\tStartState,\n\t\tDetailEmptySearchState,\n\t\tLoader,\n\t\tTariffLimit,\n\t},\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tisSearchHeaderOpened: false,\n\t\t\tsearchQuery: '',\n\t\t\tsearchResult: [],\n\t\t\tcurrentServerQueries: 0,\n\t\t\tminTokenSize: DEFAULT_MIN_TOKEN_SIZE,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tlinks(): ImModelSidebarLinkItem[]\n\t\t{\n\t\t\tif (this.isSearchHeaderOpened)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['sidebar/links/getSearchResultCollection'](this.chatId);\n\t\t\t}\n\n\t\t\treturn this.$store.getters['sidebar/links/get'](this.chatId);\n\t\t},\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\treturn this.collectionFormatter.format(this.links);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.formattedCollection.length === 0;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tpreparedQuery(): string\n\t\t{\n\t\t\treturn this.searchQuery.trim().toLowerCase();\n\t\t},\n\t\tisSearchQueryMinimumSize(): boolean\n\t\t{\n\t\t\treturn this.preparedQuery.length < this.minTokenSize;\n\t\t},\n\t\thasHistoryLimit(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/links/isHistoryLimitExceeded'](this.chatId);\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tpreparedQuery(newQuery: string, previousQuery: string)\n\t\t{\n\t\t\tif (newQuery === previousQuery)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.cleanSearchResult();\n\t\t\tthis.startSearch();\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.contextMenu = new LinkMenu();\n\t\tthis.service = new Link({ dialogId: this.dialogId });\n\t\tthis.serviceSearch = new LinkSearch({ dialogId: this.dialogId });\n\t\tthis.searchOnServerDelayed = Runtime.debounce(this.searchOnServer, 500, this);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.contextMenu.destroy();\n\t\tthis.collectionFormatter.destroy();\n\t},\n\tmethods:\n\t{\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.sidebar');\n\t\t\tthis.minTokenSize = settings.get('minSearchTokenSize', DEFAULT_MIN_TOKEN_SIZE);\n\t\t},\n\t\tsearchOnServer(query: string)\n\t\t{\n\t\t\tthis.currentServerQueries++;\n\n\t\t\tthis.serviceSearch.searchOnServer(query).then((messageIds: string[]) => {\n\t\t\t\tif (query !== this.preparedQuery)\n\t\t\t\t{\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.searchResult = concatAndSortSearchResult(this.searchResult, messageIds);\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t}).finally(() => {\n\t\t\t\tthis.currentServerQueries--;\n\t\t\t\tthis.stopLoader();\n\t\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t\t{\n\t\t\t\t\tthis.cleanSearchResult();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tstopLoader()\n\t\t{\n\t\t\tif (this.currentServerQueries > 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tstartSearch()\n\t\t{\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tthis.cleanSearchResult();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.searchOnServerDelayed(this.preparedQuery);\n\t\t\t}\n\t\t},\n\t\tcleanSearchResult()\n\t\t{\n\t\t\tthis.searchResult = [];\n\t\t\tthis.serviceSearch.resetSearchState();\n\t\t},\n\t\tonChangeQuery(query: string)\n\t\t{\n\t\t\tthis.searchQuery = query;\n\t\t},\n\t\ttoggleSearchPanelOpened()\n\t\t{\n\t\t\tthis.isSearchHeaderOpened = !this.isSearchHeaderOpened;\n\t\t},\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\tid: event.id,\n\t\t\t\tmessageId: event.messageId,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\tchatId: this.chatId,\n\t\t\t\tsource: event.source,\n\t\t\t\tauthorId: event.authorId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, event.target);\n\t\t},\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.link });\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst nameGetter = this.searchQuery.length > 0 ? 'sidebar/links/hasNextPageSearch' : 'sidebar/links/hasNextPage';\n\t\t\tconst hasNextPage = this.$store.getters[nameGetter](this.chatId);\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event): Promise<void>\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tawait this.service.loadNextPage();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawait this.serviceSearch.request();\n\t\t\t}\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Type, Runtime } from 'main.core';\n\nimport { MarketManager } from 'im.v2.lib.market';\nimport { Spinner, SpinnerSize } from 'im.v2.component.elements.loader';\nimport { EventType, SidebarDetailBlock } from 'im.v2.const';\nimport { EventEmitter } from 'main.core.events';\n\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\n\nimport './detail.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelMarketApplication } from 'im.v2.model';\n\n// @vue/component\nexport const MarketPanel = {\n\tname: 'MarketPanel',\n\tcomponents: { Spinner, DetailHeader },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tentityId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: true,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSpinnerSize: () => SpinnerSize,\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tplacement(): ?ImModelMarketApplication\n\t\t{\n\t\t\tconst placementId = Number.parseInt(this.entityId, 10);\n\n\t\t\treturn this.$store.getters['market/getById'](placementId);\n\t\t},\n\t\ttitle(): string\n\t\t{\n\t\t\tif (this.placement && Type.isStringFilled(this.placement.title))\n\t\t\t{\n\t\t\t\treturn this.placement.title;\n\t\t\t}\n\n\t\t\treturn this.$Bitrix.Loc.getMessage('IM_SIDEBAR_MARKET_DETAIL_TITLE');\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.marketManager = MarketManager.getInstance();\n\t},\n\tasync mounted()\n\t{\n\t\tconst context = { dialogId: this.dialogId };\n\t\tconst response = await this.marketManager.loadPlacement(this.entityId, context);\n\t\tthis.isLoading = false;\n\t\tRuntime.html(this.$refs['im-messenger-sidebar-placement'], response);\n\t},\n\tmethods:\n\t{\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.market });\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from '../helpers/get-chat-id';\nimport { getLastElementId } from '../helpers/get-last-element-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { RestClient } from 'rest.client';\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\ntype RestResponse = {\n\tlist: [],\n\tusers: [],\n};\n\ntype UrlGetQueryParams = {\n\tCHAT_ID: number,\n\tLIMIT: number,\n\tLAST_ID?: number,\n\tSEARCH_TITLE?: string,\n}\n\nexport class MeetingSearch\n{\n\tstore: Store;\n\tdialogId: string;\n\tchatId: number;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\thasMoreItemsToLoad: boolean = true;\n\t#query: string = '';\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tsearchOnServer(query: string): Promise<number[]>\n\t{\n\t\tif (this.#query !== query)\n\t\t{\n\t\t\tthis.#query = query;\n\t\t\tthis.hasMoreItemsToLoad = true;\n\t\t}\n\n\t\treturn this.request();\n\t}\n\n\tresetSearchState()\n\t{\n\t\tthis.#query = '';\n\t\tthis.hasMoreItemsToLoad = true;\n\t\tvoid this.store.dispatch('sidebar/meetings/clearSearch', {});\n\t}\n\n\tasync request(): Promise<number[]>\n\t{\n\t\tconst queryParams = this.getQueryParams();\n\t\tlet responseData: RestResponse = {};\n\t\ttry\n\t\t{\n\t\t\tconst response = await this.restClient.callMethod(RestMethod.imChatCalendarGet, queryParams);\n\t\t\tresponseData = response.data();\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tconsole.error('SidebarSearch: Im.imChatCalendarGet: page request error', error);\n\t\t}\n\n\t\treturn this.#processSearchResponse(responseData);\n\t}\n\n\t#processSearchResponse(response: RestResponse): Promise<number[]>\n\t{\n\t\treturn this.updateModels(response).then(() => {\n\t\t\treturn response.list.map((message) => message.messageId);\n\t\t});\n\t}\n\n\tgetQueryParams(): UrlGetQueryParams\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t\tSEARCH_TITLE: this.#query,\n\t\t};\n\n\t\tconst lastId = this.store.getters['sidebar/meetings/getSearchResultCollectionLastId'](this.chatId);\n\t\tif (lastId > 0)\n\t\t{\n\t\t\tqueryParams.LAST_ID = lastId;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\tupdateModels(resultData: RestResponse): Promise\n\t{\n\t\tconst { list, users, tariffRestrictions = {} } = resultData;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\t\tconst hasNextPage = list.length === REQUEST_ITEMS_LIMIT;\n\t\tconst lastId = getLastElementId(list);\n\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\t\tconst setMeetingsPromise = this.store.dispatch('sidebar/meetings/setSearch', {\n\t\t\tchatId: this.chatId,\n\t\t\tmeetings: list,\n\t\t\thasNextPage,\n\t\t\tlastId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\treturn Promise.all([setMeetingsPromise, addUsersPromise]);\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\nimport { Runtime, Extension } from 'main.core';\n\nimport { EventType, SidebarDetailBlock, ActionByRole } from 'im.v2.const';\nimport { Loader } from 'im.v2.component.elements.loader';\nimport { EntityCreator } from 'im.v2.lib.entity-creator';\nimport { PermissionManager } from 'im.v2.lib.permission';\n\nimport { concatAndSortSearchResult } from '../../../classes/panels/helpers/concat-and-sort-search-result';\nimport { TariffLimit } from '../../elements/tariff-limit/tariff-limit';\nimport { MeetingItem } from './meeting-item';\nimport { DateGroup } from '../../elements/date-group/date-group';\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\nimport { DetailEmptyState as StartState, DetailEmptyState } from '../../elements/detail-empty-state/detail-empty-state';\nimport { DetailEmptySearchState } from '../../elements/detail-empty-search-state/detail-empty-search-state';\nimport { MeetingMenu } from '../../../classes/context-menu/meeting/meeting-menu';\nimport { SidebarCollectionFormatter } from '../../../classes/sidebar-collection-formatter';\nimport { Meeting } from '../../../classes/panels/meeting';\nimport { MeetingSearch } from '../../../classes/panels/search/meeting-search';\n\nimport './css/meeting-panel.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarMeetingItem, ImModelChat } from 'im.v2.model';\n\nconst DEFAULT_MIN_TOKEN_SIZE = 3;\n\n// @vue/component\nexport const MeetingPanel = {\n\tname: 'MeetingPanel',\n\tcomponents: {\n\t\tMeetingItem,\n\t\tDateGroup,\n\t\tDetailEmptyState,\n\t\tStartState,\n\t\tDetailHeader,\n\t\tDetailEmptySearchState,\n\t\tLoader,\n\t\tTariffLimit,\n\t},\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tisSearchHeaderOpened: false,\n\t\t\tsearchQuery: '',\n\t\t\tsearchResult: [],\n\t\t\tcurrentServerQueries: 0,\n\t\t\tminTokenSize: DEFAULT_MIN_TOKEN_SIZE,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tmeetings(): ImModelSidebarMeetingItem[]\n\t\t{\n\t\t\tif (this.isSearchHeaderOpened)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['sidebar/meetings/getSearchResultCollection'](this.chatId);\n\t\t\t}\n\n\t\t\treturn this.$store.getters['sidebar/meetings/get'](this.chatId);\n\t\t},\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\treturn this.collectionFormatter.format(this.meetings);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.formattedCollection.length === 0;\n\t\t},\n\t\tshowAddButton(): boolean\n\t\t{\n\t\t\treturn PermissionManager.getInstance().canPerformActionByRole(ActionByRole.createMeeting, this.dialogId);\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tpreparedQuery(): string\n\t\t{\n\t\t\treturn this.searchQuery.trim().toLowerCase();\n\t\t},\n\t\tisSearchQueryMinimumSize(): boolean\n\t\t{\n\t\t\treturn this.preparedQuery.length < this.minTokenSize;\n\t\t},\n\t\thasHistoryLimit(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/meetings/isHistoryLimitExceeded'](this.chatId);\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tpreparedQuery(newQuery: string, previousQuery: string)\n\t\t{\n\t\t\tif (newQuery === previousQuery)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.cleanSearchResult();\n\t\t\tthis.startSearch();\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.contextMenu = new MeetingMenu();\n\t\tthis.service = new Meeting({ dialogId: this.dialogId });\n\t\tthis.serviceSearch = new MeetingSearch({ dialogId: this.dialogId });\n\t\tthis.searchOnServerDelayed = Runtime.debounce(this.searchOnServer, 500, this);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.collectionFormatter.destroy();\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.sidebar');\n\t\t\tthis.minTokenSize = settings.get('minSearchTokenSize', DEFAULT_MIN_TOKEN_SIZE);\n\t\t},\n\t\tsearchOnServer(query: string)\n\t\t{\n\t\t\tthis.currentServerQueries++;\n\n\t\t\tthis.serviceSearch.searchOnServer(query).then((messageIds: string[]) => {\n\t\t\t\tif (query !== this.preparedQuery)\n\t\t\t\t{\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.searchResult = concatAndSortSearchResult(this.searchResult, messageIds);\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t}).finally(() => {\n\t\t\t\tthis.currentServerQueries--;\n\t\t\t\tthis.stopLoader();\n\t\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t\t{\n\t\t\t\t\tthis.cleanSearchResult();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tstopLoader()\n\t\t{\n\t\t\tif (this.currentServerQueries > 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tstartSearch()\n\t\t{\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tthis.cleanSearchResult();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.searchOnServerDelayed(this.preparedQuery);\n\t\t\t}\n\t\t},\n\t\tcleanSearchResult()\n\t\t{\n\t\t\tthis.serviceSearch.resetSearchState();\n\t\t\tthis.searchResult = [];\n\t\t},\n\t\tonChangeQuery(query: string)\n\t\t{\n\t\t\tthis.searchQuery = query;\n\t\t},\n\t\ttoggleSearchPanelOpened()\n\t\t{\n\t\t\tthis.isSearchHeaderOpened = !this.isSearchHeaderOpened;\n\t\t},\n\t\tonContextMenuClick(event, target)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\t...event,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, target);\n\t\t},\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.meeting });\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst nameGetter = this.searchQuery.length > 0 ? 'sidebar/meetings/hasNextPageSearch' : 'sidebar/meetings/hasNextPage';\n\t\t\tconst hasNextPage = this.$store.getters[nameGetter](this.chatId);\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event): Promise<void>\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tawait this.service.loadNextPage();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawait this.serviceSearch.request();\n\t\t\t}\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tonAddClick()\n\t\t{\n\t\t\t(new EntityCreator(this.chatId)).createMeetingForChat();\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\nimport { Utils } from 'im.v2.lib.utils';\n\nimport type { ImModelBot, ImModelUser } from 'im.v2.model';\n\n// @vue/component\nexport const DetailUser = {\n\tname: 'DetailUser',\n\tcomponents: { ChatAvatar, ChatTitle },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tcontextDialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisOwner: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tisManager: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): {showContextButton: boolean}\n\t{\n\t\treturn {\n\t\t\tshowContextButton: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tposition(): string\n\t\t{\n\t\t\tif (this.isCopilot)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['copilot/getProvider'];\n\t\t\t}\n\n\t\t\treturn this.$store.getters['users/getPosition'](this.dialogId);\n\t\t},\n\t\tuser(): ImModelUser\n\t\t{\n\t\t\treturn this.$store.getters['users/get'](this.dialogId, true);\n\t\t},\n\t\tuserLink(): string\n\t\t{\n\t\t\treturn Utils.user.getProfileLink(this.dialogId);\n\t\t},\n\t\tneedContextMenu(): boolean\n\t\t{\n\t\t\tconst bot: ImModelBot = this.$store.getters['users/bots/getByUserId'](this.dialogId);\n\t\t\tif (!bot)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn bot.code !== 'copilot';\n\t\t},\n\t\tisCopilot(): boolean\n\t\t{\n\t\t\tconst userId = Number.parseInt(this.dialogId, 10);\n\n\t\t\treturn this.$store.getters['users/bots/isCopilot'](userId);\n\t\t},\n\t\thasLink(): boolean\n\t\t{\n\t\t\treturn !this.isCopilot;\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonClickContextMenu(event)\n\t\t{\n\t\t\tthis.$emit('contextMenuClick', {\n\t\t\t\tuserDialogId: this.dialogId,\n\t\t\t\ttarget: event.currentTarget,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Loc } from 'main.core';\n\nimport { UserMenu } from 'im.v2.lib.menu';\nimport { Core } from 'im.v2.application.core';\nimport { Utils } from 'im.v2.lib.utils';\nimport { CallManager } from 'im.v2.lib.call';\nimport { ChatService } from 'im.v2.provider.service.chat';\nimport { ActionByRole, ActionByUserType, ChatType, UserType } from 'im.v2.const';\nimport { PermissionManager } from 'im.v2.lib.permission';\nimport { showLeaveChatConfirm } from 'im.v2.lib.confirm';\n\nimport type { ImModelUser, ImModelChat } from 'im.v2.model';\nimport type { MenuItem } from 'im.v2.lib.menu';\n\ntype MembersMenuContext = {\n\tdialog: ImModelChat,\n\tuser: ImModelUser,\n};\n\nexport class MembersMenu extends UserMenu\n{\n\tcontext: MembersMenuContext;\n\tchatService: ChatService;\n\tcallManager: CallManager;\n\tpermissionManager: PermissionManager;\n\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis.chatService = new ChatService();\n\t\tthis.callManager = CallManager.getInstance();\n\t\tthis.permissionManager = PermissionManager.getInstance();\n\t}\n\n\tgetMenuItems(): MenuItem[]\n\t{\n\t\tif (this.context.user.id === Core.getUserId())\n\t\t{\n\t\t\treturn [\n\t\t\t\tthis.getProfileItem(),\n\t\t\t\tthis.getOpenUserCalendarItem(),\n\t\t\t\tthis.getLeaveItem(),\n\t\t\t];\n\t\t}\n\n\t\treturn [\n\t\t\tthis.getMentionItem(),\n\t\t\tthis.getSendItem(),\n\t\t\tthis.getManagerItem(),\n\t\t\tthis.getCallItem(),\n\t\t\tthis.getProfileItem(),\n\t\t\tthis.getOpenUserCalendarItem(),\n\t\t\tthis.getKickItem(),\n\t\t];\n\t}\n\n\tgetManagerItem(): ?MenuItem\n\t{\n\t\tconst isOwner = this.context.user.id === this.context.dialog.ownerId;\n\t\tconst canChangeManagers = PermissionManager.getInstance().canPerformActionByRole(\n\t\t\tActionByRole.changeManagers,\n\t\t\tthis.context.dialog.dialogId,\n\t\t);\n\t\tconst isCollabType = this.context.dialog.type === ChatType.collab;\n\n\t\tif (isOwner || !canChangeManagers || isCollabType)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst isManager = this.context.dialog.managerList.includes(this.context.user.id);\n\n\t\treturn {\n\t\t\ttext: isManager ? Loc.getMessage('IM_SIDEBAR_MENU_MANAGER_REMOVE') : Loc.getMessage('IM_SIDEBAR_MENU_MANAGER_ADD'),\n\t\t\tonclick: () => {\n\t\t\t\tif (isManager)\n\t\t\t\t{\n\t\t\t\t\tthis.chatService.removeManager(this.context.dialog.dialogId, this.context.user.id);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.chatService.addManager(this.context.dialog.dialogId, this.context.user.id);\n\t\t\t\t}\n\t\t\t\tthis.menuInstance.close();\n\t\t\t},\n\t\t};\n\t}\n\n\tgetCallItem(): ?MenuItem\n\t{\n\t\tconst userDialogId = this.context.user.id.toString();\n\n\t\tconst chatCanBeCalled = this.callManager.chatCanBeCalled(userDialogId);\n\t\tconst chatIsAllowedToCall = this.permissionManager.canPerformActionByRole(ActionByRole.call, userDialogId);\n\t\tif (!chatCanBeCalled || !chatIsAllowedToCall)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_LIB_MENU_CALL_2'),\n\t\t\tonclick: () => {\n\t\t\t\tthis.callManager.startCall(userDialogId);\n\t\t\t\tthis.menuInstance.close();\n\t\t\t},\n\t\t};\n\t}\n\n\tgetOpenUserCalendarItem(): ?MenuItem\n\t{\n\t\tif (this.isBot())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst profileUri = Utils.user.getCalendarLink(this.context.user.id);\n\t\tconst isCurrentUser = this.context.user.id === Core.getUserId();\n\t\tconst phraseCode = isCurrentUser ? 'IM_LIB_MENU_OPEN_OWN_CALENDAR' : 'IM_LIB_MENU_OPEN_CALENDAR_V2';\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage(phraseCode),\n\t\t\tonclick: () => {\n\t\t\t\tBX.SidePanel.Instance.open(profileUri);\n\t\t\t\tthis.menuInstance.close();\n\t\t\t},\n\t\t};\n\t}\n\n\tgetLeaveItem(): ?MenuItem\n\t{\n\t\tif (this.isCollabChat() && !this.canLeaveCollab())\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\tconst canLeaveChat = this.permissionManager.canPerformActionByRole(\n\t\t\tActionByRole.leave,\n\t\t\tthis.context.dialog.dialogId,\n\t\t);\n\t\tif (!canLeaveChat)\n\t\t{\n\t\t\treturn null;\n\t\t}\n\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_LIB_MENU_LEAVE_MSGVER_1'),\n\t\t\tonclick: async () => {\n\t\t\t\tthis.menuInstance.close();\n\t\t\t\tconst userChoice = await showLeaveChatConfirm(this.context.dialog.dialogId);\n\t\t\t\tif (!userChoice)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (this.isCollabChat())\n\t\t\t\t{\n\t\t\t\t\tthis.chatService.leaveCollab(this.context.dialog.dialogId);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.chatService.leaveChat(this.context.dialog.dialogId);\n\t\t\t\t}\n\t\t\t},\n\t\t};\n\t}\n\n\tisBot(): boolean\n\t{\n\t\treturn this.context.user.type === UserType.bot;\n\t}\n\n\tcanLeaveCollab(): boolean\n\t{\n\t\treturn this.permissionManager.canPerformActionByUserType(ActionByUserType.leaveCollab);\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\n\nimport { Core } from 'im.v2.application.core';\nimport { Analytics } from 'im.v2.lib.analytics';\nimport { LayoutManager } from 'im.v2.lib.layout';\nimport { ActionByRole, ChatType, EventType, GetParameter, SidebarDetailBlock, Layout, Path } from 'im.v2.const';\nimport { AddToChat, AddToCollab } from 'im.v2.component.entity-selector';\nimport { Loader } from 'im.v2.component.elements.loader';\nimport { ChatButton, ButtonColor, ButtonSize } from 'im.v2.component.elements.button';\nimport { PermissionManager } from 'im.v2.lib.permission';\nimport { Notifier } from 'im.v2.lib.notifier';\n\nimport { DetailUser } from './detail-user';\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\nimport { MembersService } from '../../../classes/panels/members';\nimport { MembersMenu } from '../../../classes/context-menu/main/members-menu';\n\nimport './css/members-panel.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat } from 'im.v2.model';\nimport type { BitrixVueComponentProps } from 'ui.vue3';\n\nconst MemberTitleByChatType = {\n\t[ChatType.channel]: 'IM_SIDEBAR_MEMBERS_CHANNEL_DETAIL_TITLE',\n\t[ChatType.openChannel]: 'IM_SIDEBAR_MEMBERS_CHANNEL_DETAIL_TITLE',\n\t[ChatType.generalChannel]: 'IM_SIDEBAR_MEMBERS_CHANNEL_DETAIL_TITLE',\n\tdefault: 'IM_SIDEBAR_MEMBERS_DETAIL_TITLE',\n};\n\n// @vue/component\nexport const MembersPanel = {\n\tname: 'MembersPanel',\n\tcomponents: { DetailUser, ChatButton, DetailHeader, Loader, AddToChat },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tshowAddToChatPopup: false,\n\t\t\tshowAddToChatTarget: null,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tButtonSize: () => ButtonSize,\n\t\tButtonColor: () => ButtonColor,\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tuserDialogIds(): string[]\n\t\t{\n\t\t\tconst users = this.$store.getters['sidebar/members/get'](this.chatId);\n\n\t\t\treturn users.map((userId) => userId.toString());\n\t\t},\n\t\tchatLink(): string\n\t\t{\n\t\t\tconst layoutName = LayoutManager.getInstance().getLayout().name;\n\t\t\tconst isCopilot = layoutName === Layout.copilot.name;\n\t\t\tconst chatGetParameter = isCopilot ? GetParameter.openCopilotChat : GetParameter.openChat;\n\t\t\tconst getParams = new URLSearchParams({\n\t\t\t\t[chatGetParameter]: this.dialogId,\n\t\t\t});\n\n\t\t\treturn `${Core.getHost()}${Path.online}?${getParams.toString()}`;\n\t\t},\n\t\thasNextPage(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/members/hasNextPage'](this.chatId);\n\t\t},\n\t\tpanelInited(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/members/getInited'](this.chatId);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\ttitle(): string\n\t\t{\n\t\t\tlet usersInChatCount = this.dialog.userCounter;\n\t\t\tif (usersInChatCount >= 1000)\n\t\t\t{\n\t\t\t\tusersInChatCount = `${Math.floor(usersInChatCount / 1000)}k`;\n\t\t\t}\n\n\t\t\tconst phrase = MemberTitleByChatType[this.dialog.type] ?? MemberTitleByChatType.default;\n\n\t\t\treturn this.loc(phrase, {\n\t\t\t\t'#NUMBER#': usersInChatCount,\n\t\t\t});\n\t\t},\n\t\tneedAddButton(): boolean\n\t\t{\n\t\t\treturn PermissionManager.getInstance().canPerformActionByRole(ActionByRole.extend, this.dialogId);\n\t\t},\n\t\tneedCopyLinkButton(): boolean\n\t\t{\n\t\t\treturn this.dialog.type !== ChatType.collab;\n\t\t},\n\t\taddMembersPopupComponent(): BitrixVueComponentProps\n\t\t{\n\t\t\treturn this.dialog.type === ChatType.collab ? AddToCollab : AddToChat;\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tdialogId(dialogId: string)\n\t\t{\n\t\t\tthis.service = new MembersService({ dialogId });\n\t\t\tvoid this.loadFirstPage();\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.contextMenu = new MembersMenu();\n\t\tthis.service = new MembersService({ dialogId: this.dialogId });\n\t\tvoid this.loadFirstPage();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.contextMenu.destroy();\n\t},\n\tmethods:\n\t{\n\t\tasync loadFirstPage()\n\t\t{\n\t\t\tif (this.panelInited || this.isLoading)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tthis.chats = await this.service.loadFirstPage();\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tisOwner(userDialogId: string): boolean\n\t\t{\n\t\t\tconst userId = Number.parseInt(userDialogId, 10);\n\n\t\t\treturn this.dialog.ownerId === userId;\n\t\t},\n\t\tisManager(userDialogId: string): boolean\n\t\t{\n\t\t\tconst userId = Number.parseInt(userDialogId, 10);\n\n\t\t\treturn this.dialog.managerList.includes(userId);\n\t\t},\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tconst user = this.$store.getters['users/get'](event.userDialogId, true);\n\t\t\tconst item = {\n\t\t\t\tuser,\n\t\t\t\tdialog: this.dialog,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, event.target);\n\t\t},\n\t\tonCopyInviteClick()\n\t\t{\n\t\t\tif (BX.clipboard.copy(this.chatLink))\n\t\t\t{\n\t\t\t\tNotifier.onCopyLinkComplete();\n\t\t\t}\n\t\t},\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.members });\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\n\t\t\treturn isAtThreshold && this.hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event)\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.service.loadNextPage();\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tonAddClick(event)\n\t\t{\n\t\t\tAnalytics.getInstance().userAdd.onChatSidebarClick(this.dialogId);\n\t\t\tthis.showAddToChatPopup = true;\n\t\t\tthis.showAddToChatTarget = event.target;\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Loc } from 'main.core';\n\nimport { MessageService } from 'im.v2.provider.service.message';\n\nimport { SidebarMenu } from '../sidebar-base-menu';\n\nimport type { MenuItem } from 'im.v2.lib.menu';\n\nexport class FavoriteMenu extends SidebarMenu\n{\n\tconstructor()\n\t{\n\t\tsuper();\n\n\t\tthis.id = 'im-sidebar-context-menu';\n\t}\n\n\tgetMenuItems(): MenuItem[]\n\t{\n\t\treturn [\n\t\t\tthis.getOpenContextMessageItem(),\n\t\t\tthis.getDeleteFromFavoriteItem(),\n\t\t];\n\t}\n\n\tgetDeleteFromFavoriteItem(): MenuItem\n\t{\n\t\treturn {\n\t\t\ttext: Loc.getMessage('IM_SIDEBAR_MENU_REMOVE_FROM_SAVED_V2'),\n\t\t\tonclick: function() {\n\t\t\t\tconst messageService = new MessageService({ chatId: this.context.chatId });\n\t\t\t\tmessageService.removeMessageFromFavorite(this.context.messageId);\n\t\t\t\tthis.menuInstance.close();\n\t\t\t}.bind(this),\n\t\t};\n\t}\n}\n","import { Core } from 'im.v2.application.core';\nimport { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\n\nimport { getChatId } from '../helpers/get-chat-id';\nimport { getLastElementId } from '../helpers/get-last-element-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { RestClient } from 'rest.client';\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\ntype RestResponse = {\n\tfiles: [],\n\tlist: [],\n\treactions: [],\n\treminders: [],\n\tusers: [],\n\tusersShort: []\n};\n\ntype UrlGetQueryParams = {\n\tCHAT_ID: number,\n\tLIMIT: number,\n\tSEARCH_MESSAGE?: string,\n\tLAST_ID?: number,\n};\n\nexport class FavoriteSearch\n{\n\tstore: Store;\n\tdialogId: string;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\thasMoreItemsToLoad: boolean = true;\n\t#query: string = '';\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tsearchOnServer(query: string): Promise<number[]>\n\t{\n\t\tif (this.#query !== query)\n\t\t{\n\t\t\tthis.#query = query;\n\t\t\tthis.hasMoreItemsToLoad = true;\n\t\t}\n\n\t\treturn this.request();\n\t}\n\n\tresetSearchState()\n\t{\n\t\tthis.#query = '';\n\t\tthis.hasMoreItemsToLoad = true;\n\t\tvoid this.store.dispatch('sidebar/favorites/clearSearch', {});\n\t}\n\n\tasync request(): Promise<number[]>\n\t{\n\t\tconst queryParams = this.getQueryParams();\n\t\tlet responseData: RestResponse = {};\n\t\ttry\n\t\t{\n\t\t\tconst response = await this.restClient.callMethod(RestMethod.imChatFavoriteGet, queryParams);\n\t\t\tresponseData = response.data();\n\t\t}\n\t\tcatch (error)\n\t\t{\n\t\t\tconsole.error('SidebarSearch: Im.imChatFavoriteGet: page request error', error);\n\t\t}\n\n\t\treturn this.#processSearchResponse(responseData);\n\t}\n\n\t#processSearchResponse(response: RestResponse): Promise<number[]>\n\t{\n\t\treturn this.updateModels(response).then(() => {\n\t\t\treturn response.list.map((message) => message.messageId);\n\t\t});\n\t}\n\n\tgetQueryParams(): UrlGetQueryParams\n\t{\n\t\tconst queryParams = {\n\t\t\tCHAT_ID: this.chatId,\n\t\t\tLIMIT: REQUEST_ITEMS_LIMIT,\n\t\t\tSEARCH_MESSAGE: this.#query,\n\t\t};\n\n\t\tconst lastId = this.store.getters['sidebar/favorites/getSearchResultCollectionLastId'](this.chatId);\n\t\tif (lastId > 0)\n\t\t{\n\t\t\tqueryParams.LAST_ID = lastId;\n\t\t}\n\n\t\treturn queryParams;\n\t}\n\n\tupdateModels(resultData: {list: [], users: [], files: []}): Promise\n\t{\n\t\tconst { list = [], users = [], files = [], tariffRestrictions = {} } = resultData;\n\t\tconst addUsersPromise = this.userManager.setUsersToModel(users);\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\n\t\tconst rawMessages = list.map((favorite) => favorite.message);\n\t\tconst hasNextPage = list.length === REQUEST_ITEMS_LIMIT;\n\t\tconst lastId = getLastElementId(list);\n\n\t\tconst setFilesPromise = this.store.dispatch('files/set', files);\n\t\tconst storeMessagesPromise = this.store.dispatch('messages/store', rawMessages);\n\t\tconst setFavoritesPromise = this.store.dispatch('sidebar/favorites/setSearch', {\n\t\t\tchatId: this.chatId,\n\t\t\tfavorites: list,\n\t\t\thasNextPage,\n\t\t\tlastId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\n\t\treturn Promise.all([\n\t\t\tsetFilesPromise, storeMessagesPromise, setFavoritesPromise, addUsersPromise,\n\t\t]);\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\nimport { Text } from 'main.core';\n\nimport { EventType } from 'im.v2.const';\nimport { Parser } from 'im.v2.lib.parser';\nimport { highlightText } from 'im.v2.lib.text-highlighter';\nimport { MessageAuthorTitle } from 'im.v2.component.elements.chat-title';\nimport { MessageAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport './css/favorite-item.css';\n\nimport type { ImModelSidebarFavoriteItem, ImModelMessage } from 'im.v2.model';\n\n// @vue/component\nexport const FavoriteItem = {\n\tname: 'FavoriteItem',\n\tcomponents: { MessageAvatar, MessageAuthorTitle },\n\tprops:\n\t{\n\t\tfavorite: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\tchatId: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\temits: ['contextMenuClick'],\n\tdata(): { showContextButton: boolean } {\n\t\treturn {\n\t\t\tshowContextButton: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tfavoriteItem(): ImModelSidebarFavoriteItem\n\t\t{\n\t\t\treturn this.favorite;\n\t\t},\n\t\tfavoriteMessage(): ImModelMessage\n\t\t{\n\t\t\treturn this.$store.getters['messages/getById'](this.favoriteItem.messageId);\n\t\t},\n\t\tauthorDialogId(): string\n\t\t{\n\t\t\treturn this.favoriteMessage.authorId.toString();\n\t\t},\n\t\tmessageText(): string\n\t\t{\n\t\t\tconst purifiedMessage = Parser.purifyMessage(this.favoriteMessage);\n\t\t\tconst textToShow = Text.encode(purifiedMessage);\n\n\t\t\tif (this.searchQuery.length === 0)\n\t\t\t{\n\t\t\t\treturn textToShow;\n\t\t\t}\n\n\t\t\treturn highlightText(textToShow, this.searchQuery);\n\t\t},\n\t\tisCopilot(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['users/bots/isCopilot'](this.favoriteMessage.authorId);\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tthis.$emit('contextMenuClick', {\n\t\t\t\tid: this.favoriteItem.id,\n\t\t\t\tmessageId: this.favorite.messageId,\n\t\t\t\ttarget: event.currentTarget,\n\t\t\t});\n\t\t},\n\t\tonItemClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.goToMessageContext, {\n\t\t\t\tmessageId: this.favorite.messageId,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\nimport { Runtime, Extension } from 'main.core';\n\nimport { EventType, SidebarDetailBlock } from 'im.v2.const';\nimport { Loader } from 'im.v2.component.elements.loader';\n\nimport { FavoriteMenu } from '../../../classes/context-menu/favorite/favorite-menu';\nimport { Favorite } from '../../../classes/panels/favorite';\nimport { FavoriteSearch } from '../../../classes/panels/search/favorite-search';\nimport { SidebarCollectionFormatter } from '../../../classes/sidebar-collection-formatter';\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\nimport { TariffLimit } from '../../elements/tariff-limit/tariff-limit';\nimport { FavoriteItem } from './favorite-item';\nimport { DateGroup } from '../../elements/date-group/date-group';\nimport { DetailEmptySearchState } from '../../elements/detail-empty-search-state/detail-empty-search-state';\nimport { DetailEmptyState as StartState, DetailEmptyState } from '../../elements/detail-empty-state/detail-empty-state';\n\nimport './css/favorite-panel.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelSidebarFavoriteItem, ImModelChat } from 'im.v2.model';\n\nconst DEFAULT_MIN_TOKEN_SIZE = 3;\n\n// @vue/component\nexport const FavoritePanel = {\n\tname: 'FavoritePanel',\n\tcomponents: {\n\t\tFavoriteItem,\n\t\tDateGroup,\n\t\tStartState,\n\t\tDetailEmptyState,\n\t\tDetailHeader,\n\t\tDetailEmptySearchState,\n\t\tLoader,\n\t\tTariffLimit,\n\t},\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tisSearchHeaderOpened: false,\n\t\t\tsearchQuery: '',\n\t\t\tsearchResult: [],\n\t\t\tcurrentServerQueries: 0,\n\t\t\tminTokenSize: DEFAULT_MIN_TOKEN_SIZE,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tfavorites(): ImModelSidebarFavoriteItem[]\n\t\t{\n\t\t\tif (this.isSearchHeaderOpened)\n\t\t\t{\n\t\t\t\treturn this.$store.getters['sidebar/favorites/getSearchResultCollection'](this.chatId);\n\t\t\t}\n\n\t\t\treturn this.$store.getters['sidebar/favorites/get'](this.chatId);\n\t\t},\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\treturn this.collectionFormatter.format(this.favorites);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.formattedCollection.length === 0;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\tpreparedQuery(): string\n\t\t{\n\t\t\treturn this.searchQuery.trim().toLowerCase();\n\t\t},\n\t\tisSearchQueryMinimumSize(): boolean\n\t\t{\n\t\t\treturn this.preparedQuery.length < this.minTokenSize;\n\t\t},\n\t\thasHistoryLimit(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/favorites/isHistoryLimitExceeded'](this.chatId);\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tpreparedQuery(newQuery: string, previousQuery: string)\n\t\t{\n\t\t\tif (newQuery === previousQuery)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.cleanSearchResult();\n\t\t\tthis.startSearch();\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.contextMenu = new FavoriteMenu();\n\t\tthis.service = new Favorite({ dialogId: this.dialogId });\n\t\tthis.serviceSearch = new FavoriteSearch({ dialogId: this.dialogId });\n\t\tthis.searchOnServerDelayed = Runtime.debounce(this.searchOnServer, 500, this);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.contextMenu.destroy();\n\t\tthis.collectionFormatter.destroy();\n\t},\n\tmethods:\n\t{\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.sidebar');\n\t\t\tthis.minTokenSize = settings.get('minSearchTokenSize', DEFAULT_MIN_TOKEN_SIZE);\n\t\t},\n\t\tsearchOnServer(query: string)\n\t\t{\n\t\t\tthis.currentServerQueries++;\n\n\t\t\tthis.serviceSearch.searchOnServer(query).then(() => {\n\t\t\t\tif (query !== this.preparedQuery)\n\t\t\t\t{\n\t\t\t\t\tthis.isLoading = false;\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t}).finally(() => {\n\t\t\t\tthis.currentServerQueries--;\n\t\t\t\tthis.stopLoader();\n\t\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t\t{\n\t\t\t\t\tthis.cleanSearchResult();\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tstopLoader()\n\t\t{\n\t\t\tif (this.currentServerQueries > 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tstartSearch()\n\t\t{\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tthis.cleanSearchResult();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.searchOnServerDelayed(this.preparedQuery);\n\t\t\t}\n\t\t},\n\t\tcleanSearchResult()\n\t\t{\n\t\t\tthis.searchResult = [];\n\t\t\tthis.serviceSearch.resetSearchState();\n\t\t},\n\t\tonChangeQuery(query: string)\n\t\t{\n\t\t\tthis.searchQuery = query;\n\t\t},\n\t\ttoggleSearchPanelOpened()\n\t\t{\n\t\t\tthis.isSearchHeaderOpened = !this.isSearchHeaderOpened;\n\t\t},\n\t\tonContextMenuClick(event)\n\t\t{\n\t\t\tconst item = {\n\t\t\t\tid: event.id,\n\t\t\t\tmessageId: event.messageId,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\tchatId: this.chatId,\n\t\t\t};\n\n\t\t\tthis.contextMenu.openMenu(item, event.target);\n\t\t},\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.favorite });\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst nameGetter = this.searchQuery.length > 0 ? 'sidebar/favorites/hasNextPageSearch' : 'sidebar/favorites/hasNextPage';\n\t\t\tconst hasNextPage = this.$store.getters[nameGetter](this.chatId);\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync onScroll(event: Event)\n\t\t{\n\t\t\tthis.contextMenu.destroy();\n\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tif (this.isSearchQueryMinimumSize)\n\t\t\t{\n\t\t\t\tawait this.service.loadNextPage();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tawait this.serviceSearch.request();\n\t\t\t}\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport { getChatId } from '../helpers/get-chat-id';\nimport { getLastElementId } from '../helpers/get-last-element-id';\n\nimport type { Store } from 'ui.vue3.vuex';\nimport type { RestClient } from 'rest.client';\n\ntype RestResponse = {\n\tadditionalMessages: [],\n\tfiles: [],\n\tmessages: [],\n\treactions: [],\n\treminders: [],\n\tusers: [],\n\tusersShort: []\n};\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\nexport class MessageSearch\n{\n\tstore: Store;\n\tdialogId: string;\n\tchatId: number;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\n\t// eslint-disable-next-line no-unused-private-class-members\n\thasMoreItemsToLoad: boolean = true;\n\t#lastMessageId: number = 0;\n\t#query: string = '';\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.chatId = getChatId(dialogId);\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tsearchOnServer(query: string): Promise<string[]>\n\t{\n\t\tif (this.#query !== query)\n\t\t{\n\t\t\tthis.#query = query;\n\t\t\tthis.hasMoreItemsToLoad = true;\n\t\t\tthis.#lastMessageId = 0;\n\t\t}\n\n\t\treturn this.#request();\n\t}\n\n\tloadNextPage(): Promise<string[]>\n\t{\n\t\treturn this.#request();\n\t}\n\n\t#request(): Promise<string[]>\n\t{\n\t\tconst config = {\n\t\t\tSEARCH_MESSAGE: this.#query,\n\t\t\tCHAT_ID: this.chatId,\n\t\t};\n\n\t\tif (this.#lastMessageId > 0)\n\t\t{\n\t\t\tconfig.LAST_ID = this.#lastMessageId;\n\t\t}\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.restClient.callMethod(RestMethod.imDialogMessagesSearch, config).then((response) => {\n\t\t\t\tconst responseData: RestResponse = response.data();\n\t\t\t\tresolve(this.#processSearchResponse(responseData));\n\t\t\t}).catch((error) => reject(error));\n\t\t});\n\t}\n\n\tloadFirstPage(): Promise\n\t{\n\t\treturn Promise.resolve();\n\t}\n\n\tresetSearchState()\n\t{\n\t\tthis.#lastMessageId = 0;\n\t\tthis.#query = '';\n\t\tthis.hasMoreItemsToLoad = true;\n\t}\n\n\t#processSearchResponse(response: RestResponse): Promise<string[]>\n\t{\n\t\tthis.#lastMessageId = getLastElementId(response.messages);\n\t\tif (response.messages.length < REQUEST_ITEMS_LIMIT)\n\t\t{\n\t\t\tthis.hasMoreItemsToLoad = false;\n\t\t}\n\n\t\treturn this.#updateModels(response).then(() => {\n\t\t\treturn response.messages.map((message) => message.id);\n\t\t});\n\t}\n\n\t#updateModels(rawData: RestResponse): Promise\n\t{\n\t\tconst {\n\t\t\tfiles,\n\t\t\tusers,\n\t\t\tusersShort,\n\t\t\treactions,\n\t\t\tadditionalMessages,\n\t\t\tmessages,\n\t\t\ttariffRestrictions = {},\n\t\t} = rawData;\n\n\t\tconst isHistoryLimitExceeded = Boolean(tariffRestrictions.isHistoryLimitExceeded);\n\t\tconst historyLimitPromise = this.store.dispatch('sidebar/messageSearch/setHistoryLimitExceeded', {\n\t\t\tchatId: this.chatId,\n\t\t\tisHistoryLimitExceeded,\n\t\t});\n\t\tconst usersPromise = Promise.all([\n\t\t\tthis.userManager.setUsersToModel(users),\n\t\t\tthis.userManager.addUsersToModel(usersShort),\n\t\t]);\n\t\tconst filesPromise = this.store.dispatch('files/set', files);\n\t\tconst reactionsPromise = this.store.dispatch('messages/reactions/set', reactions);\n\t\tconst additionalMessagesPromise = this.store.dispatch('messages/store', additionalMessages);\n\t\tconst messagesPromise = this.store.dispatch('messages/store', messages);\n\n\t\treturn Promise.all([\n\t\t\tfilesPromise, usersPromise, reactionsPromise, additionalMessagesPromise, messagesPromise, historyLimitPromise,\n\t\t]);\n\t}\n}\n","import { Text } from 'main.core';\nimport { EventEmitter } from 'main.core.events';\n\nimport { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\nimport { EventType } from 'im.v2.const';\nimport { Parser } from 'im.v2.lib.parser';\nimport { highlightText } from 'im.v2.lib.text-highlighter';\n\nimport './css/search-item.css';\n\nimport type { ImModelMessage } from 'im.v2.model';\n\n// @vue/component\nexport const SearchItem = {\n\tname: 'SearchItem',\n\tcomponents: { ChatAvatar, ChatTitle },\n\tprops:\n\t{\n\t\tmessageId: {\n\t\t\ttype: [String, Number],\n\t\t\trequired: true,\n\t\t},\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tquery: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tmessage(): ImModelMessage\n\t\t{\n\t\t\treturn this.$store.getters['messages/getById'](this.messageId);\n\t\t},\n\t\tauthorDialogId(): string\n\t\t{\n\t\t\treturn this.message.authorId.toString();\n\t\t},\n\t\tisSystem(): boolean\n\t\t{\n\t\t\treturn this.message.authorId === 0;\n\t\t},\n\t\tmessageText(): string\n\t\t{\n\t\t\tconst purifiedMessage = Parser.purifyMessage(this.message);\n\n\t\t\treturn highlightText(Text.encode(purifiedMessage), this.query);\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonItemClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.goToMessageContext, {\n\t\t\t\tmessageId: this.messageId,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t});\n\t\t},\n\t\tonMessageBodyClick(event)\n\t\t{\n\t\t\tif (event.target.tagName === 'A')\n\t\t\t{\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { SearchInput } from 'im.v2.component.elements.search-input';\n\nimport './css/search-header.css';\n\n// @vue/component\nexport const SearchHeader = {\n\tname: 'SearchHeader',\n\tcomponents: { SearchInput },\n\tprops:\n\t{\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\temits: ['back', 'changeQuery'],\n\ttemplate: `\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`,\n};\n","import { Runtime } from 'main.core';\nimport { EventEmitter } from 'main.core.events';\n\nimport { Logger } from 'im.v2.lib.logger';\nimport { EventType, SidebarDetailBlock } from 'im.v2.const';\nimport { Loader } from 'im.v2.component.elements.loader';\n\nimport { MessageSearch } from '../../../classes/panels/search/message-search';\nimport { SearchItem } from './search-item';\nimport { SearchHeader } from './search-header';\nimport { DateGroup } from '../../elements/date-group/date-group';\nimport { TariffLimit } from '../../elements/tariff-limit/tariff-limit';\nimport { DetailEmptyState as StartState } from '../../elements/detail-empty-state/detail-empty-state';\nimport { DetailEmptySearchState } from '../../elements/detail-empty-search-state/detail-empty-search-state';\nimport { SidebarCollectionFormatter } from '../../../classes/sidebar-collection-formatter';\n\nimport './css/message-search-panel.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const MessageSearchPanel = {\n\tname: 'MessageSearchPanel',\n\tcomponents: { DateGroup, SearchItem, Loader, StartState, SearchHeader, DetailEmptySearchState, TariffLimit },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tsearchQuery: '',\n\t\t\tisLoading: false,\n\t\t\tsearchResult: [],\n\t\t\tcurrentServerQueries: 0,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tformattedCollection(): Array\n\t\t{\n\t\t\tconst messages = this.searchResult.map((messageId) => {\n\t\t\t\treturn this.$store.getters['messages/getById'](messageId);\n\t\t\t}).filter((item) => Boolean(item));\n\n\t\t\treturn this.collectionFormatter.format(messages);\n\t\t},\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn this.preparedQuery.length > 0 && this.formattedCollection.length === 0;\n\t\t},\n\t\tpreparedQuery(): string\n\t\t{\n\t\t\treturn this.searchQuery.trim().toLowerCase();\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t\thasHistoryLimit(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/messageSearch/isHistoryLimitExceeded'](this.chatId);\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tpreparedQuery(newQuery: string, previousQuery: string)\n\t\t{\n\t\t\tif (newQuery === previousQuery)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.service.resetSearchState();\n\t\t\tthis.searchResult = [];\n\t\t\tthis.startSearch(newQuery);\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.service = new MessageSearch({ dialogId: this.dialogId });\n\t\tthis.collectionFormatter = new SidebarCollectionFormatter();\n\t\tthis.searchOnServerDelayed = Runtime.debounce(this.searchOnServer, 500, this);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.collectionFormatter.destroy();\n\t},\n\tmethods:\n\t{\n\t\tsearchOnServer(query: string)\n\t\t{\n\t\t\tthis.currentServerQueries++;\n\n\t\t\tthis.service.searchOnServer(query).then((messageIds: string[]) => {\n\t\t\t\tif (query !== this.preparedQuery)\n\t\t\t\t{\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.searchResult = this.mergeResult(messageIds);\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t}).finally(() => {\n\t\t\t\tthis.currentServerQueries--;\n\t\t\t\tthis.stopLoader();\n\t\t\t});\n\t\t},\n\t\tstartSearch(query: string)\n\t\t{\n\t\t\tif (query.length < 3)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (query.length >= 3)\n\t\t\t{\n\t\t\t\tthis.isLoading = true;\n\t\t\t\tthis.searchOnServerDelayed(query);\n\t\t\t}\n\n\t\t\tif (query.length === 0)\n\t\t\t{\n\t\t\t\tthis.cleanSearchResult();\n\t\t\t}\n\t\t},\n\t\tstopLoader()\n\t\t{\n\t\t\tif (this.currentServerQueries > 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tcleanSearchResult()\n\t\t{\n\t\t\tthis.searchResult = [];\n\t\t},\n\t\tneedToLoadNextPage(event)\n\t\t{\n\t\t\tconst target = event.target;\n\n\t\t\treturn target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t},\n\t\tonScroll(event)\n\t\t{\n\t\t\tif (this.isLoading || this.preparedQuery.length === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.needToLoadNextPage(event) || !this.service.hasMoreItemsToLoad)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tthis.service.loadNextPage().then((messageIds) => {\n\t\t\t\tthis.searchResult = this.mergeResult(messageIds);\n\t\t\t\tthis.isLoading = false;\n\t\t\t}).catch((error) => {\n\t\t\t\tLogger.warn('Message Search: loadNextPage error', error);\n\t\t\t});\n\t\t},\n\t\tmergeResult(messageIds: string[]): string[]\n\t\t{\n\t\t\treturn [...this.searchResult, ...messageIds].sort((a, z) => z - a);\n\t\t},\n\t\tonChangeQuery(query: string)\n\t\t{\n\t\t\tthis.searchQuery = query;\n\t\t},\n\t\tonClickBack()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.messageSearch });\n\t\t},\n\t\tloc(phraseCode: string, replacements: {[p: string]: string} = {}): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode, replacements);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Loc } from 'main.core';\n\nimport { ChatType } from 'im.v2.const';\nimport { Utils } from 'im.v2.lib.utils';\nimport { DateFormatter, DateTemplate } from 'im.v2.lib.date-formatter';\nimport { ChatTitle } from 'im.v2.component.elements.chat-title';\nimport { ChatAvatar, AvatarSize } from 'im.v2.component.elements.avatar';\n\nimport './css/chat-item.css';\n\nimport type { ImModelChat } from 'im.v2.model';\n\nconst ItemTextByChatType = {\n\t[ChatType.channel]: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_CHANNEL'),\n\t[ChatType.openChannel]: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_CHANNEL'),\n\t[ChatType.generalChannel]: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_CHANNEL'),\n\t[ChatType.collab]: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_COLLAB'),\n\tdefault: Loc.getMessage('IM_SIDEBAR_CHAT_TYPE_GROUP_V2'),\n};\n\n// @vue/component\nexport const ChatItem = {\n\tname: 'ChatItem',\n\tcomponents: { ChatAvatar, ChatTitle },\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tdateMessage: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\temits: ['clickItem'],\n\tcomputed:\n\t{\n\t\tAvatarSize: () => AvatarSize,\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatItemText(): string\n\t\t{\n\t\t\treturn ItemTextByChatType[this.dialog.type] ?? ItemTextByChatType.default;\n\t\t},\n\t\tformattedDate(): string\n\t\t{\n\t\t\tif (!this.dateMessage)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst date = Utils.date.cast(this.dateMessage);\n\n\t\t\treturn this.formatDate(date);\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonClick(event)\n\t\t{\n\t\t\tthis.$emit('clickItem', {\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\tnativeEvent: event,\n\t\t\t});\n\t\t},\n\t\tformatDate(date: Date): string\n\t\t{\n\t\t\treturn DateFormatter.formatByTemplate(date, DateTemplate.recent);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { RestMethod } from 'im.v2.const';\nimport { UserManager } from 'im.v2.lib.user';\nimport { Core } from 'im.v2.application.core';\n\nimport type { RestClient } from 'rest.client';\nimport type { Store } from 'ui.vue3.vuex';\n\nconst REQUEST_ITEMS_LIMIT = 50;\n\ntype RequestParams = {\n\tfilter: {\n\t\tuserId: number,\n\t},\n\tlimit: number,\n\toffset?: number,\n};\n\ntype RawChatItem = {\n\tavatar: string,\n\tcolor: string,\n\tdescription: string,\n\tdialogId: string,\n\tdiskFolderId: number,\n\tentityData1: string,\n\tentityData2: string,\n\tentityData3: string,\n\tentityId: string,\n\tentityType: string,\n\textranet: boolean,\n\tid: number,\n\tname: string,\n\towner: number,\n\tmessageType: string,\n\trole: string,\n\ttype: string,\n\tmanageUsers: string,\n\tmanageUi: string,\n\tmanageSettings: string,\n\tmanageMessages: string,\n\tdateMessage: string,\n}\n\ntype ChatItem = {\n\tdialogId: string,\n\tdateMessage: string,\n}\n\nexport class ChatsWithUser\n{\n\thasMoreItemsToLoad: boolean = true;\n\t#chatsCount: number = 0;\n\n\tstore: Store;\n\tdialogId: string;\n\tuserManager: UserManager;\n\trestClient: RestClient;\n\n\tconstructor({ dialogId }: {dialogId: string})\n\t{\n\t\tthis.store = Core.getStore();\n\t\tthis.restClient = Core.getRestClient();\n\t\tthis.dialogId = dialogId;\n\t\tthis.userManager = new UserManager();\n\t}\n\n\tloadFirstPage(): Promise<ChatItem[]>\n\t{\n\t\treturn this.#requestPage();\n\t}\n\n\tloadNextPage(): Promise<ChatItem[]>\n\t{\n\t\treturn this.#requestPage();\n\t}\n\n\t#getRequestParams(): RequestParams\n\t{\n\t\tconst userId = Number.parseInt(this.dialogId, 10);\n\n\t\tconst requestParams = {\n\t\t\tfilter: { userId },\n\t\t\tlimit: REQUEST_ITEMS_LIMIT,\n\t\t};\n\n\t\tif (this.#chatsCount > 0)\n\t\t{\n\t\t\trequestParams.offset = this.#chatsCount;\n\t\t}\n\n\t\treturn requestParams;\n\t}\n\n\tasync #requestPage(): Promise<ChatItem[]>\n\t{\n\t\tconst requestParams = this.#getRequestParams();\n\t\tconst response = await this.restClient.callMethod(RestMethod.imV2ChatListShared, requestParams);\n\n\t\treturn this.#handleResponse(response.data());\n\t}\n\n\tasync #handleResponse(response): Promise<ChatItem[]>\n\t{\n\t\tconst { chats }: { chats: RawChatItem[] } = response;\n\t\tthis.#chatsCount += chats.length;\n\t\tif (chats.length < REQUEST_ITEMS_LIMIT)\n\t\t{\n\t\t\tthis.hasMoreItemsToLoad = false;\n\t\t}\n\n\t\tawait this.#updateModels(chats);\n\n\t\treturn chats.map((chat: RawChatItem) => {\n\t\t\treturn {\n\t\t\t\tdialogId: chat.dialogId,\n\t\t\t\tdateMessage: chat.dateMessage,\n\t\t\t};\n\t\t});\n\t}\n\n\t#updateModels(chats: RawChatItem[]): Promise\n\t{\n\t\treturn this.#setDialoguesPromise(chats);\n\t}\n\n\t#setDialoguesPromise(chats: RawChatItem[]): Promise\n\t{\n\t\treturn this.store.dispatch('chats/set', chats);\n\t}\n}\n","import { EventEmitter } from 'main.core.events';\n\nimport { Messenger } from 'im.public';\nimport { Loader } from 'im.v2.component.elements.loader';\nimport { EventType, SidebarDetailBlock } from 'im.v2.const';\n\nimport { ChatItem } from './chat-item';\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\nimport { DetailEmptyState } from '../../elements/detail-empty-state/detail-empty-state';\nimport { ChatsWithUser } from '../../../classes/panels/chats-with-user';\n\nimport './css/chats-with-user-panel.css';\n\nimport type { JsonObject } from 'main.core';\nimport type { ImModelChat } from 'im.v2.model';\n\n// @vue/component\nexport const ChatsWithUserPanel = {\n\tname: 'ChatsWithUserPanel',\n\tcomponents: { DetailHeader, ChatItem, DetailEmptyState, Loader },\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tchats: [],\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tisEmptyState(): boolean\n\t\t{\n\t\t\treturn !this.isLoading && this.chats.length === 0;\n\t\t},\n\t\tdialog(): ImModelChat\n\t\t{\n\t\t\treturn this.$store.getters['chats/get'](this.dialogId, true);\n\t\t},\n\t\tchatId(): number\n\t\t{\n\t\t\treturn this.dialog.chatId;\n\t\t},\n\t},\n\twatch:\n\t{\n\t\tdialogId()\n\t\t{\n\t\t\tthis.chats = [];\n\t\t\tthis.service = new ChatsWithUser({ dialogId: this.dialogId });\n\t\t\tvoid this.loadFirstPage();\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.service = new ChatsWithUser({ dialogId: this.dialogId });\n\t\tvoid this.loadFirstPage();\n\t},\n\tmethods:\n\t{\n\t\tonClick(event)\n\t\t{\n\t\t\tconst { dialogId } = event;\n\n\t\t\tvoid Messenger.openChat(dialogId);\n\t\t},\n\t\tasync loadFirstPage()\n\t\t{\n\t\t\tthis.isLoading = true;\n\t\t\tthis.chats = await this.service.loadFirstPage();\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tneedToLoadNextPage(event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\n\t\t\treturn target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t},\n\t\tasync onScroll(event)\n\t\t{\n\t\t\tif (this.isLoading)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.needToLoadNextPage(event) || !this.service.hasMoreItemsToLoad)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tconst nextPageChats = await this.service.loadNextPage();\n\t\t\tthis.chats = [...this.chats, ...nextPageChats];\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.chatsWithUser });\n\t\t},\n\t\tloc(phrase: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phrase);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { DateFormatter, DateTemplate } from 'im.v2.lib.date-formatter';\n\nimport './css/multidialog-item.css';\n\nimport type { ImModelChat, ImModelSidebarMultidialogItem } from 'im.v2.model';\n\n// @vue/component\nexport const MultidialogItem = {\n\tname: 'MultidialogItem',\n\tprops:\n\t{\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tmultidialogItem(): ImModelSidebarMultidialogItem\n\t\t{\n\t\t\treturn this.item;\n\t\t},\n\t\tdialogId(): string\n\t\t{\n\t\t\treturn this.multidialogItem.dialogId;\n\t\t},\n\t\tchatId(): string\n\t\t{\n\t\t\treturn this.multidialogItem.chatId;\n\t\t},\n\t\ttitle(): string\n\t\t{\n\t\t\tconst chat: ImModelChat = this.$store.getters['chats/get'](this.dialogId);\n\n\t\t\treturn chat.name;\n\t\t},\n\t\tstatus(): string\n\t\t{\n\t\t\treturn this.multidialogItem.status;\n\t\t},\n\t\ttransferredStatus(): string\n\t\t{\n\t\t\tconst code = `IM_SIDEBAR_SUPPORT_TICKET_STATUS_${this.status.toUpperCase()}`;\n\n\t\t\treturn this.loc(code);\n\t\t},\n\t\tcontainerClasses(): string[]\n\t\t{\n\t\t\tconst status = `--${this.status}`;\n\t\t\tconst chatIsOpened = this.$store.getters['application/isChatOpen'](this.dialogId);\n\n\t\t\treturn [status, { '--selected': chatIsOpened }];\n\t\t},\n\t\tcounter(): number\n\t\t{\n\t\t\tconst counter = this.$store.getters['counters/getChatCounterByChatId'](this.chatId) ?? 0;\n\n\t\t\treturn counter > 99 ? '99+' : counter;\n\t\t},\n\t\tformatDate(): string\n\t\t{\n\t\t\tconst date = this.multidialogItem.date;\n\n\t\t\treturn DateFormatter.formatByTemplate(date, DateTemplate.recent);\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { EventEmitter } from 'main.core.events';\n\nimport { Messenger } from 'im.public';\nimport { EventType, SidebarDetailBlock, MultidialogStatus } from 'im.v2.const';\nimport { Loader } from 'im.v2.component.elements.loader';\nimport { ChatButton, ButtonColor, ButtonSize } from 'im.v2.component.elements.button';\n\nimport { Multidialog } from '../../../classes/panels/multidialog';\nimport { DetailHeader } from '../../elements/detail-header/detail-header';\nimport { MultidialogItem } from './multidialog-item';\n\nimport './css/multidialog-panel.css';\n\nimport type { ImModelSidebarMultidialogItem } from 'im.v2.model';\nimport type { JsonObject } from 'main.core';\n\n// @vue/component\nexport const MultidialogPanel = {\n\tname: 'MultidialogPanel',\n\tcomponents: {\n\t\tDetailHeader,\n\t\tMultidialogItem,\n\t\tChatButton,\n\t\tLoader,\n\t},\n\tprops: {\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tisLoading: false,\n\t\t\tisCreating: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tButtonSize: () => ButtonSize,\n\t\tButtonColor: () => ButtonColor,\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\tactiveMultidialogs(): ImModelSidebarMultidialogItem[]\n\t\t{\n\t\t\tconst multidialogs = this.$store.getters['sidebar/multidialog/getMultidialogsByStatus']([MultidialogStatus.new, MultidialogStatus.open]);\n\n\t\t\treturn multidialogs.sort((a, b) => b.date - a.date);\n\t\t},\n\t\tclosedMultidialogs(): ImModelSidebarMultidialogItem[]\n\t\t{\n\t\t\tconst multidialogs = this.$store.getters['sidebar/multidialog/getMultidialogsByStatus']([MultidialogStatus.close]);\n\n\t\t\treturn multidialogs.sort((a, b) => b.date - a.date);\n\t\t},\n\t\tlimitReached(): boolean\n\t\t{\n\t\t\tconst openMultidialogs = this.$store.getters['sidebar/multidialog/getMultidialogsByStatus']([MultidialogStatus.open]);\n\t\t\tconst openSessionsLimit = this.$store.getters['sidebar/multidialog/getOpenSessionsLimit'];\n\n\t\t\treturn openSessionsLimit <= openMultidialogs.length;\n\t\t},\n\t\tisInitedDetail(): boolean\n\t\t{\n\t\t\treturn this.$store.getters['sidebar/multidialog/isInitedDetail'];\n\t\t},\n\t\tisDisabledButtonCreate(): boolean\n\t\t{\n\t\t\treturn this.limitReached || !this.isInitedDetail;\n\t\t},\n\t\tbuttonCreateTitle(): boolean\n\t\t{\n\t\t\tif (!this.limitReached || !this.isInitedDetail)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\treturn this.loc('IM_SIDEBAR_SUPPORT_TICKET_LIMIT');\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tthis.service = new Multidialog();\n\t},\n\tmounted()\n\t{\n\t\tvoid this.loadFirstPage();\n\t},\n\tmethods:\n\t{\n\t\tloc(phraseCode: string): string\n\t\t{\n\t\t\treturn this.$Bitrix.Loc.getMessage(phraseCode);\n\t\t},\n\t\tonBackClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.sidebar.close, { panel: SidebarDetailBlock.multidialog });\n\t\t},\n\t\tneedToLoadNextPage(event: Event): boolean\n\t\t{\n\t\t\tconst target = event.target;\n\t\t\tconst isAtThreshold = target.scrollTop + target.clientHeight >= target.scrollHeight - target.clientHeight;\n\t\t\tconst hasNextPage = this.$store.getters['sidebar/multidialog/hasNextPage'];\n\n\t\t\treturn isAtThreshold && hasNextPage;\n\t\t},\n\t\tasync loadFirstPage()\n\t\t{\n\t\t\tif (this.isLoading)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.service.loadFirstPage();\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tasync onScroll(event: Event)\n\t\t{\n\t\t\tif (this.isLoading || !this.needToLoadNextPage(event))\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isLoading = true;\n\t\t\tawait this.service.loadNextPage();\n\t\t\tthis.isLoading = false;\n\t\t},\n\t\tasync onAddSupport()\n\t\t{\n\t\t\tif (this.isCreating)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.isCreating = true;\n\t\t\tconst newDialogId = await this.service.createSupportChat();\n\t\t\tif (newDialogId)\n\t\t\t{\n\t\t\t\tthis.openChat(newDialogId);\n\t\t\t}\n\t\t\tthis.isCreating = false;\n\t\t},\n\t\topenChat(dialogId)\n\t\t{\n\t\t\tvoid Messenger.openChat(dialogId);\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { Text } from 'main.core';\n\nimport { MainPanel } from './panels/main/main-panel';\nimport { TaskPanel } from './panels/task/task-panel';\nimport { FilePanel } from './panels/file/file-panel';\nimport { FileUnsortedPanel } from './panels/file-unsorted/file-unsorted-panel';\nimport { LinkPanel } from './panels/info/link-panel';\nimport { MarketPanel } from './panels/market/detail';\nimport { MeetingPanel } from './panels/meeting/meeting-panel';\nimport { MembersPanel } from './panels/members/members-panel';\nimport { FavoritePanel } from './panels/info/favorite-panel';\nimport { MessageSearchPanel } from './panels/message-search/message-search-panel';\nimport { ChatsWithUserPanel } from './panels/chats-with-user/chats-with-user-panel';\nimport { MultidialogPanel } from './panels/multidialog/multidialog-panel';\n\nimport '../css/sidebar-panel.css';\nimport '../css/detail.css';\n\n// @vue/component\nexport const SidebarPanel = {\n\tname: 'SidebarPanel',\n\tcomponents: {\n\t\tMainPanel,\n\t\tChatsWithUserPanel,\n\t\tMembersPanel,\n\t\tFavoritePanel,\n\t\tLinkPanel,\n\t\tFilePanel,\n\t\tTaskPanel,\n\t\tMeetingPanel,\n\t\tMarketPanel,\n\t\tMessageSearchPanel,\n\t\tFileUnsortedPanel,\n\t\tMultidialogPanel,\n\t},\n\tprops:\n\t{\n\t\tdialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tpanel: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tsecondLevel: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tentityId: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tpanelComponentName(): string\n\t\t{\n\t\t\treturn `${Text.capitalize(this.panel)}Panel`;\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n","import { BaseEvent, EventEmitter } from 'main.core.events';\n\nimport { Logger } from 'im.v2.lib.logger';\nimport { LocalStorageManager } from 'im.v2.lib.local-storage';\nimport { EventType, LocalStorageKey, SidebarDetailBlock } from 'im.v2.const';\n\nimport { SidebarPanel } from './components/sidebar-panel';\n\nimport './css/icons.css';\nimport './css/sidebar.css';\n\nimport type { JsonObject } from 'main.core';\n\ntype SidebarPanelType = $Values<typeof SidebarDetailBlock>;\n\n// @vue/component\nexport const ChatSidebar = {\n\tname: 'ChatSidebar',\n\tcomponents: { SidebarPanel },\n\tprops:\n\t{\n\t\toriginDialogId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tisActive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t},\n\temits: ['changePanel'],\n\tdata(): JsonObject\n\t{\n\t\treturn {\n\t\t\tneedTopLevelTransition: true,\n\t\t\tneedSecondLevelTransition: true,\n\n\t\t\ttopLevelPanelType: '',\n\t\t\ttopLevelPanelDialogId: '',\n\t\t\ttopLevelPanelStandalone: false,\n\n\t\t\tsecondLevelPanelType: '',\n\t\t\tsecondLevelPanelDialogId: '',\n\t\t\tsecondLevelPanelEntityId: '',\n\t\t\tsecondLevelPanelStandalone: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tSidebarDetailBlock: () => SidebarDetailBlock,\n\t\ttopLevelTransitionName(): string\n\t\t{\n\t\t\treturn this.needTopLevelTransition ? 'top-level-panel' : '';\n\t\t},\n\t\tsecondLevelTransitionName(): string\n\t\t{\n\t\t\treturn this.needSecondLevelTransition ? 'second-level-panel' : '';\n\t\t},\n\t\tcanShowTopPanel(): boolean\n\t\t{\n\t\t\tconst membersPanel = this.topLevelPanelType === SidebarDetailBlock.members;\n\t\t\tconst personalChat = !this.originDialogId.startsWith('chat');\n\t\t\tif (membersPanel && personalChat)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst messageSearchPanel = this.topLevelPanelType === SidebarDetailBlock.messageSearch;\n\n\t\t\treturn !messageSearchPanel;\n\t\t},\n\t\tsidebarOpened(): boolean\n\t\t{\n\t\t\treturn this.topLevelPanelType || this.secondLevelPanelType;\n\t\t},\n\t},\n\twatch:\n\t{\n\t\toriginDialogId(newValue: string, oldValue: string)\n\t\t{\n\t\t\tconst chatSwitched = Boolean(newValue && oldValue);\n\t\t\tif (chatSwitched)\n\t\t\t{\n\t\t\t\tthis.needTopLevelTransition = false;\n\t\t\t}\n\n\t\t\tif (!this.topLevelPanelStandalone)\n\t\t\t{\n\t\t\t\tthis.updateTopPanelOriginDialogId(newValue);\n\t\t\t}\n\n\t\t\tconst isSecondLevelPanelOpened = this.secondLevelPanelType.length > 0;\n\t\t\tif (isSecondLevelPanelOpened && !this.secondLevelPanelStandalone)\n\t\t\t{\n\t\t\t\tthis.closeSecondLevelPanel();\n\t\t\t}\n\n\t\t\tif (!this.canShowTopPanel)\n\t\t\t{\n\t\t\t\tthis.closeTopPanel();\n\t\t\t}\n\t\t},\n\t\ttopLevelPanelType(newValue: SidebarPanelType, oldValue: SidebarPanelType)\n\t\t{\n\t\t\tthis.needTopLevelTransition = oldValue.length === 0 || newValue.length === 0;\n\n\t\t\tconst isMainPanelOpened = newValue === SidebarDetailBlock.main;\n\t\t\tthis.saveSidebarOpenedState(isMainPanelOpened);\n\t\t},\n\t\tsecondLevelPanelType(newValue: SidebarPanelType, oldValue: SidebarPanelType)\n\t\t{\n\t\t\tthis.needSecondLevelTransition = !(newValue && oldValue);\n\t\t},\n\t},\n\tcreated()\n\t{\n\t\tLogger.warn('ChatSidebar: created');\n\t\tthis.restoreOpenState();\n\t},\n\tmounted()\n\t{\n\t\tEventEmitter.subscribe(EventType.sidebar.open, this.onSidebarOpen);\n\t\tEventEmitter.subscribe(EventType.sidebar.close, this.onSidebarClose);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.sidebar.open, this.onSidebarOpen);\n\t\tEventEmitter.unsubscribe(EventType.sidebar.close, this.onSidebarClose);\n\t},\n\tmethods:\n\t{\n\t\tonSidebarOpen(event: BaseEvent<{panel: SidebarPanelType, standalone: boolean, dialogId: string}>)\n\t\t{\n\t\t\tif (!this.isActive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst { panel = '', standalone = false, dialogId, entityId = '' } = event.getData();\n\n\t\t\tconst needToCloseSecondLevelPanel = !standalone && panel && this.secondLevelPanelType === panel;\n\t\t\tif (needToCloseSecondLevelPanel)\n\t\t\t{\n\t\t\t\tthis.closeSecondLevelPanel();\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst needToOpenSecondLevelPanel = this.topLevelPanelType && this.topLevelPanelType !== panel;\n\t\t\tif (needToOpenSecondLevelPanel)\n\t\t\t{\n\t\t\t\tthis.openSecondLevelPanel(panel, dialogId, standalone, entityId);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.openTopPanel(panel, dialogId, standalone);\n\t\t\t}\n\t\t},\n\t\tonSidebarClose(event: BaseEvent<{panel: SidebarPanelType}>)\n\t\t{\n\t\t\tif (!this.isActive)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.needTopLevelTransition = true;\n\n\t\t\tconst { panel = '' } = event.getData();\n\t\t\tconst needToCloseSecondLevelPanel = panel && this.secondLevelPanelType === panel;\n\t\t\tif (needToCloseSecondLevelPanel)\n\t\t\t{\n\t\t\t\tthis.closeSecondLevelPanel();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.closeSecondLevelPanel();\n\t\t\t\tthis.closeTopPanel();\n\t\t\t}\n\t\t},\n\t\trestoreOpenState()\n\t\t{\n\t\t\tconst sidebarOpenState = LocalStorageManager.getInstance().get(LocalStorageKey.sidebarOpened);\n\t\t\tif (!sidebarOpenState)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.openTopPanel(SidebarDetailBlock.main, this.originDialogId, false);\n\t\t},\n\t\tsaveSidebarOpenedState(sidebarOpened: boolean)\n\t\t{\n\t\t\tconst WRITE_TO_STORAGE_TIMEOUT = 200;\n\t\t\tclearTimeout(this.saveSidebarStateTimeout);\n\t\t\tthis.saveSidebarStateTimeout = setTimeout(() => {\n\t\t\t\tLocalStorageManager.getInstance().set(LocalStorageKey.sidebarOpened, sidebarOpened);\n\t\t\t}, WRITE_TO_STORAGE_TIMEOUT);\n\t\t},\n\t\topenTopPanel(type, dialogId, standalone = false)\n\t\t{\n\t\t\tthis.topLevelPanelType = type;\n\t\t\tthis.topLevelPanelDialogId = dialogId;\n\t\t\tthis.topLevelPanelStandalone = standalone;\n\t\t\tthis.$emit('changePanel', { panel: this.topLevelPanelType });\n\t\t},\n\t\tupdateTopPanelOriginDialogId(dialogId: string)\n\t\t{\n\t\t\tthis.topLevelPanelDialogId = dialogId;\n\t\t},\n\t\topenSecondLevelPanel(type, dialogId, standalone = false, entityId = '')\n\t\t{\n\t\t\tthis.secondLevelPanelType = type;\n\t\t\tthis.secondLevelPanelDialogId = dialogId;\n\t\t\tthis.secondLevelPanelStandalone = standalone;\n\t\t\tthis.secondLevelPanelEntityId = entityId;\n\t\t\tthis.$emit('changePanel', { panel: this.secondLevelPanelType });\n\t\t},\n\t\tcloseTopPanel()\n\t\t{\n\t\t\tthis.topLevelPanelType = '';\n\t\t\tthis.topLevelPanelDialogId = '';\n\t\t\tthis.topLevelPanelStandalone = false;\n\t\t\tthis.$emit('changePanel', { panel: '' });\n\t\t},\n\t\tcloseSecondLevelPanel()\n\t\t{\n\t\t\tthis.secondLevelPanelType = '';\n\t\t\tthis.secondLevelPanelDialogId = '';\n\t\t\tthis.secondLevelPanelStandalone = false;\n\t\t\tthis.$emit('changePanel', { panel: this.topLevelPanelType });\n\t\t},\n\t},\n\ttemplate: `\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`,\n};\n"],"names":["getChatId","dialogId","dialog","Core","getStore","getters","chatId","getLastElementId","collection","sort","length","a","b","id","lastCollectionItem","Type","isNumber","REQUEST_ITEMS_LIMIT","Favorite","constructor","store","restClient","getRestClient","userManager","UserManager","getInitialQuery","RestMethod","imChatFavoriteCounterGet","chat_id","imChatFavoriteGet","limit","getResponseHandler","response","Promise","reject","Error","favoriteCounterGetResponse","setCounterResult","dispatch","counter","setFavoriteResult","handleResponse","all","loadNextPage","queryParams","getQueryParams","requestPage","CHAT_ID","LIMIT","lastId","LAST_ID","callMethod","then","data","catch","error","console","updateModels","resultData","list","users","files","tariffRestrictions","addUsersPromise","setUsersToModel","isHistoryLimitExceeded","Boolean","rawMessages","map","favorite","message","hasNextPage","setFilesPromise","storeMessagesPromise","setFavoritesPromise","favorites","Link","imChatUrlCounterGet","imChatUrlGet","urlGetResult","handleUrlGetResponse","counterGetResult","handleCounterGetResponse","linksCount","getLinksCountFromModel","resolve","offset","OFFSET","setLinksPromise","links","File","imChatFileCollectionGet","group","historyLimitPromise","isArrayFilled","sortedGroups","forEach","file","fileGroup","SidebarFileGroups","fileUnsorted","push","setSidebarFilesPromises","Object","entries","groupName","listByGroup","loadFirstPage","loadFirstPageByGroup","loadNextPageByGroup","filesCount","getFilesCountFromModel","GROUP","imChatFileGet","Task","imChatTaskGet","tasksCount","getTasksCountFromModel","setTasksPromise","tasks","Meeting","imChatCalendarGet","meetingsCount","getMeetingsCountFromState","setMeetingsPromise","meetings","MembersService","imV2ChatMemberTail","membersCount","getMembersCountFromModel","nextCursor","cursor","restResult","userIds","user","setMembersPromise","cursorPromise","Multidialog","isInitedMultidialogBlock","imBotNetworkChatCount","setInitedPromise","updateModelsPromise","config","params","keys","key","value","runAction","imBotNetworkChatList","createSupportChat","Logger","warn","imBotNetworkChatAdd","chats","isInitedDetail","numberMultidialogs","count","chatIdsWithCounters","multidialogs","openSessionsLimit","promises","setChatsPromise","setUsersPromise","setSupportTicketPromise","chatsCount","unreadChats","FileUnsorted","imDiskFolderListGet","SidebarDetailBlock","diskFolderListGetResult","hasMoreItemsToLoad","preparedFiles","setSidebarFilesPromise","hasNextPagePromise","setLastIdPromise","MainPanelServiceClasses","Members","BlockToServices","freeze","SidebarMainPanelBlock","chat","members","copilot","task","copilotInfo","info","link","fileList","fileUnsortedList","taskList","meetingList","meeting","multidialog","Main","blockServices","buildBlocks","requestInitialData","query","callBatch","handleBatchRequestResult","classNames","getServiceClassesForBlocks","ClassName","blockService","initialQuery","responseHandler","services","sidebarConfig","SidebarManager","getInstance","getConfig","blockList","getBlocks","block","service","Text","capitalize","assign","responseHandlersResult","setInited","MainMenu","RecentMenu","permissionManager","PermissionManager","getMenuOptions","className","getMenuClassName","angle","getMenuItems","getPinMessageItem","getEditItem","getAddMembersToChatItem","getOpenProfileItem","getOpenUserCalendarItem","getChatsWithUserItem","getHideItem","getLeaveItem","getDeleteItem","canPerformActionByRole","ActionByRole","update","context","text","Loc","getMessage","onclick","Analytics","chatEdit","onOpenForm","LayoutManager","setLayout","name","Layout","updateChat","entityId","delete","chatDelete","onClick","onConfirm","isCollabChat","isUser","isBot","profileUri","Utils","getCalendarLink","BX","SidePanel","Instance","open","menuInstance","close","isChatWithCurrentUser","hasCreateChatAccess","canPerformActionByUserType","ActionByUserType","createChat","hasAccessByRole","extend","isChannel","userAdd","onChatSidebarClick","emit","events","onAddToChatShow","ChatService","deleteChat","clearCurrentLayoutEntityId","Notifier","collab","onBeforeDelete","deleteCollab","deleteLastOpenedElementById","confirmResult","showDeleteChatConfirm","onCancel","getChat","type","ChatType","MainHeader","components","AddToChat","AddToCollab","props","String","required","showAddToChatPopup","computed","recentItem","$store","headerTitle","getHeaderTitle","showMenuIcon","canOpenMenu","isMenuEnabled","openSidebarMenu","addMembersPopupComponent","created","contextMenu","subscribe","onAddChatShow","beforeUnmount","destroy","unsubscribe","methods","onContextMenuClick","event","item","openMenu","target","onSidebarCloseClick","EventEmitter","EventType","sidebar","loc","phraseCode","$Bitrix","template","ChatLinks","directives","hint","expanded","urlCounter","getCounterString","isLinksAvailable","state","isLinksMigrated","hintDirectiveContent","popupOptions","targetContainer","document","body","offsetLeft","offsetTop","bindOptions","position","MAX_COUNTER","toString","onLinkClick","panel","ChatFavourites","favoriteCounter","isCopilotLayout","currentLayoutName","onFavouriteClick","MAX_DESCRIPTION_SYMBOLS","NEW_LINE_SYMBOL","DescriptionByChatType","channel","openChannel","generalChannel","comment","default","ChatDescription","UserType","bot","isLongDescription","hasNewLine","description","includes","previewDescription","chatTypeText","slice","descriptionToShow","showExpandButton","ChatShared","chatsWithUser","standalone","InfoPreview","isSelfChat","getUserId","isUserOrBot","showSharedChats","FilePreviewItem","lazyload","fileItem","sidebarFileItem","fileId","previewImageStyles","hasPreview","backgroundImage","urlPreview","fileShortName","NAME_MAX_LENGTH","getShortFileName","viewerAttributes","getViewerDataAttributes","viewerAttrs","previewImageSrc","imageSrc","FileViewerContext","sidebarMain","isImage","isVideo","isAudio","fileIconClass","icon","isViewerAvailable","isAnimation","extension","urlShow","download","window","urlDownload","DetailEmptyState","title","iconType","iconClass","toKebabCase","FileListPreview","isMigrationFinished","hasFiles","isFilesMigrated","onOpenDetail","SidebarMenu","BaseMenu","getOpenContextMessageItem","messageId","goToMessageContext","getCopyLinkItem","clipboard","isCopySupported","copy","source","onCopyLinkComplete","TaskManager","LINK_ID","imChatTaskDelete","TaskMenu","taskManager","bind","TaskItem","ChatAvatar","AvatarSize","contextDialogId","searchQuery","emits","showContextButton","taskItem","taskTitle","encode","highlightText","taskAuthorDialogId","creatorId","taskResponsibleDialogId","responsibleId","taskDeadlineText","statusToShow","isStringFilled","statusTitle","convertHtmlEntities","taskBackgroundColorClass","status","statusColorClass","color","LabelColor","toUpperCase","toLowerCase","onTaskClick","cacheable","$emit","currentTarget","TaskListPreview","ChatButton","ButtonSize","ButtonColor","firstTask","showAddButton","createTask","addButtonColor","PrimaryLight","getEntityCreator","EntityCreator","onAddClick","chatEntities","onCreateTaskFromSidebarClick","createTaskForChat","MarketItem","marketItem","options","iconName","iconColor","MarketAppListPreview","marketMenuItems","MarketManager","getAvailablePlacementsByType","PlacementType","onMarketItemClick","market","MeetingManager","imChatCalendarDelete","MeetingMenu","meetingManager","MeetingItem","meetingItem","date","meetingDate","dateFrom","DateFormatter","formatByTemplate","DateTemplate","day","getDate","monthShort","DateTimeFormat","format","isActive","getTime","Date","now","onMeetingClick","top","Calendar","SliderLoader","show","MeetingListPreview","firstMeeting","createMeeting","onCreateEventFromSidebarClick","createMeetingForChat","CopilotInfoPreview","MuteChat","Toggle","ToggleSize","isGroupChat","startsWith","canBeMuted","mute","isChatMuted","isMuted","muteList","find","element","hintMuteNotAvailable","getChatService","chatService","muteActionHandler","unmuteChat","muteChat","AutoDelete","AutoDeleteHint","AutoDeleteDropdown","AutoDeletePopup","showHint","showPopup","autoDeleteDelayInHours","isAutoDeleteFeatureAvailable","FeatureManager","isFeatureAvailable","Feature","messagesAutoDeleteAvailable","isAutoDeleteFeatureEnabled","messagesAutoDeleteEnabled","isAutoDeleteAllowed","AutoDeleteManager","hintAutoDelete","isAutoDeleteAvailableByChatType","NoAutoDeleteChatTypes","lines","videoconf","ChannelManager","getChannelTypes","isAutoDeleteActive","changeAutoDeleteActionHandler","updateAutoDeleteDelay","AutoDeleteDelay","Off","messagesAutoDelete","openFeatureSlider","delay","setMessagesAutoDeleteDelay","onAutoDeleteDelayChange","onDropDownClick","stopPropagation","ChatMembersAvatars","showMembers","dialogIds","PREVIEW_USERS_COUNT","canSeeMembers","userList","canInviteMembers","usersInChatCount","userCounter","moreUsersCount","Math","max","isCollab","addUsersButtonColor","Collab","onOpenUsers","onOpenInvitePopup","ChatPreview","ChatTitle","PostPreview","postDialog","parentChatId","UserPreview","userPosition","canCreateChat","canExtendChat","showInviteButton","userLink","getProfileLink","CopilotService","updateRole","role","code","requestParams","imV2ChatCopilotUpdateRole","ChangeRolePromo","bindElement","videoSource","basePath","sources","ru","en","language","promoPopup","PromoVideoPopup","videoSrc","targetOptions","angleOptions","UI","AnglePosition","RIGHT","colors","iconBackground","IconSet","COPILOT_AI","left","PromoVideoPopupEvents","ACCEPT","onAccept","HIDE","onHide","mounted","hide","replacements","CopilotRole","CopilotRolesDialog","shouldShowChangeRolePromo","showRolesDialog","chatRole","roleName","canShowChangeRolePromo","needCopilotInRecentTabHint","PromoManager","needToShow","PromoId","copilotInRecentTab","needShowAddUsersToChatHint","addUsersToCopilotChat","needToShowChangeRolePromo","changeRoleCopilot","setTimeout","handleChangeRole","onChangeRolePromoAccept","markAsWatched","onCopilotDialogSelectRole","CopilotPreview","SupportPreview","MultidialogPreview","numberRequests","totalChatCounter","TariffLimit","chatHistory","getLimitTitle","preparedDescription","getLimitSubtitle","replace","tooltipText","getTooltipText","watch","sendAnalyticsOnCreate","onDetailClick","sendAnalyticsOnClick","historyLimit","onSidebarBannerClick","onSidebarLimitExceeded","TariffLimitPreview","INTRANET_MANUAL_CODE","COLLABER_MANUAL_CODE","CollabHelpdeskPreview","collabHelpdeskSidebar","isCurrentUserCollaber","currentUser","collaber","openHelpdesk","manualCode","urlParams","utm_source","utm_content","Manual","NotesPreview","ChatAvatarType","ChatTitleType","TaskPreview","ComponentMap","notes","post","support","FileUnsortedListPreview","marketAppList","tariffLimit","collabHelpdesk","SidebarSkeleton","MainPanel","isLoading","blocks","dialogInited","inited","hasInitialData","initializeSidebar","sidebarService","concatAndSortSearchResult","concatArrayFirst","concatArraySecond","z","TaskSearch","searchOnServer","request","resetSearchState","responseData","SEARCH_TASK_NAME","DateGroup","dateText","DetailHeader","SearchInput","secondLevel","withAddButton","withSearch","isSearchHeaderOpened","delayForFocusOnStart","Number","DetailEmptySearchState","subTitle","SidebarCollectionFormatter","cachedDateGroups","dateGroups","dateGroup","getDateGroup","dateGroupTitle","items","values","INDEX_BETWEEN_DATE_AND_TIME","shortDate","toJSON","DEFAULT_MIN_TOKEN_SIZE","TaskPanel","StartState","Loader","searchResult","currentServerQueries","minTokenSize","formattedCollection","collectionFormatter","isEmptyState","preparedQuery","trim","isSearchQueryMinimumSize","hasHistoryLimit","newQuery","previousQuery","cleanSearchResult","startSearch","initSettings","serviceSearch","searchOnServerDelayed","Runtime","debounce","settings","Extension","getSettings","get","messageIds","finally","stopLoader","onChangeQuery","toggleSearchPanelOpened","onBackClick","needToLoadNextPage","isAtThreshold","scrollTop","clientHeight","scrollHeight","nameGetter","onScroll","ARROW_CONTROL_SIZE","DetailTabs","tabs","Array","hasLeftControl","hasRightControl","currentElementIndex","highlightOffsetLeft","highlightWidth","highlightStyle","width","newIndex","updateHighlightPosition","scrollToElement","$refs","scrollWidth","offsetWidth","getElementNodeByIndex","index","children","filter","node","Dom","hasClass","elementIndex","scroll","behavior","onTabClick","getTabTitle","tab","langPhraseCode","isSelectedTab","onLeftClick","onRightClick","updateControlsVisibility","scrollLeft","clientWidth","FileSearch","listByType","SEARCH_FILE_NAME","MediaDetailItem","MessageAvatar","videoDuration","previewPicture","sidebarTabMedia","videoDurationText","formatTime","canBeOpenedWithViewer","Viewer","rawSeconds","floor","durationHours","durationMinutes","hours","minutes","padStart","seconds","handleVideoEvent","video","duration","sidebarFile","progress","FileManager","diskService","DiskService","saveOnDisk","fileIds","save","FileMenu","mediaManager","getDownloadFileItem","getSaveFileOnDiskItem","getDeleteFileItem","html","getDownloadHtml","onDiskSaveComplete","getCurrentUserId","authorId","fileName","create","style","setAttribute","MediaTab","isSearch","isLoadingSearch","media","AudioDetailItem","AudioPlayer","timelineType","audioUrl","random","AudioTab","audio","BriefItem","brief","shortName","fileSize","formatFileSize","size","sidebarTabBriefs","BriefTab","FileDetailItem","viewerContext","FileTab","FilePanel","SidebarFileTabGroups","tabComponentName","tabTypes","canShowBriefs","sidebarBriefs","onTabSelect","tabName","FileUnsortedPanel","LinkItem","linkItem","shortDescription","hostName","URL","hostname","richData","authorDialogId","previewUrl","previewStyles","backgroundSize","backgroundRepeat","iconTypeClass","LinkSearch","SEARCH_URL","LinkManager","imChatUrlDelete","LinkMenu","linkManager","getDeleteLinkItem","LinkPanel","MarketPanel","Spinner","SpinnerSize","placement","placementId","parseInt","marketManager","loadPlacement","MeetingSearch","SEARCH_TITLE","MeetingPanel","DetailUser","isOwner","isManager","isCopilot","needContextMenu","userId","hasLink","onClickContextMenu","userDialogId","MembersMenu","UserMenu","callManager","CallManager","getProfileItem","getMentionItem","getSendItem","getManagerItem","getCallItem","getKickItem","ownerId","canChangeManagers","changeManagers","isCollabType","managerList","removeManager","addManager","chatCanBeCalled","chatIsAllowedToCall","call","startCall","isCurrentUser","canLeaveCollab","canLeaveChat","leave","userChoice","showLeaveChatConfirm","leaveCollab","leaveChat","MemberTitleByChatType","MembersPanel","showAddToChatTarget","userDialogIds","chatLink","layoutName","getLayout","chatGetParameter","GetParameter","openCopilotChat","openChat","getParams","URLSearchParams","getHost","Path","online","panelInited","phrase","needAddButton","needCopyLinkButton","onCopyInviteClick","FavoriteMenu","getDeleteFromFavoriteItem","messageService","MessageService","removeMessageFromFavorite","FavoriteSearch","SEARCH_MESSAGE","FavoriteItem","MessageAuthorTitle","favoriteItem","favoriteMessage","messageText","purifiedMessage","Parser","purifyMessage","textToShow","onItemClick","FavoritePanel","MessageSearch","imDialogMessagesSearch","messages","rawData","usersShort","reactions","additionalMessages","usersPromise","addUsersToModel","filesPromise","reactionsPromise","additionalMessagesPromise","messagesPromise","SearchItem","isSystem","onMessageBodyClick","tagName","SearchHeader","MessageSearchPanel","mergeResult","onClickBack","messageSearch","ItemTextByChatType","ChatItem","dateMessage","chatItemText","formattedDate","cast","formatDate","nativeEvent","recent","ChatsWithUser","imV2ChatListShared","ChatsWithUserPanel","Messenger","nextPageChats","MultidialogItem","multidialogItem","transferredStatus","containerClasses","chatIsOpened","MultidialogPanel","isCreating","activeMultidialogs","MultidialogStatus","new","closedMultidialogs","limitReached","openMultidialogs","isDisabledButtonCreate","buttonCreateTitle","onAddSupport","newDialogId","SidebarPanel","panelComponentName","ChatSidebar","originDialogId","needTopLevelTransition","needSecondLevelTransition","topLevelPanelType","topLevelPanelDialogId","topLevelPanelStandalone","secondLevelPanelType","secondLevelPanelDialogId","secondLevelPanelEntityId","secondLevelPanelStandalone","topLevelTransitionName","secondLevelTransitionName","canShowTopPanel","membersPanel","personalChat","messageSearchPanel","sidebarOpened","newValue","oldValue","chatSwitched","updateTopPanelOriginDialogId","isSecondLevelPanelOpened","closeSecondLevelPanel","closeTopPanel","isMainPanelOpened","main","saveSidebarOpenedState","restoreOpenState","onSidebarOpen","onSidebarClose","getData","needToCloseSecondLevelPanel","needToOpenSecondLevelPanel","openSecondLevelPanel","openTopPanel","sidebarOpenState","LocalStorageManager","LocalStorageKey","WRITE_TO_STORAGE_TIMEOUT","clearTimeout","saveSidebarStateTimeout","set"],"mappings":"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"}

Youez - 2016 - github.com/yon3zu
LinuXploit