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/rospirotorg.ru/bitrix/js/im/v2/component/search/dist/ |
Upload File : |
{"version":3,"file":"search.bundle.js","sources":["../src/search-context-menu.js","../src/components/carousel-user.js","../src/components/recent-users-carousel.js","../src/components/search-result-section.js","../src/types/search-item.js","../src/search-utils.js","../src/search-item.js","../src/components/avatar-openline.js","../src/components/search-result-openline-item.js","../src/components/search-result-network-item.js","../src/components/search-result-item.js","../src/search-cache.js","../src/search-config.js","../src/search-recent-list.js","../src/search-service.js","../src/components/search-result-department-item.js","../src/search.js"],"sourcesContent":["import {RecentMenu} from 'im.v2.lib.menu';\n\nexport class SearchContextMenu extends RecentMenu\n{\n\tgetMenuItems(): Array\n\t{\n\t\treturn [\n\t\t\tthis.getSendMessageItem(),\n\t\t\tthis.getCallItem(),\n\t\t\tthis.getHistoryItem(),\n\t\t\tthis.getOpenProfileItem(),\n\t\t];\n\t}\n}","import {EventEmitter} from 'main.core.events';\nimport {EventType, AvatarSize} from 'im.v2.const';\nimport {Avatar} from 'im.v2.component.old-chat-embedding.elements';\nimport '../css/search.css';\nimport {SearchContextMenu} from '../search-context-menu';\n\nexport const CarouselUser = {\n\tname: 'CarouselUser',\n\tcomponents: {Avatar},\n\tprops: {\n\t\tuser: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tname()\n\t\t{\n\t\t\treturn this.user.dialog.name.split(' ')[0];\n\t\t},\n\t\tisExtranet(): boolean\n\t\t{\n\t\t\treturn this.user.user.extranet;\n\t\t},\n\t\tAvatarSize: () => AvatarSize,\n\t},\n\tcreated()\n\t{\n\t\tthis.contextMenuManager = new SearchContextMenu(this.$Bitrix);\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.contextMenuManager.destroy();\n\t},\n\tmethods:\n\t{\n\t\tonClick()\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.open, {\n\t\t\t\tdialogId: this.user.dialogId,\n\t\t\t\tchat: this.user.dialog,\n\t\t\t\tuser: this.user.user\n\t\t\t});\n\t\t\tBX.MessengerProxy.clearSearchInput();\n\t\t},\n\t\tonRightClick(event)\n\t\t{\n\t\t\tif (event.altKey && event.shiftKey)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst item = {dialogId: this.user.dialogId};\n\t\t\tEventEmitter.emit(EventType.search.openContextMenu, {item, event});\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div class=\"bx-messenger-carousel-item\" @click=\"onClick\" @click.right.prevent=\"onRightClick\">\n\t\t\t<Avatar :dialogId=\"user.dialogId\" :size=\"AvatarSize.L\" />\n\t\t\t<div :class=\"[isExtranet ? 'bx-messenger-carousel-item-extranet' : '', 'bx-messenger-carousel-item-title']\">\n\t\t\t\t{{name}}\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import {CarouselUser} from './carousel-user';\nimport '../css/search.css';\n\nconst recentUsersLimit = 5;\n\n// @vue/component\nexport const RecentUsersCarousel = {\n\tname: 'RecentUsersCarousel',\n\tcomponents: {CarouselUser},\n\tprops: {\n\t\ttitle: {\n\t\t\ttype: String,\n\t\t\trequired: false,\n\t\t\tdefault: ''\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tusers()\n\t\t{\n\t\t\tconst recentUsers = [];\n\t\t\tthis.$store.getters['recent/getSortedCollection'].forEach(recentItem => {\n\t\t\t\tconst dialog = this.$store.getters['dialogues/get'](recentItem.dialogId, true);\n\t\t\t\tconst user = this.$store.getters['users/get'](recentItem.dialogId, true);\n\n\t\t\t\trecentUsers.push({...recentItem, dialog, user});\n\t\t\t});\n\n\t\t\tconst usersWithoutBotsAndCurrentUser = recentUsers.filter(item => {\n\t\t\t\treturn item.dialog.type === 'user' && !item.user.bot && item.user.id !== this.currentUserId;\n\t\t\t});\n\n\t\t\treturn usersWithoutBotsAndCurrentUser.slice(0, recentUsersLimit);\n\t\t},\n\t\tcurrentUserId(): number\n\t\t{\n\t\t\treturn this.$store.state.application.common.userId;\n\t\t}\n\t},\n\t// language=Vue\n\ttemplate: `\n\t\t<div v-if=\"title\" class=\"bx-messenger-recent-users-carousel-title\">{{title}}</div>\n\t\t<div class=\"bx-messenger-recent-users-carousel\">\n\t\t\t<CarouselUser v-for=\"user in users\" :key=\"user.dialogId\" :user=\"user\" />\n\t\t</div>\n\t`\n};","import '../css/search.css';\n\nexport const SearchResultSection = {\n\tname: 'SearchResultSection',\n\tprops: {\n\t\tcomponent: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\titems: {\n\t\t\ttype: Object, // Map<string, SearchItem>\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\tshowMoreButton: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t\trequired: false\n\t\t},\n\t\tminItems: {\n\t\t\ttype: Number,\n\t\t\tdefault: 10,\n\t\t\trequired: false\n\t\t},\n\t\tmaxItems: {\n\t\t\ttype: Number,\n\t\t\tdefault: 50,\n\t\t\trequired: false\n\t\t}\n\t},\n\tdata: function ()\n\t{\n\t\treturn {\n\t\t\texpanded: false,\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tshowMore()\n\t\t{\n\t\t\tif (!this.showMoreButton)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.items.size > this.minItems;\n\t\t},\n\t\tshowMoreButtonText()\n\t\t{\n\t\t\treturn this.expanded\n\t\t\t\t? this.$Bitrix.Loc.getMessage('IM_SEARCH_SECTION_TITLE_SHOW_LESS')\n\t\t\t\t: this.$Bitrix.Loc.getMessage('IM_SEARCH_SECTION_TITLE_SHOW_MORE')\n\t\t\t;\n\t\t},\n\t\tsectionItems()\n\t\t{\n\t\t\tconst itemsFromMap = [...this.items.values()];\n\t\t\tif (!this.showMoreButton)\n\t\t\t{\n\t\t\t\treturn itemsFromMap;\n\t\t\t}\n\n\t\t\treturn this.expanded ? itemsFromMap.slice(0, this.maxItems) : itemsFromMap.slice(0, this.minItems);\n\t\t},\n\t},\n\tmethods:\n\t{\n\t\tonShowMore()\n\t\t{\n\t\t\tthis.expanded = !this.expanded;\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div class=\"bx-messenger-search-result-section-wrapper\">\n\t\t\t<div class=\"bx-messenger-search-result-section-title\">{{title}}</div>\n\t\t\t<div>\n\t\t\t\t<component :is=\"component\" v-for=\"item in sectionItems\" :key=\"item.getEntityFullId()\" :item=\"item\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"showMore\" class=\"bx-messenger-search-result-section-show-more\" @click.prevent=\"onShowMore\">\n\t\t\t\t{{ showMoreButtonText }}\n\t\t\t</div>\n\t\t</div>\n\t`\n};","export type ImSearchItem = {\n\tid: number,\n\tentityId: string,\n\tentityType: string,\n\ttitle: string,\n\tcustomData: {\n\t\timChat?: Object,\n\t\timUser?: Object,\n\t\timBot?: Object,\n\t\temail?: string,\n\t\tlastName?: string,\n\t\tlogin?: string,\n\t\tname?: string,\n\t\tposition?: string,\n\t\tsecondName?: string,\n\t},\n\tavatar: string,\n\tbadges?: Array<Object>,\n\ttabs?: Array<string>,\n\tcontextSort?: number,\n\tcustomSort?: number,\n};\n\nexport const EntityIdTypes = Object.freeze({\n\tuser: 'user',\n\tbot: 'im-bot',\n\tchat: 'im-chat',\n\tchatUser: 'im-chat-user',\n\tdepartment: 'department',\n\tnetwork: 'imbot-network',\n});","import {EntityIdTypes} from './types/search-item';\nimport {SearchItem} from './search-item';\nimport {Type} from 'main.core';\n\nexport const SearchUtils = {\n\tgetWordsFromString(string: string): Array<string>\n\t{\n\t\tconst clearedString = string\n\t\t\t.replaceAll('(', ' ')\n\t\t\t.replaceAll(')', ' ')\n\t\t\t.replaceAll('[', ' ')\n\t\t\t.replaceAll(']', ' ')\n\t\t\t.replaceAll('{', ' ')\n\t\t\t.replaceAll('}', ' ')\n\t\t\t.replaceAll('<', ' ')\n\t\t\t.replaceAll('>', ' ')\n\t\t\t.replaceAll('-', ' ')\n\t\t\t.replaceAll('#', ' ')\n\t\t\t.replaceAll('\"', ' ')\n\t\t\t.replaceAll('\\'', ' ')\n\t\t\t.replace(/\\s\\s+/g, ' ')\n\t\t;\n\n\t\treturn clearedString.split(' ').filter(word => word !== '');\n\t},\n\n\tgetTypeByEntityId(entityId: string): string\n\t{\n\t\tswitch (entityId)\n\t\t{\n\t\t\tcase EntityIdTypes.user:\n\t\t\tcase EntityIdTypes.bot:\n\t\t\t\treturn 'user';\n\t\t\tcase EntityIdTypes.chat:\n\t\t\tcase EntityIdTypes.chatUser:\n\t\t\t\treturn 'chat';\n\t\t\tcase EntityIdTypes.department:\n\t\t\t\treturn 'department';\n\t\t\tcase EntityIdTypes.network:\n\t\t\t\treturn 'network';\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Unknown entity id: ${entityId}`);\n\t\t}\n\t},\n\n\tcreateItemMap(items: Array): Map<string, SearchItem>\n\t{\n\t\tconst map = new Map();\n\n\t\titems.forEach(item => {\n\t\t\tconst mapItem = new SearchItem(item);\n\t\t\tmap.set(mapItem.getEntityFullId(), mapItem);\n\t\t});\n\n\t\treturn map;\n\t},\n\n\tgetFirstItemFromMap(map: Map<string, SearchItem>): SearchItem\n\t{\n\t\tconst iterator = map.entries();\n\t\tconst firstIteration = iterator.next();\n\t\tconst firstItem = firstIteration.value;\n\t\tconst [, content] = firstItem;\n\n\t\treturn content;\n\t},\n\n\tconvertKeysToLowerCase(object: Object): Object\n\t{\n\t\tconst result = {};\n\t\tObject.keys(object).forEach(key => {\n\t\t\tif (Type.isObject(object[key]) && !Type.isArray(object[key]))\n\t\t\t{\n\t\t\t\tresult[key.toLowerCase()] = this.convertKeysToLowerCase(object[key]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tresult[key.toLowerCase()] = object[key];\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t},\n\n\tprepareRecentItems(recentItems: Array<string, number>): Array<Object>\n\t{\n\t\treturn recentItems.map(item => {\n\t\t\tconst [entityId, id] = item;\n\t\t\tconst type = SearchUtils.getTypeByEntityId(entityId);\n\n\t\t\treturn {\n\t\t\t\tcacheId: `${type}|${id}`,\n\t\t\t\tdate: new Date(),\n\t\t\t};\n\t\t});\n\t}\n};","import {EntityIdTypes} from './types/search-item';\nimport {SearchUtils} from './search-utils';\nimport {Type} from 'main.core';\n\nexport class SearchItem\n{\n\tid: number | string;\n\tentityId: string = null;\n\tentityType: ?string = null;\n\tdialogId: string = null;\n\ttitle: ?string = null;\n\tsubtitle: ?string = null;\n\tname: ?string = null;\n\tlastName: ?string = null;\n\tsecondName: ?string = null;\n\tposition: ?string = null;\n\tavatar: ?string = null;\n\tavatarOptions: ?Object = null;\n\tcustomSort: number = 0;\n\tcontextSort: number = 0;\n\trawData: ?Object = null;\n\n\tconstructor(itemOptions)\n\t{\n\t\tthis.setRawData(itemOptions);\n\t\tthis.setId(itemOptions);\n\t\tthis.setDialogId(itemOptions);\n\t\tthis.setEntityId(itemOptions);\n\t\tthis.setEntityType(itemOptions);\n\t\tthis.setTitle(itemOptions);\n\t\tthis.setSubtitle(itemOptions);\n\t\tthis.setName(itemOptions);\n\t\tthis.setLastName(itemOptions);\n\t\tthis.setSecondName(itemOptions);\n\t\tthis.setPosition(itemOptions);\n\t\tthis.setAvatar(itemOptions);\n\t\tthis.setAvatarOptions(itemOptions);\n\t\tthis.setContextSort(itemOptions);\n\t}\n\n\tisFromProviderResponse(itemOptions: Object): boolean\n\t{\n\t\treturn Type.isString(itemOptions.entityId) && !Type.isNil(itemOptions.id);\n\t}\n\n\tisFromModel(itemOptions: Object): boolean\n\t{\n\t\treturn Type.isString(itemOptions.dialogId) && Type.isObject(itemOptions.dialog);\n\t}\n\n\tsetId(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.id = itemOptions.id;\n\t\t}\n\t\telse if (this.isFromModel(itemOptions))\n\t\t{\n\t\t\tthis.id = itemOptions.dialogId.startsWith('chat') ? itemOptions.dialogId.slice(4) : itemOptions.dialogId;\n\t\t}\n\t}\n\n\tsetDialogId(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tif (itemOptions.customData?.imChat?.ID > 0)\n\t\t\t{\n\t\t\t\tthis.dialogId = `chat${itemOptions.customData.imChat.ID}`;\n\t\t\t}\n\t\t\telse if (itemOptions.customData?.imUser?.ID > 0)\n\t\t\t{\n\t\t\t\tthis.dialogId = itemOptions.customData.imUser.ID.toString();\n\t\t\t}\n\t\t}\n\t\telse if (this.isFromModel(itemOptions))\n\t\t{\n\t\t\tthis.dialogId = itemOptions.dialogId;\n\t\t}\n\t}\n\n\tsetEntityId(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.entityId = itemOptions.entityId;\n\t\t}\n\t\telse if (this.isFromModel(itemOptions))\n\t\t{\n\t\t\tif (!itemOptions.user)\n\t\t\t{\n\t\t\t\tthis.entityId = EntityIdTypes.chat;\n\t\t\t}\n\t\t\telse if (itemOptions.user.bot)\n\t\t\t{\n\t\t\t\tthis.entityId = EntityIdTypes.bot;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.entityId = EntityIdTypes.user;\n\t\t\t}\n\t\t}\n\t}\n\n\tsetEntityType(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.entityType = itemOptions.entityType;\n\t\t}\n\t}\n\n\tsetTitle(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.title = itemOptions.title;\n\t\t}\n\t\telse if (this.isFromModel(itemOptions))\n\t\t{\n\t\t\tthis.title = itemOptions.dialog.name;\n\t\t}\n\t}\n\n\tsetSubtitle(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.subtitle = itemOptions.subtitle;\n\t\t}\n\t}\n\n\tsetName(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.name = itemOptions.customData?.name;\n\t\t}\n\t\telse if (this.isFromModel(itemOptions))\n\t\t{\n\t\t\tthis.name = itemOptions.user?.firstName;\n\t\t}\n\t}\n\n\tsetLastName(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.lastName = itemOptions.customData?.lastName;\n\t\t}\n\t\telse if (this.isFromModel(itemOptions))\n\t\t{\n\t\t\tthis.lastName = itemOptions.user?.lastName;\n\t\t}\n\t}\n\n\tsetSecondName(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.secondName = itemOptions.customData?.secondName;\n\t\t}\n\t}\n\n\tsetPosition(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.position = itemOptions.customData?.position;\n\t\t}\n\t\telse if (this.isFromModel(itemOptions))\n\t\t{\n\t\t\tthis.position = itemOptions.user?.workPosition;\n\t\t}\n\t}\n\n\tsetAvatar(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.avatar = itemOptions.avatar;\n\t\t}\n\t}\n\n\tsetAvatarOptions(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.avatarOptions = itemOptions.avatarOptions;\n\t\t}\n\t}\n\n\tsetContextSort(itemOptions: Object)\n\t{\n\t\tif (this.isFromProviderResponse(itemOptions))\n\t\t{\n\t\t\tthis.contextSort = itemOptions.contextSort;\n\t\t}\n\t}\n\n\tsetRawData(itemOptions: Object)\n\t{\n\t\tthis.rawData = itemOptions;\n\t}\n\n\tgetId(): number\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetEntityId(): string\n\t{\n\t\treturn this.entityId;\n\t}\n\n\tgetEntityType(): ?string\n\t{\n\t\treturn this.entityType;\n\t}\n\n\tgetEntityFullId(): string\n\t{\n\t\tconst type = SearchUtils.getTypeByEntityId(this.entityId);\n\n\t\treturn `${type}|${this.id}`;\n\t}\n\n\tgetTitle(): ?string\n\t{\n\t\treturn this.title;\n\t}\n\n\tgetSubtitle(): ?string\n\t{\n\t\treturn this.subtitle;\n\t}\n\n\tgetName(): ?string\n\t{\n\t\treturn this.name;\n\t}\n\n\tgetLastName(): ?string\n\t{\n\t\treturn this.lastName;\n\t}\n\n\tgetSecondName(): ?string\n\t{\n\t\treturn this.secondName;\n\t}\n\n\tgetPosition(): ?string\n\t{\n\t\treturn this.position;\n\t}\n\n\tgetCustomData(): ?Object\n\t{\n\t\treturn this.rawData.customData;\n\t}\n\n\tgetDialogId(): string\n\t{\n\t\treturn this.dialogId;\n\t}\n\n\tgetAvatar()\n\t{\n\t\treturn this.avatar;\n\t}\n\n\tgetAvatarOptions()\n\t{\n\t\treturn this.avatarOptions;\n\t}\n\n\tgetContextSort(): number\n\t{\n\t\treturn this.contextSort ? this.contextSort : 0;\n\t}\n\n\taddCustomSort(value: number)\n\t{\n\t\tthis.customSort += value;\n\t}\n\n\tgetCustomSort(): number\n\t{\n\t\treturn this.customSort;\n\t}\n\n\tisUser(): boolean\n\t{\n\t\tif (this.isFromProviderResponse(this.rawData))\n\t\t{\n\t\t\treturn !!this.rawData.customData?.imUser && this.rawData.customData.imUser.ID > 0;\n\t\t}\n\n\t\treturn !!this.rawData.user;\n\t}\n\n\tisChat(): boolean\n\t{\n\t\treturn !this.isUser();\n\t}\n\n\tisExtranet(): boolean\n\t{\n\t\tif (this.isFromProviderResponse(this.rawData))\n\t\t{\n\t\t\treturn !!this.rawData.customData?.imUser?.EXTRANET || !!this.rawData.customData?.imChat?.EXTRANET;\n\t\t}\n\t\telse if (this.isFromModel(this.rawData))\n\t\t{\n\t\t\treturn !!this.rawData.user?.extranet || !!this.rawData.dialog.extranet;\n\t\t}\n\t}\n\n\tgetUserCustomData()\n\t{\n\t\treturn this.rawData.customData?.imUser ? this.rawData.customData.imUser : null;\n\t}\n\n\tgetChatCustomData()\n\t{\n\t\treturn this.rawData.customData?.imChat ? this.rawData.customData.imChat : null;\n\t}\n\n\tisOpeLinesType(): boolean\n\t{\n\t\treturn this.getEntityType() === 'LINES';\n\t}\n\n\tgetOpenlineEntityId(): string\n\t{\n\t\tif (!this.isOpeLinesType())\n\t\t{\n\t\t\treturn '';\n\t\t}\n\t\tconst entityId = this.rawData.customData?.imChat?.ENTITY_ID;\n\n\t\treturn entityId.toString().split('|')[0];\n\t}\n\n\tgetAvatarColor(): string\n\t{\n\t\tlet color = '';\n\t\tif (this.isFromProviderResponse(this.rawData))\n\t\t{\n\t\t\tif (this.isUser())\n\t\t\t{\n\t\t\t\tcolor = this.rawData.customData?.imUser?.COLOR?.toString();\n\t\t\t}\n\t\t\telse if (this.isChat())\n\t\t\t{\n\t\t\t\tcolor = this.rawData.customData?.imChat?.COLOR?.toString();\n\t\t\t}\n\t\t}\n\t\telse if (this.isFromModel(this.rawData))\n\t\t{\n\t\t\tcolor = this.rawData.dialog.color.toString();\n\t\t}\n\n\t\treturn color;\n\t}\n\n\tisCrmSession()\n\t{\n\t\tif (this.isFromProviderResponse(this.rawData) && this.isOpeLinesType())\n\t\t{\n\t\t\tconst sessionData = this.rawData.customData?.imChat?.ENTITY_DATA_1.toString().split('|');\n\n\t\t\treturn sessionData[0] === 'Y';\n\t\t}\n\n\t\treturn false;\n\t}\n}","import {AvatarSize} from 'im.v2.const';\nimport {SearchItem} from '../search-item';\nimport {Extension} from 'main.core';\nimport 'ui.fonts.opensans';\nimport './avatar-openline.css';\n\nconst OpenlineAvatarType = {\n\tlines: 'lines',\n\tnetwork: 'network',\n\tlivechat: 'livechat',\n\twhatsappbytwilio: 'whatsappbytwilio',\n\tavito: 'avito',\n\tviber: 'viber',\n\ttelegrambot: 'telegrambot',\n\timessage: 'imessage',\n\twechat: 'wechat',\n\tyandex: 'yandex',\n\tvkgroup: 'vkgroup',\n\tok: 'ok',\n\tolx: 'olx',\n\tfacebook: 'facebook',\n\tfacebookcomments: 'facebookcomments',\n\tfbinstagramdirect: 'fbinstagramdirect',\n\tfbinstagram: 'fbinstagram',\n\tnotifications: 'notifications',\n};\n\nexport const AvatarOpenline = {\n\tname: 'Avatar',\n\tprops: {\n\t\titem: {\n\t\t\ttype: SearchItem,\n\t\t\trequired: true\n\t\t},\n\t\tsize: {\n\t\t\ttype: String,\n\t\t\tdefault: AvatarSize.M\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\topenlineType()\n\t\t{\n\t\t\treturn this.item.getOpenlineEntityId();\n\t\t},\n\t\tchatAvatarStyle(): Object\n\t\t{\n\t\t\treturn {backgroundImage: `url('${this.item.getAvatar()}')`};\n\t\t},\n\t\tchatTypeIconClasses(): string\n\t\t{\n\t\t\tif (OpenlineAvatarType[this.openlineType])\n\t\t\t{\n\t\t\t\treturn `bx-im-search-avatar-openline__icon-${this.openlineType}`;\n\t\t\t}\n\n\t\t\treturn 'bx-im-search-avatar-openline__icon-lines';\n\t\t},\n\t\tneedCrmBadge(): boolean\n\t\t{\n\t\t\tif (!this.isCrmAvailable)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.item.isCrmSession();\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tthis.isCrmAvailable = Extension.getSettings('im.v2.component.old-chat-embedding.search').get('isCrmAvailable', false);\n\t},\n\ttemplate: `\n\t\t<div \n\t\t\t:title=\"item.getTitle()\" \n\t\t\t:class=\"'bx-im-search-avatar-openline__size-' + size.toLowerCase()\" \n\t\t\tclass=\"bx-im-search-avatar-openline__wrap\"\n\t\t>\n\t\t\t<div \n\t\t\t\tv-if=\"item.getAvatar()\" \n\t\t\t\t:style=\"chatAvatarStyle\" \n\t\t\t\tclass=\"bx-im-search-avatar-openline__content bx-im-search-avatar-openline__image\"\n\t\t\t></div>\n\t\t\t<div \n\t\t\t\tv-else \n\t\t\t\t:style=\"{backgroundColor: this.item.getAvatarColor()}\" \n\t\t\t\t:class=\"chatTypeIconClasses\" \n\t\t\t\tclass=\"bx-im-search-avatar-openline__content bx-im-search-avatar-openline__icon\"\n\t\t\t></div>\n\t\t\t<div v-if=\"needCrmBadge\" class=\"bx-im-search-avatar-openline__crm-badge\"></div>\n\t\t</div>\n\t`\n};","import {EventEmitter} from 'main.core.events';\nimport {EventType} from 'im.v2.const';\nimport {Utils} from 'im.v2.lib.utils';\nimport {AvatarOpenline} from './avatar-openline';\nimport {SearchUtils} from '../search-utils';\nimport {SearchItem} from '../search-item';\nimport '../css/search.css';\n\nexport const SearchResultOpenlineItem = {\n\tname: 'SearchResultOpenlineItem',\n\tcomponents: {AvatarOpenline},\n\tprops: {\n\t\titem: {\n\t\t\ttype: SearchItem,\n\t\t\trequired: true\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\ttitle()\n\t\t{\n\t\t\treturn Utils.text.htmlspecialcharsback(this.item.getTitle());\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\tonClick(event)\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.open, {\n\t\t\t\tdialogId: this.item.getDialogId(),\n\t\t\t\tchat: SearchUtils.convertKeysToLowerCase(this.item.getChatCustomData())\n\t\t\t});\n\n\t\t\tif (!event.altKey)\n\t\t\t{\n\t\t\t\tBX.MessengerProxy.clearSearchInput();\n\t\t\t}\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div @click=\"onClick\" class=\"bx-im-search-item\">\n\t\t\t<div class=\"bx-im-search-avatar-wrap\">\n\t\t\t\t<AvatarOpenline :item=\"item\" size=\"L\"></AvatarOpenline>\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-search-result-item-content bx-im-search-result-item-department-content\">\n\t\t\t\t<div v class=\"bx-im-component-chat-title-wrap\">\n\t\t\t\t\t<div class=\"bx-im-component-chat-name-text\" :title=\"item.getTitle()\">{{title}}</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import {EventEmitter} from 'main.core.events';\nimport {EventType} from 'im.v2.const';\nimport {Utils} from 'im.v2.lib.utils';\nimport '../css/search.css';\n\nexport const SearchResultNetworkItem = {\n\tname: 'SearchResultNetworkItem',\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\tisLoading: false\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\thasAvatar()\n\t\t{\n\t\t\treturn this.item.getAvatar() !== '';\n\t\t},\n\t\tavatarStyle()\n\t\t{\n\t\t\tif (!this.hasAvatar)\n\t\t\t{\n\t\t\t\treturn {backgroundColor: this.item.getAvatarOptions().color};\n\t\t\t}\n\n\t\t\treturn {backgroundImage: `url('${this.item.getAvatar()}')`};\n\t\t},\n\t\ttitle()\n\t\t{\n\t\t\treturn Utils.text.htmlspecialcharsback(this.item.getTitle());\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\tonClick(event)\n\t\t{\n\t\t\tthis.isLoading = true;\n\t\t\tconst networkCode = this.item.getId().replace('networkLines', '');\n\n\t\t\tEventEmitter.emitAsync(EventType.search.openNetworkItem, networkCode).then(eventResult => {\n\t\t\t\tif (eventResult[0].error)\n\t\t\t\t{\n\t\t\t\t\tconsole.error('Error:', eventResult[0].error);\n\t\t\t\t\tthis.isLoading = false;\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dialogId = eventResult[0].id.toString();\n\t\t\t\tconst user = this.$store.getters['users/get'](dialogId, true);\n\t\t\t\tconst dialog = this.$store.getters['dialogues/get'](dialogId, true);\n\n\t\t\t\tEventEmitter.emit(EventType.dialog.open, {\n\t\t\t\t\tdialogId: dialogId,\n\t\t\t\t\tchat: dialog,\n\t\t\t\t\tuser: user\n\t\t\t\t});\n\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tif (!event.altKey)\n\t\t\t\t{\n\t\t\t\t\tBX.MessengerProxy.clearSearchInput();\n\t\t\t\t}\n\t\t\t}).catch((error) => {\n\t\t\t\tconsole.error(error);\n\t\t\t\tthis.isLoading = false;\n\t\t\t});\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div @click=\"onClick\" class=\"bx-im-search-item\">\n\t\t\t<div class=\"bx-im-search-avatar-wrap\">\n\t\t\t\t<div :title=\"item.getTitle()\" class=\"bx-im-component-avatar-wrap bx-im-component-avatar-size-l\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"bx-im-component-avatar-content bx-im-component-avatar-image\"\n\t\t\t\t\t\t:class=\"[hasAvatar ? '' : 'bx-im-search-network-icon']\"\n\t\t\t\t\t\t:style=\"avatarStyle\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-search-result-item-content\">\n\t\t\t\t<div v class=\"bx-im-component-chat-title-wrap\">\n\t\t\t\t\t<div class=\"bx-im-component-chat-name-left-icon bx-im-component-chat-name-left-icon-network\"></div>\n\t\t\t\t\t<div class=\"bx-im-component-chat-name-text bx-im-search-network-title\">\n\t\t\t\t\t\t{{title}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx-im-search-item-content-bottom\">\n\t\t\t\t\t<div class=\"bx-im-search-result-item-text-wrap\">\n\t\t\t\t\t\t<div class=\"bx-im-search-result-item-text\">{{ item.getSubtitle() }}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div v-if=\"isLoading\" class=\"bx-search-loader bx-search-loader-small-size\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import {EventEmitter} from 'main.core.events';\nimport {ChatTypes, EventType, AvatarSize} from 'im.v2.const';\nimport {Avatar, ChatTitle} from 'im.v2.component.old-chat-embedding.elements';\n\nimport '../css/search.css';\n\nexport const SearchResultItem = {\n\tname: 'SearchResultItem',\n\tcomponents: {Avatar, ChatTitle},\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t\tchild: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t\trequired: false\n\t\t},\n\t},\n\tcomputed:\n\t{\n\t\tdialogId()\n\t\t{\n\t\t\treturn this.item.getDialogId();\n\t\t},\n\t\tuser()\n\t\t{\n\t\t\treturn this.$store.getters['users/get'](this.dialogId, true);\n\t\t},\n\t\tdialog()\n\t\t{\n\t\t\treturn this.$store.getters['dialogues/get'](this.dialogId, true);\n\t\t},\n\t\tisChat()\n\t\t{\n\t\t\treturn !this.isUser;\n\t\t},\n\t\tisUser()\n\t\t{\n\t\t\treturn this.dialog.type === ChatTypes.user;\n\t\t},\n\t\tuserItemText()\n\t\t{\n\t\t\tif (!this.isUser)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tconst status = this.$store.getters['users/getLastOnline'](this.dialogId);\n\t\t\tif (status)\n\t\t\t{\n\t\t\t\treturn status;\n\t\t\t}\n\n\t\t\treturn this.$store.getters['users/getPosition'](this.dialogId);\n\t\t},\n\t\tchatItemText()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tif (this.dialog.type === ChatTypes.open)\n\t\t\t{\n\t\t\t\treturn this.$Bitrix.Loc.getMessage('IM_SEARCH_ITEM_CHAT_TYPE_OPEN');\n\t\t\t}\n\n\t\t\treturn this.$Bitrix.Loc.getMessage('IM_SEARCH_ITEM_CHAT_TYPE_GROUP');\n\t\t},\n\t\tsearchEntityId()\n\t\t{\n\t\t\tif (this.isUser)\n\t\t\t{\n\t\t\t\treturn this.user.bot ? 'im-bot' : 'user';\n\t\t\t}\n\n\t\t\treturn 'im-chat';\n\t\t},\n\t\tsearchItemId()\n\t\t{\n\t\t\tif (this.dialogId.startsWith('chat'))\n\t\t\t{\n\t\t\t\treturn Number.parseInt(this.dialogId.slice(4), 10);\n\t\t\t}\n\n\t\t\treturn Number.parseInt(this.dialogId, 10);\n\t\t},\n\t\tAvatarSize: () => AvatarSize,\n\t},\n\tmethods:\n\t{\n\t\tonClick(event)\n\t\t{\n\t\t\tconst selectedItem = {\n\t\t\t\tid: this.searchItemId,\n\t\t\t\tentityId: this.searchEntityId,\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t};\n\n\t\t\tEventEmitter.emit(\n\t\t\t\tEventType.search.selectItem,\n\t\t\t\t{\n\t\t\t\t\tselectedItem: selectedItem,\n\t\t\t\t\tonlyOpen: false,\n\t\t\t\t\tnativeEvent: event\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\tonRightClick(event)\n\t\t{\n\t\t\tif (event.altKey && event.shiftKey)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst item = {dialogId: this.dialogId};\n\t\t\tEventEmitter.emit(EventType.search.openContextMenu, {item, event});\n\t\t},\n\t},\n\ttemplate: `\n\t\t<div @click=\"onClick\" @click.right.prevent=\"onRightClick\" class=\"bx-im-search-item\" :class=\"[this.child ? 'bx-im-search-sub-item' : '']\">\n\t\t\t<div class=\"bx-im-search-avatar-wrap\">\n\t\t\t\t<Avatar :dialogId=\"dialogId\" :size=\"AvatarSize.L\" />\n\t\t\t</div>\n\t\t\t<div v-if=\"isUser\" class=\"bx-im-search-result-item-content\">\n\t\t\t\t<ChatTitle :dialogId=\"dialogId\" />\n\t\t\t\t<div class=\"bx-im-search-item-content-bottom\">\n\t\t\t\t\t<div class=\"bx-im-search-result-item-text-wrap\">\n\t\t\t\t\t\t<div class=\"bx-im-search-result-item-text\">\n\t\t\t\t\t\t\t{{ userItemText }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div v-else class=\"bx-im-search-result-item-content\">\n\t\t\t\t<ChatTitle :dialogId=\"dialogId\" />\n\t\t\t\t<div class=\"bx-im-search-item-content-bottom\">\n\t\t\t\t\t<div class=\"bx-im-search-result-item-text-wrap\">\n\t\t\t\t\t\t<div class=\"bx-im-search-result-item-text\">{{ chatItemText }}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import {Dexie} from 'ui.dexie';\nimport {Type} from 'main.core';\nimport {SearchUtils} from './search-utils';\nimport {EntityIdTypes, ImSearchItem} from './types/search-item';\nimport {EventEmitter} from 'main.core.events';\nimport {EventType} from 'im.v2.const';\n\nexport class SearchCache\n{\n\tconstructor(userId)\n\t{\n\t\tthis.userId = userId;\n\t\t/** @type {Dexie} */\n\t\tthis.db = new Dexie('bx-im-search-results');\n\t\tthis.db.version(2).stores({\n\t\t\titems: 'id, *title, *name, *lastName, *secondName, *position, date',\n\t\t\trecentItems: '++id, cacheId, date',\n\t\t\tsettings: '&name'\n\t\t}).upgrade(transaction => {\n\t\t\tconst clearItemsPromise = transaction.table('items').clear();\n\t\t\tconst clearRecentItemsPromise = transaction.table('recentItems').clear();\n\n\t\t\treturn Dexie.Promise.all([clearItemsPromise, clearRecentItemsPromise]);\n\t\t});\n\t\tthis.db.version(3).stores({\n\t\t\titems: 'id, *title, *name, *lastName, *position, date',\n\t\t\trecentItems: '++id, cacheId, date',\n\t\t\tsettings: '&name'\n\t\t});\n\n\t\tthis.checkTables();\n\n\t\tthis.onAccessDeniedHandler = this.onAccessDenied.bind(this);\n\t\tEventEmitter.subscribe(EventType.dialog.errors.accessDenied, this.onAccessDeniedHandler);\n\t}\n\n\tcheckTables()\n\t{\n\t\tthis.db.open();\n\t\tthis.db.on('ready', () => {\n\t\t\treturn this.db.transaction('rw', this.db.settings, this.db.items, this.db.recentItems, () => {\n\t\t\t\treturn this.db.settings.where('name').equals('userId').first();\n\t\t\t}).then(settings => {\n\t\t\t\tconst promises = [];\n\t\t\t\tif (settings?.value !== this.userId)\n\t\t\t\t{\n\t\t\t\t\tconst clearItemsPromise = this.db.items.clear();\n\t\t\t\t\tconst clearRecentItemsPromise = this.db.recentItems.clear();\n\n\t\t\t\t\tpromises.push(clearItemsPromise, clearRecentItemsPromise);\n\t\t\t\t}\n\t\t\t\treturn Dexie.Promise.all(promises);\n\t\t\t}).then(() => {\n\t\t\t\treturn this.db.settings.put({name: 'userId', value: this.userId});\n\t\t\t});\n\t\t});\n\t}\n\n\tdestroy()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.dialog.errors.accessDenied, this.onAccessDeniedHandler);\n\t}\n\n\tloadRecentFromCache()\n\t{\n\t\tconst searchResults = {};\n\n\t\treturn this.db.transaction('rw', this.db.items, this.db.recentItems, () => {\n\t\t\treturn this.deleteExpiredItems().then(() => {\n\t\t\t\treturn this.db.recentItems.orderBy('id').toArray();\n\t\t\t});\n\t\t}).then(recentItemsFromCache => {\n\t\t\tsearchResults.recentItems = recentItemsFromCache;\n\n\t\t\tconst resultItemsPromises = [];\n\t\t\tsearchResults.recentItems.forEach(recentItem => {\n\t\t\t\tresultItemsPromises.push(this.db.items.get({id: recentItem.cacheId}));\n\t\t\t});\n\n\t\t\treturn Dexie.Promise.all(resultItemsPromises);\n\t\t}).then(result => {\n\t\t\tsearchResults.items = result.filter(item => !Type.isUndefined(item)).map(item => item.json);\n\n\t\t\treturn searchResults;\n\t\t});\n\t}\n\n\tsave(searchResults: Object): void\n\t{\n\t\tconst preparedItems = searchResults.items ? this.prepareItems(searchResults.items) : [];\n\t\tconst preparedRecentItems = searchResults.recentItems ? SearchUtils.prepareRecentItems(searchResults.recentItems) : [];\n\n\t\tthis.db.transaction('rw', this.db.items, this.db.recentItems, () => {\n\t\t\tif (preparedItems.length > 0)\n\t\t\t{\n\t\t\t\tthis.db.items.bulkPut(preparedItems);\n\t\t\t}\n\t\t\tif (preparedRecentItems.length > 0)\n\t\t\t{\n\t\t\t\tthis.db.recentItems.clear().then(() => {\n\t\t\t\t\tthis.db.recentItems.bulkPut(preparedRecentItems);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\tdeleteExpiredItems()\n\t{\n\t\tconst oneMonthAgo = new Date(Date.now() - 60*60*1000*24*7*30);\n\n\t\treturn this.db.items.where('date').below(oneMonthAgo).delete().then(() => {\n\t\t\treturn this.db.recentItems.where('date').below(oneMonthAgo).delete();\n\t\t});\n\t}\n\n\tonAccessDenied({data: eventData}): Dexie.Promise\n\t{\n\t\tconst cacheId = this.convertDialogIdToCacheItemId(eventData.dialogId);\n\n\t\treturn this.db.items.where('id').equals(cacheId).delete().then(() => {\n\t\t\treturn this.db.recentItems.where('cacheId').equals(cacheId).delete();\n\t\t});\n\t}\n\n\tconvertDialogIdToCacheItemId(dialogId: string): string\n\t{\n\t\tif (dialogId.startsWith('chat'))\n\t\t{\n\t\t\treturn `chat|${dialogId.slice(4)}`;\n\t\t}\n\n\t\treturn `user|${dialogId}`;\n\t}\n\n\tprepareItems(items: Array<ImSearchItem>): Array<Object>\n\t{\n\t\treturn items\n\t\t\t.filter(item => {\n\t\t\t\treturn item.entityId !== EntityIdTypes.department\n\t\t\t\t\t&& item.entityId !== EntityIdTypes.network\n\t\t\t\t\t&& item.entityType !== 'LINES'\n\t\t\t\t;\n\t\t\t})\n\t\t\t.map(item => {\n\t\t\t\tconst type = SearchUtils.getTypeByEntityId(item.entityId);\n\t\t\t\treturn {\n\t\t\t\t\tid: `${type}|${item.id}`,\n\t\t\t\t\tname: item.customData?.name ? SearchUtils.getWordsFromString(item.customData.name) : [],\n\t\t\t\t\tlastName: item.customData?.lastName ? SearchUtils.getWordsFromString(item.customData.lastName) : [],\n\t\t\t\t\tposition: item.customData.imUser?.WORK_POSITION ? SearchUtils.getWordsFromString(item.customData.imUser?.WORK_POSITION) : [],\n\t\t\t\t\ttitle: item.title ? SearchUtils.getWordsFromString(item.title) : [],\n\t\t\t\t\tjson: item,\n\t\t\t\t\tdate: new Date()\n\t\t\t\t};\n\t\t\t});\n\t}\n\n\t/**\n\t * Moves item to the top of the recent search items list.\n\t *\n\t * @param itemToMove Array<string, number>\n\t */\n\tunshiftItem(itemToMove: Array<string, number>): void\n\t{\n\t\tconst [itemToMoveEntityId, itemToMoveId] = itemToMove;\n\t\tconst type = SearchUtils.getTypeByEntityId(itemToMoveEntityId);\n\t\tconst itemToMoveCacheId = `${type}|${itemToMoveId}`;\n\n\t\tthis.db.transaction('rw', this.db.recentItems, () => {\n\t\t\treturn this.db.recentItems.toArray();\n\t\t}).then(recentItems => {\n\t\t\tconst itemIndexToUpdate = recentItems.findIndex(recentItem => {\n\t\t\t\treturn recentItem.cacheId === itemToMoveCacheId;\n\t\t\t});\n\n\t\t\tif (itemIndexToUpdate === 0)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (itemIndexToUpdate !== -1)\n\t\t\t{\n\t\t\t\tconst item = recentItems.splice(itemIndexToUpdate, 1);\n\t\t\t\titem[0].date = new Date();\n\t\t\t\trecentItems.unshift(item[0]);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst item = {\n\t\t\t\t\tcacheId: `${itemToMoveCacheId}|${itemToMoveId}`,\n\t\t\t\t\tdate: new Date(),\n\t\t\t\t};\n\t\t\t\trecentItems.unshift(item);\n\t\t\t}\n\n\t\t\trecentItems.forEach(item => delete item.id);\n\n\t\t\tthis.db.recentItems.clear().then(() => {\n\t\t\t\tthis.db.recentItems.bulkPut(recentItems);\n\t\t\t});\n\t\t});\n\t}\n\n\tsearch(words: Array<string>): Array<ImSearchItem>\n\t{\n\t\treturn this.db.transaction('r', this.db.items, function* () {\n\t\t\t// Parallel search for all words - just select resulting primary keys\n\t\t\tconst results = yield this.getQueryResultByWords(words);\n\t\t\tif (!Type.isArrayFilled(results))\n\t\t\t{\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tconst intersectedResult = this.intersectArrays(...results);\n\t\t\tconst distinctIds = [...new Set(intersectedResult.flat())];\n\n\t\t\t// Finally, select entire items from intersection\n\t\t\treturn yield this.db.items.where(':id').anyOf(distinctIds).toArray();\n\t\t}.bind(this)).then(items => {\n\t\t\treturn items.map(item => item.json);\n\t\t});\n\t}\n\n\tgetQueryResultByWords(words: Array<string>): Dexie.Promise\n\t{\n\t\treturn Dexie.Promise.all(words.map(word => {\n\t\t\treturn this.db.items\n\t\t\t\t.where('name')\n\t\t\t\t.startsWithIgnoreCase(word)\n\t\t\t\t.or('lastName')\n\t\t\t\t.startsWithIgnoreCase(word)\n\t\t\t\t.or('position')\n\t\t\t\t.startsWithIgnoreCase(word)\n\t\t\t\t.or('title')\n\t\t\t\t.startsWithIgnoreCase(word)\n\t\t\t\t.distinct()\n\t\t\t\t.primaryKeys();\n\t\t}));\n\t}\n\n\tintersectArrays(firstArray: Array, secondArray: Array, ...restArrays: Array): Array\n\t{\n\t\tif (Type.isUndefined(secondArray))\n\t\t{\n\t\t\treturn firstArray;\n\t\t}\n\n\t\tconst intersectedArray = firstArray.filter(value => secondArray.includes(value));\n\t\tif (restArrays.length === 0)\n\t\t{\n\t\t\treturn intersectedArray;\n\t\t}\n\n\t\treturn this.intersectArrays(intersectedArray, ...restArrays);\n\t}\n}","export const Config = {\n\tget: () => {\n\t\treturn {\n\t\t\tdialog: {\n\t\t\t\tentities: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'im-bot',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tsearchableBotTypes: [\n\t\t\t\t\t\t\t\t'H',\n\t\t\t\t\t\t\t\t'B',\n\t\t\t\t\t\t\t\t'S',\n\t\t\t\t\t\t\t\t'N',\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfillDialogWithDefaultValues: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdynamicLoad: true,\n\t\t\t\t\t\tdynamicSearch: true,\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'user',\n\t\t\t\t\t\tdynamicLoad: true,\n\t\t\t\t\t\tdynamicSearch: true,\n\t\t\t\t\t\tfilters: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tid: 'im.userDataFilter'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tid: 'im-chat-user',\n\t\t\t\t\t\toptions: {\n\t\t\t\t\t\t\tsearchableChatTypes: [\n\t\t\t\t\t\t\t\t'C',\n\t\t\t\t\t\t\t\t'O'\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tfillDialogWithDefaultValues: false,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdynamicLoad: true,\n\t\t\t\t\t\tdynamicSearch: true,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tpreselectedItems: [],\n\t\t\t\tclearUnavailableItems: false,\n\t\t\t\tcontext: 'IM_CHAT_SEARCH',\n\t\t\t\tid: 'im-search',\n\t\t\t}\n\t\t};\n\t},\n\tgetNetworkEntity: () => {\n\t\treturn {\n\t\t\tid: 'imbot-network',\n\t\t\tdynamicSearch: true,\n\t\t\toptions: {\n\t\t\t\t'filterExistingLines': true,\n\t\t\t}\n\t\t};\n\t},\n\tgetDepartmentEntity: () => {\n\t\treturn {\n\t\t\tid: 'department',\n\t\t\tdynamicLoad: true,\n\t\t\tdynamicSearch: true,\n\t\t\toptions: {\n\t\t\t\tselectMode: 'usersAndDepartments',\n\t\t\t\tallowSelectRootDepartment: true,\n\t\t\t},\n\t\t\tfilters: [\n\t\t\t\t{\n\t\t\t\t\tid: 'im.departmentDataFilter'\n\t\t\t\t}\n\t\t\t]\n\t\t};\n\t},\n\tgetChatEntity: () => {\n\t\treturn {\n\t\t\tid: 'im-chat',\n\t\t\toptions: {\n\t\t\t\tsearchableChatTypes: [\n\t\t\t\t\t'C',\n\t\t\t\t\t'O',\n\t\t\t\t\t'L'\n\t\t\t\t],\n\t\t\t\tfillDialogWithDefaultValues: false,\n\t\t\t},\n\t\t\tdynamicLoad: true,\n\t\t\tdynamicSearch: true,\n\t\t};\n\t}\n};","import {ChatTypes} from 'im.v2.const';\nimport {SearchUtils} from './search-utils';\n\nexport class SearchRecentList\n{\n\tconstructor($Bitrix)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\t}\n\n\t// region public methods\n\tsearch(queryWords: Array<string>): Promise\n\t{\n\t\tconst recentListItems = this.getRecentListItems();\n\t\tconst foundItems = [];\n\n\t\trecentListItems.forEach(recentListItem => {\n\t\t\tif (this.searchByQueryWords(recentListItem, queryWords))\n\t\t\t{\n\t\t\t\tfoundItems.push(recentListItem);\n\t\t\t}\n\t\t});\n\n\t\treturn Promise.resolve(SearchUtils.createItemMap(foundItems));\n\t}\n\t//endregion\n\n\tgetRecentListItems(): Array\n\t{\n\t\treturn this.store.getters['recent/getSortedCollection'].map(item => {\n\t\t\tconst dialog = this.store.getters['dialogues/get'](item.dialogId, true);\n\t\t\tconst isUser = dialog.type === ChatTypes.user;\n\n\t\t\tconst recentListItem = {\n\t\t\t\tdialogId: item.dialogId,\n\t\t\t\tdialog: dialog,\n\t\t\t};\n\n\t\t\tif (isUser)\n\t\t\t{\n\t\t\t\trecentListItem.user = this.store.getters['users/get'](item.dialogId, true);\n\t\t\t}\n\n\t\t\treturn recentListItem;\n\t\t});\n\t}\n\n\tsearchByQueryWords(recentListItem: Object, queryWords: Array<string>): boolean\n\t{\n\t\tif (recentListItem.user)\n\t\t{\n\t\t\treturn this.searchByUserFields(recentListItem, queryWords);\n\t\t}\n\n\t\treturn this.searchByDialogFields(recentListItem, queryWords);\n\t}\n\n\tsearchByDialogFields(recentListItem: Object, queryWords: Array<string>): boolean\n\t{\n\t\tconst searchField = [];\n\n\t\tif (recentListItem.dialog.name)\n\t\t{\n\t\t\tconst dialogNameWords = SearchUtils.getWordsFromString(recentListItem.dialog.name.toLowerCase());\n\t\t\tsearchField.push(...dialogNameWords);\n\t\t}\n\n\t\treturn this.doesItemMatchQuery(searchField, queryWords);\n\t}\n\n\tsearchByUserFields(recentListItem: Object, queryWords: Array<string>): boolean\n\t{\n\t\tconst searchField = [];\n\n\t\tif (recentListItem.user.firstName)\n\t\t{\n\t\t\tconst userFirstNameWords = SearchUtils.getWordsFromString(recentListItem.user.firstName.toLowerCase());\n\t\t\tsearchField.push(...userFirstNameWords);\n\t\t}\n\n\t\tif (recentListItem.user.lastName)\n\t\t{\n\t\t\tconst userLastNameWords = SearchUtils.getWordsFromString(recentListItem.user.lastName.toLowerCase());\n\t\t\tsearchField.push(...userLastNameWords);\n\t\t}\n\n\t\tif (recentListItem.user.workPosition)\n\t\t{\n\t\t\tconst userWorkPositionWords = SearchUtils.getWordsFromString(recentListItem.user.workPosition.toLowerCase());\n\t\t\tsearchField.push(...userWorkPositionWords);\n\t\t}\n\n\t\treturn this.doesItemMatchQuery(searchField, queryWords);\n\t}\n\n\tdoesItemMatchQuery(fieldsForSearch: Array<string>, queryWords: Array<string>): boolean\n\t{\n\t\tlet found = 0;\n\t\tqueryWords.forEach(queryWord => {\n\t\t\tlet queryWordsMatchCount = 0;\n\t\t\tfieldsForSearch.forEach(field => {\n\t\t\t\tif (field.startsWith(queryWord))\n\t\t\t\t{\n\t\t\t\t\tqueryWordsMatchCount++;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif (queryWordsMatchCount > 0)\n\t\t\t{\n\t\t\t\tfound++;\n\t\t\t}\n\t\t});\n\n\t\treturn found >= queryWords.length;\n\t}\n}","import {ajax as Ajax} from 'main.core';\nimport {Logger} from 'im.v2.lib.logger';\nimport {ChatTypes, EventType, RestMethod} from 'im.v2.const';\nimport {EventEmitter} from 'main.core.events';\nimport {SearchCache} from './search-cache';\nimport {EntityIdTypes, ImSearchItem} from './types/search-item';\nimport {Config} from './search-config';\nimport {SearchUtils} from './search-utils';\nimport {SearchRecentList} from './search-recent-list';\nimport {SearchItem} from './search-item';\n\nconst RestMethodImopenlinesNetworkJoin = 'imopenlines.network.join';\n\nexport class SearchService\n{\n\tstatic instance = null;\n\tstore: Object = null;\n\tcache: SearchCache = null;\n\trecentList: SearchRecentList = null;\n\n\tstatic getInstance($Bitrix, cache, recentList)\n\t{\n\t\tif (!this.instance)\n\t\t{\n\t\t\tthis.instance = new this($Bitrix, cache, recentList);\n\t\t}\n\n\t\treturn this.instance;\n\t}\n\n\tconstructor($Bitrix, cache, recentList)\n\t{\n\t\tthis.store = $Bitrix.Data.get('controller').store;\n\t\tthis.cache = cache;\n\t\tthis.recentList = recentList;\n\t\tthis.restClient = $Bitrix.RestClient.get();\n\n\t\tthis.onItemSelectHandler = this.onItemSelect.bind(this);\n\t\tthis.onOpenNetworkItemHandler = this.onOpenNetworkItem.bind(this);\n\t\tEventEmitter.subscribe(EventType.search.selectItem, this.onItemSelectHandler);\n\t\tEventEmitter.subscribe(EventType.search.openNetworkItem, this.onOpenNetworkItemHandler);\n\t}\n\n\t//region Public methods\n\n\tloadRecentSearchFromCache(): Promise\n\t{\n\t\treturn this.cache.loadRecentFromCache().then(responseFromCache => {\n\t\t\tLogger.warn('Im.Search: Recent search loaded from cache');\n\n\t\t\treturn responseFromCache;\n\t\t}).then(responseFromCache => {\n\t\t\tconst {items, recentItems} = responseFromCache;\n\t\t\tconst itemMap = SearchUtils.createItemMap(items);\n\n\t\t\treturn this.updateModels(itemMap).then(() => {\n\t\t\t\treturn this.getItemsFromRecentItems(recentItems, itemMap);\n\t\t\t});\n\t\t});\n\t}\n\n\tloadRecentSearchFromServer(): Promise\n\t{\n\t\treturn this.loadRecentFromServer().then(responseFromCache => {\n\t\t\tLogger.warn('Im.Search: Recent search loaded from server');\n\t\t\tconst items = SearchUtils.createItemMap(responseFromCache.items);\n\t\t\tconst recentItems = SearchUtils.prepareRecentItems(responseFromCache.recentItems);\n\n\t\t\treturn this.updateModels(items, true).then(() => {\n\t\t\t\treturn this.getItemsFromRecentItems(recentItems, items);\n\t\t\t});\n\t\t});\n\t}\n\n\tsearchLocal(query: string)\n\t{\n\t\tconst originalLayoutQuery = query.trim().toLowerCase();\n\n\t\tconst searchInCachePromise = this.searchInCache(originalLayoutQuery);\n\t\tconst searchInRecentListPromise = this.searchInRecentList(originalLayoutQuery);\n\n\t\treturn Promise.all([searchInCachePromise, searchInRecentListPromise]).then(result => {\n\t\t\t// Spread order is important, because we have more data in cache than in recent list\n\t\t\t// (for example contextSort field)\n\t\t\tconst items = new Map([...result[1], ...result[0]]);\n\n\t\t\treturn this.getSortedItems(items, originalLayoutQuery);\n\t\t});\n\t}\n\n\tsearchOnServer(query: string, config: Object): Promise\n\t{\n\t\tconst originalLayoutQuery = query.trim().toLowerCase();\n\n\t\tlet items = [];\n\t\treturn this.searchRequest(originalLayoutQuery, config).then(itemsFromServer => {\n\t\t\titems = SearchUtils.createItemMap(itemsFromServer);\n\n\t\t\treturn this.updateModels(items, true);\n\t\t}).then(() => {\n\t\t\treturn this.allocateSearchResults(items, originalLayoutQuery);\n\t\t});\n\t}\n\n\tsearchOnNetwork(query: string): Promise\n\t{\n\t\tconst originalLayoutQuery = query.trim().toLowerCase();\n\n\t\treturn this.searchOnNetworkRequest(originalLayoutQuery).then(items => {\n\t\t\treturn SearchUtils.createItemMap(items);\n\t\t});\n\t}\n\n\tloadDepartmentUsers(parentItem: ImSearchItem): Promise\n\t{\n\t\tlet items = [];\n\t\treturn this.loadDepartmentUsersFromServer(parentItem).then(responseFromServer => {\n\t\t\titems = SearchUtils.createItemMap(responseFromServer);\n\n\t\t\treturn this.updateModels(items, true);\n\t\t}).then(() => {\n\t\t\treturn items;\n\t\t});\n\t}\n\n\tdestroy()\n\t{\n\t\tthis.cache.destroy();\n\t\tEventEmitter.unsubscribe(EventType.search.selectItem, this.onItemSelectHandler);\n\t\tEventEmitter.unsubscribe(EventType.search.openNetworkItem, this.onOpenNetworkItemHandler);\n\t}\n\n\t//endregion\n\n\tsearchInCache(originalLayoutQuery: string): Promise\n\t{\n\t\tlet wrongLayoutSearchPromise = Promise.resolve([]);\n\t\tif (this.needLayoutChange(originalLayoutQuery))\n\t\t{\n\t\t\tconst wrongLayoutQuery = this.changeLayout(originalLayoutQuery);\n\t\t\twrongLayoutSearchPromise = this.getItemsFromCacheByQuery(wrongLayoutQuery);\n\t\t}\n\n\t\tconst correctLayoutSearchPromise = this.getItemsFromCacheByQuery(originalLayoutQuery);\n\n\t\treturn Promise.all([correctLayoutSearchPromise, wrongLayoutSearchPromise]).then(result => {\n\t\t\treturn new Map([...result[0], ...result[1]]);\n\t\t}).catch(error => {\n\t\t\tconsole.error('Unknown exception', error);\n\n\t\t\treturn new Map();\n\t\t});\n\t}\n\n\tsearchInRecentList(originalLayoutQuery: string): Promise\n\t{\n\t\tlet wrongLayoutSearchPromise = Promise.resolve([]);\n\t\tif (this.needLayoutChange(originalLayoutQuery))\n\t\t{\n\t\t\tconst wrongLayoutQuery = this.changeLayout(originalLayoutQuery);\n\t\t\twrongLayoutSearchPromise = this.getItemsFromRecentListByQuery(wrongLayoutQuery);\n\t\t}\n\n\t\tconst correctLayoutSearchPromise = this.getItemsFromRecentListByQuery(originalLayoutQuery);\n\n\t\treturn Promise.all([correctLayoutSearchPromise, wrongLayoutSearchPromise]).then(result => {\n\t\t\treturn new Map([...result[0], ...result[1]]);\n\t\t});\n\t}\n\n\tgetItemsFromRecentListByQuery(query: string): Promise\n\t{\n\t\tconst queryWords = SearchUtils.getWordsFromString(query);\n\n\t\treturn this.recentList.search(queryWords);\n\t}\n\n\tgetSearchConfig(): Object\n\t{\n\t\treturn Config.get();\n\t}\n\n\tonItemSelect(event): void\n\t{\n\t\tconst {selectedItem, onlyOpen} = event.getData();\n\t\tconst item = [selectedItem.entityId, selectedItem.id];\n\n\t\tif (!onlyOpen)\n\t\t{\n\t\t\tthis.cache.unshiftItem(item);\n\t\t\tthis.addItemsToRecentSearchResults(item);\n\t\t}\n\t}\n\n\tonOpenNetworkItem(event): void\n\t{\n\t\tconst code = event.getData();\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tthis.restClient.callBatch(\n\t\t\t\tthis.getDataRequestQuery(code),\n\t\t\t\t(result) => resolve(this.handleBatchRequestResult(result)),\n\t\t\t\t(error) => reject(error)\n\t\t\t);\n\t\t});\n\t}\n\n\thandleBatchRequestResult(result: Object): Object\n\t{\n\t\tif (result[RestMethodImopenlinesNetworkJoin] && result[RestMethodImopenlinesNetworkJoin].error())\n\t\t{\n\t\t\treturn {\n\t\t\t\terror: result[RestMethodImopenlinesNetworkJoin].error().ex.error_description\n\t\t\t};\n\t\t}\n\n\t\tif (result[RestMethod.imUserGet] && result[RestMethod.imUserGet].error())\n\t\t{\n\t\t\treturn {\n\t\t\t\terror: result[RestMethod.imUserGet].error().ex.error_description\n\t\t\t};\n\t\t}\n\n\t\tconst user = result[RestMethod.imUserGet].data();\n\t\tthis.store.dispatch('users/set', [user]);\n\t\tconst dialogue = this.prepareChatForAdditionalUser(user);\n\t\tthis.store.dispatch('dialogues/set', [dialogue]);\n\n\t\treturn user;\n\t}\n\n\tprepareChatForAdditionalUser(user: Object): Object\n\t{\n\t\treturn {\n\t\t\tdialogId: user.id,\n\t\t\tavatar: user.avatar,\n\t\t\tcolor: user.color,\n\t\t\tname: user.name,\n\t\t\ttype: ChatTypes.user\n\t\t};\n\t}\n\n\tgetDataRequestQuery(code: string): Object\n\t{\n\t\tconst query = {\n\t\t\t[RestMethodImopenlinesNetworkJoin]: [RestMethodImopenlinesNetworkJoin, {code: code}]\n\t\t};\n\n\t\tquery[RestMethod.imUserGet] = [\n\t\t\tRestMethod.imUserGet,\n\t\t\t{\n\t\t\t\tid: `$result[${RestMethodImopenlinesNetworkJoin}]`\n\t\t\t}\n\t\t];\n\n\t\treturn query;\n\t}\n\n\tgetItemsFromCacheByQuery(query: string): Promise\n\t{\n\t\tconst queryWords = SearchUtils.getWordsFromString(query);\n\n\t\treturn this.cache.search(queryWords).then(cacheItems => {\n\t\t\tconst items = SearchUtils.createItemMap(cacheItems);\n\t\t\treturn this.updateModels(items).then(() => items);\n\t\t});\n\t}\n\n\tgetSortedItems(items: Map<string, SearchItem>, originalLayoutQuery: string): Map<string, SearchItem>\n\t{\n\t\tlet sortedItems = this.sortItemsBySearchField(items, originalLayoutQuery);\n\t\tsortedItems = this.sortItemsByEntityIdAndContextSort(sortedItems);\n\n\t\treturn sortedItems;\n\t}\n\n\tsortItemsBySearchField(items: Map<string, SearchItem>, originalLayoutQuery: string): Map<string, SearchItem>\n\t{\n\t\tlet queryWords = SearchUtils.getWordsFromString(originalLayoutQuery);\n\t\tif (this.needLayoutChange(originalLayoutQuery))\n\t\t{\n\t\t\tconst wrongLayoutQueryWords = SearchUtils.getWordsFromString(this.changeLayout(originalLayoutQuery));\n\t\t\tqueryWords = [...queryWords, ...wrongLayoutQueryWords];\n\t\t}\n\t\tconst uniqueWords = [...new Set(queryWords)];\n\n\t\tconst searchFieldsWeight = {\n\t\t\ttitle: 10_000,\n\t\t\tname: 1000,\n\t\t\tlastName: 100,\n\t\t\tposition: 1,\n\t\t};\n\n\t\titems.forEach(item => {\n\t\t\tuniqueWords.forEach(word => {\n\t\t\t\tif (item.getTitle().toLowerCase().startsWith(word))\n\t\t\t\t{\n\t\t\t\t\titem.addCustomSort(searchFieldsWeight.title);\n\t\t\t\t}\n\t\t\t\telse if (item.getName()?.toLowerCase().startsWith(word))\n\t\t\t\t{\n\t\t\t\t\titem.addCustomSort(searchFieldsWeight.name);\n\t\t\t\t}\n\t\t\t\telse if (item.getLastName()?.toLowerCase().startsWith(word))\n\t\t\t\t{\n\t\t\t\t\titem.addCustomSort(searchFieldsWeight.lastName);\n\t\t\t\t}\n\t\t\t\telse if (item.getPosition()?.toLowerCase().startsWith(word))\n\t\t\t\t{\n\t\t\t\t\titem.addCustomSort(searchFieldsWeight.position);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn new Map([...items.entries()].sort((firstItem, secondItem) => {\n\t\t\tconst [, firstItemValue] = firstItem;\n\t\t\tconst [, secondItemValue] = secondItem;\n\n\t\t\treturn secondItemValue.getCustomSort() - firstItemValue.getCustomSort();\n\t\t}));\n\t}\n\n\tsortItemsByEntityIdAndContextSort(items: Map<string, SearchItem>): Map<string, SearchItem>\n\t{\n\t\tconst entityWeight = {\n\t\t\t'user': 100,\n\t\t\t'im-chat': 80,\n\t\t\t'im-chat-user': 80,\n\t\t\t'im-bot': 70,\n\t\t\t'department': 60,\n\t\t\t'extranet': 10,\n\t\t};\n\n\t\treturn new Map([...items.entries()].sort((firstItem, secondItem) => {\n\t\t\tconst [, firstItemValue] = firstItem;\n\t\t\tconst [, secondItemValue] = secondItem;\n\n\t\t\tconst secondItemEntityId = secondItemValue.isExtranet() ? 'extranet' : secondItemValue.getEntityId();\n\t\t\tconst firstItemEntityId = firstItemValue.isExtranet() ? 'extranet' : firstItemValue.getEntityId();\n\n\t\t\tif (entityWeight[secondItemEntityId] < entityWeight[firstItemEntityId])\n\t\t\t{\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t\telse if (entityWeight[secondItemEntityId] > entityWeight[firstItemEntityId])\n\t\t\t{\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\treturn secondItemValue.getContextSort() - firstItemValue.getContextSort();\n\t\t\t}\n\t\t}));\n\t}\n\n\tloadRecentFromServer(): Promise\n\t{\n\t\tconst config = {\n\t\t\tjson: this.getSearchConfig()\n\t\t};\n\n\t\tconst chatEntity = Config.getChatEntity();\n\t\tchatEntity.options.searchableChatTypes = ['C', 'O'];\n\t\tconfig.json.dialog.entities.push(chatEntity);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tAjax.runAction('ui.entityselector.load', config).then(response => {\n\t\t\t\tLogger.warn(`Im.Search: Recent search request result`, response);\n\t\t\t\tthis.cache.save(response.data.dialog);\n\n\t\t\t\tresolve(response.data.dialog);\n\t\t\t}).catch(error => reject(error));\n\t\t});\n\t}\n\n\tloadDepartmentUsersFromServer(parentItem: ImSearchItem): Promise\n\t{\n\t\tconst config = {\n\t\t\tjson: {\n\t\t\t\t...this.getSearchConfig(),\n\t\t\t\tparentItem\n\t\t\t}\n\t\t};\n\n\t\tconst departmentEntity = Config.getDepartmentEntity();\n\t\tconfig.json.dialog.entities.push(departmentEntity);\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tAjax.runAction('ui.entityselector.getChildren', config).then(response => {\n\t\t\t\tLogger.warn('Im.Search: load department users result', response);\n\t\t\t\tthis.cache.save(response.data.dialog);\n\t\t\t\tresolve(response.data.dialog.items);\n\t\t\t}).catch(error => reject(error));\n\t\t});\n\t}\n\n\tsearchRequest(query: string, requestConfig: Object): Promise\n\t{\n\t\tconst config = {\n\t\t\tjson: this.getSearchConfig()\n\t\t};\n\n\t\tif (requestConfig.network)\n\t\t{\n\t\t\tconst networkEntity = Config.getNetworkEntity();\n\t\t\tconfig.json.dialog.entities.push(networkEntity);\n\t\t}\n\n\t\tif (requestConfig.departments)\n\t\t{\n\t\t\tconst departmentEntity = Config.getDepartmentEntity();\n\t\t\tconfig.json.dialog.entities.push(departmentEntity);\n\t\t}\n\n\t\tconst chatEntity = Config.getChatEntity();\n\t\tconfig.json.dialog.entities.push(chatEntity);\n\n\t\tconfig.json.searchQuery = {\n\t\t\t'queryWords': SearchUtils.getWordsFromString(query.trim()),\n\t\t\t'query': query.trim(),\n\t\t};\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tAjax.runAction('ui.entityselector.doSearch', config).then(response => {\n\t\t\t\tLogger.warn(`Im.Search: Search request result`, response);\n\t\t\t\tthis.cache.save(response.data.dialog);\n\n\t\t\t\tresolve(response.data.dialog.items);\n\t\t\t}).catch(error => reject(error));\n\t\t});\n\t}\n\n\tsearchOnNetworkRequest(query: string): Promise\n\t{\n\t\tconst config = {\n\t\t\tjson: this.getSearchConfig()\n\t\t};\n\n\t\tconst networkEntity = Config.getNetworkEntity();\n\n\t\tconfig.json.dialog.entities = [networkEntity];\n\t\tconfig.json.searchQuery = {\n\t\t\t'queryWords': SearchUtils.getWordsFromString(query.trim()),\n\t\t\t'query': query.trim(),\n\t\t};\n\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tAjax.runAction('ui.entityselector.doSearch', config).then(response => {\n\t\t\t\tLogger.warn(`Im.Search: Network Search request result`, response);\n\n\t\t\t\tresolve(response.data.dialog.items);\n\t\t\t}).catch(error => reject(error));\n\t\t});\n\t}\n\n\taddItemsToRecentSearchResults(recentItem: Array<string, number>): void\n\t{\n\t\tconst [entityId, id] = recentItem;\n\t\tconst recentItems = [{id, entityId}];\n\n\t\tconst config = {\n\t\t\tjson: {\n\t\t\t\t...this.getSearchConfig(),\n\t\t\t\trecentItems\n\t\t\t},\n\t\t};\n\n\t\tconst chatEntity = Config.getChatEntity();\n\t\tconfig.json.dialog.entities.push(chatEntity);\n\n\t\tAjax.runAction('ui.entityselector.saveRecentItems', config);\n\t}\n\n\tupdateModels(items: Map<string, SearchItem>, set: boolean = false): Promise\n\t{\n\t\tconst {users, dialogues} = this.prepareDataForModels(items);\n\n\t\tconst usersActionName = set ? 'users/set' : 'users/add';\n\t\tconst dialoguesActionName = set ? 'dialogues/set' : 'dialogues/add';\n\n\t\tconst usersPromise = this.store.dispatch(usersActionName, users);\n\t\tconst dialoguesPromise = this.store.dispatch(dialoguesActionName, dialogues);\n\n\t\treturn Promise.all([usersPromise, dialoguesPromise]);\n\t}\n\n\tprepareDataForModels(items: Map<string, SearchItem>): { users: Array<Object>, dialogues: Array<Object> }\n\t{\n\t\tconst result = {\n\t\t\tusers: [],\n\t\t\tdialogues: [],\n\t\t};\n\n\t\titems.forEach(item => {\n\t\t\tif (!item.getCustomData())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// user\n\t\t\tif (item.isUser())\n\t\t\t{\n\t\t\t\tconst preparedUser = SearchUtils.convertKeysToLowerCase(item.getUserCustomData());\n\t\t\t\tresult.users.push(preparedUser);\n\n\t\t\t\tresult.dialogues.push({\n\t\t\t\t\tavatar: preparedUser.avatar,\n\t\t\t\t\tcolor: preparedUser.color,\n\t\t\t\t\tname: preparedUser.name,\n\t\t\t\t\ttype: ChatTypes.user,\n\t\t\t\t\tdialogId: item.getId()\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// chat\n\t\t\tif (item.isChat() && !item.isOpeLinesType())\n\t\t\t{\n\t\t\t\tconst chat = SearchUtils.convertKeysToLowerCase(item.getChatCustomData());\n\n\t\t\t\tresult.dialogues.push({\n\t\t\t\t\t...chat,\n\t\t\t\t\tdialogId: `chat${chat.id}`\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tgetItemsFromRecentItems(recentItems: Array<Object>, items: Map<string, SearchItem>): Map<string, SearchItem>\n\t{\n\t\tconst filledRecentItems = new Map();\n\t\trecentItems.forEach(recentItem => {\n\t\t\tconst itemFromMap = items.get(recentItem.cacheId);\n\t\t\tif (itemFromMap && !itemFromMap.isOpeLinesType())\n\t\t\t{\n\t\t\t\tfilledRecentItems.set(itemFromMap.getEntityFullId(), itemFromMap);\n\t\t\t}\n\t\t});\n\n\t\treturn filledRecentItems;\n\t}\n\n\tallocateSearchResults(items: Map<string, SearchItem>, originalLayoutQuery: string): Object\n\t{\n\t\tconst usersAndChats = new Map();\n\t\tconst chatUsers = new Map();\n\t\tconst departments = new Map();\n\t\tconst openLines = new Map();\n\t\tconst network = new Map();\n\n\t\titems.forEach(item => {\n\t\t\tswitch (item.getEntityId())\n\t\t\t{\n\t\t\t\tcase EntityIdTypes.chatUser:\n\t\t\t\t{\n\t\t\t\t\tchatUsers.set(item.getEntityFullId(), item);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase EntityIdTypes.department:\n\t\t\t\t{\n\t\t\t\t\tdepartments.set(item.getEntityFullId(), item);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase EntityIdTypes.network:\n\t\t\t\t{\n\t\t\t\t\tnetwork.set(item.getEntityFullId(), item);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t{\n\t\t\t\t\tif (item.isOpeLinesType())\n\t\t\t\t\t{\n\t\t\t\t\t\topenLines.set(item.getEntityFullId(), item);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tusersAndChats.set(item.getEntityFullId(), item);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treturn {\n\t\t\tusersAndChats: this.getSortedItems(usersAndChats, originalLayoutQuery),\n\t\t\tchatUsers: chatUsers,\n\t\t\tdepartments: departments,\n\t\t\topenLines: openLines,\n\t\t\tnetwork: network\n\t\t};\n\t}\n\n\tisRussianInterface(): boolean\n\t{\n\t\treturn this.store.state.application.common.languageId === 'ru';\n\t}\n\n\tchangeLayout(query: string): string\n\t{\n\t\tif (this.isRussianInterface() && BX.correctText)\n\t\t{\n\t\t\t// eslint-disable-next-line bitrix-rules/no-bx\n\t\t\treturn BX.correctText(query, {replace_way: 'AUTO'});\n\t\t}\n\n\t\treturn query;\n\t}\n\n\tneedLayoutChange(originalLayoutQuery: string): boolean\n\t{\n\t\tconst wrongLayoutQuery = this.changeLayout(originalLayoutQuery);\n\t\tconst isIdenticalQuery = wrongLayoutQuery === originalLayoutQuery;\n\n\t\treturn this.isRussianInterface() && !isIdenticalQuery;\n\t}\n}","import {Dom, Type} from 'main.core';\nimport {SearchResultItem} from './search-result-item';\nimport {SearchService} from '../search-service';\nimport {Utils} from 'im.v2.lib.utils';\nimport '../css/search.css';\nimport {SearchCache} from '../search-cache';\nimport {SearchRecentList} from '../search-recent-list';\n\n// @vue/component\nexport const SearchResultDepartmentItem = {\n\tname: 'SearchResultDepartmentItem',\n\tcomponents: {SearchResultItem},\n\tprops: {\n\t\titem: {\n\t\t\ttype: Object,\n\t\t\trequired: true\n\t\t},\n\t},\n\tdata: function() {\n\t\treturn {\n\t\t\texpanded: false,\n\t\t\tisLoading: false,\n\t\t\tusersInDepartment: [],\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tdepartmentAvatarStyle()\n\t\t{\n\t\t\tif (this.item.avatarOptions?.color)\n\t\t\t{\n\t\t\t\treturn {backgroundColor: this.item.avatarOptions.color};\n\t\t\t}\n\n\t\t\treturn {backgroundColor: '#df532d'};\n\t\t},\n\t\ttitle()\n\t\t{\n\t\t\treturn Utils.text.htmlspecialcharsback(this.item.title);\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tconst cache = new SearchCache(this.getCurrentUserId());\n\t\tconst recentList = new SearchRecentList(this.$Bitrix);\n\t\tthis.searchService = SearchService.getInstance(this.$Bitrix, cache, recentList);\n\t},\n\tmethods:\n\t{\n\t\tonClick()\n\t\t{\n\t\t\tif (!this.expanded)\n\t\t\t{\n\t\t\t\tthis.openDepartment();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.closeDepartment();\n\t\t\t}\n\t\t},\n\t\topenDepartment()\n\t\t{\n\t\t\tthis.isLoading = true;\n\t\t\tif (Type.isArrayFilled(this.usersInDepartment))\n\t\t\t{\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthis.expanded = true;\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.searchService.loadDepartmentUsers(this.item).then(usersAndDepartments => {\n\t\t\t\tthis.usersInDepartment = [...usersAndDepartments.values()].filter(user => user.isUser());\n\t\t\t\tthis.isLoading = false;\n\t\t\t\tthis.expanded = true;\n\t\t\t});\n\t\t},\n\t\tcloseDepartment()\n\t\t{\n\t\t\tthis.expanded = false;\n\t\t},\n\t\tgetCurrentUserId(): number\n\t\t{\n\t\t\treturn this.$store.state.application.common.userId;\n\t\t},\n\t\tenterTransition(element)\n\t\t{\n\t\t\tDom.style(element, 'height', 0);\n\t\t\tDom.style(element, 'opacity', 0);\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\trequestAnimationFrame(() => {\n\t\t\t\t\tDom.style(element, 'opacity', 1);\n\t\t\t\t\tDom.style(element, 'height', `${element.scrollHeight}px`);\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tafterEnterTransition(element)\n\t\t{\n\t\t\tDom.style(element, 'height', 'auto');\n\t\t},\n\t\tleaveTransition(element)\n\t\t{\n\t\t\tDom.style(element, 'height', `${element.scrollHeight}px`);\n\n\t\t\trequestAnimationFrame(() => {\n\t\t\t\tDom.style(element, 'height', 0);\n\t\t\t\tDom.style(element, 'opacity', 0);\n\t\t\t});\n\t\t},\n\t},\n\t// language=Vue\n\ttemplate: `\n\t\t<div @click=\"onClick\" class=\"bx-im-search-item\">\n\t\t\t<div class=\"bx-im-search-avatar-wrap\">\n\t\t\t\t<div :title=\"item.title\" class=\"bx-im-component-avatar-wrap bx-im-component-avatar-size-l\">\n\t\t\t\t\t<div \n\t\t\t\t\t\tclass=\"bx-im-component-avatar-content bx-im-component-avatar-image bx-search-item-department-icon\"\n\t\t\t\t\t\t:style=\"departmentAvatarStyle\"\n\t\t\t\t\t></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"bx-im-search-result-item-content bx-im-search-result-item-department-content\">\n\t\t\t\t<div class=\"bx-im-component-chat-title-wrap\">\n\t\t\t\t\t<div class=\"bx-im-component-chat-name-text\">\n\t\t\t\t\t\t{{title}}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"bx-search-item-department-expand-button\">\n\t\t\t\t\t<div v-if=\"isLoading\" class=\"bx-search-loader bx-search-loader-large-size bx-search-item-department-expand-loader\"></div>\n\t\t\t\t\t<div v-else-if=\"expanded\" class=\"bx-search-item-department-down-arrow\"></div>\n\t\t\t\t\t<div v-else class=\"bx-search-item-department-up-arrow\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\t\t<transition\n\t\t\tname=\"bx-im-search-department-expand\"\n\t\t\t@enter=\"enterTransition\"\n\t\t\t@after-enter=\"afterEnterTransition\"\n\t\t\t@leave=\"leaveTransition\"\n\t\t>\n\t\t\t<div v-if=\"expanded\" class=\"bx-search-department-users-wrapper\">\n\t\t\t\t<div class=\"bx-search-department-users\">\n\t\t\t\t\t<SearchResultItem v-for=\"user in usersInDepartment\" :key=\"user.getEntityFullId()\" :item=\"user\" :child=\"true\"/>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</transition>\n\t`\n};","import 'ui.design-tokens';\nimport 'ui.fonts.opensans';\n\nimport {RecentUsersCarousel} from './components/recent-users-carousel';\nimport {SearchResultSection} from './components/search-result-section';\nimport {SearchResultOpenlineItem} from './components/search-result-openline-item';\nimport {SearchResultNetworkItem} from './components/search-result-network-item';\nimport {SearchResultDepartmentItem} from './components/search-result-department-item';\nimport {SearchResultItem} from './components/search-result-item';\nimport {RecentLoadingState as LoadingState} from 'im.v2.component.old-chat-embedding.elements';\nimport {SearchService} from './search-service';\nimport {SearchCache} from './search-cache';\nimport {SearchRecentList} from './search-recent-list';\n\nimport './css/search.css';\nimport {Runtime, Extension} from 'main.core';\nimport {SearchContextMenu} from './search-context-menu';\nimport {EventEmitter} from 'main.core.events';\nimport {EventType} from 'im.v2.const';\nimport {SearchUtils} from './search-utils';\nimport {SearchItem} from './search-item';\n\n/**\n* @bitrixEvents EventType.search.openContextMenu\n* @bitrixEvents EventType.dialog.errors.accessDenied\n* @bitrixEvents EventType.search.selectItem\n* @bitrixEvents EventType.recent.updateSearch\n*/\nexport const Search = {\n\tcomponents: {\n\t\tRecentUsersCarousel,\n\t\tSearchResultSection,\n\t\tLoadingState,\n\t\tSearchResultOpenlineItem,\n\t\tSearchResultNetworkItem,\n\t\tSearchResultDepartmentItem,\n\t\tSearchResultItem\n\t},\n\tprops: {\n\t\tsearchQuery: {\n\t\t\ttype: String,\n\t\t\trequired: true\n\t\t},\n\t\tsearchMode: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true\n\t\t}\n\t},\n\tdata: function()\n\t{\n\t\treturn {\n\t\t\tisRecentLoading: false,\n\t\t\tisLocalLoading: false,\n\t\t\tisServerLoading: false,\n\t\t\tisNetworkLoading: false,\n\t\t\tcurrentServerQueries: 0,\n\t\t\tisNetworkButtonClicked: false,\n\t\t\tisNetworkAvailable: false,\n\t\t\tresult: {\n\t\t\t\trecent: new Map(),\n\t\t\t\tusersAndChats: new Map(),\n\t\t\t\tchatUsers: new Map(),\n\t\t\t\tdepartments: new Map(),\n\t\t\t\topenLines: new Map(),\n\t\t\t\tnetwork: new Map(),\n\t\t\t}\n\t\t};\n\t},\n\tcomputed:\n\t{\n\t\tisEmptyState()\n\t\t{\n\t\t\tif (this.isServerLoading || this.isLocalLoading || this.isNetworkLoading)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.isNetworkAvailable && !this.isNetworkButtonClicked && this.isServerSearch)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.result.usersAndChats.size === 0\n\t\t\t\t&& this.result.departments.size === 0\n\t\t\t\t&& this.result.chatUsers.size === 0\n\t\t\t\t&& this.result.openLines.size === 0\n\t\t\t\t&& this.result.network.size === 0;\n\t\t},\n\t\tisLoadingState()\n\t\t{\n\t\t\treturn (this.isServerLoading || this.isRecentLoading);\n\t\t},\n\t\tisServerSearch()\n\t\t{\n\t\t\treturn this.searchQuery.trim().length >= this.minTokenSize;\n\t\t},\n\t\tneedToShowNetworkSection()\n\t\t{\n\t\t\treturn !this.isNetworkButtonClicked || this.result.network.size > 0;\n\t\t},\n\t\tshowSearchResult()\n\t\t{\n\t\t\treturn this.searchQuery.trim().length > 0;\n\t\t},\n\t\titemComponent: () => SearchResultItem,\n\t\titemDepartmentComponent: () => SearchResultDepartmentItem,\n\t\titemNetworkComponent: () => SearchResultNetworkItem,\n\t\titemOpenlineComponent: () => SearchResultOpenlineItem,\n\t},\n\twatch:\n\t{\n\t\tsearchQuery(newValue, oldValue)\n\t\t{\n\t\t\tconst newQuery = newValue.trim();\n\t\t\tconst previousQuery = oldValue.trim();\n\n\t\t\tif (newQuery === previousQuery)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.startSearch(newQuery);\n\t\t},\n\t\tsearchMode(newValue, oldValue)\n\t\t{\n\t\t\tif (newValue === false && oldValue === true) // search switch off\n\t\t\t{\n\t\t\t\tthis.isNetworkButtonClicked = false;\n\t\t\t}\n\t\t\telse if (newValue === true && oldValue === false) // search switch on\n\t\t\t{\n\t\t\t\tif (this.result.recent.size > 0)\n\t\t\t\t{\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.isRecentLoading = true;\n\t\t\t}\n\n\t\t\tthis.searchService.loadRecentSearchFromServer().then(recentItems => {\n\t\t\t\tthis.result.recent = recentItems;\n\t\t\t\tthis.isRecentLoading = false;\n\t\t\t});\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tthis.initSettings();\n\t\tthis.contextMenuManager = new SearchContextMenu(this.$Bitrix);\n\t\tconst cache = new SearchCache(this.getCurrentUserId());\n\t\tconst recentList = new SearchRecentList(this.$Bitrix);\n\t\tthis.searchService = SearchService.getInstance(this.$Bitrix, cache, recentList);\n\t\tthis.searchOnServerDelayed = Runtime.debounce(this.searchOnServer, 1500, this);\n\n\t\tEventEmitter.subscribe(EventType.search.openContextMenu, this.onOpenContextMenu);\n\t\tEventEmitter.subscribe(EventType.dialog.errors.accessDenied, this.onDelete);\n\t\tEventEmitter.subscribe(EventType.search.selectItem, this.onSelectItem);\n\t\tEventEmitter.subscribe(EventType.recent.updateSearch, this.onPressEnterKey);\n\n\t\tthis.loadInitialRecentFromCache();\n\t},\n\tbeforeUnmount()\n\t{\n\t\tthis.searchService.destroy();\n\t\tthis.contextMenuManager.destroy();\n\t\tEventEmitter.unsubscribe(EventType.search.openContextMenu, this.onOpenContextMenu);\n\t\tEventEmitter.unsubscribe(EventType.dialog.errors.accessDenied, this.onDelete);\n\t\tEventEmitter.unsubscribe(EventType.search.selectItem, this.onSelectItem);\n\t\tEventEmitter.unsubscribe(EventType.recent.updateSearch, this.onPressEnterKey);\n\t},\n\tmethods:\n\t{\n\t\tloadInitialRecentFromCache()\n\t\t{\n\t\t\t// we don't need an extra request to get recent items while messenger initialization\n\t\t\tthis.searchService.loadRecentSearchFromCache().then(recentItems => {\n\t\t\t\tthis.result.recent = recentItems;\n\t\t\t});\n\t\t},\n\t\tinitSettings()\n\t\t{\n\t\t\tconst settings = Extension.getSettings('im.v2.component.old-chat-embedding.search');\n\t\t\tconst defaultMinTokenSize = 3;\n\t\t\tthis.minTokenSize = settings.get('minTokenSize', defaultMinTokenSize);\n\t\t\tthis.isNetworkAvailable = settings.get('isNetworkAvailable', false);\n\t\t\tthis.isDepartmentsAvailable = settings.get('isDepartmentsAvailable', false);\n\t\t},\n\t\tstartSearch(searchQuery: string)\n\t\t{\n\t\t\tif (searchQuery.length > 0 && searchQuery.length < this.minTokenSize)\n\t\t\t{\n\t\t\t\tthis.isLocalLoading = true;\n\t\t\t\tconst queryBeforeRequest = searchQuery;\n\t\t\t\tthis.searchService.searchLocal(searchQuery).then((localSearchResult: Map<string, SearchItem>) => {\n\t\t\t\t\tif (queryBeforeRequest !== this.searchQuery.trim())\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.result.usersAndChats = localSearchResult;\n\t\t\t\t\tthis.isLocalLoading = false;\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (searchQuery.length >= this.minTokenSize)\n\t\t\t{\n\t\t\t\tthis.isServerLoading = true;\n\t\t\t\tconst queryBeforeRequest = searchQuery;\n\t\t\t\tthis.searchService.searchLocal(searchQuery).then((localSearchResult: Map<string, SearchItem>) => {\n\t\t\t\t\tif (queryBeforeRequest !== this.searchQuery.trim())\n\t\t\t\t\t{\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tthis.result.usersAndChats = localSearchResult;\n\t\t\t\t}).then(() => this.searchOnServerDelayed(searchQuery));\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.cleanSearchResult();\n\t\t\t}\n\t\t},\n\t\tcleanSearchResult()\n\t\t{\n\t\t\tthis.result.usersAndChats = new Map();\n\t\t\tthis.result.departments = new Map();\n\t\t\tthis.result.chatUsers = new Map();\n\t\t\tthis.result.network = new Map();\n\t\t\tthis.result.openLines = new Map();\n\t\t},\n\t\tsearchOnServer(query: string)\n\t\t{\n\t\t\tthis.currentServerQueries++;\n\t\t\tthis.isNetworkLoading = this.isNetworkButtonClicked;\n\n\t\t\tconst config = {\n\t\t\t\tnetwork: this.isNetworkAvailable && this.isNetworkButtonClicked,\n\t\t\t\tdepartments: !BX.MessengerProxy.isCurrentUserExtranet() && this.isDepartmentsAvailable,\n\t\t\t};\n\n\t\t\tconst queryBeforeRequest = query;\n\t\t\tthis.searchService.searchOnServer(query, config).then((searchResultFromServer: Object) => {\n\t\t\t\tif (queryBeforeRequest !== this.searchQuery.trim())\n\t\t\t\t{\n\t\t\t\t\tthis.stopLoader();\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.result.usersAndChats = this.mergeResults(this.result.usersAndChats, searchResultFromServer.usersAndChats);\n\t\t\t\tthis.result.departments = searchResultFromServer.departments;\n\t\t\t\tthis.result.chatUsers = searchResultFromServer.chatUsers;\n\t\t\t\tthis.result.openLines = searchResultFromServer.openLines;\n\t\t\t\tthis.result.network = searchResultFromServer.network;\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\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.isNetworkLoading = false;\n\t\t\tthis.isServerLoading = false;\n\t\t},\n\t\tsearchOnNetwork(query: string)\n\t\t{\n\t\t\tthis.isNetworkLoading = true;\n\t\t\tconst queryBeforeRequest = query;\n\t\t\tthis.searchService.searchOnNetwork(query).then((searchResultFromServer: Map<string, SearchItem>) => {\n\t\t\t\tif (queryBeforeRequest !== this.searchQuery)\n\t\t\t\t{\n\t\t\t\t\tthis.isNetworkLoading = false;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.result.network = searchResultFromServer;\n\t\t\t\tthis.isNetworkButtonClicked = true;\n\t\t\t\tthis.isNetworkLoading = false;\n\t\t\t});\n\t\t},\n\t\tmergeResults(originalItems: Map<string, SearchItem>, newItems: Map<string, SearchItem>): Map<string, SearchItem>\n\t\t{\n\t\t\tconst mergedMap = new Map(originalItems.entries());\n\n\t\t\tnewItems.forEach((newItemValue, newItemKey) => {\n\t\t\t\tif (!mergedMap.has(newItemKey))\n\t\t\t\t{\n\t\t\t\t\tmergedMap.set(newItemKey, newItemValue);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\treturn mergedMap;\n\t\t},\n\t\tonOpenContextMenu({data: eventData})\n\t\t{\n\t\t\tif (eventData.event.altKey && eventData.event.shiftKey)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.contextMenuManager.openMenu(eventData.item, eventData.event.currentTarget);\n\t\t},\n\t\tonDelete({data: eventData})\n\t\t{\n\t\t\tconst {dialogId} = eventData;\n\t\t\tthis.result.recent.delete(dialogId);\n\t\t\tthis.result.usersAndChats.delete(dialogId);\n\t\t\tthis.result.chatUsers.delete(dialogId);\n\t\t},\n\t\tonScroll()\n\t\t{\n\t\t\tthis.contextMenuManager.destroy();\n\t\t},\n\t\tonClickLoadNetworkResult()\n\t\t{\n\t\t\tthis.searchOnNetwork(this.searchQuery);\n\t\t},\n\t\tonSelectItem(event)\n\t\t{\n\t\t\tconst {selectedItem, nativeEvent} = event.getData();\n\n\t\t\tEventEmitter.emit(EventType.dialog.open, {\n\t\t\t\tdialogId: selectedItem.dialogId,\n\t\t\t\tchat: this.$store.getters['dialogues/get'](selectedItem.dialogId, true),\n\t\t\t\tuser: this.$store.getters['users/get'](selectedItem.dialogId, true)\n\t\t\t});\n\n\t\t\tif (!nativeEvent.altKey)\n\t\t\t{\n\t\t\t\tBX.MessengerProxy.clearSearchInput();\n\t\t\t}\n\t\t},\n\t\tonPressEnterKey(event)\n\t\t{\n\t\t\tif (event.data.keyCode !== 13) // enter\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst firstItem = this.getFirstItemFromSearchResults();\n\t\t\tif (!firstItem)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst selectedItem = {\n\t\t\t\tid: firstItem.getId(),\n\t\t\t\tentityId: firstItem.getEntityId(),\n\t\t\t\tdialogId: firstItem.getDialogId(),\n\t\t\t};\n\t\t\tEventEmitter.emit(\n\t\t\t\tEventType.search.selectItem,\n\t\t\t\t{\n\t\t\t\t\tselectedItem: selectedItem,\n\t\t\t\t\tonlyOpen: firstItem.isOpeLinesType(),\n\t\t\t\t\tnativeEvent: {}\n\t\t\t\t}\n\t\t\t);\n\t\t},\n\t\tgetFirstItemFromSearchResults(): ?string\n\t\t{\n\t\t\tif (!this.showSearchResult && this.result.recent.size > 0)\n\t\t\t{\n\t\t\t\treturn SearchUtils.getFirstItemFromMap(this.result.recent);\n\t\t\t}\n\n\t\t\tif (this.result.usersAndChats.size > 0)\n\t\t\t{\n\t\t\t\treturn SearchUtils.getFirstItemFromMap(this.result.usersAndChats);\n\t\t\t}\n\n\t\t\tif (this.result.chatUsers.size > 0)\n\t\t\t{\n\t\t\t\treturn SearchUtils.getFirstItemFromMap(this.result.chatUsers);\n\t\t\t}\n\n\t\t\tif (this.result.openLines.size > 0)\n\t\t\t{\n\t\t\t\treturn SearchUtils.getFirstItemFromMap(this.result.openLines);\n\t\t\t}\n\n\t\t\treturn null;\n\t\t},\n\t\tgetCurrentUserId(): number\n\t\t{\n\t\t\treturn this.$store.state.application.common.userId;\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div class=\"bx-messenger-search\" @scroll=\"onScroll\">\n\t\t\t<div>\n\t\t\t\t<template v-if=\"!showSearchResult\">\n\t\t\t\t\t<RecentUsersCarousel />\n\t\t\t\t\t<SearchResultSection\n\t\t\t\t\t\t:component=\"itemComponent\"\n\t\t\t\t\t\t:items=\"result.recent\" \n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('IM_SEARCH_SECTION_RECENT')\" \n\t\t\t\t\t\t:showMoreButton=\"false\" \n\t\t\t\t\t/>\n\t\t\t\t</template>\n\t\t\t\t<template v-if=\"showSearchResult\">\n\t\t\t\t\t<SearchResultSection \n\t\t\t\t\t\tv-if=\"result.usersAndChats.size > 0\"\n\t\t\t\t\t\t:component=\"itemComponent\"\n\t\t\t\t\t\t:items=\"result.usersAndChats\"\n\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('IM_SEARCH_SECTION_USERS_AND_CHATS')\"\n\t\t\t\t\t\t:min-items:=\"20\"\n\t\t\t\t\t\t:max-items=\"50\"\n\t\t\t\t\t/>\n\t\t\t\t\t<template v-if=\"!isLoadingState && isServerSearch\">\n\t\t\t\t\t\t<SearchResultSection\n\t\t\t\t\t\t\tv-if=\"result.chatUsers.size > 0\"\n\t\t\t\t\t\t\t:component=\"itemComponent\"\n\t\t\t\t\t\t\t:items=\"result.chatUsers\"\n\t\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('IM_SEARCH_SECTION_CHAT_USERS')\"\n\t\t\t\t\t\t\t:min-items:=\"5\"\n\t\t\t\t\t\t\t:max-items=\"20\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<SearchResultSection \n\t\t\t\t\t\t\tv-if=\"result.departments.size > 0\"\n\t\t\t\t\t\t\t:component=\"itemDepartmentComponent\"\n\t\t\t\t\t\t\t:items=\"result.departments\" \n\t\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('IM_SEARCH_SECTION_DEPARTMENTS')\"\n\t\t\t\t\t\t\t:min-items:=\"5\"\n\t\t\t\t\t\t\t:max-items=\"20\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<SearchResultSection\n\t\t\t\t\t\t\tv-if=\"result.openLines.size > 0\"\n\t\t\t\t\t\t\t:component=\"itemOpenlineComponent\"\n\t\t\t\t\t\t\t:items=\"result.openLines\"\n\t\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('IM_SEARCH_SECTION_OPENLINES')\"\n\t\t\t\t\t\t\t:min-items:=\"5\"\n\t\t\t\t\t\t\t:max-items=\"20\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<template v-if=\"isNetworkAvailable\">\n\t\t\t\t\t\t\t<SearchResultSection\n\t\t\t\t\t\t\t\tv-if=\"needToShowNetworkSection\"\n\t\t\t\t\t\t\t\t:component=\"itemNetworkComponent\"\n\t\t\t\t\t\t\t\t:items=\"result.network\"\n\t\t\t\t\t\t\t\t:title=\"$Bitrix.Loc.getMessage('IM_SEARCH_SECTION_NETWORK')\"\n\t\t\t\t\t\t\t\t:min-items:=\"5\"\n\t\t\t\t\t\t\t\t:max-items=\"20\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<template v-if=\"!isNetworkButtonClicked\">\n\t\t\t\t\t\t\t\t<div \n\t\t\t\t\t\t\t\t\tv-if=\"!isNetworkLoading\"\n\t\t\t\t\t\t\t\t\t@click=\"onClickLoadNetworkResult\"\n\t\t\t\t\t\t\t\t\tclass=\"bx-im-search-network-button\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{{$Bitrix.Loc.getMessage('IM_SEARCH_SECTION_NETWORK_BUTTON')}}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div v-else class=\"bx-search-network-loader-wrapper\">\n\t\t\t\t\t\t\t\t\t<div class=\"bx-search-loader bx-search-loader-large-size\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</template>\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</template>\n\t\t\t\t\t<div v-if=\"isEmptyState\" class=\"bx-im-search-not-found-wrapper\">\n\t\t\t\t\t\t<div class=\"bx-im-search-not-found-icon\"></div>\n\t\t\t\t\t\t<div class=\"bx-im-search-not-found-title\">{{ $Bitrix.Loc.getMessage('IM_SEARCH_RESULT_NOT_FOUND') }}</div>\n\t\t\t\t\t\t<div class=\"bx-im-search-not-found-title\">\n\t\t\t\t\t\t\t{{ $Bitrix.Loc.getMessage('IM_SEARCH_RESULT_NOT_FOUND_DESCRIPTION') }}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<LoadingState v-if=\"isLoadingState\" />\n\t\t\t</div>\n\t\t</div>\n\t`\n};"],"names":["SearchContextMenu","RecentMenu","getMenuItems","getSendMessageItem","getCallItem","getHistoryItem","getOpenProfileItem","CarouselUser","name","components","Avatar","props","user","type","Object","required","computed","dialog","split","isExtranet","extranet","AvatarSize","created","contextMenuManager","$Bitrix","beforeUnmount","destroy","methods","onClick","EventEmitter","emit","EventType","open","dialogId","chat","BX","MessengerProxy","clearSearchInput","onRightClick","event","altKey","shiftKey","item","search","openContextMenu","template","recentUsersLimit","RecentUsersCarousel","title","String","default","users","recentUsers","$store","getters","forEach","recentItem","push","usersWithoutBotsAndCurrentUser","filter","bot","id","currentUserId","slice","state","application","common","userId","SearchResultSection","component","items","showMoreButton","Boolean","minItems","Number","maxItems","data","expanded","showMore","size","showMoreButtonText","Loc","getMessage","sectionItems","itemsFromMap","values","onShowMore","EntityIdTypes","freeze","chatUser","department","network","SearchUtils","getWordsFromString","string","clearedString","replaceAll","replace","word","getTypeByEntityId","entityId","Error","createItemMap","map","Map","mapItem","SearchItem","set","getEntityFullId","getFirstItemFromMap","iterator","entries","firstIteration","next","firstItem","value","content","convertKeysToLowerCase","object","result","keys","key","Type","isObject","isArray","toLowerCase","prepareRecentItems","recentItems","cacheId","date","Date","constructor","itemOptions","entityType","subtitle","lastName","secondName","position","avatar","avatarOptions","customSort","contextSort","rawData","setRawData","setId","setDialogId","setEntityId","setEntityType","setTitle","setSubtitle","setName","setLastName","setSecondName","setPosition","setAvatar","setAvatarOptions","setContextSort","isFromProviderResponse","isString","isNil","isFromModel","startsWith","customData","imChat","ID","imUser","toString","firstName","workPosition","getId","getEntityId","getEntityType","getTitle","getSubtitle","getName","getLastName","getSecondName","getPosition","getCustomData","getDialogId","getAvatar","getAvatarOptions","getContextSort","addCustomSort","getCustomSort","isUser","isChat","EXTRANET","getUserCustomData","getChatCustomData","isOpeLinesType","getOpenlineEntityId","ENTITY_ID","getAvatarColor","color","COLOR","isCrmSession","sessionData","ENTITY_DATA_1","OpenlineAvatarType","lines","livechat","whatsappbytwilio","avito","viber","telegrambot","imessage","wechat","yandex","vkgroup","ok","olx","facebook","facebookcomments","fbinstagramdirect","fbinstagram","notifications","AvatarOpenline","M","openlineType","chatAvatarStyle","backgroundImage","chatTypeIconClasses","needCrmBadge","isCrmAvailable","Extension","getSettings","get","SearchResultOpenlineItem","Utils","text","htmlspecialcharsback","SearchResultNetworkItem","isLoading","hasAvatar","avatarStyle","backgroundColor","networkCode","emitAsync","openNetworkItem","then","eventResult","error","console","catch","SearchResultItem","ChatTitle","child","ChatTypes","userItemText","status","chatItemText","searchEntityId","searchItemId","parseInt","selectedItem","selectItem","onlyOpen","nativeEvent","SearchCache","db","Dexie","version","stores","settings","upgrade","transaction","clearItemsPromise","table","clear","clearRecentItemsPromise","Promise","all","checkTables","onAccessDeniedHandler","onAccessDenied","bind","subscribe","errors","accessDenied","on","where","equals","first","promises","put","unsubscribe","loadRecentFromCache","searchResults","deleteExpiredItems","orderBy","toArray","recentItemsFromCache","resultItemsPromises","isUndefined","json","save","preparedItems","prepareItems","preparedRecentItems","length","bulkPut","oneMonthAgo","now","below","delete","eventData","convertDialogIdToCacheItemId","WORK_POSITION","unshiftItem","itemToMove","itemToMoveEntityId","itemToMoveId","itemToMoveCacheId","itemIndexToUpdate","findIndex","splice","unshift","words","results","getQueryResultByWords","isArrayFilled","intersectedResult","intersectArrays","distinctIds","Set","flat","anyOf","startsWithIgnoreCase","or","distinct","primaryKeys","firstArray","secondArray","restArrays","intersectedArray","includes","Config","entities","options","searchableBotTypes","fillDialogWithDefaultValues","dynamicLoad","dynamicSearch","filters","searchableChatTypes","preselectedItems","clearUnavailableItems","context","getNetworkEntity","getDepartmentEntity","selectMode","allowSelectRootDepartment","getChatEntity","SearchRecentList","store","Data","queryWords","recentListItems","getRecentListItems","foundItems","recentListItem","searchByQueryWords","resolve","searchByUserFields","searchByDialogFields","searchField","dialogNameWords","doesItemMatchQuery","userFirstNameWords","userLastNameWords","userWorkPositionWords","fieldsForSearch","found","queryWord","queryWordsMatchCount","field","RestMethodImopenlinesNetworkJoin","SearchService","getInstance","cache","recentList","instance","restClient","RestClient","onItemSelectHandler","onItemSelect","onOpenNetworkItemHandler","onOpenNetworkItem","loadRecentSearchFromCache","responseFromCache","Logger","warn","itemMap","updateModels","getItemsFromRecentItems","loadRecentSearchFromServer","loadRecentFromServer","searchLocal","query","originalLayoutQuery","trim","searchInCachePromise","searchInCache","searchInRecentListPromise","searchInRecentList","getSortedItems","searchOnServer","config","searchRequest","itemsFromServer","allocateSearchResults","searchOnNetwork","searchOnNetworkRequest","loadDepartmentUsers","parentItem","loadDepartmentUsersFromServer","responseFromServer","wrongLayoutSearchPromise","needLayoutChange","wrongLayoutQuery","changeLayout","getItemsFromCacheByQuery","correctLayoutSearchPromise","getItemsFromRecentListByQuery","getSearchConfig","getData","addItemsToRecentSearchResults","code","reject","callBatch","getDataRequestQuery","handleBatchRequestResult","ex","error_description","RestMethod","imUserGet","dispatch","dialogue","prepareChatForAdditionalUser","cacheItems","sortedItems","sortItemsBySearchField","sortItemsByEntityIdAndContextSort","wrongLayoutQueryWords","uniqueWords","searchFieldsWeight","sort","secondItem","firstItemValue","secondItemValue","entityWeight","secondItemEntityId","firstItemEntityId","chatEntity","Ajax","runAction","response","departmentEntity","requestConfig","networkEntity","departments","searchQuery","dialogues","prepareDataForModels","usersActionName","dialoguesActionName","usersPromise","dialoguesPromise","preparedUser","filledRecentItems","itemFromMap","usersAndChats","chatUsers","openLines","isRussianInterface","languageId","correctText","replace_way","isIdenticalQuery","SearchResultDepartmentItem","usersInDepartment","departmentAvatarStyle","getCurrentUserId","searchService","openDepartment","closeDepartment","usersAndDepartments","enterTransition","element","Dom","style","requestAnimationFrame","scrollHeight","afterEnterTransition","leaveTransition","Search","LoadingState","searchMode","isRecentLoading","isLocalLoading","isServerLoading","isNetworkLoading","currentServerQueries","isNetworkButtonClicked","isNetworkAvailable","recent","isEmptyState","isServerSearch","isLoadingState","minTokenSize","needToShowNetworkSection","showSearchResult","itemComponent","itemDepartmentComponent","itemNetworkComponent","itemOpenlineComponent","watch","newValue","oldValue","newQuery","previousQuery","startSearch","initSettings","searchOnServerDelayed","Runtime","debounce","onOpenContextMenu","onDelete","onSelectItem","updateSearch","onPressEnterKey","loadInitialRecentFromCache","defaultMinTokenSize","isDepartmentsAvailable","queryBeforeRequest","localSearchResult","cleanSearchResult","isCurrentUserExtranet","searchResultFromServer","stopLoader","mergeResults","finally","originalItems","newItems","mergedMap","newItemValue","newItemKey","has","openMenu","currentTarget","onScroll","onClickLoadNetworkResult","keyCode","getFirstItemFromSearchResults"],"mappings":"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"}