File manager - Edit - /home/web/vm-3fadc827.na4u.ru/www/bitrix/modules/im/install/js/im/component/dialog/dist/dialog.bundle.js.map
Back
{"version":3,"file":"dialog.bundle.js","sources":["../src/components/message-list/message-list-const.js","../src/components/message-list/placeholders/placeholder-1.js","../src/components/message-list/placeholders/placeholder-2.js","../src/components/message-list/placeholders/placeholder-3.js","../src/components/message-list/message-list.js","../src/components/error-state.js","../src/components/loading-state.js","../src/components/empty-state.js","../src/components/quote-panel.js","../src/component.js"],"sourcesContent":["export const ObserverType = Object.freeze({\n\tread: 'read',\n\tnone: 'none',\n});\nexport const RequestMode = Object.freeze({\n\thistory: 'history',\n\tunread: 'unread'\n});\nexport const DateFormat = Object.freeze({\n\tgroupTitle: 'groupTitle',\n\treadedTitle: 'readedTitle'\n});","import { DialogReferenceClassName } from \"im.const\";\n\nexport const Placeholder1 = {\n\tprops: ['element'],\n\tcreated()\n\t{\n\t\tconst modes = ['self', 'opponent'];\n\t\tconst randomIndex = Math.floor(Math.random() * modes.length);\n\t\tthis.mode = modes[randomIndex];\n\t},\n\tcomputed:\n\t{\n\t\titemClasses()\n\t\t{\n\t\t\tconst itemClasses = ['im-skeleton-item', 'im-skeleton-item--sm', `${DialogReferenceClassName.listItem}-${this.element.id}`];\n\t\t\tif (this.mode === 'self')\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item-self');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item-opponent');\n\t\t\t}\n\n\t\t\treturn itemClasses;\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div :class=\"itemClasses\" :key=\"element.templateId\">\n\t\t\t<div v-if=\"mode === 'opponent'\" class=\"im-skeleton-logo\"></div>\n\t\t\t<div class=\"im-skeleton-content\">\n\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t<div style=\"max-width: 70%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t<div style=\"max-width: 100%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t\t<div style=\"max-width: 26px; margin-left: auto;\" class=\"im-skeleton-line\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"im-skeleton-like\"></div>\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import { DialogReferenceClassName } from \"im.const\";\n\nexport const Placeholder2 = {\n\tprops: ['element'],\n\tcreated()\n\t{\n\t\tconst modes = ['self', 'opponent'];\n\t\tconst randomIndex = Math.floor(Math.random() * modes.length);\n\t\tthis.mode = modes[randomIndex];\n\t},\n\tcomputed:\n\t{\n\t\titemClasses()\n\t\t{\n\t\t\tconst itemClasses = ['im-skeleton-item', 'im-skeleton-item--md', `${DialogReferenceClassName.listItem}-${this.element.id}`];\n\t\t\tif (this.mode === 'self')\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item-self');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item-opponent');\n\t\t\t}\n\n\t\t\treturn itemClasses;\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div :class=\"itemClasses\" :key=\"element.templateId\">\n\t\t\t<div v-if=\"mode === 'opponent'\" class=\"im-skeleton-logo\"></div>\n\t\t\t<div class=\"im-skeleton-content\">\n\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t<div style=\"max-width: 35%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t<div style=\"max-width: 100%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t<div style=\"max-width: 55%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t\t<div style=\"max-width: 26px; margin-left: auto;\" class=\"im-skeleton-line\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"im-skeleton-like\"></div>\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import { DialogReferenceClassName } from \"im.const\";\n\nexport const Placeholder3 = {\n\tprops: ['element'],\n\tcreated()\n\t{\n\t\tconst modes = ['self', 'opponent'];\n\t\tconst randomIndex = Math.floor(Math.random() * modes.length);\n\t\tthis.mode = modes[randomIndex];\n\t},\n\tcomputed:\n\t{\n\t\titemClasses()\n\t\t{\n\t\t\tconst itemClasses = ['im-skeleton-item', 'im-skeleton-item--md', `${DialogReferenceClassName.listItem}-${this.element.id}`];\n\t\t\tif (this.mode === 'self')\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item-self');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item-opponent');\n\t\t\t}\n\n\t\t\treturn itemClasses;\n\t\t}\n\t},\n\ttemplate: `\n\t\t<div :class=\"itemClasses\" :key=\"element.templateId\">\n\t\t\t<div v-if=\"mode === 'opponent'\" class=\"im-skeleton-logo\"></div>\n\t\t\t<div class=\"im-skeleton-content\">\n\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t<div style=\"max-width: 35%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t<div style=\"max-width: 100%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t<div style=\"max-width: 55%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t<div style=\"max-width: 26px; margin-left: auto;\" class=\"im-skeleton-line\"></div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"im-skeleton-like\"></div>\n\t\t\t</div>\n\t\t</div>\n\t`\n};","import {BitrixVue} from 'ui.vue';\nimport {Vuex} from 'ui.vue.vuex';\nimport 'im.view.message';\nimport {\n\tDeviceType,\n\tDialogReferenceClassName,\n\tDialogType,\n\tDialogTemplateType as TemplateType,\n\tRestMethod,\n\tRestMethodHandler, EventType\n} from \"im.const\";\nimport {DialogCore, DialogReadMessages} from 'im.mixin';\nimport {Utils as MessengerUtils} from \"im.lib.utils\";\nimport {Animation} from \"im.lib.animation\";\nimport {Logger} from \"im.lib.logger\";\nimport 'main.polyfill.intersectionobserver';\n\nimport {EventEmitter} from 'main.core.events';\n\nimport './message-list.css';\nimport {ObserverType, RequestMode, DateFormat} from \"./message-list-const\";\nimport {Placeholder1} from './placeholders/placeholder-1';\nimport {Placeholder2} from './placeholders/placeholder-2';\nimport {Placeholder3} from './placeholders/placeholder-3';\n\nconst MessageList = {\n\t/**\n\t * @emits EventType.dialog.readMessage\n\t * @emits EventType.dialog.quoteMessage\n\t * @emits EventType.dialog.clickOnDialog\n\t * @emits EventType.dialog.clickOnUserName\n\t * @emits EventType.dialog.clickOnUploadCancel\n\t * @emits EventType.dialog.clickOnKeyboardButton\n\t * @emits EventType.dialog.clickOnChatTeaser\n\t * @emits EventType.dialog.clickOnMessageMenu\n\t * @emits EventType.dialog.clickOnCommand\n\t * @emits EventType.dialog.clickOnMention\n\t * @emits EventType.dialog.clickOnMessageRetry\n\t * @emits EventType.dialog.clickOnReadList\n\t * @emits EventType.dialog.setMessageReaction\n\t * @emits EventType.dialog.openMessageReactionList\n\t */\n\tprops:\n\t{\n\t\tuserId: { type: Number, default: 0 },\n\t\tdialogId: { type: String, default: \"0\" },\n\t\tmessageLimit: { type: Number, default: 50 },\n\t\tenableReadMessages: { type: Boolean, default: true },\n\t\tenableReactions: { type: Boolean, default: true },\n\t\tenableDateActions: { type: Boolean, default: true },\n\t\tenableCreateContent: { type: Boolean, default: true },\n\t\tenableGestureQuote: { type: Boolean, default: true },\n\t\tenableGestureQuoteFromRight: { type: Boolean, default: true },\n\t\tenableGestureMenu: { type: Boolean, default: false },\n\t\tshowMessageUserName: { type: Boolean, default: true },\n\t\tshowMessageAvatar: { type: Boolean, default: true },\n\t\tshowMessageMenu: { type: Boolean, default: true },\n\t},\n\tcomponents: {Placeholder1, Placeholder2, Placeholder3},\n\tmixins: [DialogCore, DialogReadMessages],\n\tdata()\n\t{\n\t\treturn {\n\t\t\tmessagesSet: false,\n\t\t\tscrollAnimating: false,\n\t\t\tshowScrollButton: false,\n\t\t\tcaptureMove: false,\n\t\t\tcapturedMoveEvent: null,\n\t\t\tlastMessageId: null,\n\n\t\t\tisRequestingHistory: false,\n\t\t\thistoryPagesRequested: 0,\n\t\t\tstopHistoryLoading: false,\n\t\t\tisRequestingUnread: false,\n\t\t\tunreadPagesRequested: 0,\n\t\t\tplaceholderCount: 0,\n\t\t\tpagesLoaded: 0\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tLogger.warn('MessageList component is created');\n\t\tthis.initParams();\n\t\tthis.initEvents();\n\t},\n\tbeforeDestroy()\n\t{\n\t\tthis.observers = {};\n\t\tclearTimeout(this.scrollButtonShowTimeout);\n\t\tthis.clearEvents();\n\t},\n\tmounted()\n\t{\n\t\tthis.windowFocused = MessengerUtils.platform.isBitrixMobile()? true: document.hasFocus();\n\t\tthis.getMessageIdsForPagination();\n\t\tthis.scrollOnStart();\n\t},\n\twatch:\n\t{\n\t\t// after each dialog switch (without switching to loading state)\n\t\t// we reset messagesSet flag and run scroll on start routine\n\t\tdialogId(newValue, oldValue)\n\t\t{\n\t\t\tLogger.warn('new dialogId in message-list', newValue);\n\t\t\tthis.messagesSet = false;\n\t\t\tthis.$nextTick(() => {\n\t\t\t\tthis.scrollOnStart();\n\t\t\t});\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tTemplateType: () => TemplateType,\n\t\tObserverType: () => ObserverType,\n\t\tDialogReferenceClassName: () => DialogReferenceClassName,\n\t\tlocalize()\n\t\t{\n\t\t\treturn BitrixVue.getFilteredPhrases('IM_MESSENGER_DIALOG_', this);\n\t\t},\n\t\tdialog()\n\t\t{\n\t\t\tconst dialog = this.$store.getters['dialogues/get'](this.dialogId);\n\n\t\t\treturn dialog? dialog: this.$store.getters['dialogues/getBlank']();\n\t\t},\n\t\tcollection()\n\t\t{\n\t\t\treturn this.$store.getters['messages/get'](this.chatId);\n\t\t},\n\t\tformattedCollection()\n\t\t{\n\t\t\tthis.lastMessageId = 0; //used in readed status\n\t\t\tthis.lastMessageAuthorId = 0; //used in readed status\n\t\t\tthis.firstUnreadMessageId = 0;\n\n\t\t\tlet lastAuthorId = 0; //used for delimeters\n\t\t\tconst dateGroups = {}; //date grouping nodes\n\t\t\tconst collection = []; //array to return\n\n\t\t\tthis.collection.forEach(element =>\n\t\t\t{\n\t\t\t\tif (this.messagesSet && (this.lastHistoryMessageId === null || this.lastHistoryMessageId > element.id))\n\t\t\t\t{\n\t\t\t\t\tLogger.warn('setting new lastHistoryMessageId', element.id);\n\t\t\t\t\tthis.lastHistoryMessageId = element.id;\n\t\t\t\t}\n\n\t\t\t\tthis.lastMessageId = element.id;\n\n\t\t\t\tlet group = this.getDateGroup(element.date);\n\t\t\t\tif (!dateGroups[group.title])\n\t\t\t\t{\n\t\t\t\t\tdateGroups[group.title] = group.id;\n\t\t\t\t\tcollection.push(this.getDateGroupBlock(group.id, group.title));\n\t\t\t\t}\n\t\t\t\telse if (lastAuthorId !== element.authorId)\n\t\t\t\t{\n\t\t\t\t\tcollection.push(this.getDelimiterBlock(element.id));\n\t\t\t\t}\n\n\t\t\t\tif (element.unread && !this.firstUnreadMessageId)\n\t\t\t\t{\n\t\t\t\t\tthis.firstUnreadMessageId = element.id;\n\t\t\t\t}\n\n\t\t\t\tcollection.push(element);\n\t\t\t\tlastAuthorId = element.authorId;\n\t\t\t});\n\n\t\t\t//remembering author of last message - used in readed status\n\t\t\tthis.lastMessageAuthorId = lastAuthorId;\n\n\t\t\treturn collection;\n\t\t},\n\t\twritingStatusText()\n\t\t{\n\t\t\tclearTimeout(this.scrollToTimeout);\n\n\t\t\tif (this.dialog.writingList.length === 0)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\t//scroll to bottom\n\t\t\tif (!this.scrollChangedByUser && !this.showScrollButton)\n\t\t\t{\n\t\t\t\tthis.scrollToTimeout = setTimeout(() => this.animatedScrollToPosition({duration: 500}), 300);\n\t\t\t}\n\n\t\t\tconst text = this.dialog.writingList.map(element => element.userName).join(', ');\n\n\t\t\treturn this.localize['IM_MESSENGER_DIALOG_WRITES_MESSAGE'].replace('#USER#', text);\n\t\t},\n\t\tstatusReaded()\n\t\t{\n\t\t\tclearTimeout(this.scrollToTimeout);\n\n\t\t\tif (this.dialog.readedList.length === 0)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\tlet text = '';\n\n\t\t\tif (this.dialog.type === DialogType.private)\n\t\t\t{\n\t\t\t\tconst record = this.dialog.readedList[0];\n\t\t\t\tif (\n\t\t\t\t\trecord.messageId === this.lastMessageId\n\t\t\t\t\t&& record.userId !== this.lastMessageAuthorId\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\tconst dateFormat = this.getDateFormat(DateFormat.readedTitle);\n\t\t\t\t\tconst formattedDate = this.getDateObject().format(dateFormat, record.date)\n\t\t\t\t\ttext = this.localize['IM_MESSENGER_DIALOG_MESSAGES_READED_USER'].replace('#DATE#', formattedDate);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst readedList = this.dialog.readedList.filter(record => {\n\t\t\t\t\treturn record.messageId === this.lastMessageId && record.userId !== this.lastMessageAuthorId;\n\t\t\t\t});\n\t\t\t\tif (readedList.length === 1)\n\t\t\t\t{\n\t\t\t\t\ttext = this.localize['IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT'].replace(\n\t\t\t\t\t\t'#USERS#', readedList[0].userName\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\telse if (readedList.length > 1)\n\t\t\t\t{\n\t\t\t\t\ttext = this.localize['IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT'].replace(\n\t\t\t\t\t\t'#USERS#',\n\t\t\t\t\t\tthis.localize['IM_MESSENGER_DIALOG_MESSAGES_READED_CHAT_PLURAL']\n\t\t\t\t\t\t\t.replace('#USER#', readedList[0].userName)\n\t\t\t\t\t\t\t.replace('#COUNT#', readedList.length-1)\n\t\t\t\t\t\t\t.replace('[LINK]', '')\n\t\t\t\t\t\t\t.replace('[/LINK]', '')\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!text)\n\t\t\t{\n\t\t\t\treturn '';\n\t\t\t}\n\n\t\t\t//scroll to bottom\n\t\t\tif (!this.scrollChangedByUser && !this.showScrollButton)\n\t\t\t{\n\t\t\t\tthis.scrollToTimeout = setTimeout(() => this.animatedScrollToPosition({duration: 500}), 300);\n\t\t\t}\n\n\t\t\treturn text;\n\t\t},\n\t\tunreadCounter()\n\t\t{\n\t\t\treturn this.dialog.counter > 99? 999: this.dialog.counter;\n\t\t},\n\t\tformattedUnreadCounter()\n\t\t{\n\t\t\treturn this.unreadCounter > 99 ? '99+': this.unreadCounter;\n\t\t},\n\t\tscrollBlocked()\n\t\t{\n\t\t\tif (this.application.device.type !== DeviceType.mobile)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn this.scrollAnimating || this.captureMove;\n\t\t},\n\t\tisDarkBackground()\n\t\t{\n\t\t\treturn this.application.options.darkBackground;\n\t\t},\n\t\tisMobile()\n\t\t{\n\t\t\treturn this.application.device.type === DeviceType.mobile;\n\t\t},\n\t\t//new\n\t\tisRequestingData()\n\t\t{\n\t\t\treturn this.isRequestingHistory || this.isRequestingUnread;\n\t\t},\n\t\tremainingHistoryPages()\n\t\t{\n\t\t\treturn Math.ceil((this.dialog.messageCount - this.collection.length) / this.historyMessageLimit);\n\t\t},\n\t\tremainingUnreadPages()\n\t\t{\n\t\t\t// we dont use unread counter now - we reverted unread counter to be max at 99, so we dont know actual counter\n\n\t\t\tif (this.isLastIdInCollection)\n\t\t\t{\n\t\t\t\treturn 0;\n\t\t\t}\n\n\t\t\treturn Math.ceil((this.dialog.messageCount - this.collection.length) / this.unreadMessageLimit);\n\t\t},\n\t\tunreadInCollection()\n\t\t{\n\t\t\treturn this.collection.filter(item => {\n\t\t\t\treturn item.unread === true;\n\t\t\t});\n\t\t},\n\t\tisLastIdInCollection()\n\t\t{\n\t\t\treturn this.collection.map(message => message.id).includes(this.dialog.lastMessageId);\n\t\t},\n\t\tshowStatusPlaceholder()\n\t\t{\n\t\t\treturn !this.writingStatusText && !this.statusReaded;\n\t\t},\n\t\tbodyClasses()\n\t\t{\n\t\t\treturn [DialogReferenceClassName.listBody, {\n\t\t\t\t'bx-im-dialog-list-scroll-blocked': this.scrollBlocked,\n\t\t\t\t'bx-im-dialog-dark-background': this.isDarkBackground,\n\t\t\t\t'bx-im-dialog-mobile': this.isMobile,\n\t\t\t}];\n\t\t},\n\t\t...Vuex.mapState({\n\t\t\tapplication: state => state.application,\n\t\t})\n\t},\n\tmethods:\n\t{\n\t\t/* region 01. Init and destroy */\n\t\tinitParams()\n\t\t{\n\t\t\tthis.placeholdersComposition = this.getPlaceholdersComposition();\n\t\t\tthis.historyMessageLimit = 50;\n\t\t\tthis.unreadMessageLimit = 50;\n\t\t\tthis.showScrollButton = this.unreadCounter > 0;\n\n\t\t\tthis.scrollingDownThreshold = 1000;\n\t\t\tthis.scrollingUpThreshold = 1000;\n\t\t\tthis.messageScrollOffset = 20;\n\n\t\t\tthis.lastScroll = 0;\n\t\t\tthis.scrollChangedByUser = false;\n\t\t\tthis.scrollButtonDiff = 100;\n\t\t\tthis.scrollButtonShowTimeout = null;\n\t\t\tthis.scrollPositionChangeTime = new Date().getTime();\n\t\t\tthis.lastRequestTime = new Date().getTime();\n\n\t\t\tthis.observers = {};\n\n\t\t\tthis.lastAuthorId = 0;\n\t\t\tthis.lastHistoryMessageId = null;\n\t\t\tthis.firstUnreadMessageId = null;\n\t\t\tthis.lastUnreadMessageId = null;\n\t\t\tthis.dateFormatFunction = null;\n\t\t\tthis.cachedDateGroups = {};\n\n\t\t\tthis.readMessageQueue = [];\n\t\t\tthis.readMessageTarget = {};\n\t\t\tthis.readVisibleMessagesDelayed = MessengerUtils.debounce(this.readVisibleMessages, 50, this);\n\t\t\tthis.requestHistoryDelayed = MessengerUtils.debounce(this.requestHistory, 50, this);\n\t\t},\n\t\tinitEvents()\n\t\t{\n\t\t\tEventEmitter.subscribe(EventType.dialog.scrollOnStart, this.onScrollOnStart);\n\t\t\tEventEmitter.subscribe(EventType.dialog.scrollToBottom, this.onScrollToBottom);\n\t\t\tEventEmitter.subscribe(EventType.dialog.readVisibleMessages, this.onReadVisibleMessages);\n\t\t\tEventEmitter.subscribe(EventType.dialog.newMessage, this.onNewMessage);\n\t\t\tEventEmitter.subscribe(EventType.dialog.requestUnread, this.onExternalUnreadRequest);\n\t\t\tEventEmitter.subscribe(EventType.dialog.messagesSet, this.onMessagesSet);\n\t\t\tEventEmitter.subscribe(EventType.dialog.beforeMobileKeyboard, this.onBeforeMobileKeyboard);\n\n\t\t\twindow.addEventListener(\"orientationchange\", this.onOrientationChange);\n\t\t\twindow.addEventListener('focus', this.onWindowFocus);\n\t\t\twindow.addEventListener('blur', this.onWindowBlur);\n\n\t\t\tBitrixVue.event.$on('bitrixmobile:controller:focus', this.onWindowFocus);\n\t\t\tBitrixVue.event.$on('bitrixmobile:controller:blur', this.onWindowBlur);\n\t\t},\n\t\tclearEvents()\n\t\t{\n\t\t\tEventEmitter.unsubscribe(EventType.dialog.scrollOnStart, this.onScrollOnStart);\n\t\t\tEventEmitter.unsubscribe(EventType.dialog.scrollToBottom, this.onScrollToBottom);\n\t\t\tEventEmitter.unsubscribe(EventType.dialog.readVisibleMessages, this.onReadVisibleMessages);\n\t\t\tEventEmitter.unsubscribe(EventType.dialog.newMessage, this.onNewMessage);\n\t\t\tEventEmitter.unsubscribe(EventType.dialog.requestUnread, this.onExternalUnreadRequest);\n\t\t\tEventEmitter.unsubscribe(EventType.dialog.messagesSet, this.onMessagesSet);\n\t\t\tEventEmitter.unsubscribe(EventType.dialog.beforeMobileKeyboard, this.onBeforeMobileKeyboard);\n\n\t\t\twindow.removeEventListener(\"orientationchange\", this.onOrientationChange);\n\t\t\twindow.removeEventListener('focus', this.onWindowFocus);\n\t\t\twindow.removeEventListener('blur', this.onWindowBlur);\n\n\t\t\tBitrixVue.event.$off('bitrixmobile:controller:focus', this.onWindowFocus);\n\t\t\tBitrixVue.event.$off('bitrixmobile:controller:blur', this.onWindowBlur);\n\t\t},\n\t\t/* endregion 01. Init and destroy */\n\n\t\t/* region 02. Event handlers */\n\t\tonReadMessage()\n\t\t{\n\t\t\t//redeclare method to ignore handler from ReadMessages mixin\n\t\t},\n\t\tonDialogClick(event)\n\t\t{\n\t\t\tif (BitrixVue.testNode(event.target, {className: 'bx-im-message-command'}))\n\t\t\t{\n\t\t\t\tthis.onCommandClick(event);\n\t\t\t}\n\t\t\telse if (BitrixVue.testNode(event.target, {className: 'bx-im-mention'}))\n\t\t\t{\n\t\t\t\tthis.onMentionClick(event);\n\t\t\t}\n\n\t\t\tthis.windowFocused = true;\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnDialog, {event});\n\t\t},\n\t\tonDialogMove(event)\n\t\t{\n\t\t\tif (!this.captureMove)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.capturedMoveEvent = event;\n\t\t},\n\t\tonCommandClick(event)\n\t\t{\n\t\t\tlet value = '';\n\n\t\t\tif (\n\t\t\t\tevent.target.dataset.entity === 'send'\n\t\t\t\t|| event.target.dataset.entity === 'put'\n\t\t\t)\n\t\t\t{\n\t\t\t\tvalue = event.target.nextSibling.innerHTML;\n\t\t\t}\n\t\t\telse if (event.target.dataset.entity === 'call')\n\t\t\t{\n\t\t\t\tvalue = event.target.dataset.command;\n\t\t\t}\n\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnCommand, {type: event.target.dataset.entity, value, event});\n\t\t},\n\t\tonMentionClick(event)\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnMention, {\n\t\t\t\ttype: event.target.dataset.type,\n\t\t\t\tvalue: event.target.dataset.value,\n\t\t\t\tevent\n\t\t\t});\n\t\t},\n\t\tonOrientationChange()\n\t\t{\n\t\t\tclearTimeout(this.scrollToTimeout);\n\n\t\t\tif (this.application.device.type !== DeviceType.mobile)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tLogger.log('Orientation changed');\n\n\t\t\tif (!this.scrollChangedByUser)\n\t\t\t{\n\t\t\t\tthis.scrollToTimeout = setTimeout(() => this.scrollToBottom({force: true}), 300);\n\t\t\t}\n\t\t},\n\t\tonWindowFocus()\n\t\t{\n\t\t\tthis.windowFocused = true;\n\t\t\tthis.readVisibleMessages();\n\n\t\t\treturn true;\n\t\t},\n\t\tonWindowBlur()\n\t\t{\n\t\t\tthis.windowFocused = false;\n\t\t},\n\t\tonScrollToBottom({data: event = {chatId: 0, force: false, cancelIfScrollChange: false, duration: null}} = {})\n\t\t{\n\t\t\tif (event.chatId !== this.chatId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tLogger.warn('onScrollToBottom', event);\n\t\t\tevent.force = event.force === true;\n\t\t\tevent.cancelIfScrollChange = event.cancelIfScrollChange === true;\n\n\t\t\tif (this.firstUnreadMessageId)\n\t\t\t{\n\t\t\t\tLogger.warn('Dialog.onScrollToBottom: canceled - unread messages');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (event.cancelIfScrollChange && this.scrollChangedByUser && this.scrollBeforeMobileKeyboard)\n\t\t\t{\n\t\t\t\tconst body = this.$refs.body;\n\t\t\t\tthis.scrollAfterMobileKeyboard = body.scrollHeight - body.scrollTop - body.clientHeight;\n\t\t\t\tconst scrollDiff = this.scrollAfterMobileKeyboard - this.scrollBeforeMobileKeyboard;\n\t\t\t\tthis.animatedScrollToPosition({start: body.scrollTop, end: body.scrollTop + scrollDiff});\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tthis.scrollToBottom(event);\n\n\t\t\treturn true;\n\t\t},\n\t\tonReadVisibleMessages({data: event = {chatId: 0}} = {})\n\t\t{\n\t\t\tif (event.chatId !== this.chatId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tLogger.warn('onReadVisibleMessages');\n\n\t\t\tthis.readVisibleMessagesDelayed();\n\n\t\t\treturn true;\n\t\t},\n\t\tonClickOnUserName(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnUserName, event);\n\t\t},\n\t\tonClickOnUploadCancel(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnUploadCancel, event);\n\t\t},\n\t\tonClickOnKeyboardButton(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnKeyboardButton, event);\n\t\t},\n\t\tonClickOnChatTeaser(event)\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnChatTeaser, event);\n\t\t},\n\t\tonClickOnMessageMenu(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnMessageMenu, event);\n\t\t},\n\t\tonClickOnMessageRetry(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnMessageRetry, event);\n\t\t},\n\t\tonClickOnReadList(event)\n\t\t{\n\t\t\tconst readedList = this.dialog.readedList.filter(record => {\n\t\t\t\treturn record.messageId === this.lastMessageId && record.userId !== this.lastMessageAuthorId;\n\t\t\t});\n\t\t\tEventEmitter.emit(EventType.dialog.clickOnReadList, {list: readedList, event});\n\t\t},\n\t\tonMessageReactionSet(event)\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.setMessageReaction, event);\n\t\t},\n\t\tonMessageReactionListOpen(event)\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.openMessageReactionList, event);\n\t\t},\n\t\tonDragMessage(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.captureMove = event.result;\n\n\t\t\tif (!event.result)\n\t\t\t{\n\t\t\t\tthis.capturedMoveEvent = null;\n\t\t\t}\n\t\t},\n\t\tonQuoteMessage(event)\n\t\t{\n\t\t\tif (!this.windowFocused)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tEventEmitter.emit(EventType.dialog.quoteMessage, event);\n\t\t},\n\t\tonScroll(event)\n\t\t{\n\t\t\tif (this.isScrolling)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tclearTimeout(this.scrollToTimeout);\n\n\t\t\tthis.currentScroll = event.target.scrollTop;\n\t\t\tconst isScrollingDown = this.lastScroll < this.currentScroll;\n\t\t\tconst isScrollingUp = !isScrollingDown;\n\n\t\t\tif (isScrollingUp && this.scrollButtonClicked)\n\t\t\t{\n\t\t\t\tLogger.warn('scrollUp - reset scroll button clicks');\n\t\t\t\tthis.scrollButtonClicked = false;\n\t\t\t}\n\n\t\t\tconst leftSpaceBottom = event.target.scrollHeight - event.target.scrollTop - event.target.clientHeight;\n\t\t\tif (this.currentScroll > 0 && isScrollingDown && leftSpaceBottom < this.scrollingDownThreshold)\n\t\t\t{\n\t\t\t\tthis.onScrollDown();\n\t\t\t}\n\t\t\telse if (isScrollingUp && this.currentScroll <= this.scrollingUpThreshold)\n\t\t\t{\n\t\t\t\tthis.onScrollUp();\n\t\t\t}\n\n\t\t\t//remember current scroll to compare with new ones\n\t\t\tthis.lastScroll = this.currentScroll;\n\t\t\tthis.scrollPositionChangeTime = new Date().getTime();\n\t\t\t//show or hide scroll button\n\t\t\tthis.manageScrollButton(event);\n\t\t},\n\t\tonScrollDown()\n\t\t{\n\t\t\tif (!this.messagesSet || this.isLastIdInCollection)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Logger.warn('---');\n\t\t\t// Logger.warn('Want to load unread');\n\t\t\t// Logger.warn('this.isRequestingData', this.isRequestingData);\n\t\t\t// Logger.warn('this.unreadPagesRequested', this.unreadPagesRequested);\n\t\t\t// Logger.warn('this.remainingUnreadPages', this.remainingUnreadPages);\n\t\t\tif (this.isRequestingData && this.remainingUnreadPages > 0)\n\t\t\t{\n\t\t\t\tthis.drawPlaceholders(RequestMode.unread).then(() => {\n\t\t\t\t\tthis.unreadPagesRequested += 1;\n\t\t\t\t\tLogger.warn('Already loading! Draw placeholders and add request, total - ', this.unreadPagesRequested);\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (!this.isRequestingData && this.remainingUnreadPages > 0)\n\t\t\t{\n\t\t\t\tLogger.warn('Starting new unread request');\n\t\t\t\tthis.isRequestingUnread = true;\n\n\t\t\t\tthis.drawPlaceholders(RequestMode.unread).then(() => {\n\t\t\t\t\tthis.requestUnread();\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tonScrollUp()\n\t\t{\n\t\t\tif (!this.messagesSet || this.stopHistoryLoading)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.projectedPagesToLoad = 1\n\n\t\t\t//draw 3 sets of placeholders if we are close to top of container\n\t\t\tif (!this.isMobile && this.$refs.body.scrollTop < this.$refs.body.scrollHeight / 4)\n\t\t\t{\n\t\t\t\tthis.projectedPagesToLoad = 3;\n\t\t\t}\n\n\t\t\t// Logger.warn('---');\n\t\t\t// Logger.warn('Want to load history');\n\t\t\t// Logger.warn('this.isRequestingData', this.isRequestingData);\n\t\t\t// Logger.warn('this.historyPagesRequested', this.historyPagesRequested);\n\t\t\t// Logger.warn('this.remainingHistoryPages', this.remainingHistoryPages);\n\t\t\tif (this.isRequestingData && this.remainingHistoryPages > 0)\n\t\t\t{\n\t\t\t\tconst currentBodyHeight = this.$refs.body.scrollHeight;\n\t\t\t\tthis.drawPlaceholders(RequestMode.history, this.projectedPagesToLoad).then(() => {\n\t\t\t\t\tif (!this.isOverflowAnchorSupported())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.enableUserScroll();\n\t\t\t\t\t}\n\t\t\t\t\tthis.historyPagesRequested += this.projectedPagesToLoad;\n\t\t\t\t\tLogger.warn('Already loading! Draw placeholders and add request, total - ', this.historyPagesRequested);\n\t\t\t\t});\n\t\t\t\tif (!this.isOverflowAnchorSupported())\n\t\t\t\t{\n\t\t\t\t\tLogger.warn('Disabling user scroll');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tconst heightDifference = this.$refs.body.scrollHeight - currentBodyHeight;\n\t\t\t\t\t\tthis.disableUserScroll();\n\t\t\t\t\t\tthis.forceScrollToPosition(this.$refs.body.scrollTop + heightDifference);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (!this.isRequestingData && this.remainingHistoryPages > 0)\n\t\t\t{\n\t\t\t\tLogger.warn('Starting new history request');\n\t\t\t\tthis.isRequestingHistory = true;\n\n\t\t\t\tconst currentBodyHeight = this.$refs.body.scrollHeight;\n\t\t\t\tthis.drawPlaceholders(RequestMode.history, this.projectedPagesToLoad).then(() => {\n\t\t\t\t\tthis.historyPagesRequested = this.projectedPagesToLoad - 1;\n\t\t\t\t\tif (!this.isOverflowAnchorSupported())\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.enableUserScroll();\n\t\t\t\t\t}\n\t\t\t\t\tthis.requestHistory();\n\t\t\t\t});\n\t\t\t\t//will run right after drawing placeholders, before .then()\n\t\t\t\tif (!this.isOverflowAnchorSupported())\n\t\t\t\t{\n\t\t\t\t\tLogger.warn('Disabling user scroll');\n\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\tconst heightDifference = this.$refs.body.scrollHeight - currentBodyHeight;\n\t\t\t\t\t\tthis.disableUserScroll();\n\t\t\t\t\t\tthis.forceScrollToPosition(this.$refs.body.scrollTop + heightDifference);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t//TODO: move\n\t\tisOverflowAnchorSupported()\n\t\t{\n\t\t\treturn !MessengerUtils.platform.isBitrixMobile()\n\t\t\t\t&& !MessengerUtils.browser.isIe()\n\t\t\t\t&& !MessengerUtils.browser.isSafari()\n\t\t\t\t&& !MessengerUtils.browser.isSafariBased();\n\t\t},\n\t\tdisableUserScroll()\n\t\t{\n\t\t\tthis.$refs.body.classList.add('bx-im-dialog-list-scroll-blocked');\n\t\t},\n\t\tenableUserScroll()\n\t\t{\n\t\t\tthis.$refs.body.classList.remove('bx-im-dialog-list-scroll-blocked');\n\t\t},\n\t\tonScrollButtonClick()\n\t\t{\n\t\t\tLogger.warn('Scroll button click', this.scrollButtonClicked);\n\t\t\t// TODO: now we just do nothing if button was clicked during data request (history or unread)\n\t\t\tif (this.isRequestingData)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t//we dont have unread - just scroll to bottom\n\t\t\tif (this.unreadCounter === 0)\n\t\t\t{\n\t\t\t\tthis.scrollToBottom();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t//it's a second click on button - scroll to last page if we have one\n\t\t\tif (this.scrollButtonClicked && this.remainingUnreadPages > 0)\n\t\t\t{\n\t\t\t\tLogger.warn('Second click on scroll button');\n\t\t\t\tthis.scrollToLastPage();\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t//it's a first click - just set the flag and move on\n\t\t\tthis.scrollButtonClicked = true;\n\t\t\tthis.scrollToBottom();\n\t\t},\n\t\tonNewMessage({data: {chatId, messageId}})\n\t\t{\n\t\t\tif (chatId !== this.chatId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tLogger.warn('Received new message from pull', messageId);\n\t\t\tif (this.showScrollButton)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.$nextTick(() => {\n\t\t\t\t//non-focus handling\n\t\t\t\tif (!this.windowFocused)\n\t\t\t\t{\n\t\t\t\t\tconst availableScrollHeight = this.$refs['body'].scrollHeight - this.$refs['body'].clientHeight;\n\t\t\t\t\tif (this.currentScroll < availableScrollHeight)\n\t\t\t\t\t{\n\t\t\t\t\t\t//show scroll button when out of focus and all visible space is filled with unread messaages already\n\t\t\t\t\t\tthis.showScrollButton = true;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.scrollToFirstUnreadMessage();\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t//big message handling\n\t\t\t\tconst messageElement = this.getElementById(messageId);\n\t\t\t\tif (!messageElement)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t//if big message - scroll to top of it\n\t\t\t\tconst body = this.$refs.body;\n\t\t\t\tif (messageElement.clientHeight > body.clientHeight)\n\t\t\t\t{\n\t\t\t\t\tthis.scrollToMessage({messageId});\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\t//else - scroll to bottom\n\t\t\t\tthis.animatedScrollToPosition();\n\t\t\t});\n\t\t},\n\t\tonMessagesSet({data: event})\n\t\t{\n\t\t\tif (event.chatId !== this.chatId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.messagesSet === true)\n\t\t\t{\n\t\t\t\tLogger.warn('messages are already set');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tLogger.warn('onMessagesSet', event.chatId);\n\t\t\tthis.messagesSet = true;\n\t\t\tlet force = false;\n\t\t\t//if we are in top half of container - force scroll to first unread, else - animated scroll\n\t\t\tif (this.$refs.body.scrollTop < this.$refs.body.scrollHeight / 2)\n\t\t\t{\n\t\t\t\tforce = true;\n\t\t\t}\n\t\t\tthis.scrollToBottom({force, cancelIfScrollChange: false});\n\t\t},\n\t\tonBeforeMobileKeyboard({data: event})\n\t\t{\n\t\t\tconst body = this.$refs.body;\n\t\t\tthis.scrollBeforeMobileKeyboard = body.scrollHeight - body.scrollTop - body.clientHeight;\n\t\t},\n\t\tonExternalUnreadRequest({data: event = {chatId: 0}} = {})\n\t\t{\n\t\t\tif (event.chatId !== this.chatId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tLogger.warn('onExternalUnreadRequest');\n\t\t\tthis.isRequestingUnread = true;\n\n\t\t\tthis.drawPlaceholders(RequestMode.unread).then(() => {\n\t\t\t\treturn this.requestUnread();\n\t\t\t});\n\n\t\t\tthis.externalUnreadRequestResolve = null;\n\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tthis.externalUnreadRequestResolve = resolve;\n\t\t\t});\n\t\t},\n\t\tonScrollOnStart({data: event})\n\t\t{\n\t\t\tif (event.chatId !== this.chatId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.scrollOnStart({force: false});\n\t\t},\n\t\t/* endregion 02. Event handlers */\n\n\t\t/* region 03. Scrolling */\n\t\tscrollOnStart({force = true} = {})\n\t\t{\n\t\t\tLogger.warn('scrolling on start of dialog');\n\t\t\tconst unreadId = this.getFirstUnreadMessage();\n\t\t\tif (unreadId)\n\t\t\t{\n\t\t\t\tthis.scrollToFirstUnreadMessage(unreadId, force)\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst body = this.$refs.body;\n\t\t\t\tthis.forceScrollToPosition(body.scrollHeight - body.clientHeight);\n\t\t\t}\n\t\t},\n\t\t//scroll to first unread if counter > 0, else scroll to bottom\n\t\tscrollToBottom({force = false, cancelIfScrollChange = false, duration = null} = {})\n\t\t{\n\t\t\tLogger.warn('scroll to bottom', force, cancelIfScrollChange, duration);\n\t\t\tif (cancelIfScrollChange && this.scrollChangedByUser)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst body = this.$refs.body;\n\n\t\t\t//scroll to first unread message if there are unread messages\n\t\t\tif (this.dialog.counter > 0)\n\t\t\t{\n\t\t\t\tconst scrollToMessageId = this.dialog.counter > 1 && this.firstUnreadMessageId? this.firstUnreadMessageId: this.lastMessageId;\n\t\t\t\tthis.scrollToFirstUnreadMessage(scrollToMessageId, force);\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t//hide scroll button because we will scroll to bottom\n\t\t\tthis.showScrollButton = false;\n\n\t\t\t//without animation\n\t\t\tif (force)\n\t\t\t{\n\t\t\t\tthis.forceScrollToPosition(body.scrollHeight - body.clientHeight);\n\t\t\t}\n\t\t\t//with animation\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst scrollParams = {};\n\t\t\t\tif (duration)\n\t\t\t\t{\n\t\t\t\t\tscrollParams.duration = duration;\n\t\t\t\t}\n\t\t\t\tthis.animatedScrollToPosition({ ...scrollParams });\n\t\t\t}\n\t\t},\n\t\tscrollToFirstUnreadMessage(unreadId = null, force = false)\n\t\t{\n\t\t\tLogger.warn('scroll to first unread');\n\n\t\t\tlet element = false;\n\t\t\tif (unreadId !== null)\n\t\t\t{\n\t\t\t\telement = this.getElementById(unreadId);\n\t\t\t}\n\t\t\tif (!element)\n\t\t\t{\n\t\t\t\tunreadId = this.getFirstUnreadMessage();\n\t\t\t}\n\n\t\t\tthis.scrollToMessage({messageId: unreadId, force});\n\t\t},\n\t\t//scroll to message - can be set at the top or at the bottom of screen\n\t\tscrollToMessage({messageId = 0, force = false, stickToTop = true})\n\t\t{\n\t\t\tLogger.warn('scroll to message');\n\t\t\tconst body = this.$refs.body;\n\t\t\tconst element = this.getElementById(messageId);\n\n\t\t\tlet end = 0;\n\t\t\tif (!element)\n\t\t\t{\n\t\t\t\t//if no element found in DOM - scroll to top\n\t\t\t\tif (stickToTop)\n\t\t\t\t{\n\t\t\t\t\tend = 10;\n\t\t\t\t}\n\t\t\t\t//if no element and stickToTop = false - scroll to bottom\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tend = body.scrollHeight - body.clientHeight;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (stickToTop)\n\t\t\t{\n\t\t\t\t//message will be at the top of screen (+little offset)\n\t\t\t\tend = element.offsetTop - (this.messageScrollOffset / 2);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\t//message will be at the bottom of screen (+little offset)\n\t\t\t\tend = element.offsetTop + element.offsetHeight - body.clientHeight + (this.messageScrollOffset / 2);\n\t\t\t}\n\n\t\t\tif (force)\n\t\t\t{\n\t\t\t\tthis.forceScrollToPosition(end);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.animatedScrollToPosition({end});\n\t\t\t}\n\n\t\t\treturn true;\n\t\t},\n\t\tforceScrollToPosition(position)\n\t\t{\n\t\t\tLogger.warn('Force scroll to position - ', position);\n\t\t\tlet body = this.$refs.body;\n\t\t\tif (!body)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.animateScrollId)\n\t\t\t{\n\t\t\t\tAnimation.cancel(this.animateScrollId);\n\t\t\t\tthis.scrollAnimating = false;\n\t\t\t\tthis.animateScrollId = null;\n\t\t\t}\n\n\t\t\tbody.scrollTop = position;\n\t\t},\n\t\t//scroll to provided position with animation, by default - to the bottom\n\t\tanimatedScrollToPosition(params = {})\n\t\t{\n\t\t\tLogger.warn('Animated scroll to - ', params);\n\t\t\tif (this.animateScrollId)\n\t\t\t{\n\t\t\t\tAnimation.cancel(this.animateScrollId);\n\t\t\t\tthis.scrollAnimating = false;\n\t\t\t}\n\t\t\tif (typeof params === 'function')\n\t\t\t{\n\t\t\t\tparams = {callback: params};\n\t\t\t}\n\n\t\t\tconst body = this.$refs.body;\n\t\t\tif (!body)\n\t\t\t{\n\t\t\t\tif (params.callback && typeof params.callback === 'function')\n\t\t\t\t{\n\t\t\t\t\tparams.callback();\n\t\t\t\t}\n\t\t\t\tthis.animateScrollId = null;\n\t\t\t\tthis.scrollAnimating = false;\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tMessengerUtils.platform.isIos() && (\n\t\t\t\t\tMessengerUtils.platform.getIosVersion() > 12\n\t\t\t\t\t&& MessengerUtils.platform.getIosVersion() < 13.2\n\t\t\t\t)\n\t\t\t)\n\t\t\t{\n\t\t\t\tbody.scrollTop = body.scrollHeight - body.clientHeight;\n\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tlet {\n\t\t\t\tstart = body.scrollTop,\n\t\t\t\tend = body.scrollHeight - body.clientHeight,\n\t\t\t\tincrement = 20,\n\t\t\t\tcallback,\n\t\t\t\tduration = 500\n\t\t\t} = params;\n\n\t\t\tconst container = this.$refs.container;\n\t\t\tif (container && (end - start) > container.offsetHeight * 3)\n\t\t\t{\n\t\t\t\tstart = end - container.offsetHeight * 3;\n\t\t\t\tLogger.warn('Dialog.animatedScroll: Scroll trajectory has been reduced');\n\t\t\t}\n\n\t\t\tthis.scrollAnimating = true;\n\t\t\tLogger.warn('Dialog.animatedScroll: User scroll blocked while scrolling');\n\n\t\t\tthis.animateScrollId = Animation.start({\n\t\t\t\tstart,\n\t\t\t\tend,\n\t\t\t\tincrement,\n\t\t\t\tduration,\n\n\t\t\t\telement: body,\n\t\t\t\telementProperty: 'scrollTop',\n\n\t\t\t\tcallback: () =>\n\t\t\t\t{\n\t\t\t\t\tthis.animateScrollId = null;\n\t\t\t\t\tthis.scrollAnimating = false;\n\t\t\t\t\tif (callback && typeof callback === 'function')\n\t\t\t\t\t{\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t});\n\t\t},\n\t\t/* endregion 03. Scrolling */\n\n\t\t/* region 04. Placeholders */\n\t\tdrawPlaceholders(requestMode, pagesCount = 1)\n\t\t{\n\t\t\tconst limit = requestMode === RequestMode.history? this.historyMessageLimit: this.unreadMessageLimit;\n\t\t\tconst placeholders = this.generatePlaceholders(limit, pagesCount);\n\n\t\t\treturn this.$store.dispatch('messages/addPlaceholders', {placeholders, requestMode});\n\t\t},\n\t\tgeneratePlaceholders(amount, pagesCount)\n\t\t{\n\t\t\tconst placeholders = [];\n\n\t\t\tfor (let i = 0; i < pagesCount; i++)\n\t\t\t{\n\t\t\t\tfor (let j = 0; j < this.placeholdersComposition.length; j++)\n\t\t\t\t{\n\t\t\t\t\tplaceholders.push({\n\t\t\t\t\t\tid: `placeholder${this.placeholderCount}`,\n\t\t\t\t\t\tchatId: this.chatId,\n\t\t\t\t\t\ttemplateType: TemplateType.placeholder,\n\t\t\t\t\t\tplaceholderType: this.placeholdersComposition[j],\n\t\t\t\t\t\tunread: false\n\t\t\t\t\t});\n\t\t\t\t\tthis.placeholderCount++;\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\treturn placeholders;\n\t\t},\n\t\tgetPlaceholdersComposition()\n\t\t{\n\t\t\t//randomize set of placeholder types (sums up to ~2400px height)\n\t\t\t//placeholder1 x8, placeholder2 x6, placeholder3 x8\n\t\t\treturn [1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,3].sort(() => {\n\t\t\t\treturn 0.5 - Math.random();\n\t\t\t});\n\t\t},\n\t\t/* endregion 04. Placeholders */\n\n\t\t/* region 05. History request */\n\t\trequestHistory()\n\t\t{\n\t\t\treturn this.$Bitrix.RestClient.get().callMethod(RestMethod.imDialogMessagesGet, {\n\t\t\t\tchat_id: this.chatId,\n\t\t\t\tlast_id: this.lastHistoryMessageId,\n\t\t\t\tlimit: this.historyMessageLimit,\n\t\t\t\tconvert_text: 'Y'\n\t\t\t}).then(result => {\n\t\t\t\tconst newMessages = result.data().messages;\n\t\t\t\tif (newMessages.length > 0)\n\t\t\t\t{\n\t\t\t\t\tthis.lastHistoryMessageId = newMessages[newMessages.length - 1].id;\n\t\t\t\t}\n\n\t\t\t\tif (newMessages.length < this.historyMessageLimit)\n\t\t\t\t{\n\t\t\t\t\tthis.stopHistoryLoading = true;\n\t\t\t\t}\n\n\t\t\t\t//files and users\n\t\t\t\tthis.$Bitrix.Data.get('controller').executeRestAnswer(RestMethodHandler.imDialogMessagesGet, result);\n\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tconst currentBodyHeight = this.$refs.body.scrollHeight;\n\t\t\t\t\tthis.$store.dispatch('messages/updatePlaceholders', {\n\t\t\t\t\t\tchatId: this.chatId,\n\t\t\t\t\t\tdata: newMessages,\n\t\t\t\t\t\tfirstMessage: this.pagesLoaded * this.placeholdersComposition.length,\n\t\t\t\t\t\tamount: this.placeholdersComposition.length\n\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\tif (!this.isOverflowAnchorSupported())\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.enableUserScroll();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresolve();\n\t\t\t\t\t});\n\t\t\t\t\tif (!this.isOverflowAnchorSupported())\n\t\t\t\t\t{\n\t\t\t\t\t\tLogger.warn('Disabling user scroll in updating placeholders');\n\t\t\t\t\t\tthis.$nextTick(() => {\n\t\t\t\t\t\t\tconst heightDifference = this.$refs.body.scrollHeight - currentBodyHeight;\n\t\t\t\t\t\t\tthis.disableUserScroll();\n\t\t\t\t\t\t\tthis.forceScrollToPosition(this.$refs.body.scrollTop + heightDifference);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}).then(() => {\n\t\t\t\tthis.pagesLoaded += 1;\n\t\t\t\tLogger.warn('History page loaded. Total loaded - ', this.pagesLoaded);\n\n\t\t\t\treturn this.onAfterHistoryRequest();\n\t\t\t}).catch(result => {\n\t\t\t\tLogger.warn('Request history error', result);\n\t\t\t});\n\t\t},\n\t\tonAfterHistoryRequest()\n\t\t{\n\t\t\tLogger.warn('onAfterHistoryRequest');\n\t\t\tif (this.stopHistoryLoading)\n\t\t\t{\n\t\t\t\tLogger.warn('stopHistoryLoading, deleting all delayed requests');\n\t\t\t\tthis.historyPagesRequested = 0;\n\t\t\t}\n\n\t\t\tif (this.historyPagesRequested > 0)\n\t\t\t{\n\t\t\t\tLogger.warn('We have delayed requests -', this.historyPagesRequested);\n\t\t\t\tthis.historyPagesRequested--;\n\n\t\t\t\treturn this.requestHistory();\n\t\t\t}\n\t\t\telse if (this.$refs.body.scrollTop <= this.scrollingUpThreshold && this.remainingHistoryPages > 0)\n\t\t\t{\n\t\t\t\tLogger.warn('currentScroll <= scrollingUpThreshold, requesting next page and scrolling');\n\n\t\t\t\treturn this.drawPlaceholders(RequestMode.history).then((firstPlaceholderId) => {\n\t\t\t\t\tthis.scrollToMessage({messageId: firstPlaceholderId, force: true, stickToTop: false});\n\n\t\t\t\t\treturn this.requestHistory();\n\t\t\t\t});\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLogger.warn('No more delayed requests, clearing placeholders');\n\t\t\t\tthis.$store.dispatch('messages/clearPlaceholders', {chatId: this.chatId});\n\t\t\t\tthis.isRequestingHistory = false;\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\t/* endregion 05. History request */\n\n\t\t/* region 06. Unread request */\n\t\tprepareUnreadRequestParams()\n\t\t{\n\t\t\treturn {\n\t\t\t\t[RestMethodHandler.imDialogRead]: [RestMethod.imDialogRead, {\n\t\t\t\t\tdialog_id: this.dialogId,\n\t\t\t\t\tmessage_id: this.lastUnreadMessageId\n\t\t\t\t}],\n\t\t\t\t[RestMethodHandler.imChatGet]: [RestMethod.imChatGet, {\n\t\t\t\t\tdialog_id: this.dialogId\n\t\t\t\t}],\n\t\t\t\t[RestMethodHandler.imDialogMessagesGetUnread]: [RestMethod.imDialogMessagesGet, {\n\t\t\t\t\tchat_id: this.chatId,\n\t\t\t\t\tfirst_id: this.lastUnreadMessageId,\n\t\t\t\t\tlimit: this.unreadMessageLimit,\n\t\t\t\t\tconvert_text: 'Y'\n\t\t\t\t}]\n\t\t\t};\n\t\t},\n\t\trequestUnread()\n\t\t{\n\t\t\tif (!this.lastUnreadMessageId)\n\t\t\t{\n\t\t\t\tthis.lastUnreadMessageId = this.$store.getters['messages/getLastId'](this.chatId);\n\t\t\t}\n\t\t\tif (!this.lastUnreadMessageId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.readMessage(this.lastUnreadMessageId, true, true).then(() => {\n\t\t\t\tthis.$Bitrix.RestClient.get().callBatch(\n\t\t\t\t\tthis.prepareUnreadRequestParams(),\n\t\t\t\t\tresponse => this.onUnreadRequest(response)\n\t\t\t\t);\n\t\t\t});\n\t\t},\n\t\tonUnreadRequest(response)\n\t\t{\n\t\t\tif (!response)\n\t\t\t{\n\t\t\t\tLogger.warn('Unread request: callBatch error');\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst chatGetResult = response[RestMethodHandler.imChatGet];\n\t\t\tif (chatGetResult.error())\n\t\t\t{\n\t\t\t\tLogger.warn('Unread request: imChatGet error', chatGetResult.error());\n\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.$Bitrix.Data.get('controller').executeRestAnswer(RestMethodHandler.imChatGet, chatGetResult);\n\n\t\t\tconst dialogMessageUnread = response[RestMethodHandler.imDialogMessagesGetUnread];\n\t\t\tif (dialogMessageUnread.error())\n\t\t\t{\n\t\t\t\tLogger.warn('Unread request: imDialogMessagesGetUnread error', dialogMessageUnread.error());\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst newMessages = dialogMessageUnread.data().messages;\n\t\t\tif (newMessages.length > 0)\n\t\t\t{\n\t\t\t\tthis.lastUnreadMessageId = newMessages[newMessages.length - 1].id;\n\t\t\t}\n\n\t\t\tthis.$Bitrix.Data.get('controller').executeRestAnswer(RestMethodHandler.imDialogMessagesGetUnread, dialogMessageUnread);\n\t\t\tthis.$store.dispatch('messages/updatePlaceholders', {\n\t\t\t\tchatId: this.chatId,\n\t\t\t\tdata: newMessages,\n\t\t\t\tfirstMessage: this.pagesLoaded * this.placeholdersComposition.length,\n\t\t\t\tamount: this.placeholdersComposition.length\n\t\t\t}).then(() => {\n\t\t\t\tthis.pagesLoaded += 1;\n\t\t\t\tLogger.warn('Unread page loaded. Total loaded - ', this.pagesLoaded);\n\n\t\t\t\treturn this.onAfterUnreadRequest();\n\t\t\t}).catch(result => {\n\t\t\t\tLogger.warn('Unread history error', result);\n\t\t\t});\n\t\t},\n\t\tonAfterUnreadRequest()\n\t\t{\n\t\t\tif (this.unreadPagesRequested > 0)\n\t\t\t{\n\t\t\t\tLogger.warn('We have delayed requests -', this.unreadPagesRequested);\n\t\t\t\tthis.unreadPagesRequested--;\n\n\t\t\t\treturn this.requestUnread();\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tLogger.warn('No more delayed requests, clearing placeholders');\n\t\t\t\tthis.$store.dispatch('messages/clearPlaceholders', {chatId: this.chatId});\n\t\t\t\tthis.isRequestingUnread = false;\n\n\t\t\t\tif (this.externalUnreadRequestResolve)\n\t\t\t\t{\n\t\t\t\t\tthis.externalUnreadRequestResolve();\n\t\t\t\t}\n\n\t\t\t\treturn true;\n\t\t\t}\n\t\t},\n\t\t/* endregion 06. Unread request */\n\n\t\t/* region 07. Last page request */\n\t\tscrollToLastPage()\n\t\t{\n\t\t\tLogger.warn('Load last page');\n\t\t\t//draw placeholders at the bottom\n\t\t\tthis.drawPlaceholders(RequestMode.unread).then(() => {\n\t\t\t\t//block unread and history requests\n\t\t\t\tthis.isScrolling = true;\n\t\t\t\tthis.animatedScrollToPosition({\n\t\t\t\t\tcallback: () => this.onScrollToLastPage()\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\t\tonScrollToLastPage()\n\t\t{\n\t\t\t//hide scroll button\n\t\t\tthis.showScrollButton = false;\n\t\t\t//set counter to 0\n\t\t\tthis.$store.dispatch('dialogues/update', {\n\t\t\t\tdialogId: this.dialogId,\n\t\t\t\tfields: {\n\t\t\t\t\tcounter: 0\n\t\t\t\t}\n\t\t\t});\n\t\t\t//clear all messages except placeholders\n\t\t\tthis.$store.dispatch('messages/clear', {chatId: this.chatId, keepPlaceholders: true});\n\t\t\t//call batch - imDialogRead, imChatGet, imDialogMessagesGet\n\t\t\tthis.$Bitrix.RestClient.get().callBatch(\n\t\t\t\tthis.prepareLastPageRequestParams(),\n\t\t\t\tresponse => this.onLastPageRequest(response)\n\t\t\t);\n\t\t},\n\t\tprepareLastPageRequestParams()\n\t\t{\n\t\t\treturn {\n\t\t\t\t[RestMethodHandler.imDialogRead]: [RestMethod.imDialogRead, {\n\t\t\t\t\tdialog_id: this.dialogId\n\t\t\t\t}],\n\t\t\t\t[RestMethodHandler.imChatGet]: [RestMethod.imChatGet, {\n\t\t\t\t\tdialog_id: this.dialogId\n\t\t\t\t}],\n\t\t\t\t[RestMethodHandler.imDialogMessagesGet]: [RestMethod.imDialogMessagesGet, {\n\t\t\t\t\tchat_id: this.chatId,\n\t\t\t\t\tlimit: this.unreadMessageLimit,\n\t\t\t\t\tconvert_text: 'Y'\n\t\t\t\t}]\n\t\t\t};\n\t\t},\n\t\tonLastPageRequest(response)\n\t\t{\n\t\t\tif (!response)\n\t\t\t{\n\t\t\t\tLogger.warn('Last page request: callBatch error');\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t//imChatGet handle\n\t\t\tconst chatGetResult = response[RestMethodHandler.imChatGet];\n\t\t\tif (chatGetResult.error())\n\t\t\t{\n\t\t\t\tLogger.warn('Last page request: imChatGet error', chatGetResult.error());\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis.$Bitrix.Data.get('controller').executeRestAnswer(RestMethodHandler.imChatGet, chatGetResult);\n\n\t\t\t//imDialogMessagesGet handle\n\t\t\tconst lastPageMessages = response[RestMethodHandler.imDialogMessagesGet];\n\t\t\tif (lastPageMessages.error())\n\t\t\t{\n\t\t\t\tLogger.warn('Last page request: imDialogMessagesGet error', lastPageMessages.error());\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst newMessages = lastPageMessages.data().messages.reverse();\n\t\t\t//handle files and users\n\t\t\tthis.$Bitrix.Data.get('controller').executeRestAnswer(RestMethodHandler.imDialogMessagesGet, lastPageMessages);\n\t\t\t//update placeholders to real messages\n\t\t\tthis.$store.dispatch('messages/updatePlaceholders', {\n\t\t\t\tchatId: this.chatId,\n\t\t\t\tdata: newMessages,\n\t\t\t\tfirstMessage: this.pagesLoaded * this.placeholdersComposition.length,\n\t\t\t\tamount: this.placeholdersComposition.length\n\t\t\t}).then(() => {\n\t\t\t\t//get id for history requests and increase pages counter to count placeholders on next requests\n\t\t\t\tthis.lastHistoryMessageId = this.collection[0].id;\n\t\t\t\tthis.pagesLoaded += 1;\n\n\t\t\t\t//clear remaining placeholders\n\t\t\t\treturn this.$store.dispatch('messages/clearPlaceholders', {chatId: this.chatId});\n\t\t\t}).then(() => {\n\t\t\t\tthis.scrollToBottom({force: true});\n\t\t\t\t//enable history requests on scroll up\n\t\t\t\tthis.stopHistoryLoading = false;\n\t\t\t\tthis.isScrolling = false;\n\t\t\t}).catch(result => {\n\t\t\t\tLogger.warn('Unread history error', result);\n\t\t\t});\n\t\t},\n\t\t/* endregion 07. Last page request */\n\n\t\t/* region 08. Read messages */\n\t\treadVisibleMessages()\n\t\t{\n\t\t\tif (!this.windowFocused || !this.messagesSet)\n\t\t\t{\n\t\t\t\tLogger.warn('reading is disabled!');\n\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\t//need to filter that way to empty array after async method on every element was completed\n\t\t\tthis.readMessageQueue = this.readMessageQueue.filter(messageId =>\n\t\t\t{\n\t\t\t\tif (this.readMessageTarget[messageId])\n\t\t\t\t{\n\t\t\t\t\tif (this.observers[ObserverType.read])\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.observers[ObserverType.read].unobserve(this.readMessageTarget[messageId]);\n\t\t\t\t\t}\n\t\t\t\t\tdelete this.readMessageTarget[messageId];\n\t\t\t\t}\n\n\t\t\t\tthis.requestReadVisibleMessages(messageId);\n\n\t\t\t\treturn false;\n\t\t\t});\n\t\t},\n\t\trequestReadVisibleMessages(messageId)\n\t\t{\n\t\t\tEventEmitter.emit(EventType.dialog.readMessage, {id: messageId});\n\t\t},\n\t\t/* endregion 08. Read messages */\n\n\t\t/* region 09. Helpers */\n\t\tgetMessageIdsForPagination()\n\t\t{\n\t\t\t// console.warn('this.collection.length', this.collection.length);\n\t\t\t// if (this.collection.length > 0)\n\t\t\t// {\n\t\t\t// \tconsole.warn('this.collection.length', this.collection[0].id);\n\t\t\t// \tthis.lastHistoryMessageId = this.collection[0].id;\n\t\t\t// }\n\t\t\t//\n\t\t\tif (this.unreadInCollection.length > 0)\n\t\t\t{\n\t\t\t\tthis.lastUnreadMessageId = this.unreadInCollection[this.unreadInCollection.length - 1].id;\n\t\t\t}\n\t\t},\n\t\tgetFirstUnreadMessage()\n\t\t{\n\t\t\tlet unreadId = null;\n\n\t\t\tfor (let index = this.collection.length-1; index >= 0; index--)\n\t\t\t{\n\t\t\t\tif (!this.collection[index].unread)\n\t\t\t\t{\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tunreadId = this.collection[index].id;\n\t\t\t}\n\n\t\t\treturn unreadId;\n\t\t},\n\t\tmanageScrollButton(event)\n\t\t{\n\t\t\tconst availableScrollHeight = event.target.scrollHeight - event.target.clientHeight;\n\t\t\tthis.scrollChangedByUser = this.currentScroll + this.scrollButtonDiff < availableScrollHeight;\n\n\t\t\tclearTimeout(this.scrollButtonShowTimeout);\n\t\t\tthis.scrollButtonShowTimeout = setTimeout(() =>\n\t\t\t{\n\t\t\t\tif (this.scrollChangedByUser)\n\t\t\t\t{\n\t\t\t\t\t//if user scroll and there is no scroll button - show it\n\t\t\t\t\tif (!this.showScrollButton)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.showScrollButton = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\t//if not user scroll, there was scroll button and no more unread to load - hide it\n\t\t\t\t\tif (this.showScrollButton && this.remainingUnreadPages === 0)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.showScrollButton = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}, 200);\n\n\t\t\t//if we are at the bottom\n\t\t\tif (event.target.scrollTop === event.target.scrollHeight - event.target.offsetHeight)\n\t\t\t{\n\t\t\t\tclearTimeout(this.scrollButtonShowTimeout);\n\n\t\t\t\tif (this.showScrollButton && this.remainingUnreadPages === 0)\n\t\t\t\t{\n\t\t\t\t\tthis.showScrollButton = false;\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetDateObject()\n\t\t{\n\t\t\tif (this.dateFormatFunction)\n\t\t\t{\n\t\t\t\treturn this.dateFormatFunction;\n\t\t\t}\n\n\t\t\tthis.dateFormatFunction = Object.create(BX.Main.Date);\n\t\t\tthis.dateFormatFunction._getMessage = (phrase) => this.$Bitrix.Loc.getMessage(phrase);\n\n\t\t\treturn this.dateFormatFunction;\n\t\t},\n\t\tgetDateGroup(date)\n\t\t{\n\t\t\tconst id = date.toJSON().slice(0,10);\n\t\t\tif (this.cachedDateGroups[id])\n\t\t\t{\n\t\t\t\treturn this.cachedDateGroups[id];\n\t\t\t}\n\n\t\t\tconst dateFormat = this.getDateFormat(DateFormat.groupTitle);\n\n\t\t\tthis.cachedDateGroups[id] = {\n\t\t\t\tid,\n\t\t\t\ttitle: this.getDateObject().format(dateFormat, date)\n\t\t\t};\n\n\t\t\treturn this.cachedDateGroups[id];\n\t\t},\n\t\tgetDateFormat(type)\n\t\t{\n\t\t\treturn MessengerUtils.date.getFormatType(\n\t\t\t\tBX.Messenger.Const.DateFormat[type],\n\t\t\t\tthis.$Bitrix.Loc.getMessages()\n\t\t\t);\n\t\t},\n\t\tgetDateGroupBlock(id = 0, text = '')\n\t\t{\n\t\t\treturn {\n\t\t\t\ttemplateId: 'group'+id,\n\t\t\t\ttemplateType: TemplateType.group,\n\t\t\t\ttext: text\n\t\t\t};\n\t\t},\n\t\tgetDelimiterBlock(id = 0)\n\t\t{\n\t\t\treturn {\n\t\t\t\ttemplateId: 'delimiter'+id,\n\t\t\t\ttemplateType: TemplateType.delimiter\n\t\t\t};\n\t\t},\n\t\tgetObserver(config)\n\t\t{\n\t\t\tif (\n\t\t\t\ttypeof window.IntersectionObserver === 'undefined'\n\t\t\t\t|| config.type === ObserverType.none\n\t\t\t)\n\t\t\t{\n\t\t\t\treturn {\n\t\t\t\t\tobserve: () => {},\n\t\t\t\t\tunobserve: () => {}\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tlet observerCallback, observerOptions;\n\n\t\t\tobserverCallback = (entries) => {\n\t\t\t\tentries.forEach(entry => {\n\t\t\t\t\tlet sendReadEvent = false;\n\t\t\t\t\tif (entry.isIntersecting)\n\t\t\t\t\t{\n\t\t\t\t\t\t//on windows with interface scaling intersectionRatio will never be 1\n\t\t\t\t\t\tif (entry.intersectionRatio >= 0.99)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsendReadEvent = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (\n\t\t\t\t\t\t\tentry.intersectionRatio > 0\n\t\t\t\t\t\t\t&& entry.rootBounds.height < entry.boundingClientRect.height + 20\n\t\t\t\t\t\t\t&& entry.intersectionRect.height > entry.rootBounds.height / 2\n\t\t\t\t\t\t)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsendReadEvent = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (sendReadEvent)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.readMessageQueue.push(entry.target.dataset.messageId);\n\t\t\t\t\t\tthis.readMessageTarget[entry.target.dataset.messageId] = entry.target;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.readMessageQueue = this.readMessageQueue.filter(messageId => messageId !== entry.target.dataset.messageId);\n\t\t\t\t\t\tdelete this.readMessageTarget[entry.target.dataset.messageId];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (this.enableReadMessages)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.readVisibleMessagesDelayed();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tobserverOptions = {\n\t\t\t\troot: this.$refs.body,\n\t\t\t\tthreshold: new Array(101).fill(0).map((zero, index) => index * 0.01)\n\t\t\t};\n\n\t\t\treturn new IntersectionObserver(observerCallback, observerOptions);\n\t\t},\n\t\tgetElementClass(elementId)\n\t\t{\n\t\t\tconst classWithId = DialogReferenceClassName.listItem + '-' + elementId;\n\n\t\t\treturn ['bx-im-dialog-list-item', DialogReferenceClassName.listItem, classWithId];\n\t\t},\n\t\tgetElementById(elementId)\n\t\t{\n\t\t\tconst body = this.$refs.body;\n\t\t\tconst className = DialogReferenceClassName.listItem + '-' + elementId;\n\n\t\t\treturn body.getElementsByClassName(className)[0];\n\t\t},\n\t\tgetPlaceholderClass(elementId)\n\t\t{\n\t\t\tconst classWithId = DialogReferenceClassName.listItem + '-' + elementId;\n\n\t\t\treturn ['im-skeleton-item', 'im-skeleton-item-1', 'im-skeleton-item--sm', classWithId];\n\t\t},\n\t\t/* endregion 09. Helpers */\n\t},\n\n\tdirectives:\n\t{\n\t\t'bx-im-directive-dialog-observer':\n\t\t\t{\n\t\t\t\tinserted(element, bindings, vnode)\n\t\t\t\t{\n\t\t\t\t\tif (bindings.value === ObserverType.none)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!vnode.context.observers[bindings.value])\n\t\t\t\t\t{\n\t\t\t\t\t\tvnode.context.observers[bindings.value] = vnode.context.getObserver({\n\t\t\t\t\t\t\ttype: bindings.value\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tvnode.context.observers[bindings.value].observe(element);\n\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tunbind(element, bindings, vnode)\n\t\t\t\t{\n\t\t\t\t\tif (bindings.value === ObserverType.none)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (vnode.context.observers[bindings.value])\n\t\t\t\t\t{\n\t\t\t\t\t\tvnode.context.observers[bindings.value].unobserve(element);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t},\n\t},\n\t// language=Vue\n\ttemplate: `\n\t<div class=\"bx-im-dialog\" @click=\"onDialogClick\" @touchmove=\"onDialogMove\" ref=\"container\">\n\t\t<div :class=\"bodyClasses\" @scroll.passive=\"onScroll\" ref=\"body\">\n\t\t\t<!-- Main elements loop -->\n\t\t\t<template v-for=\"(element, index) in formattedCollection\">\n\t\t\t\t<!-- Message -->\n\t\t\t\t<template v-if=\"element.templateType === TemplateType.message\">\n\t\t\t\t\t<div\n\t\t\t\t\t\t:class=\"getElementClass(element.id)\"\n\t\t\t\t\t\t:data-message-id=\"element.id\"\n\t\t\t\t\t\t:data-template-id=\"element.templateId\"\n\t\t\t\t\t\t:data-type=\"element.templateType\" \n\t\t\t\t\t\t:key=\"element.templateId\"\n\t\t\t\t\t\tv-bx-im-directive-dialog-observer=\"element.unread? ObserverType.read: ObserverType.none\"\n\t\t\t\t\t>\t\t\t\t\n<!--\t\t\t\t\t <div style=\"width: 200px; height: 50px; margin-top: 5px; background: #000; color: #fff;\">{{ element.textConverted }}</div>-->\n\t\t\t\t\t\t<component :is=\"element.params.COMPONENT_ID\"\n\t\t\t\t\t\t\t:userId=\"userId\" \n\t\t\t\t\t\t\t:dialogId=\"dialogId\"\n\t\t\t\t\t\t\t:chatId=\"chatId\"\n\t\t\t\t\t\t\t:message=\"element\"\n\t\t\t\t\t\t\t:enableReactions=\"enableReactions\"\n\t\t\t\t\t\t\t:enableDateActions=\"enableDateActions\"\n\t\t\t\t\t\t\t:enableCreateContent=\"showMessageMenu\"\n\t\t\t\t\t\t\t:enableGestureQuote=\"enableGestureQuote\"\n\t\t\t\t\t\t\t:enableGestureQuoteFromRight=\"enableGestureQuoteFromRight\"\n\t\t\t\t\t\t\t:enableGestureMenu=\"enableGestureMenu\"\n\t\t\t\t\t\t\t:showName=\"showMessageUserName\"\n\t\t\t\t\t\t\t:showAvatar=\"showMessageAvatar\"\n\t\t\t\t\t\t\t:showMenu=\"showMessageMenu\"\n\t\t\t\t\t\t\t:capturedMoveEvent=\"capturedMoveEvent\"\n\t\t\t\t\t\t\t:referenceContentClassName=\"DialogReferenceClassName.listItem\"\n\t\t\t\t\t\t\t:referenceContentBodyClassName=\"DialogReferenceClassName.listItemBody\"\n\t\t\t\t\t\t\t:referenceContentNameClassName=\"DialogReferenceClassName.listItemName\"\n\t\t\t\t\t\t\t@clickByUserName=\"onClickOnUserName\"\n\t\t\t\t\t\t\t@clickByUploadCancel=\"onClickOnUploadCancel\"\n\t\t\t\t\t\t\t@clickByKeyboardButton=\"onClickOnKeyboardButton\"\n\t\t\t\t\t\t\t@clickByChatTeaser=\"onClickOnChatTeaser\"\n\t\t\t\t\t\t\t@clickByMessageMenu=\"onClickOnMessageMenu\"\n\t\t\t\t\t\t\t@clickByMessageRetry=\"onClickOnMessageRetry\"\n\t\t\t\t\t\t\t@setMessageReaction=\"onMessageReactionSet\"\n\t\t\t\t\t\t\t@openMessageReactionList=\"onMessageReactionListOpen\"\n\t\t\t\t\t\t\t@dragMessage=\"onDragMessage\"\n\t\t\t\t\t\t\t@quoteMessage=\"onQuoteMessage\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<!-- Date groups -->\n\t\t\t\t<template v-else-if=\"element.templateType === TemplateType.group\">\n\t\t\t\t\t<div class=\"bx-im-dialog-group\" :data-template-id=\"element.templateId\" :data-type=\"element.templateType\" :key=\"element.templateId\">\n\t\t\t\t\t\t<div class=\"bx-im-dialog-group-date\">{{ element.text }}</div>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<!-- Delimiters -->\n\t\t\t\t<template v-else-if=\"element.templateType === TemplateType.delimiter\">\n\t\t\t\t\t<div class=\"bx-im-dialog-delimiter\" :data-template-id=\"element.templateId\" :data-type=\"element.templateType\" :key=\"element.templateId\"></div>\n\t\t\t\t</template>\n\t\t\t\t<!-- Placeholders -->\n\t\t\t\t<template v-else-if=\"element.templateType === TemplateType.placeholder\">\n\t\t\t\t\t<component :is=\"'Placeholder'+element.placeholderType\" :element=\"element\"/>\n\t\t\t\t</template>\n\t\t\t</template>\n\t\t\t<!-- Writing and readed statuses -->\n\t\t\t<transition name=\"bx-im-dialog-status\">\n\t\t\t\t<template v-if=\"writingStatusText\">\n\t\t\t\t\t<div class=\"bx-im-dialog-status\">\n\t\t\t\t\t\t<span class=\"bx-im-dialog-status-writing\"></span>\n\t\t\t\t\t\t{{ writingStatusText }}\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t\t<template v-else-if=\"statusReaded\">\n\t\t\t\t\t<div class=\"bx-im-dialog-status\" @click=\"onClickOnReadList\">\n\t\t\t\t\t\t{{ statusReaded }}\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</transition>\n\t\t\t<div v-if=\"showStatusPlaceholder\" class=\"bx-im-dialog-status-placeholder\"></div>\n\t\t</div>\n\t\t<!-- Scroll button -->\n\t\t<transition name=\"bx-im-dialog-scroll-button\">\n\t\t\t<div v-show=\"showScrollButton || (unreadCounter > 0 && !isLastIdInCollection)\" class=\"bx-im-dialog-scroll-button-box\" @click=\"onScrollButtonClick\">\n\t\t\t\t<div class=\"bx-im-dialog-scroll-button\">\n\t\t\t\t\t<div v-show=\"unreadCounter\" class=\"bx-im-dialog-scroll-button-counter\">\n\t\t\t\t\t\t<div class=\"bx-im-dialog-scroll-button-counter-digit\">{{ formattedUnreadCounter }}</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"bx-im-dialog-scroll-button-arrow\"></div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</transition>\n\t</div>\n`\n};\n\nexport {MessageList};","import { Vuex } from \"ui.vue.vuex\";\nimport { Vue } from \"ui.vue\";\n\nexport const ErrorState = {\n\tcomputed:\n\t{\n\t\t...Vuex.mapState({\n\t\t\tapplication: state => state.application,\n\t\t}),\n\t},\n\t// language=Vue\n\ttemplate: `\n\t\t<div class=\"bx-mobilechat-body\">\n\t\t\t<div class=\"bx-mobilechat-warning-window\">\n\t\t\t\t<div class=\"bx-mobilechat-warning-icon\"></div>\n\t\t\t\t<template v-if=\"application.error.description\">\n\t\t\t\t\t<div class=\"bx-mobilechat-help-title bx-mobilechat-help-title-sm bx-mobilechat-warning-msg\" v-html=\"application.error.description\"></div>\n\t\t\t\t</template>\n\t\t\t\t<template v-else>\n\t\t\t\t\t<div class=\"bx-mobilechat-help-title bx-mobilechat-help-title-md bx-mobilechat-warning-msg\">{{$Bitrix.Loc.getMessage('IM_DIALOG_ERROR_TITLE')}}</div>\n\t\t\t\t\t<div class=\"bx-mobilechat-help-title bx-mobilechat-help-title-sm bx-mobilechat-warning-msg\">{{$Bitrix.Loc.getMessage('IM_DIALOG_ERROR_DESC')}}</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t`\n};","export const LoadingState = {\n\tdata()\n\t{\n\t\treturn {\n\t\t\tplaceholdersComposition: [],\n\t\t\tplaceholderTypes: [0,1],\n\t\t\tplaceholderModes: ['self', 'opponent'],\n\t\t\tplaceholdersCount: 20\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tfor (let i = 0; i < this.placeholdersCount; i++)\n\t\t{\n\t\t\tconst randomType = Math.floor(Math.random() * this.placeholderTypes.length);\n\t\t\tconst randomMode = Math.floor(Math.random() * this.placeholderModes.length);\n\t\t\tthis.placeholdersComposition.push({\n\t\t\t\tindex: i,\n\t\t\t\ttype: randomType,\n\t\t\t\tmode: this.placeholderModes[randomMode],\n\t\t\t\tclasses: this.getItemClasses(randomType, randomMode)\n\t\t\t});\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\tgetItemClasses(type, modeIndex)\n\t\t{\n\t\t\tconst itemClasses = ['im-skeleton-item'];\n\t\t\tif (this.placeholderModes[modeIndex] === 'self')\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item-self');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item-opponent');\n\t\t\t}\n\n\t\t\tif (type === 0)\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item--sm');\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\titemClasses.push('im-skeleton-item--md');\n\t\t\t}\n\n\t\t\treturn itemClasses;\n\t\t}\n\t},\n\t// language=Vue\n\ttemplate: `\n\t\t<div class=\"bx-mobilechat-placeholder-wrap\">\n\t\t\t<div class=\"bx-mobilechat-placeholder-wrap-visible\">\n\t\t\t\t<template v-for=\"item in placeholdersComposition\">\n\t\t\t\t\t<div :class=\"item.classes\" :key=\"item.index\">\n\t\t\t\t\t\t<div v-if=\"item.mode === 'opponent'\" class=\"im-skeleton-logo\"></div>\n\t\t\t\t\t\t<div class=\"im-skeleton-content\">\n\t\t\t\t\t\t\t<template v-if=\"item.type === 0\">\n\t\t\t\t\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t\t\t\t\t<div style=\"max-width: 70%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t\t\t\t\t<div style=\"max-width: 100%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t\t\t\t\t\t<div style=\"max-width: 26px; margin-left: auto;\" class=\"im-skeleton-line\"></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\t<template v-else>\n\t\t\t\t\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t\t\t\t\t<div style=\"max-width: 35%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t\t\t\t\t<div style=\"max-width: 100%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"im-skeleton-line-row\">\n\t\t\t\t\t\t\t\t\t<div style=\"max-width: 55%\" class=\"im-skeleton-line\"></div>\n\t\t\t\t\t\t\t\t\t<div style=\"max-width: 26px; margin-left: auto;\" class=\"im-skeleton-line\"></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\t<div class=\"im-skeleton-like\"></div>\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</div>\n\t\t</div>\n\t`\n};","import { Vue } from \"ui.vue\";\n\nexport const EmptyState = {\n\t// language=Vue\n\ttemplate: `\n\t\t<div class=\"bx-mobilechat-loading-window\">\n\t\t\t<h3 class=\"bx-mobilechat-help-title bx-mobilechat-help-title-md bx-mobilechat-loading-msg\">\n\t\t \t\t{{ $Bitrix.Loc.getMessage('IM_DIALOG_EMPTY') }}\n\t\t\t</h3>\n\t\t</div>\n\t`\n};","import {Vue} from \"ui.vue\";\n\nimport { EventEmitter } from 'main.core.events';\nimport { EventType } from \"im.const\";\n\nexport const QuotePanel = {\n\t/**\n\t * @emits EventType.dialog.quotePanelClose\n\t */\n\tprops:\n\t\t{\n\t\t\tquotePanelData: {\n\t\t\t\ttype: Object,\n\t\t\t\tdefault: function() {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: 0,\n\t\t\t\t\t\ttitle: '',\n\t\t\t\t\t\tdescription: '',\n\t\t\t\t\t\tcolor: ''\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tcanClose: {default: true}\n\t\t},\n\tmethods:\n\t\t{\n\t\t\tclose(event)\n\t\t\t{\n\t\t\t\tEventEmitter.emit(EventType.dialog.quotePanelClose, event);\n\t\t\t},\n\t\t},\n\tcomputed:\n\t\t{\n\t\t\tformattedTittle()\n\t\t\t{\n\t\t\t\treturn this.quotePanelData.title? this.quotePanelData.title.substr(0, 255): this.$Bitrix.Loc.getMessage('IM_QUOTE_PANEL_DEFAULT_TITLE');\n\t\t\t},\n\t\t\tformattedDescription()\n\t\t\t{\n\t\t\t\treturn this.quotePanelData.description? this.quotePanelData.description.substr(0, 255): '';\n\t\t\t},\n\t\t},\n\ttemplate: `\n\t<transition enter-active-class=\"bx-im-quote-panel-animation-show\" leave-active-class=\"bx-im-quote-panel-animation-close\">\t\t\t\t\n\t\t<div v-if=\"quotePanelData.id > 0\" class=\"bx-im-quote-panel\">\n\t\t\t<div class=\"bx-im-quote-panel-wrap\">\n\t\t\t\t<div class=\"bx-im-quote-panel-box\" :style=\"{borderLeftColor: quotePanelData.color}\">\n\t\t\t\t\t<div class=\"bx-im-quote-panel-box-title\" :style=\"{color: quotePanelData.color}\">{{formattedTittle}}</div>\n\t\t\t\t\t<div class=\"bx-im-quote-panel-box-desc\">{{formattedDescription}}</div>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"canClose\" class=\"bx-im-quote-panel-close\" @click=\"close\"></div>\n\t\t\t</div>\n\t\t</div>\n\t</transition>\n`\n};","/**\n * Bitrix im\n * Dialog vue component\n *\n * @package bitrix\n * @subpackage im\n * @copyright 2001-2021 Bitrix\n */\n\nimport {BitrixVue} from \"ui.vue\";\n\nimport {Logger} from \"im.lib.logger\";\nimport {Utils} from \"im.lib.utils\";\nimport {EventType, RestMethodHandler, RestMethod, DialogState} from \"im.const\";\nimport {DialogCore, DialogQuoteMessage} from \"im.mixin\";\n\nimport \"./component.css\";\nimport {MessageList} from './components/message-list/message-list';\nimport {ErrorState} from './components/error-state';\nimport {LoadingState} from './components/loading-state';\nimport {EmptyState} from './components/empty-state';\nimport {QuotePanel} from './components/quote-panel';\n\nimport {Text} from 'main.core';\nimport { EventEmitter } from \"main.core.events\";\n\nBitrixVue.component('bx-im-component-dialog',\n{\n\tmixins: [DialogCore, DialogQuoteMessage],\n\tcomponents: {MessageList, ErrorState, LoadingState, EmptyState, QuotePanel},\n\tprops:\n\t{\n\t\tuserId: { default: 0 },\n\t\tdialogId: { default: 0 },\n\t\tskipDataRequest: { default: false },\n\t\tshowLoadingState: {default: true},\n\t\tshowEmptyState: {default: true},\n\t\tenableGestureQuote: { default: true },\n\t\tenableGestureQuoteFromRight: { default: true },\n\t\tenableGestureMenu: { default: false },\n\t\tshowMessageUserName: { default: true },\n\t\tshowMessageAvatar: { default: true },\n\t},\n\tdata()\n\t{\n\t\treturn {\n\t\t\tmessagesSet: false,\n\t\t}\n\t},\n\tcreated()\n\t{\n\t\tEventEmitter.subscribe(EventType.dialog.messagesSet, this.onMessagesSet);\n\t\tthis.onDialogOpen();\n\t},\n\tbeforeDestroy()\n\t{\n\t\tEventEmitter.unsubscribe(EventType.dialog.messagesSet, this.onMessagesSet);\n\t},\n\twatch:\n\t{\n\t\tdialogId(newValue, oldValue)\n\t\t{\n\t\t\tLogger.warn('Switching dialogId from ', oldValue, ' to ', newValue);\n\t\t\tthis.messagesSet = false;\n\t\t\tthis.onDialogOpen();\n\t\t}\n\t},\n\tcomputed:\n\t{\n\t\tEventType: () => EventType,\n\t\tDialogState: () => DialogState,\n\n\t\tdialogWrapClasses()\n\t\t{\n\t\t\treturn ['bx-mobilechat-wrapper', {'bx-mobilechat-chat-start': this.isDialogShowingMessages}];\n\t\t},\n\t\tdialogBoxClasses()\n\t\t{\n\t\t\treturn ['bx-mobilechat-box', {'bx-mobilechat-box-dark-background': this.isDarkBackground}];\n\t\t},\n\t\tdialogBodyClasses()\n\t\t{\n\t\t\treturn ['bx-mobilechat-body', {'bx-mobilechat-body-with-message': this.dialogState === DialogState.show}]\n\t\t},\n\t\tquotePanelData()\n\t\t{\n\t\t\tconst result = {\n\t\t\t\tid: 0,\n\t\t\t\ttitle: '',\n\t\t\t\tdescription: '',\n\t\t\t\tcolor: ''\n\t\t\t};\n\n\t\t\tif (!this.isDialogShowingMessages || !this.dialog.quoteId)\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tconst message = this.$store.getters['messages/getMessage'](this.dialog.chatId, this.dialog.quoteId);\n\t\t\tif (!message)\n\t\t\t{\n\t\t\t\treturn result;\n\t\t\t}\n\n\t\t\tconst user = this.$store.getters['users/get'](message.authorId);\n\t\t\tconst files = this.$store.getters['files/getList'](this.dialog.chatId);\n\n\t\t\treturn {\n\t\t\t\tid: this.dialog.quoteId,\n\t\t\t\ttitle: message.params.NAME ? Text.decode(message.params.NAME) : (user ? user.name: ''),\n\t\t\t\tcolor: user? user.color: '',\n\t\t\t\tdescription: Utils.text.purify(message.text, message.params, files, this.localize)\n\t\t\t};\n\t\t},\n\t\tisLoading()\n\t\t{\n\t\t\tif (!this.showLoadingState)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// show placeholders if we don't have chatId for current dialogId\n\t\t\t// or we have chatId, but there is no messages collection for this chatId and messages are not set yet\n\t\t\t// (because if chat is empty - there will be no messages collection, but we should not show loading state)\n\t\t\treturn !this.isChatIdInModel || (this.isChatIdInModel && !this.isMessagesModelInited && !this.messagesSet);\n\t\t},\n\t\tisEmpty()\n\t\t{\n\t\t\treturn this.showEmptyState && this.messagesSet && this.messageCollection.length === 0;\n\t\t},\n\t\tisChatIdInModel()\n\t\t{\n\t\t\tconst dialogues = this.$store.state.dialogues.collection;\n\n\t\t\treturn dialogues[this.dialogId] && dialogues[this.dialogId].chatId > 0;\n\t\t},\n\t\tisMessagesModelInited()\n\t\t{\n\t\t\tconst messages = this.$store.state.messages.collection;\n\n\t\t\treturn messages[this.chatId];\n\t\t}\n\t},\n\tmethods:\n\t{\n\t\tprepareRequestDataQuery()\n\t\t{\n\t\t\tconst query = {\n\t\t\t\t[RestMethodHandler.mobileBrowserConstGet]: [RestMethod.mobileBrowserConstGet, {}],\n\t\t\t\t[RestMethodHandler.imChatGet]: [RestMethod.imChatGet, {dialog_id: this.dialogId}],\n\t\t\t\t[RestMethodHandler.imDialogMessagesGetInit]: [RestMethod.imDialogMessagesGet, {\n\t\t\t\t\tdialog_id: this.dialogId,\n\t\t\t\t\tlimit: this.getApplicationController().getRequestMessageLimit(),\n\t\t\t\t\tconvert_text: 'Y'\n\t\t\t\t}],\n\t\t\t};\n\t\t\tif (Utils.dialog.isChatId(this.dialogId))\n\t\t\t{\n\t\t\t\tquery[RestMethodHandler.imUserGet] = [RestMethod.imUserGet, {}];\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tquery[RestMethodHandler.imUserListGet] = [RestMethod.imUserListGet, {id: [this.userId, this.dialogId]}];\n\t\t\t}\n\n\t\t\treturn query;\n\t\t},\n\n\t\trequestData()\n\t\t{\n\t\t\tLogger.log('requesting dialog data');\n\n\t\t\tconst query = this.prepareRequestDataQuery();\n\t\t\tthis.getRestClient().callBatch(query, (response) =>\n\t\t\t{\n\t\t\t\tif (!response)\n\t\t\t\t{\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t//const.get\n\t\t\t\tlet constGetResult = response[RestMethodHandler.mobileBrowserConstGet];\n\t\t\t\tif (!constGetResult.error())\n\t\t\t\t{\n\t\t\t\t\tthis.executeRestAnswer(RestMethodHandler.mobileBrowserConstGet, constGetResult);\n\t\t\t\t}\n\n\t\t\t\t//user.get\n\t\t\t\tlet userGetResult = response[RestMethodHandler.imUserGet];\n\t\t\t\tif (userGetResult && !userGetResult.error())\n\t\t\t\t{\n\t\t\t\t\tthis.executeRestAnswer(RestMethodHandler.imUserGet, userGetResult);\n\t\t\t\t}\n\n\t\t\t\t//user.list.get\n\t\t\t\tlet userListGetResult = response[RestMethodHandler.imUserListGet];\n\t\t\t\tif (userListGetResult && !userListGetResult.error())\n\t\t\t\t{\n\t\t\t\t\tthis.executeRestAnswer(RestMethodHandler.imUserListGet, userListGetResult);\n\t\t\t\t}\n\n\t\t\t\t//chat.get\n\t\t\t\tlet chatGetResult = response[RestMethodHandler.imChatGet];\n\t\t\t\tif (!chatGetResult.error())\n\t\t\t\t{\n\t\t\t\t\tthis.executeRestAnswer(RestMethodHandler.imChatGet, chatGetResult);\n\t\t\t\t}\n\n\t\t\t\t//dialog.messages.get\n\t\t\t\tlet dialogMessagesGetResult = response[RestMethodHandler.imDialogMessagesGetInit];\n\t\t\t\tif (!dialogMessagesGetResult.error())\n\t\t\t\t{\n\t\t\t\t\tthis.$store.dispatch('application/set', {\n\t\t\t\t\t\tdialog: { enableReadMessages: true }\n\t\t\t\t\t}).then(() => {\n\t\t\t\t\t\tthis.executeRestAnswer(RestMethodHandler.imDialogMessagesGetInit, dialogMessagesGetResult);\n\t\t\t\t\t\t// this.messagesSet = true;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}, false, false, Utils.getLogTrackingParams({name: 'im.dialog', dialog: this.getApplicationController().getDialogData()}));\n\n\t\t\treturn new Promise((resolve, reject) => resolve());\n\t\t},\n\t\tonDialogOpen()\n\t\t{\n\t\t\tif (this.isChatIdInModel)\n\t\t\t{\n\t\t\t\tconst dialogues = this.$store.state.dialogues.collection;\n\n\t\t\t\tthis.$store.commit('application/set', {dialog: {\n\t\t\t\t\tchatId: dialogues[this.dialogId].chatId,\n\t\t\t\t\tdialogId: this.dialogId,\n\t\t\t\t}});\n\t\t\t}\n\t\t\tif (!this.skipDataRequest)\n\t\t\t{\n\t\t\t\tthis.requestData();\n\t\t\t}\n\t\t},\n\t\tonMessagesSet({data: event})\n\t\t{\n\t\t\tif (event.chatId !== this.chatId)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif (this.messagesSet === true)\n\t\t\t{\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tthis.messagesSet = true;\n\t\t}\n\t},\n\t// language=Vue\n\ttemplate: `\n\t\t<div :class=\"dialogWrapClasses\">\n\t\t\t<div :class=\"dialogBoxClasses\" ref=\"chatBox\">\n\t\t\t\t<!-- Error state -->\n\t\t\t\t<ErrorState v-if=\"application.error.active\" />\n\t\t\t\t<template v-else>\n\t\t\t\t\t<div :class=\"dialogBodyClasses\" key=\"with-message\">\n\t\t\t\t\t\t<!-- Loading state -->\n\t\t\t\t\t \t<LoadingState v-if=\"isLoading\" />\n\t\t\t\t\t\t<!-- Empty state -->\n\t\t\t\t\t \t<EmptyState v-else-if=\"isEmpty\" />\n\t\t\t\t\t\t<!-- Message list state -->\n\t\t\t\t\t\t<template v-else>\n\t\t\t\t\t\t\t<div class=\"bx-mobilechat-dialog\">\n\t\t\t\t\t\t\t\t<MessageList\n\t\t\t\t\t\t\t\t\t:userId=\"userId\" \n\t\t\t\t\t\t\t\t\t:dialogId=\"dialogId\"\n\t\t\t\t\t\t\t\t\t:messageLimit=\"application.dialog.messageLimit\"\n\t\t\t\t\t\t\t\t\t:enableReadMessages=\"application.dialog.enableReadMessages\"\n\t\t\t\t\t\t\t\t\t:enableReactions=\"true\"\n\t\t\t\t\t\t\t\t\t:enableDateActions=\"false\"\n\t\t\t\t\t\t\t\t\t:enableCreateContent=\"false\"\n\t\t\t\t\t\t\t\t\t:enableGestureQuote=\"enableGestureQuote\"\n\t\t\t\t\t\t\t\t\t:enableGestureQuoteFromRight=\"enableGestureQuoteFromRight\"\n\t\t\t\t\t\t\t\t\t:enableGestureMenu=\"enableGestureMenu\"\n\t\t\t\t\t\t\t\t\t:showMessageUserName=\"showMessageUserName\"\n\t\t\t\t\t\t\t\t\t:showMessageAvatar=\"showMessageAvatar\"\n\t\t\t\t\t\t\t\t\t:showMessageMenu=\"false\"\n\t\t\t\t\t\t\t\t />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<!-- Quote panel -->\n\t\t\t\t\t\t\t<QuotePanel :quotePanelData=\"quotePanelData\" />\n\t\t\t\t\t\t</template>\n\t\t\t\t\t</div>\n\t\t\t\t</template>\n\t\t\t</div>\n\t\t</div>\n\t`\n});"],"names":["ObserverType","Object","freeze","read","none","RequestMode","history","unread","DateFormat","groupTitle","readedTitle","Placeholder1","props","created","modes","randomIndex","Math","floor","random","length","mode","computed","itemClasses","DialogReferenceClassName","listItem","element","id","push","template","Placeholder2","Placeholder3","MessageList","userId","type","Number","dialogId","String","messageLimit","enableReadMessages","Boolean","enableReactions","enableDateActions","enableCreateContent","enableGestureQuote","enableGestureQuoteFromRight","enableGestureMenu","showMessageUserName","showMessageAvatar","showMessageMenu","components","mixins","DialogCore","DialogReadMessages","data","messagesSet","scrollAnimating","showScrollButton","captureMove","capturedMoveEvent","lastMessageId","isRequestingHistory","historyPagesRequested","stopHistoryLoading","isRequestingUnread","unreadPagesRequested","placeholderCount","pagesLoaded","Logger","warn","initParams","initEvents","beforeDestroy","observers","clearTimeout","scrollButtonShowTimeout","clearEvents","mounted","windowFocused","MessengerUtils","platform","isBitrixMobile","document","hasFocus","getMessageIdsForPagination","scrollOnStart","watch","newValue","oldValue","$nextTick","TemplateType","localize","BitrixVue","getFilteredPhrases","dialog","$store","getters","collection","chatId","formattedCollection","lastMessageAuthorId","firstUnreadMessageId","lastAuthorId","dateGroups","forEach","lastHistoryMessageId","group","getDateGroup","date","title","getDateGroupBlock","authorId","getDelimiterBlock","writingStatusText","scrollToTimeout","writingList","scrollChangedByUser","setTimeout","animatedScrollToPosition","duration","text","map","userName","join","replace","statusReaded","readedList","DialogType","record","messageId","dateFormat","getDateFormat","formattedDate","getDateObject","format","filter","unreadCounter","counter","formattedUnreadCounter","scrollBlocked","application","device","DeviceType","mobile","isDarkBackground","options","darkBackground","isMobile","isRequestingData","remainingHistoryPages","ceil","messageCount","historyMessageLimit","remainingUnreadPages","isLastIdInCollection","unreadMessageLimit","unreadInCollection","item","message","includes","showStatusPlaceholder","bodyClasses","listBody","Vuex","mapState","state","methods","placeholdersComposition","getPlaceholdersComposition","scrollingDownThreshold","scrollingUpThreshold","messageScrollOffset","lastScroll","scrollButtonDiff","scrollPositionChangeTime","Date","getTime","lastRequestTime","lastUnreadMessageId","dateFormatFunction","cachedDateGroups","readMessageQueue","readMessageTarget","readVisibleMessagesDelayed","debounce","readVisibleMessages","requestHistoryDelayed","requestHistory","EventEmitter","subscribe","EventType","onScrollOnStart","scrollToBottom","onScrollToBottom","onReadVisibleMessages","newMessage","onNewMessage","requestUnread","onExternalUnreadRequest","onMessagesSet","beforeMobileKeyboard","onBeforeMobileKeyboard","window","addEventListener","onOrientationChange","onWindowFocus","onWindowBlur","event","$on","unsubscribe","removeEventListener","$off","onReadMessage","onDialogClick","testNode","target","className","onCommandClick","onMentionClick","emit","clickOnDialog","onDialogMove","value","dataset","entity","nextSibling","innerHTML","command","clickOnCommand","clickOnMention","log","force","cancelIfScrollChange","scrollBeforeMobileKeyboard","body","$refs","scrollAfterMobileKeyboard","scrollHeight","scrollTop","clientHeight","scrollDiff","start","end","onClickOnUserName","clickOnUserName","onClickOnUploadCancel","clickOnUploadCancel","onClickOnKeyboardButton","clickOnKeyboardButton","onClickOnChatTeaser","clickOnChatTeaser","onClickOnMessageMenu","clickOnMessageMenu","onClickOnMessageRetry","clickOnMessageRetry","onClickOnReadList","clickOnReadList","list","onMessageReactionSet","setMessageReaction","onMessageReactionListOpen","openMessageReactionList","onDragMessage","result","onQuoteMessage","quoteMessage","onScroll","isScrolling","currentScroll","isScrollingDown","isScrollingUp","scrollButtonClicked","leftSpaceBottom","onScrollDown","onScrollUp","manageScrollButton","drawPlaceholders","then","projectedPagesToLoad","currentBodyHeight","isOverflowAnchorSupported","enableUserScroll","heightDifference","disableUserScroll","forceScrollToPosition","browser","isIe","isSafari","isSafariBased","classList","add","remove","onScrollButtonClick","scrollToLastPage","availableScrollHeight","scrollToFirstUnreadMessage","messageElement","getElementById","scrollToMessage","externalUnreadRequestResolve","Promise","resolve","reject","unreadId","getFirstUnreadMessage","scrollToMessageId","scrollParams","stickToTop","offsetTop","offsetHeight","position","animateScrollId","Animation","cancel","params","callback","isIos","getIosVersion","increment","container","elementProperty","requestMode","pagesCount","limit","placeholders","generatePlaceholders","dispatch","amount","i","j","templateType","placeholder","placeholderType","sort","$Bitrix","RestClient","get","callMethod","RestMethod","imDialogMessagesGet","chat_id","last_id","convert_text","newMessages","messages","Data","executeRestAnswer","RestMethodHandler","firstMessage","onAfterHistoryRequest","firstPlaceholderId","prepareUnreadRequestParams","imDialogRead","dialog_id","message_id","imChatGet","imDialogMessagesGetUnread","first_id","readMessage","callBatch","response","onUnreadRequest","chatGetResult","error","dialogMessageUnread","onAfterUnreadRequest","onScrollToLastPage","fields","keepPlaceholders","prepareLastPageRequestParams","onLastPageRequest","lastPageMessages","reverse","unobserve","requestReadVisibleMessages","index","create","BX","Main","_getMessage","phrase","Loc","getMessage","toJSON","slice","getFormatType","Messenger","Const","getMessages","templateId","delimiter","getObserver","config","IntersectionObserver","observe","observerCallback","observerOptions","entries","entry","sendReadEvent","isIntersecting","intersectionRatio","rootBounds","height","boundingClientRect","intersectionRect","root","threshold","Array","fill","zero","getElementClass","elementId","classWithId","getElementsByClassName","getPlaceholderClass","directives","inserted","bindings","vnode","context","unbind","ErrorState","LoadingState","placeholderTypes","placeholderModes","placeholdersCount","randomType","randomMode","classes","getItemClasses","modeIndex","EmptyState","QuotePanel","quotePanelData","description","color","canClose","close","quotePanelClose","formattedTittle","substr","formattedDescription","component","DialogQuoteMessage","skipDataRequest","showLoadingState","showEmptyState","onDialogOpen","DialogState","dialogWrapClasses","isDialogShowingMessages","dialogBoxClasses","dialogBodyClasses","dialogState","show","quoteId","user","files","NAME","Text","decode","name","Utils","purify","isLoading","isChatIdInModel","isMessagesModelInited","isEmpty","messageCollection","dialogues","prepareRequestDataQuery","query","mobileBrowserConstGet","imDialogMessagesGetInit","getApplicationController","getRequestMessageLimit","isChatId","imUserGet","imUserListGet","requestData","getRestClient","constGetResult","userGetResult","userListGetResult","dialogMessagesGetResult","getLogTrackingParams","getDialogData","commit"],"mappings":"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"}
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.28 |
proxy
|
phpinfo
|
Settings