Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/component/dialog/chat/dist/ |
Upload File : |
this.BX=this.BX||{};this.BX.Messenger=this.BX.Messenger||{};this.BX.Messenger.v2=this.BX.Messenger.v2||{};this.BX.Messenger.v2.Component=this.BX.Messenger.v2.Component||{};(function(t,e,s,i,o,n,a,r,l,c,g,d,h,u,p,m,b,v,M,f,I,S,B,P,C,w,y){"use strict";const T=50;var L=babelHelpers.classPrivateFieldLooseKey("store");var x=babelHelpers.classPrivateFieldLooseKey("timerBeforeSendRequest");var _=babelHelpers.classPrivateFieldLooseKey("batchReadMessageAnchors");class H{constructor(){Object.defineProperty(this,_,{value:F});Object.defineProperty(this,L,{writable:true,value:void 0});this.messagesToRead=new Set;Object.defineProperty(this,x,{writable:true,value:null});babelHelpers.classPrivateFieldLooseBase(this,L)[L]=m.Core.getStore()}readChatAnchors(t){b.runAction(y.RestMethod.imV2ChatAnchorRead,{data:{chatId:t}}).then((()=>{const e=m.Core.getUserId();babelHelpers.classPrivateFieldLooseBase(this,L)[L].dispatch("messages/anchors/removeChatAnchors",{userId:e,chatId:t})})).catch((t=>{console.error("AnchorService: read chat anchors error",t)}))}debouncedReadMessageAnchors(t){const e=m.Core.getUserId();this.messagesToRead.add(t);babelHelpers.classPrivateFieldLooseBase(this,L)[L].dispatch("messages/anchors/removeUserAnchorsFromMessage",{userId:e,messageId:t});if(babelHelpers.classPrivateFieldLooseBase(this,x)[x]){clearTimeout(babelHelpers.classPrivateFieldLooseBase(this,x)[x]);babelHelpers.classPrivateFieldLooseBase(this,x)[x]=null}babelHelpers.classPrivateFieldLooseBase(this,x)[x]=setTimeout((()=>babelHelpers.classPrivateFieldLooseBase(this,_)[_]()),T);return Promise.resolve()}}function F(){if(this.messagesToRead.size===0){return}b.runAction(y.RestMethod.imV2AnchorRead,{data:{messageIds:[...this.messagesToRead]}}).catch((t=>{console.error("AnchorService: read anchor error",t)}));this.messagesToRead.clear()}const A="BX.Messenger.v2.Dialog.ScrollManager";var E=babelHelpers.classPrivateFieldLooseKey("getScrollPosition");class k extends h.EventEmitter{constructor(){super();Object.defineProperty(this,E,{value:U});this.isScrolling=false;this.currentScroll=0;this.lastScroll=0;this.chatIsScrolledUp=false;this.scrollButtonClicked=false;this.startScrollNeeded=true;this.setEventNamespace(A)}setContainer(t){this.container=t}onScroll(t){if(this.isScrolling||!t.target){return}this.currentScroll=t.target.scrollTop;const e=this.lastScroll<this.currentScroll;const s=!e;if(s){this.scrollButtonClicked=false}const i=1500;const o=t.target.scrollHeight-t.target.scrollTop-t.target.clientHeight;if(e&&this.isStartScrollCompleted()&&o<i){this.emit(k.events.onScrollTriggerDown)}else if(s&&this.currentScroll<=i){this.emit(k.events.onScrollTriggerUp)}this.lastScroll=this.currentScroll;this.checkIfChatIsScrolledUp()}checkIfChatIsScrolledUp(){const t=400;const e=this.container.scrollHeight-this.container.clientHeight;const s=this.currentScroll+t<e;if(s!==this.chatIsScrolledUp){this.emit(k.events.onScrollThresholdPass,s)}this.chatIsScrolledUp=s}scrollToBottom(){u.Logger.warn("Dialog: ScrollManager: scroll to bottom");this.forceScrollTo(this.container.scrollHeight-this.container.clientHeight)}animatedScrollToBottom(){u.Logger.warn("Dialog: ScrollManager: animated scroll to bottom");this.animatedScrollTo(this.container.scrollHeight-this.container.clientHeight)}scrollToMessage(t,e={}){u.Logger.warn("Dialog: ScrollManager: scroll to message - ",t);const s=this.getDomElementById(t);if(!s){u.Logger.warn("Dialog: ScrollManager: message not found - ",t);return}const i=babelHelpers.classPrivateFieldLooseBase(this,E)[E](s,e);this.forceScrollTo(i)}setStartScrollNeeded(t){this.startScrollNeeded=t}isStartScrollCompleted(){if(!this.startScrollNeeded){return true}return this.lastScroll>0}animatedScrollToMessage(t,e={}){u.Logger.warn("Dialog: ScrollManager: animated scroll to message - ",t);const s=this.getDomElementById(t);if(!s){u.Logger.warn("Dialog: ScrollManager: message not found - ",t);return Promise.resolve()}const i=babelHelpers.classPrivateFieldLooseBase(this,E)[E](s,e);return this.animatedScrollTo(i)}forceScrollTo(t){u.Logger.warn("Dialog: ScrollManager: Force scroll to - ",t);this.cancelAnimatedScroll();this.container.scroll({top:t,behavior:"instant"})}adjustScrollOnHistoryAddition(t){u.Logger.warn("Dialog: ScrollManager: Adjusting scroll after history addition");const e=this.container.scrollHeight-this.container.clientHeight;const s=this.container.scrollTop+e-t;this.forceScrollTo(s)}animatedScrollTo(t){u.Logger.warn("Dialog: ScrollManager: Animated scroll to - ",t);return new Promise((e=>{p.Animation.start({start:this.container.scrollTop,end:t,element:this.container,elementProperty:"scrollTop",callback:()=>{this.checkIfChatIsScrolledUp();e()}})}))}cancelAnimatedScroll(){if(!this.isScrolling){return}p.Animation.cancel();this.isScrolling=false}isAtTheTop(){return this.container.scrollTop===0}isAtTheBottom(){return this.container.scrollTop+this.container.clientHeight>=this.container.scrollHeight}isAroundBottom(){const t=40;return this.container.scrollHeight-this.container.scrollTop-this.container.clientHeight<t}getDomElementById(t){return this.container.querySelector(`[data-id="${t}"]`)}}function U(t,e={}){const s=52;const i=100;const{withDateOffset:o=true,position:n=k.scrollPosition.messageTop}=e;const a=o?-s:-10;let r=t.offsetTop+a;if(n===k.scrollPosition.messageBottom){r+=t.clientHeight-i}else if(n===k.scrollPosition.messageCenter&&this.container.clientHeight>t.clientHeight){r=r-this.container.clientHeight/2+t.clientHeight/2}return r}k.events={onScrollTriggerUp:"onScrollTriggerUp",onScrollTriggerDown:"onScrollTriggerDown",onScrollThresholdPass:"onScrollThresholdPass"};k.scrollPosition={messageTop:"messageTop",messageBottom:"messageBottom",messageCenter:"messageCenter"};const $="IM_PUBLIC_";const D="IM_PUBLIC_COMMENT_";var O=babelHelpers.classPrivateFieldLooseKey("dialog");var R=babelHelpers.classPrivateFieldLooseKey("pullClient");var N=babelHelpers.classPrivateFieldLooseKey("subscribeChannel");var V=babelHelpers.classPrivateFieldLooseKey("subscribeOpenChat");var X=babelHelpers.classPrivateFieldLooseKey("requestWatchStart");var q=babelHelpers.classPrivateFieldLooseKey("isGuest");var W=babelHelpers.classPrivateFieldLooseKey("isDemoChat");var j=babelHelpers.classPrivateFieldLooseKey("isChannel");var Q=babelHelpers.classPrivateFieldLooseKey("isCommentsChat");class K{constructor(t){Object.defineProperty(this,Q,{value:et});Object.defineProperty(this,j,{value:tt});Object.defineProperty(this,W,{value:Z});Object.defineProperty(this,q,{value:Y});Object.defineProperty(this,X,{value:J});Object.defineProperty(this,V,{value:z});Object.defineProperty(this,N,{value:G});Object.defineProperty(this,O,{writable:true,value:void 0});Object.defineProperty(this,R,{writable:true,value:void 0});babelHelpers.classPrivateFieldLooseBase(this,O)[O]=m.Core.getStore().getters["chats/get"](t,true);babelHelpers.classPrivateFieldLooseBase(this,R)[R]=m.Core.getPullClient()}subscribe(){if(babelHelpers.classPrivateFieldLooseBase(this,j)[j]()){babelHelpers.classPrivateFieldLooseBase(this,N)[N]();return}if(!babelHelpers.classPrivateFieldLooseBase(this,q)[q]()||babelHelpers.classPrivateFieldLooseBase(this,Q)[Q]()||babelHelpers.classPrivateFieldLooseBase(this,W)[W]()){return}babelHelpers.classPrivateFieldLooseBase(this,V)[V]()}unsubscribe(){babelHelpers.classPrivateFieldLooseBase(this,R)[R].clearWatch(`${$}${babelHelpers.classPrivateFieldLooseBase(this,O)[O].chatId}`);babelHelpers.classPrivateFieldLooseBase(this,R)[R].clearWatch(`${D}${babelHelpers.classPrivateFieldLooseBase(this,O)[O].chatId}`)}}function G(){babelHelpers.classPrivateFieldLooseBase(this,X)[X]();babelHelpers.classPrivateFieldLooseBase(this,R)[R].extendWatch(`${$}${babelHelpers.classPrivateFieldLooseBase(this,O)[O].chatId}`);babelHelpers.classPrivateFieldLooseBase(this,R)[R].extendWatch(`${D}${babelHelpers.classPrivateFieldLooseBase(this,O)[O].chatId}`)}function z(){babelHelpers.classPrivateFieldLooseBase(this,X)[X]();babelHelpers.classPrivateFieldLooseBase(this,R)[R].extendWatch(`${$}${babelHelpers.classPrivateFieldLooseBase(this,O)[O].chatId}`)}function J(){b.runAction(y.RestMethod.imV2ChatExtendPullWatch,{data:{dialogId:babelHelpers.classPrivateFieldLooseBase(this,O)[O].dialogId}})}function Y(){var t;return((t=babelHelpers.classPrivateFieldLooseBase(this,O)[O])==null?void 0:t.role)===y.UserRole.guest}function Z(){var t;return M.DemoChatBuilder.isDemoDialogId((t=babelHelpers.classPrivateFieldLooseBase(this,O)[O])==null?void 0:t.dialogId)}function tt(){var t;return v.ChannelManager.isChannel((t=babelHelpers.classPrivateFieldLooseBase(this,O)[O])==null?void 0:t.dialogId)}function et(){var t;return((t=babelHelpers.classPrivateFieldLooseBase(this,O)[O])==null?void 0:t.type)===y.ChatType.comment}var st=babelHelpers.classPrivateFieldLooseKey("visibleMessages");class it{constructor(){Object.defineProperty(this,st,{writable:true,value:new Set})}setMessageAsVisible(t){babelHelpers.classPrivateFieldLooseBase(this,st)[st].add(t)}setMessageAsNotVisible(t){babelHelpers.classPrivateFieldLooseBase(this,st)[st].delete(t)}getVisibleMessages(){return[...babelHelpers.classPrivateFieldLooseBase(this,st)[st]]}getFirstMessageId(){if(babelHelpers.classPrivateFieldLooseBase(this,st)[st].size===0){return 0}const[t]=[...babelHelpers.classPrivateFieldLooseBase(this,st)[st]].sort(((t,e)=>t-e));return t}}function ot(t,e){const s=new Set(t);const i=new Set(e);return[...t.filter((t=>!i.has(t))),...e.filter((t=>!s.has(t)))]}const nt=new Map;function at(t,e,s=null){if(nt.has(t)){return nt.get(t)}const i=rt(t,e,s);nt.set(t,i);return i}function rt(t,e,s=null){const i=[];let o=false;async function n(){if(o){return}o=true;const a=i.shift();if(!a){o=false;return}const r=t.apply(s,a.args);await lt(e);a.resolve(r);o=false;n()}return(...t)=>new Promise((e=>{i.push({args:t,resolve:e});n()}))}function lt(t){return new Promise((e=>{setTimeout(e,t)}))}const ct={components:{MessageAvatar:I.MessageAvatar},props:{message:{type:Object,required:true},showUnpinIcon:{type:Boolean,required:true}},emits:["messageUnpin"],computed:{AvatarSize:()=>I.AvatarSize,typedMessage(){return this.message},text(){return S.Parser.purifyMessage(this.typedMessage)},authorId(){return this.typedMessage.authorId},author(){return this.$store.getters["users/get"](this.authorId)}},template:`\n\t\t<div class="bx-im-dialog-chat__pinned_item">\n\t\t\t<MessageAvatar\n\t\t\t\tv-if="typedMessage.authorId"\n\t\t\t\t:messageId="typedMessage.id"\n\t\t\t\t:authorId="typedMessage.authorId"\n\t\t\t\t:size="AvatarSize.M"\n\t\t\t/>\n\t\t\t<div class="bx-im-dialog-chat__pinned_item_content">\n\t\t\t\t<div v-if="author" class="bx-im-dialog-chat__pinned_item_user">\n\t\t\t\t\t{{ author.name }}\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-dialog-chat__pinned_item_text --ellipsis">\n\t\t\t\t\t{{ text }}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<button\n\t\t\t\tv-if="showUnpinIcon"\n\t\t\t\tclass="bx-im-dialog-chat__pinned_icon-item-unpin"\n\t\t\t\t@click.stop="$emit('messageUnpin', typedMessage.id)"\n\t\t\t></button>\n\t\t</div>\n\t`};const gt={name:"HeaderTitle",props:{totalPinCounter:{type:Number,required:true}},emits:["toggleList"],computed:{title(){return this.loc("IM_DIALOG_CHAT_PINNED_TITLE_MULTIPLE_COUNTER",{"#PINS_COUNT#":`\n\t\t\t\t\t\t<span class="bx-im-dialog-chat__pin-header_counter-total">\n\t\t\t\t\t\t\t${this.totalPinCounter}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t`})}},methods:{loc(t,e={}){return this.$Bitrix.Loc.getMessage(t,e)}},template:`\n\t\t<div class="bx-im-dialog-chat__pin-header_opened">\n\t\t <div v-html="title"></div>\n\t\t\t<button\n\t\t\t\tclass="bx-im-messenger__cross-icon"\n\t\t\t\t@click="$emit('toggleList')"\n\t\t\t></button>\n\t\t</div>\n\t`};const dt={name:"CounterControl",props:{messagePosition:{type:Number,required:true},totalPinCounter:{type:Number,required:true}},emits:["toggleList"],template:`\n\t\t<button\n\t\t\t@click="$emit('toggleList')"\n\t\t\tclass="bx-im-dialog-chat__pinned_counter_control"\n\t\t>\n\t\t\t<span class="bx-im-dialog-chat__pinned_icon-dropdown"></span>\n\t\t\t<span>\n\t\t\t\t{{ messagePosition }}\n\t\t\t\t<span class="bx-im-dialog-chat__pinned_counter_control-total">\n\t\t\t\t\t/ {{ totalPinCounter }}\n\t\t\t\t</span>\n\t\t\t</span>\n\t\t</button>\n\t`};const ht={name:"HeaderPin",components:{CounterControl:dt},props:{message:{type:Object,required:true},messagePosition:{type:Number,required:true},showUnpinIcon:{type:Boolean,required:true},totalPinCounter:{type:Number,required:true}},emits:["toggleList","messageUnpin","messageClick"],computed:{typedMessage(){return this.message},isSinglePin(){return this.totalPinCounter===1},authorId(){return this.typedMessage.authorId},author(){return this.$store.getters["users/get"](this.authorId)},text(){return S.Parser.purifyMessage(this.typedMessage)},title(){return this.loc(this.isSinglePin?"IM_DIALOG_CHAT_PINNED_TITLE":"IM_DIALOG_CHAT_PINNED_TITLE_MULTIPLE")}},methods:{loc(t){return this.$Bitrix.Loc.getMessage(t)}},template:`\n\t\t<div class="bx-im-dialog-chat__pin-header">\n\t\t\t<div\n\t\t\t\tclass="bx-im-dialog-chat__pin-header_wrapper"\n\t\t\t\t@click="$emit('messageClick', typedMessage.id)"\n\t\t\t>\n\t\t\t\t<div class="bx-im-dialog-chat__pin-header_title">\n\t\t\t\t\t{{ title }}\n\t\t\t\t</div>\n\t\t\t\t<div class="bx-im-dialog-chat__pin-header_content">\n\t\t\t\t\t<div v-if="author" class="bx-im-dialog-chat__pin-header_user">\n\t\t\t\t\t\t{{ author.name + ':' }}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class="bx-im-dialog-chat__pin-header_text --ellipsis">\n\t\t\t\t\t\t{{ text }}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class="bx-im-dialog-chat__pin-header_controls">\n\t\t\t\t<button\n\t\t\t\t\tv-if="showUnpinIcon && isSinglePin"\n\t\t\t\t\tclass="bx-im-dialog-chat__pinned_icon-header-unpin"\n\t\t\t\t\t@click="$emit('messageUnpin', typedMessage.id)"\n\t\t\t\t></button>\n\t\t\t\t<CounterControl\n\t\t\t\t\tv-else-if="!isSinglePin"\n\t\t\t\t\t:messagePosition="messagePosition"\n\t\t\t\t\t:totalPinCounter="totalPinCounter"\n\t\t\t\t\t@toggleList="$emit('toggleList')"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t`};const ut={name:"PinnedHeader",components:{HeaderTitle:gt,HeaderPin:ht},props:{message:{type:Object,required:true},messagePosition:{type:Number,required:true},showUnpinIcon:{type:Boolean,required:true},totalPinCounter:{type:Number,required:true},isListOpened:{type:Boolean,required:true}},emits:["toggleList","messageUnpin","messageClick"],computed:{typedMessage(){return this.message}},template:`\n\t\t<div class="bx-im-dialog-chat__pinned_header">\n\t\t\t<HeaderTitle\n\t\t\t\tv-if="isListOpened"\n\t\t\t\t:totalPinCounter="totalPinCounter"\n\t\t\t\t@toggleList="$emit('toggleList')"\n\t\t\t/>\n\t\t\t<HeaderPin\n\t\t\t\tv-else\n\t\t\t\t:message="typedMessage"\n\t\t\t\t:messagePosition="messagePosition"\n\t\t\t\t:totalPinCounter="totalPinCounter"\n\t\t\t\t:showUnpinIcon="showUnpinIcon"\n\t\t\t\t@toggleList="$emit('toggleList')"\n\t\t\t\t@messageUnpin="$emit('messageUnpin', typedMessage.id)"\n\t\t\t\t@messageClick="$emit('messageClick', typedMessage.id)"\n\t\t\t/>\n\t\t</div>\n\t`};const pt={name:"PinnedMessages",components:{PinnedMessage:ct,PinnedHeader:ut},props:{dialogId:{type:String,default:""},messages:{type:Array,required:true}},emits:["messageClick","messageUnpin"],data(){return{isListOpened:false,upcomingMessageIndex:0}},computed:{dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},sortedPinnedMessages(){return[...this.messages].sort(((t,e)=>e.id-t.id))},totalPinCounter(){return this.messages.length},canUnpin(){return f.PermissionManager.getInstance().canPerformActionByRole(y.ActionByRole.pinMessage,this.dialogId)},showUnpinIcon(){return!this.isCommentChat&&this.canUnpin},isCommentChat(){return this.dialog.type===y.ChatType.comment},upcomingMessage(){return this.sortedPinnedMessages[this.upcomingMessageIndex]},upcomingMessageDisplayPosition(){return this.upcomingMessageIndex+1}},watch:{messages(t){if(t.length===1){this.toggleList(false)}}},methods:{toggleList(t){this.isListOpened=B.Type.isUndefined(t)?!this.isListOpened:t},incrementHeaderIndex(){const t=this.upcomingMessageIndex+1;if(this.shouldResetIndex(t)){this.resetHeaderIndex()}else{this.upcomingMessageIndex=t}},resetHeaderIndex(){this.upcomingMessageIndex=0},shouldResetIndex(t){return t>=this.totalPinCounter},clickOnHeaderMessage(){this.emitMessageClick(this.sortedPinnedMessages[this.upcomingMessageIndex].id);this.incrementHeaderIndex()},clickOnHeaderMessageFromList(t){const e=t+1;this.upcomingMessageIndex=this.shouldResetIndex(e)?0:e;this.emitMessageClick(this.sortedPinnedMessages[t].id)},emitMessageClick(t){this.$emit("messageClick",t)}},template:`\n\t\t<div class="bx-im-dialog-chat__pinned_container">\n\t\t\t<PinnedHeader\n\t\t\t\t:message="upcomingMessage"\n\t\t\t\t:messagePosition="upcomingMessageDisplayPosition"\n\t\t\t\t:showUnpinIcon="showUnpinIcon"\n\t\t\t\t:totalPinCounter="totalPinCounter"\n\t\t\t\t:isListOpened="isListOpened"\n\t\t\t\t@toggleList="toggleList"\n\t\t\t\t@messageUnpin="$emit('messageUnpin', upcomingMessage.id)"\n\t\t\t\t@messageClick="clickOnHeaderMessage"\n\t\t\t/>\n\t\t\t<transition name="pinned-list">\n\t\t\t\t<div v-if="isListOpened" class="bx-im-dialog-chat__pinned_list">\n\t\t\t\t\t<PinnedMessage\n\t\t\t\t\t\tv-for="(message, index) in sortedPinnedMessages"\n\t\t\t\t\t\t:key="message.id"\n\t\t\t\t\t\t:message="message"\n\t\t\t\t\t\t:showUnpinIcon="showUnpinIcon"\n\t\t\t\t\t\t@messageUnpin="$emit('messageUnpin', message.id)"\n\t\t\t\t\t\t@click="clickOnHeaderMessageFromList(index)"\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</transition>\n\t\t</div>\n\t`};var mt;const bt=44;const vt=60;const Mt=10;const ft=w.MessengerSlider.getInstance().getCurrent();const It=ft==null?void 0:ft.layout.container.getBoundingClientRect();const St=(mt=It==null?void 0:It.top)!=null?mt:0;const Bt=".bx-im-message-default-content__text";const Pt={name:"QuoteButton",props:{dialogId:{type:String,default:""}},data(){return{text:"",message:null,mouseX:0,mouseY:0}},computed:{containerStyle(){return{top:`${this.mouseY-bt-Mt-St}px`,left:`${this.mouseX-vt/2}px`,width:`${vt}px`,height:`${bt}px`}}},mounted(){B.Event.bind(window,"mousedown",this.onMouseDown)},methods:{onMessageMouseUp(t,e){if(e.button===2){return}this.prepareSelectedText();this.message=t;this.mouseX=e.clientX;this.mouseY=e.clientY},onMouseDown(t){const e=this.$refs.container;if(!e||e.contains(t.target)){return}this.$emit("close")},prepareSelectedText(){if(C.Utils.browser.isFirefox()){this.text=window.getSelection().toString();return}const t=window.getSelection().getRangeAt(0);const e=t.cloneContents();let s=e.childNodes;const i=e.querySelector(Bt);if(i){s=i.childNodes}for(const t of s){if(this.isImage(t)){var o;this.text+=(o=t.getAttribute("data-code"))!=null?o:t.getAttribute("alt")}else if(this.isLineBreak(t)){this.text+="\n"}else{this.text+=t.textContent}}},isImage(t){if(!(t instanceof HTMLElement)){return false}return t.tagName.toLowerCase()==="img"},isLineBreak(t){return t.nodeName.toLowerCase()==="br"},isText(t){return t.nodeName==="#text"},isMessageTextNode(t){if(!(t instanceof HTMLElement)){return false}const e=t.matches(Bt);return Boolean(e)},extractTextFromMessageNode(t){const e=t.querySelector(Bt);if(!e){return t.textContent}return e.textContent},onQuoteClick(){P.Quote.sendQuoteEvent(this.message,this.text,this.dialogId);this.$emit("close")}},template:`\n\t\t<div ref="container" @click="onQuoteClick" :style="containerStyle" class="bx-im-dialog-chat__quote-button">\n\t\t\t<div class="bx-im-dialog-chat__quote-icon"></div>\n\t\t\t<div class="bx-im-dialog-chat__quote-icon --hover"></div>\n\t\t</div>\n\t`};const Ct=Object.freeze({accent:"accent",alert:"alert",success:"success"});const wt=Object.freeze({chevronDown:"chevron-down",heart:"heart",atSymbol:"at-symbol",comment:"comment"});const yt={name:"FloatButton",props:{counter:{type:Number,default:0},color:{type:String,required:false,default:Ct.accent,validator:t=>Object.values(Ct).includes(t)},icon:{type:String,required:true,validator:t=>Object.values(wt).includes(t)}},computed:{buttonClassname(){return["bx-im-dialog-chat__float-button",`--color-${this.color}`,`--icon-${this.icon}`]},formattedCounter(){if(this.counter===0){return""}if(this.counter>99){return"99+"}return String(this.counter)}},template:`\n\t\t<div :class="buttonClassname">\n\t\t\t<div class="bx-im-dialog-chat__float-button_icon"></div>\n\t\t\t<div v-if="counter" class="bx-im-dialog-chat__float-button_counter">\n\t\t\t\t{{ formattedCounter }}\n\t\t\t</div>\n\t\t</div>\n\t`};const Tt={name:"ScrollButton",components:{FloatButton:yt},props:{dialogId:{type:String,required:true}},data(){return{}},computed:{dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},floatButtonProps(){return{color:Ct.accent,icon:wt.chevronDown,counter:this.dialog.counter}}},template:`\n\t\t<FloatButton v-bind="floatButtonProps" />\n\t`};const Lt={name:"ReactionsButton",components:{FloatButton:yt},props:{dialogId:{type:String,required:true}},computed:{reactionCounter(){return this.$store.getters["messages/anchors/getCounterInChatByType"](this.dialog.chatId,y.AnchorType.reaction)},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},floatButtonProps(){return{color:Ct.alert,icon:wt.heart,counter:this.reactionCounter}}},template:`\n\t\t<FloatButton v-bind="floatButtonProps" />\n\t`};const xt={name:"MentionsButton",components:{FloatButton:yt},props:{dialogId:{type:String,required:true}},computed:{mentionCounter(){return this.$store.getters["messages/anchors/getCounterInChatByType"](this.dialog.chatId,y.AnchorType.mention)},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},floatButtonProps(){return{color:Ct.accent,icon:wt.atSymbol,counter:this.mentionCounter}}},template:`\n\t\t<FloatButton v-bind="floatButtonProps" />\n\t`};const _t={components:{ScrollButton:Tt,ReactionsButton:Lt,MentionsButton:xt},props:{dialogId:{type:String,default:""},isScrolledUp:{type:Boolean,required:false,default:false}},emits:["scrollButtonClick","reactionsButtonClick","mentionsButtonClick"],computed:{dialogInited(){return this.dialog.inited},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},showScrollButton(){return this.isScrolledUp||this.dialog.hasNextPage},showMentionsButton(){return this.dialogInited&&this.$store.getters["messages/anchors/getCounterInChatByType"](this.dialog.chatId,y.AnchorType.mention)},showReactionsButton(){return this.dialogInited&&this.$store.getters["messages/anchors/getCounterInChatByType"](this.dialog.chatId,y.AnchorType.reaction)},hasAdditionalButtonSlot(){var t;const e=this.$slots["additional-float-button"];if(!e){return false}const s=e();return((t=s[0])==null?void 0:t.children.length)>0}},methods:{onReactionsButtonClick(){this.$emit("reactionsButtonClick")},onMentionsButtonClick(){this.$emit("mentionsButtonClick")},onScrollButtonClick(){this.$emit("scrollButtonClick")}},template:`\n\t\t<TransitionGroup\n\t\t\tname="float-button-transition"\n\t\t\ttag="div"\n\t\t\tclass="bx-im-dialog-chat__float-buttons"\n\t\t>\n\t\t\t<div\n\t\t\t\tv-if="showReactionsButton"\n\t\t\t\tkey="reaction"\n\t\t\t\tclass="bx-im-dialog-chat__float-buttons_button"\n\t\t\t>\n\t\t\t\t<ReactionsButton :dialogId="dialogId" @click="onReactionsButtonClick" />\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-if="showMentionsButton"\n\t\t\t\tkey="mention"\n\t\t\t\tclass="bx-im-dialog-chat__float-buttons_button"\n\t\t\t>\n\t\t\t\t<MentionsButton :dialogId="dialogId" @click="onMentionsButtonClick" />\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tv-if="hasAdditionalButtonSlot"\n\t\t\t\tkey="additionalButton"\n\t\t\t\tclass="bx-im-dialog-chat__float-buttons_button"\n\t\t\t>\n\t\t\t\t<slot name="additional-float-button"></slot>\n\t\t\t</div>\n\t\t</TransitionGroup>\n\t\t<Transition name="scroll-button-transition">\n\t\t\t<div v-if="showScrollButton" class="bx-im-dialog-chat__scroll-button-wrapper">\n\t\t\t\t<ScrollButton :dialogId="dialogId" @click="onScrollButtonClick" />\n\t\t\t</div>\n\t\t</Transition>\n\t`};const Ht={name:"ChatDialog",components:{MessageList:o.MessageList,PinnedMessages:pt,QuoteButton:Pt,FloatButtons:_t,PullStatus:s.PullStatus,ForwardPopup:n.ForwardPopup},props:{dialogId:{type:String,default:""},saveScrollOnExit:{type:Boolean,default:true},resetOnExit:{type:Boolean,default:false}},data(){return{forwardPopup:{show:false,messagesIds:[]},contextMode:{active:false,messageIsLoaded:false},isScrolledUp:false,windowFocused:false,showQuoteButton:false,isJumpingToAnchor:false,messagesToRead:new Set}},computed:{layout(){return this.$store.getters["application/getLayout"]},dialog(){return this.$store.getters["chats/get"](this.dialogId,true)},dialogInited(){return this.dialog.inited},messageCollection(){return this.$store.getters["messages/getByChatId"](this.dialog.chatId)},pinnedMessages(){return this.$store.getters["messages/pin/getPinned"](this.dialog.chatId)},isOpened(){const t=this.$store.getters["application/getLayout"].entityId;return this.dialogId===t},isGuest(){return this.dialog.role===y.UserRole.guest},debouncedScrollHandler(){const t=100;return B.Runtime.debounce(this.getScrollManager().onScroll,t,this.getScrollManager())},debouncedReadHandler(){const t=50;return B.Runtime.debounce(this.readQueuedMessages,t,this)},sequentiallyHighlightMessageHandler(){return at(this.highlightMessage,300,this)},showScrollButton(){return this.isScrolledUp||this.dialog.hasNextPage},anchorMessages(){return this.$store.getters["messages/anchors/getChatMessageIdsWithAnchors"](this.dialog.chatId)},hasCommentsOnTop(){return this.$store.getters["messages/comments/areOpenedForChannel"](this.dialogId)}},watch:{anchorMessages(t,e){const s=ot(t,e);const i=this.getVisibleMessagesManager().getVisibleMessages();s.forEach((t=>{if(i.includes(t)){this.getAnchorService().debouncedReadMessageAnchors(t)}}))},dialogInited(t,e){if(!t||e){return}this.getPullWatchManager().subscribe();this.onChatInited()},hasCommentsOnTop:{handler(t){const e=t===false;if(!e){return}this.readVisibleMessages()},flush:"post"}},created(){u.Logger.warn("Dialog: Chat created",this.dialogId);this.initContextMode()},mounted(){this.getScrollManager().setContainer(this.getContainer());if(this.dialogInited){this.getPullWatchManager().subscribe();this.onChatInited()}else if(!this.dialogInited&&this.messageCollection.length>0){this.scrollOnStart()}this.windowFocused=document.hasFocus();this.subscribeToEvents()},beforeUnmount(){this.unsubscribeFromEvents();if(this.dialogInited){this.saveScrollPosition();void this.handleMessagesOnExit()}this.getPullWatchManager().unsubscribe();this.closeDialogPopups();this.forwardPopup.show=false;this.readAllAnchors()},methods:{async scrollOnStart(){await this.$nextTick();if(this.contextMode.active&&this.contextMode.messageIsLoaded){this.getScrollManager().scrollToMessage(this.layout.contextId);void this.$nextTick((()=>{this.highlightMessage(this.layout.contextId)}));return}if(this.contextMode.active&&!this.contextMode.messageIsLoaded){this.goToMessageContext(this.layout.contextId);return}if(this.dialog.markedId){this.getScrollManager().scrollToMessage(y.DialogBlockType.newMessages);return}if(this.dialog.savedPositionMessageId&&!this.isGuest){u.Logger.warn("Dialog: saved scroll position, scrolling to",this.dialog.savedPositionMessageId);this.getScrollManager().scrollToMessage(this.dialog.savedPositionMessageId,{withDateOffset:false});return}const t=this.$store.getters["chats/getLastReadId"](this.dialogId);const e=t===this.dialog.lastMessageId;if(t>0&&!e){u.Logger.warn('Dialog: scroll to "New messages" mark, lastReadId -',t,"lastMessageId",this.dialog.lastMessageId);this.getScrollManager().scrollToMessage(y.DialogBlockType.newMessages);return}const s=this.$store.getters["messages/getFirstUnread"](this.dialog.chatId);if(t===0||s){this.getScrollManager().setStartScrollNeeded(false);u.Logger.warn("Dialog: dont scroll, hasUnread -",s,"lastReadId",t);return}this.getScrollManager().scrollToBottom()},showLoadingBar(){h.EventEmitter.emit(y.EventType.dialog.showLoadingBar,{dialogId:this.dialogId})},hideLoadingBar(){h.EventEmitter.emit(y.EventType.dialog.hideLoadingBar,{dialogId:this.dialogId})},async goToMessageContext(t,e={}){const{position:s=k.scrollPosition.messageTop}=e;const o=this.$store.getters["messages/hasMessage"]({chatId:this.dialog.chatId,messageId:t});if(o){u.Logger.warn("Dialog: we have this message, scrolling to it",t);await this.getScrollManager().animatedScrollToMessage(t,{position:s});this.highlightMessage(t);return}const{hasAccess:n,errorCode:a}=await l.AccessManager.checkMessageAccess(t);if(!n&&a===y.ErrorCode.message.accessDeniedByTariff){i.Analytics.getInstance().historyLimit.onGoToContextLimitExceeded({dialogId:this.dialogId});c.FeatureManager.chatHistory.openFeatureSlider();return}this.showLoadingBar();await this.getMessageService().loadContext(t);await this.$nextTick();this.hideLoadingBar();this.getScrollManager().scrollToMessage(t,{position:s});await this.$nextTick();this.highlightMessage(t)},highlightMessage(t){const e="bx-im-dialog-chat__highlighted-message";const s=2e3;const i=this.getScrollManager().getDomElementById(t);if(!i){return}B.Dom.addClass(i,e);setTimeout((()=>{B.Dom.removeClass(i,e)}),s)},saveScrollPosition(){if(!this.saveScrollOnExit){return}let t=this.getVisibleMessagesManager().getFirstMessageId();if(this.getScrollManager().isAroundBottom()){t=0}this.$store.dispatch("chats/update",{dialogId:this.dialogId,fields:{savedPositionMessageId:t}})},async handleMessagesOnExit(){if(this.resetOnExit){void this.getChatService().resetChat(this.dialogId);return}await this.getChatService().readChatQueuedMessages(this.dialog.chatId);const t=200;setTimeout((async()=>{this.getMessageService().reloadMessageList()}),t)},readQueuedMessages(){if(!this.messagesCanBeRead()){return}[...this.messagesToRead].forEach((t=>{this.getChatService().readMessage(this.dialog.chatId,t);this.messagesToRead.delete(t)}))},readVisibleMessages(){if(!this.messagesCanBeRead()){return}const t=this.getVisibleMessagesManager().getVisibleMessages();t.forEach((t=>{const e=this.$store.getters["messages/getById"](t);if(!e||e.viewed){return}this.getChatService().readMessage(this.dialog.chatId,t)}))},readAllAnchors(){if(this.$store.getters["messages/anchors/isChatHasAnchors"](this.dialog.chatId)){this.getAnchorService().readChatAnchors(this.dialog.chatId)}},messagesCanBeRead(){if(!this.dialogInited||!this.isChatVisible()){return false}const t=f.PermissionManager.getInstance();return t.canPerformActionByRole(y.ActionByRole.readMessage,this.dialogId)},onChatInited(){this.scrollOnStart();this.readVisibleMessages();void this.$nextTick((()=>{this.getChatService().clearDialogMark(this.dialogId)}));h.EventEmitter.emit(y.EventType.dialog.onDialogInited,{dialogId:this.dialogId})},async onScrollTriggerUp(){if(!this.dialogInited||!this.getContainer()){return}u.Logger.warn("Dialog: scroll triggered UP");const t=this.getContainer();const e=t.scrollHeight-t.clientHeight;if(this.getMessageService().hasPreparedHistoryMessages()){await this.getMessageService().drawPreparedHistoryMessages();this.getScrollManager().adjustScrollOnHistoryAddition(e);return}if(this.getMessageService().isLoading()||!this.dialog.hasPrevPage){return}this.showLoadingBar();await this.getMessageService().loadHistory();this.hideLoadingBar();if(this.getScrollManager().isAtTheTop()){u.Logger.warn("Dialog: we are at the top after history request, inserting messages");await this.getMessageService().drawPreparedHistoryMessages();this.getScrollManager().adjustScrollOnHistoryAddition(e)}},async onScrollTriggerDown(){if(!this.dialogInited||!this.getContainer()){return}u.Logger.warn("Dialog: scroll triggered DOWN");if(this.getMessageService().hasPreparedUnreadMessages()){await this.getMessageService().drawPreparedUnreadMessages();return}if(this.getMessageService().isLoading()||!this.dialog.hasNextPage){return}this.showLoadingBar();await this.getMessageService().loadUnread();this.hideLoadingBar();if(this.getScrollManager().isAroundBottom()){u.Logger.warn("Dialog: we are at the bottom after unread request, inserting messages");await this.getMessageService().drawPreparedUnreadMessages();this.getScrollManager().checkIfChatIsScrolledUp()}},async onScrollToBottom(t){const{chatId:e,threshold:s=y.DialogScrollThreshold.halfScreenUp,animation:i=true}=t.getData();if(this.dialog.chatId!==e){return}if(!this.windowFocused||this.hasVisibleCall()){const t=this.$store.getters["messages/getFirstUnread"](this.dialog.chatId);if(t){await this.$nextTick();this.getScrollManager().scrollToMessage(t);return}}u.Logger.warn("Dialog: scroll to bottom",e,s);if(s===y.DialogScrollThreshold.halfScreenUp&&this.isScrolledUp){return}if(s===y.DialogScrollThreshold.nearTheBottom&&!this.getScrollManager().isAroundBottom()){return}await this.$nextTick();if(i){this.getScrollManager().animatedScrollToBottom();return}this.getScrollManager().scrollToBottom()},onGoToMessageContext(t){const{dialogId:e,messageId:s}=t.getData();if(this.dialog.dialogId!==e){return}this.goToMessageContext(s)},onPinnedMessageClick(t){this.goToMessageContext(t)},onPinnedMessageUnpin(t){this.getMessageService().unpinMessage(this.dialog.chatId,t);i.Analytics.getInstance().messagePins.onUnpin(this.dialog.chatId)},onScroll(t){this.closeDialogPopups();this.debouncedScrollHandler(t)},async onScrollButtonClick(){if(this.getScrollManager().scrollButtonClicked){void this.handleSecondScrollButtonClick();return}this.getScrollManager().scrollButtonClicked=true;if(this.dialog.counter===0){this.showLoadingBar();await this.getMessageService().loadInitialMessages();this.hideLoadingBar();this.getScrollManager().scrollToBottom();return}const t=this.$store.getters["messages/getFirstUnread"](this.dialog.chatId);if(!t){this.showLoadingBar();await this.getMessageService().loadInitialMessages();this.hideLoadingBar();await this.getScrollManager().animatedScrollToMessage(t)}await this.getScrollManager().animatedScrollToMessage(t)},async onMentionsButtonClick(){if(this.isJumpingToAnchor){return}this.isJumpingToAnchor=true;await this.goToNearestMessageWithAnchor(y.AnchorType.mention);this.isJumpingToAnchor=false},async onReactionsButtonClick(){if(this.isJumpingToAnchor){return}this.isJumpingToAnchor=true;await this.goToNearestMessageWithAnchor(y.AnchorType.reaction);this.isJumpingToAnchor=false},async goToNearestMessageWithAnchor(t){const e=this.$store.getters["messages/anchors/getNextMessageIdWithAnchorType"](this.dialog.chatId,t);if(e){await this.goToMessageContext(e,{position:k.scrollPosition.messageTop})}},onWindowFocus(){this.windowFocused=true;this.readVisibleMessages()},onWindowBlur(){this.windowFocused=false},onCallFold(){const t=a.CallManager.getInstance().getCurrentCallDialogId();if(t!==this.dialogId){return}this.readVisibleMessages()},async onShowQuoteButton(t){const{message:e,event:s}=t.getData();const i=f.PermissionManager.getInstance();if(!i.canPerformActionByRole(y.ActionByRole.send,this.dialogId)){return}this.showQuoteButton=true;await this.$nextTick();this.$refs.quoteButton.onMessageMouseUp(e,s)},async handleSecondScrollButtonClick(){this.getScrollManager().scrollButtonClicked=false;if(this.dialog.hasNextPage){this.showLoadingBar();await this.getMessageService().loadContext(this.dialog.lastMessageId);this.hideLoadingBar();h.EventEmitter.emit(y.EventType.dialog.scrollToBottom,{chatId:this.dialog.chatId});return}void this.getScrollManager().animatedScrollToMessage(this.dialog.lastMessageId,{withDateOffset:false})},onShowForwardPopup(t){const{messagesIds:e}=t.getData();this.forwardPopup.messagesIds=e;this.forwardPopup.show=true},onCloseForwardPopup(){this.forwardPopup.messagesIds=[];this.forwardPopup.show=false},onMessageIsVisible(t){const{messageId:e,dialogId:s}=t.getData();if(s!==this.dialogId){return}this.getVisibleMessagesManager().setMessageAsVisible(e);if(this.isChatVisible()===false){return}if(this.$store.getters["messages/anchors/isMessageHasAnchors"](e)){this.readAnchorsIfMessageVisibleLongEnough(e)}const i=this.$store.getters["messages/getById"](e);if(!i.viewed){this.messagesToRead.add(e);this.debouncedReadHandler()}},readAnchorsIfMessageVisibleLongEnough(t){const e=200;if(this.getScrollManager().isScrolling){this.readMessageAnchorsAfterVisibilityThreshold(t,e)}else{this.getAnchorService().debouncedReadMessageAnchors(t)}},readMessageAnchorsAfterVisibilityThreshold(t,e){setTimeout((()=>{if(this.getVisibleMessagesManager().getVisibleMessages().includes(t)){this.sequentiallyHighlightMessageHandler(t);this.getAnchorService().debouncedReadMessageAnchors(t)}}),e)},onMessageIsNotVisible(t){const{messageId:e,dialogId:s}=t.getData();if(s!==this.dialogId){return}this.getVisibleMessagesManager().setMessageAsNotVisible(e)},initContextMode(){const t=r.LayoutManager.getInstance();if(!t.isChatContextAvailable(this.dialogId)){return}this.contextMode.active=true;this.contextMode.messageIsLoaded=!this.dialogInited},getMessageService(){if(!this.messageService){this.messageService=new g.MessageService({chatId:this.dialog.chatId})}return this.messageService},getChatService(){if(!this.chatService){this.chatService=new d.ChatService}return this.chatService},getAnchorService(){if(!this.anchorService){this.anchorService=new H}return this.anchorService},getScrollManager(){if(!this.scrollManager){this.scrollManager=new k;this.scrollManager.subscribe(k.events.onScrollTriggerUp,this.onScrollTriggerUp);this.scrollManager.subscribe(k.events.onScrollTriggerDown,this.onScrollTriggerDown);this.scrollManager.subscribe(k.events.onScrollThresholdPass,(t=>{this.isScrolledUp=t.getData()}))}return this.scrollManager},getPullWatchManager(){if(!this.pullWatchManager){this.pullWatchManager=new K(this.dialogId)}return this.pullWatchManager},getVisibleMessagesManager(){if(!this.visibleMessagesManager){this.visibleMessagesManager=new it}return this.visibleMessagesManager},isChatVisible(){return this.windowFocused&&!this.hasVisibleCall()&&!this.hasCommentsOnTop},hasVisibleCall(){return a.CallManager.getInstance().hasVisibleCall()},closeDialogPopups(){var t,s,i,o,n;this.showQuoteButton=false;(t=e.PopupManager.getPopupById(y.PopupType.dialogAvatarMenu))==null?void 0:t.close();(s=e.PopupManager.getPopupById(y.PopupType.dialogMessageMenu))==null?void 0:s.close();(i=e.PopupManager.getPopupById(y.PopupType.dialogReactionUsers))==null?void 0:i.close();(o=e.PopupManager.getPopupById(y.PopupType.dialogReadUsers))==null?void 0:o.close();(n=e.PopupManager.getPopupById(y.PopupType.messageBaseFileMenu))==null?void 0:n.close()},subscribeToEvents(){h.EventEmitter.subscribe(y.EventType.dialog.scrollToBottom,this.onScrollToBottom);h.EventEmitter.subscribe(y.EventType.dialog.goToMessageContext,this.onGoToMessageContext);h.EventEmitter.subscribe(y.EventType.call.onFold,this.onCallFold);h.EventEmitter.subscribe(y.EventType.dialog.showForwardPopup,this.onShowForwardPopup);h.EventEmitter.subscribe(y.EventType.dialog.showQuoteButton,this.onShowQuoteButton);h.EventEmitter.subscribe(y.EventType.dialog.onMessageIsVisible,this.onMessageIsVisible);h.EventEmitter.subscribe(y.EventType.dialog.onMessageIsNotVisible,this.onMessageIsNotVisible);B.Event.bind(window,"focus",this.onWindowFocus);B.Event.bind(window,"blur",this.onWindowBlur)},unsubscribeFromEvents(){h.EventEmitter.unsubscribe(y.EventType.dialog.scrollToBottom,this.onScrollToBottom);h.EventEmitter.unsubscribe(y.EventType.dialog.goToMessageContext,this.onGoToMessageContext);h.EventEmitter.unsubscribe(y.EventType.call.onFold,this.onCallFold);h.EventEmitter.unsubscribe(y.EventType.dialog.showForwardPopup,this.onShowForwardPopup);h.EventEmitter.unsubscribe(y.EventType.dialog.showQuoteButton,this.onShowQuoteButton);h.EventEmitter.unsubscribe(y.EventType.dialog.onMessageIsVisible,this.onMessageIsVisible);h.EventEmitter.unsubscribe(y.EventType.dialog.onMessageIsNotVisible,this.onMessageIsNotVisible);B.Event.unbind(window,"focus",this.onWindowFocus);B.Event.unbind(window,"blur",this.onWindowBlur)},getContainer(){return this.$refs.container}},template:`\n\t\t<div class="bx-im-dialog-chat__block bx-im-dialog-chat__scope">\n\t\t\t\x3c!-- Top --\x3e\n\t\t\t<slot name="pinned-panel">\n\t\t\t\t<PinnedMessages\n\t\t\t\t\tv-if="pinnedMessages.length > 0"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t:messages="pinnedMessages"\n\t\t\t\t\t@messageClick="onPinnedMessageClick"\n\t\t\t\t\t@messageUnpin="onPinnedMessageUnpin"\n\t\t\t\t/>\n\t\t\t</slot>\n\t\t\t<PullStatus/>\n\t\t\t\x3c!-- Message list --\x3e\n\t\t\t<div @scroll="onScroll" class="bx-im-dialog-chat__scroll-container" ref="container">\n\t\t\t\t<slot name="message-list">\n\t\t\t\t\t<MessageList :dialogId="dialogId" />\n\t\t\t\t</slot>\n\t\t\t</div>\n\t\t\t<FloatButtons\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t:isScrolledUp="isScrolledUp"\n\t\t\t\t@scrollButtonClick="onScrollButtonClick"\n\t\t\t\t@reactionsButtonClick="onReactionsButtonClick"\n\t\t\t\t@mentionsButtonClick="onMentionsButtonClick"\n\t\t\t>\n\t\t\t\t<template #additional-float-button><slot name="additional-float-button" /></template>\n\t\t\t</FloatButtons>\n\t\t\t\x3c!-- Absolute elements --\x3e\n\t\t\t<ForwardPopup\n\t\t\t\tv-if="forwardPopup.show"\n\t\t\t\t:messagesIds="forwardPopup.messagesIds"\n\t\t\t\t:dialogId="dialogId"\n\t\t\t\t@close="onCloseForwardPopup"\n\t\t\t/>\n\t\t\t<Transition name="fade-up">\n\t\t\t\t<QuoteButton\n\t\t\t\t\tv-if="showQuoteButton"\n\t\t\t\t\t:dialogId="dialogId"\n\t\t\t\t\t@close="showQuoteButton = false" \n\t\t\t\t\tclass="bx-im-message-base__quote-button"\n\t\t\t\t\tref="quoteButton"\n\t\t\t\t/>\n\t\t\t</Transition>\n\t\t</div>\n\t`};t.ChatDialog=Ht;t.ScrollManager=k;t.PinnedMessages=pt;t.FloatButton=yt;t.FloatButtonIcon=wt;t.FloatButtonColor=Ct})(this.BX.Messenger.v2.Component.Dialog=this.BX.Messenger.v2.Component.Dialog||{},BX.Main,window,BX.Messenger.v2.Lib,BX.Messenger.v2.Component,BX.Messenger.v2.Component.EntitySelector,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Service,BX.Messenger.v2.Service,BX.Event,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Application,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Component.Elements,BX.Messenger.v2.Lib,BX,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Lib,BX.Messenger.v2.Const); //# sourceMappingURL=chat-dialog.bundle.map.js