File manager - Edit - /home/c14075/dragmet-ural.ru/www/bitrix/js/im/v2/component/old-chat-embedding/search/dist/search.bundle.js.map
Back
{"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.old-chat-embedding.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\tif (!recentItems)\n\t\t{\n\t\t\treturn [];\n\t\t}\n\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(responseFromServer => {\n\t\t\tLogger.warn('Im.Search: Recent search loaded from server');\n\t\t\tconst items = SearchUtils.createItemMap(responseFromServer.items);\n\t\t\tconst recentItems = SearchUtils.prepareRecentItems(responseFromServer.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\tisNetworkSearchEnabled: true,\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\tisNetworkSearchCode(): boolean\n\t\t{\n\t\t\treturn !!(this.searchQuery.length === 32 && /[\\da-f]{32}/.test(this.searchQuery));\n\t\t},\n\t\tisNetworkAvailableForSearch(): boolean\n\t\t{\n\t\t\tif (!this.isNetworkAvailable)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.isNetworkSearchEnabled || this.isNetworkSearchCode;\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.isNetworkSearchEnabled = settings.get('isNetworkSearchEnabled', true);\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.isNetworkAvailableForSearch && 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=\"isNetworkAvailableForSearch\">\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","responseFromServer","searchLocal","query","originalLayoutQuery","trim","searchInCachePromise","searchInCache","searchInRecentListPromise","searchInRecentList","getSortedItems","searchOnServer","config","searchRequest","itemsFromServer","allocateSearchResults","searchOnNetwork","searchOnNetworkRequest","loadDepartmentUsers","parentItem","loadDepartmentUsersFromServer","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","isNetworkSearchEnabled","recent","isEmptyState","isServerSearch","isLoadingState","minTokenSize","needToShowNetworkSection","showSearchResult","isNetworkSearchCode","test","isNetworkAvailableForSearch","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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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings