diff --git a/src/conversejs/converse.js b/src/conversejs/converse.js
index dd2e74ce58b3d361e263a36392543fdc948119a5..9d0d385a735f3d5b64ed31cb7e82c7a7b076826e 100644
--- a/src/conversejs/converse.js
+++ b/src/conversejs/converse.js
@@ -93211,7 +93211,7 @@ const ChatBoxView = view_View.extend({
    *  - An optional message that serves as the cause for needing to scroll down.
    */
   maybeScrollDown(message) {
-    if ((message === null || message === void 0 ? void 0 : message.get('sender')) === 'me' || !this.model.isHidden()) {
+    if (message.get("sender") === "me" && !message.get('is_archived') || !this.model.isHidden()) {
       this.debouncedScrollDown();
     }
   },
diff --git a/src/conversejs/converse.min.js b/src/conversejs/converse.min.js
index 90c402e673e6c28f9a2804b08b987ff9563267b6..de4f5997b6dca070798b7e4f08efd4a4d80fe58d 100644
--- a/src/conversejs/converse.min.js
+++ b/src/conversejs/converse.min.js
@@ -474,7 +474,7 @@ const Cm=function(e){this.views={},this.keys=()=>Object.keys(this.views),this.ge
  * @module converse-chatview
  * @copyright 2020, the Converse.js contributors
  * @license Mozilla Public License (MPLv2)
- */const{Strophe:hv,dayjs:fv}=Yc.env,pv=Yc.env.utils,gv=jd.extend({length:200,className:"chatbox hidden",is_chatroom:!1,events:{"click .chatbox-navback":"showControlBox","click .new-msgs-indicator":"viewUnreadMessages","click .send-button":"onFormSubmitted","click .toggle-clear":"clearMessages","input .chat-textarea":"inputChanged","keydown .chat-textarea":"onKeyDown","keyup .chat-textarea":"onKeyUp","paste .chat-textarea":"onPaste"},async initialize(){this.initDebounced(),this.listenTo(this.model,"change:composing_spoiler",this.renderMessageForm),this.listenTo(this.model,"change:hidden",e=>e.get("hidden")?this.hide():this.show()),this.listenTo(this.model,"change:status",this.onStatusMessageChanged),this.listenTo(this.model,"destroy",this.remove),this.listenTo(this.model,"show",this.show),this.listenTo(this.model,"vcard:change",this.renderHeading),this.model.contact&&this.listenTo(this.model.contact,"destroy",this.renderHeading),this.model.rosterContactAdded&&this.model.rosterContactAdded.then(()=>{this.listenTo(this.model.contact,"change:nickname",this.renderHeading),this.renderHeading()}),this.listenTo(this.model.presence,"change:show",this.onPresenceChanged),this.render(),this.listenTo(this.model.messages,"add",this.onMessageAdded),this.listenTo(this.model.messages,"remove",this.renderChatHistory),this.listenTo(this.model.messages,"rendered",this.maybeScrollDown),this.listenTo(this.model.messages,"reset",this.renderChatHistory),this.listenTo(this.model.notifications,"change",this.renderNotifications),this.listenTo(this.model,"change:show_help_messages",this.renderHelpMessages),await this.updateAfterMessagesFetched(),this.model.maybeShow(),qc.trigger("chatBoxViewInitialized",this)},initDebounced(){this.markScrolled=Tc(this._markScrolled,100),this.debouncedScrollDown=Tc(this.scrollDown,100),qc.settings.get("debounced_content_rendering")?(this.renderChatHistory=Tc(()=>this.renderChatContent(!1),100),this.renderNotifications=Tc(()=>this.renderChatContent(!0),100)):(this.renderChatHistory=()=>this.renderChatContent(!1),this.renderNotifications=()=>this.renderChatContent(!0))},render(){const e=Lm(Object.assign(this.model.toJSON(),{markScrolled:e=>this.markScrolled(e)}));return Wa(e,this.el),this.content=this.el.querySelector(".chat-content"),this.notifications=this.el.querySelector(".chat-content__notifications"),this.msgs_container=this.el.querySelector(".chat-content__messages"),this.help_container=this.el.querySelector(".chat-content__help"),this.renderChatContent(),this.renderMessageForm(),this.renderHeading(),this},onMessageAdded(e){this.renderChatHistory(),pv.isNewMessage(e)&&("me"===e.get("sender")?this.model.set("scrolled",!1):this.model.get("scrolled",!0)&&this.showNewMessagesIndicator())},getNotifications(){return this.model.notifications.get("chat_state")===Lc.COMPOSING?dd("%1$s is typing",this.model.getDisplayName()):this.model.notifications.get("chat_state")===Lc.PAUSED?dd("%1$s has stopped typing",this.model.getDisplayName()):this.model.notifications.get("chat_state")===Lc.GONE?dd("%1$s has gone away",this.model.getDisplayName()):""},getHelpMessages:()=>["<strong>/clear</strong>: ".concat(dd("Remove messages")),"<strong>/close</strong>: ".concat(dd("Close this chat")),"<strong>/me</strong>: ".concat(dd("Write in the third person")),"<strong>/help</strong>: ".concat(dd("Show this menu"))],renderHelpMessages(){Wa(Ga(uv(),this.model,this.getHelpMessages(),!this.model.get("show_help_messages"),this.model.get("type")),this.help_container)},renderChatContent(e=!1){this.tpl_chat_content||(this.tpl_chat_content=e=>Ga(lv(),this,e.messages,e.notifications));const t=this.model.messages.models,n=e?t:Array.from(t);Wa(this.tpl_chat_content({messages:n,notifications:this.getNotifications()}),this.msgs_container)},renderToolbar(){if(!qc.settings.get("show_toolbar"))return this;const e=Object.assign({model:this.model,chatview:this},this.model.toJSON(),this.getToolbarOptions());return Wa((e=>{const t=qc.settings.get("message_limit"),n=qc.settings.get("visible_toolbar_buttons").call,r=qc.settings.get("visible_toolbar_buttons").emoji,i=qc.settings.get("show_send_button"),s=qc.settings.get("visible_toolbar_buttons").spoiler,o=qc.settings.get("show_toolbar");return Ga(Vm(),e.chatview,e.model,e.composing_spoiler,e.hidden_occupants,e.is_groupchat,n,r,e.show_occupants_toggle,i,s,o,t)})(e),this.el.querySelector(".chat-toolbar")),qc.trigger("renderToolbar",this),this},renderMessageForm(){var e,t;const n=this.el.querySelector(".message-form-container");var r;Wa((r=Object.assign(this.model.toJSON(),{hint_value:null===(e=this.el.querySelector(".spoiler-hint"))||void 0===e?void 0:e.value,label_message:this.model.get("composing_spoiler")?dd("Hidden message"):dd("Message"),label_spoiler_hint:dd("Optional hint"),message_value:null===(t=this.el.querySelector(".chat-textarea"))||void 0===t?void 0:t.value,show_send_button:qc.settings.get("show_send_button"),show_toolbar:qc.settings.get("show_toolbar"),unread_msgs:dd("You have unread messages")}),Ga(Wm(),r.unread_msgs,r.label_spoiler_hint||"",r.hint_value||"",r.composing_spoiler?"":"hidden",r.show_send_button?"chat-textarea-send-button":"",r.composing_spoile?"spoiler":"",r.label_message,r.message_value||"")),n),this.el.addEventListener("focusin",e=>this.emitFocused(e)),this.el.addEventListener("focusout",e=>this.emitBlurred(e)),this.renderToolbar()},showControlBox(){Lc.chatboxviews.get("controlbox").show(),this.hide()},showUserDetailsModal(e){e.preventDefault(),void 0===this.user_details_modal&&(this.user_details_modal=new Lc.UserDetailsModal({model:this.model})),this.user_details_modal.show(e)},onDragOver(e){e.preventDefault()},onDrop(e){0!=e.dataTransfer.files.length&&(e.preventDefault(),this.model.sendFiles(e.dataTransfer.files))},async renderHeading(){const e=await this.generateHeadingTemplate();Wa(e,this.el.querySelector(".chat-head-chatbox"))},async getHeadingStandaloneButton(e){const t=await e;return Ga(cv(),t.a_class,t.icon_class,t.handler,t.i18n_title)},async getHeadingDropdownItem(e){const t=await e;return Ga(av(),t.a_class,t.handler,t.i18n_title,t.icon_class,t.i18n_text)},async generateHeadingTemplate(){var e;const t=null===(e=this.model)||void 0===e?void 0:e.vcard,n=t?t.toJSON():{},r=await this.getHeadingButtons(),i=r.filter(e=>e.standalone),s=r.filter(e=>!e.standalone);return(e=>{const t={alt_text:dd("The User's Profile Image"),extra_classes:"",height:40,width:40};return Ga(Um(),e.status?"":"chatbox-title--no-desc",e._converse.api.settings.get("singleton")?"":Ga(Hm()),e.type!==e._converse.HEADLINES_TYPE?Ga(qm(),bf(Object.assign({},e,t))):"",e.jid,e.url?Ga(Bm(),e.url,e.display_name):e.display_name,e.dropdown_btns.length?Ga(Fm(),e.dropdown_btns):"",e.standalone_btns.length?(e=>e.standalone_btns.reverse().map(e=>oh(e,"")))(e):"",e.status?Ga(zm(),e.status):"")})(Object.assign(n,this.model.toJSON(),{_converse:Lc,dropdown_btns:s.map(e=>this.getHeadingDropdownItem(e)),standalone_btns:i.map(e=>this.getHeadingStandaloneButton(e)),display_name:this.model.getDisplayName()}))},getHeadingButtons(){const e=[{a_class:"show-user-details-modal",handler:e=>this.showUserDetailsModal(e),i18n_text:dd("Details"),i18n_title:dd("See more information about this person"),icon_class:"fa-id-card",name:"details",standalone:"overlayed"===qc.settings.get("view_mode")}];return qc.settings.get("singleton")||e.push({a_class:"close-chatbox-button",handler:e=>this.close(e),i18n_text:dd("Close"),i18n_title:dd("Close and end this conversation"),icon_class:"fa-times",name:"close",standalone:"overlayed"===qc.settings.get("view_mode")}),Lc.api.hook("getHeadingButtons",this,e)},getToolbarOptions:()=>({}),async updateAfterMessagesFetched(){await this.model.messages.fetched,this.renderChatContent(),this.insertIntoDOM(),this.scrollDown(),qc.trigger("afterMessagesFetched",this.model)},maybeScrollDown(e){"me"!==(null==e?void 0:e.get("sender"))&&this.model.isHidden()||this.debouncedScrollDown()},scrollDown(e){var t,n;if(null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.model.get("scrolled")&&pv.safeSave(this.model,{scrolled:!1,scrollTop:null}),this.msgs_container.scrollTo){const e=this.msgs_container.scrollTop?"smooth":"auto";this.msgs_container.scrollTo({top:this.msgs_container.scrollHeight,behavior:e})}else this.msgs_container.scrollTop=this.msgs_container.scrollHeight;this.onScrolledDown()},maintainScrollTop(){const e=this.model.get("scrollTop");e?this.msgs_container.scrollTop=e:this.scrollDown()},insertIntoDOM(){return Lc.chatboxviews.insertRowColumn(this.el),qc.trigger("chatBoxInsertedIntoDOM",this),this},addSpinner(e=!1){if(null===this.el.querySelector(".spinner")){const t=pv.getElementFromTemplateResult(Tf());e?(this.content.insertAdjacentElement("beforeend",t),this.scrollDown()):this.content.insertAdjacentElement("afterbegin",t)}},clearSpinner(){this.content.querySelectorAll(".spinner").forEach(pv.removeElement)},onStatusMessageChanged(e){this.renderHeading(),qc.trigger("contactStatusMessageChanged",{contact:e.attributes,message:e.get("status")})},shouldShowOnTextMessage(){return!Lc.isUniView()&&!pv.isVisible(this.el)},markFollowups(e){const t=e.getAttribute("data-from"),n=e.previousElementSibling,r=fv(e.getAttribute("data-isodate")),i=e.nextElementSibling;pv.hasClass("chat-msg--action",e)||pv.hasClass("chat-msg--action",n)||pv.hasClass("chat-info",e)||pv.hasClass("chat-info",n)||n.getAttribute("data-from")!==t||!r.isBefore(fv(n.getAttribute("data-isodate")).add(10,"minutes"))||e.getAttribute("data-encrypted")!==n.getAttribute("data-encrypted")||pv.addClass("chat-msg--followup",e),i&&(!pv.hasClass("chat-msg--action",e)&&pv.hasClass("chat-info",e)&&i.getAttribute("data-from")===t&&fv(i.getAttribute("data-isodate")).isBefore(r.add(10,"minutes"))&&e.getAttribute("data-encrypted")===i.getAttribute("data-encrypted")?pv.addClass("chat-msg--followup",i):pv.removeClass("chat-msg--followup",i))},parseMessageForCommands(e){const t=e.replace(/^\s*/,"").match(/^\/(.*)\s*$/);if(t){if("clear"===t[1])return this.clearMessages(),!0;if("close"===t[1])return this.close(),!0;if("help"===t[1])return this.model.set({show_help_messages:!0}),!0}},async onFormSubmitted(e){var t;e.preventDefault();const n=this.el.querySelector(".chat-textarea"),r=n.value.trim();if(qc.settings.get("message_limit")&&r.length>qc.settings.get("message_limit")||!r.replace(/\s/g,"").length)return;if(!Lc.connection.authenticated){const e=dd("Sorry, the connection has been lost, and your message could not be sent");return qc.alert("error",dd("Error"),e),void qc.connection.reconnect()}let i,s={};this.model.get("composing_spoiler")&&(s=this.el.querySelector("form.sendXMPPMessage input.spoiler-hint"),i=s.value),pv.addClass("disabled",n),n.setAttribute("disabled","disabled"),null===(t=this.el.querySelector("converse-emoji-dropdown"))||void 0===t||t.hideMenu();const o=this.parseMessageForCommands(r),a=o?null:await this.model.sendMessage(r,i);(o||a)&&(s.value="",n.value="",pv.removeClass("correcting",n),n.style.height="auto",this.updateCharCounter(n.value)),a&&qc.trigger("messageSend",a),"overlayed"===qc.settings.get("view_mode")&&(this.msgs_container.parentElement.style.display="none"),n.removeAttribute("disabled"),pv.removeClass("disabled",n),"overlayed"===qc.settings.get("view_mode")&&(this.msgs_container.parentElement.style.display=""),this.model.setChatState(Lc.ACTIVE,{silent:!0}),n.focus()},updateCharCounter(e){if(qc.settings.get("message_limit")){const t=this.el.querySelector(".message-limit"),n=qc.settings.get("message_limit")-e.length;t.textContent=n,n<1?pv.addClass("error",t):pv.removeClass("error",t)}},onPaste(e){if(0!==e.clipboardData.files.length)return e.preventDefault(),void this.model.sendFiles(Array.from(e.clipboardData.files));this.updateCharCounter(e.clipboardData.getData("text/plain"))},autocompleteInPicker(e,t){const n=this.el.querySelector("converse-emoji-dropdown"),r=this.el.querySelector("converse-emoji-picker");if(r&&n)return r.model.set({ac_position:e.selectionStart,autocompleting:t,query:t}),n.showMenu(),!0},onEmojiReceivedFromPicker(e){const t=this.el.querySelector("converse-emoji-picker").model,n=t.get("autocompleting"),r=t.get("ac_position");this.insertIntoTextArea(e,n,!1,r)},onKeyUp(e){this.updateCharCounter(e.target.value)},onKeyDown(e){if(!e.ctrlKey){if(!e.shiftKey&&!e.altKey&&!e.metaKey)if(e.keyCode===Yc.keycodes.TAB){const t=pv.getCurrentWord(e.target,null,/(:.*?:)/g);t.startsWith(":")&&this.autocompleteInPicker(e.target,t)&&(e.preventDefault(),e.stopPropagation())}else{if(e.keyCode===Yc.keycodes.FORWARD_SLASH)return;if(e.keyCode===Yc.keycodes.ESCAPE)return this.onEscapePressed(e);if(e.keyCode===Yc.keycodes.ENTER)return this.onEnterPressed(e);if(e.keyCode!==Yc.keycodes.UP_ARROW||e.target.selectionEnd){if(e.keyCode===Yc.keycodes.DOWN_ARROW&&e.target.selectionEnd===e.target.value.length&&pv.hasClass("correcting",this.el.querySelector(".chat-textarea")))return this.editLaterMessage()}else{const e=this.el.querySelector(".chat-textarea");if(!e.value||pv.hasClass("correcting",e))return this.editEarlierMessage()}}[Yc.keycodes.SHIFT,Yc.keycodes.META,Yc.keycodes.META_RIGHT,Yc.keycodes.ESCAPE,Yc.keycodes.ALT].includes(e.keyCode)||this.model.get("chat_state")!==Lc.COMPOSING&&this.model.setChatState(Lc.COMPOSING)}},getOwnMessages(){return this.model.messages.filter({sender:"me"})},onEnterPressed(e){return this.onFormSubmitted(e)},onEscapePressed(e){e.preventDefault();const t=this.model.messages.findLastIndex("correcting"),n=t>=0?this.model.messages.at(t):null;n&&n.save("correcting",!1),this.insertIntoTextArea("",!0,!1)},async onMessageRetractButtonClicked(e){if("me"!==e.get("sender"))return Pn.error("onMessageRetractButtonClicked called for someone else's message!");const t=dd("Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere."),n=[dd("Are you sure you want to retract this message?")];qc.settings.get("show_retraction_warning")&&(n[1]=t),await qc.confirm(dd("Confirm"),n)&&this.model.retractOwnMessage(e)},onMessageEditButtonClicked(e){var t;const n=this.model.messages.findWhere("correcting"),r=null===(t=this.el.querySelector(".chat-textarea"))||void 0===t?void 0:t.value;(!r||n&&n.get("message")===r||confirm(dd("You have an unsent message which will be lost if you continue. Are you sure?")))&&(n!==e?(null==n||n.save("correcting",!1),e.save("correcting",!0),this.insertIntoTextArea(pv.prefixMentions(e),!0,!0)):(e.save("correcting",!1),this.insertIntoTextArea("",!0,!1)))},editLaterMessage(){let e,t=this.model.messages.findLastIndex("correcting");if(t>=0)for(this.model.messages.at(t).save("correcting",!1);t<this.model.messages.length-1;){t+=1;const n=this.model.messages.at(t);if(n.get("editable")){e=n;break}}e?(this.insertIntoTextArea(pv.prefixMentions(e),!0,!0),e.save("correcting",!0)):this.insertIntoTextArea("",!0,!1)},editEarlierMessage(){let e,t=this.model.messages.findLastIndex("correcting");if(t>=0)for(this.model.messages.at(t).save("correcting",!1);t>0;){t-=1;const n=this.model.messages.at(t);if(n.get("editable")){e=n;break}}e=e||this.getOwnMessages().reverse().find(e=>e.get("editable")),e&&(this.insertIntoTextArea(pv.prefixMentions(e),!0,!0),e.save("correcting",!0))},inputChanged(e){const t=e.target.scrollHeight+"px";e.target.style.height!=t&&(e.target.style.height="auto",e.target.style.height=t)},async clearMessages(e){return e&&e.preventDefault&&e.preventDefault(),!0===confirm(dd("Are you sure you want to clear the messages from this conversation?"))&&await this.model.clearMessages(),this},insertIntoTextArea(e,t=!1,n=!1,r){const i=this.el.querySelector(".chat-textarea");if(n?pv.addClass("correcting",i):pv.removeClass("correcting",i),t)i.value=r&&"string"==typeof t?i.value.replace(new RegExp(t,"g"),(n,i)=>i==r-t.length?e+" ":n):e;else{let t=i.value;t&&" "!==t[t.length-1]&&(t+=" "),i.value=t+e+" "}this.updateCharCounter(i.value),pv.placeCaretAtEnd(i)},onPresenceChanged(e){const t=e.get("show"),n=this.model.getDisplayName();let r;pv.isVisible(this.el)&&("offline"===t?r=dd("%1$s has gone offline",n):"away"===t?r=dd("%1$s has gone away",n):"dnd"===t?r=dd("%1$s is busy",n):"online"===t&&(r=dd("%1$s is online",n)),r&&this.model.createMessage({message:r,type:"info"}))},async close(e){return e&&e.preventDefault&&e.preventDefault(),Lc.router.history.getFragment()==="converse/chat?jid="+this.model.get("jid")&&Lc.router.navigate(""),qc.connection.connected()&&(this.model.setChatState(Lc.INACTIVE),this.model.sendChatState()),await this.model.close(),this.remove(),qc.trigger("chatBoxClosed",this),this},emitBlurred(e){this.el.contains(document.activeElement)||this.el.contains(e.relatedTarget)||qc.trigger("chatBoxBlurred",this,e)},emitFocused(e){this.el.contains(e.relatedTarget)||qc.trigger("chatBoxFocused",this,e)},focus(){const e=this.el.getElementsByClassName("chat-textarea")[0];return e&&document.activeElement!==e&&e.focus(),this},maybeFocus(){qc.settings.get("auto_focus")&&this.focus()},hide(){return this.el.classList.add("hidden"),this},afterShown(){this.model.clearUnreadMsgCounter(),this.model.setChatState(Lc.ACTIVE),this.scrollDown(),this.maybeFocus()},show(){pv.isVisible(this.el)?this.maybeFocus():(qc.trigger("beforeShowingChatView",this),qc.settings.get("animate")?pv.fadeIn(this.el,()=>this.afterShown()):(pv.showElement(this.el),this.afterShown()))},showNewMessagesIndicator(){pv.showElement(this.el.querySelector(".new-msgs-indicator"))},hideNewMessagesIndicator(){const e=this.el.querySelector(".new-msgs-indicator");null!==e&&e.classList.add("hidden")},_markScrolled:function(e){let t=!0,n=null;this.msgs_container.scrollTop+this.msgs_container.clientHeight>=this.msgs_container.scrollHeight-62?(t=!1,this.onScrolledDown()):0===this.msgs_container.scrollTop?qc.trigger("chatBoxScrolledUp",this):n=e.target.scrollTop,pv.safeSave(this.model,{scrolled:t,scrollTop:n})},viewUnreadMessages(){this.model.save({scrolled:!1,scrollTop:null}),this.scrollDown()},onScrolledDown(){this.hideNewMessagesIndicator(),!this.model.isHidden()&&this.model.clearUnreadMsgCounter(),qc.trigger("chatBoxScrolledDown",{chatbox:this.model})},onWindowStateChanged(e){"visible"===e?this.model.isHidden()||this.model.get("num_unread",0)&&this.model.clearUnreadMsgCounter():"hidden"===e&&(this.model.setChatState(Lc.INACTIVE,{silent:!0}),this.model.sendChatState())}});let mv;Yc.plugins.add("converse-chatview",{dependencies:["converse-chatboxviews","converse-chat","converse-disco","converse-modal"],initialize(){qc.settings.extend({auto_focus:!0,debounced_content_rendering:!0,filter_url_query_params:null,image_urls_regex:null,message_limit:0,muc_hats:["xep317"],role_affiliation_hat_conversions:{},show_images_inline:!0,show_message_avatar:!0,show_retraction_warning:!0,show_send_button:!0,show_toolbar:!0,time_format:"HH:mm",use_system_emojis:!0,visible_toolbar_buttons:{call:!1,clear:!0,emoji:!0,spoiler:!0}}),Lc.ChatBoxView=gv,Lc.UserDetailsModal=Kd.extend({id:"user-details-modal",events:{"click button.refresh-contact":"refreshContact","click .fingerprint-trust .btn input":"toggleDeviceTrust"},initialize(){Kd.prototype.initialize.apply(this,arguments),this.model.rosterContactAdded.then(()=>this.registerContactEventHandlers()),this.listenTo(this.model,"change",this.render),this.registerContactEventHandlers(),qc.trigger("userDetailsModalInitialized",this.model)},toHTML(){var e;const t=null===(e=this.model)||void 0===e?void 0:e.vcard,n=t?t.toJSON():{};return ov(Object.assign(this.model.toJSON(),n,{_converse:Lc,allow_contact_removal:qc.settings.get("allow_contact_removal"),display_name:this.model.getDisplayName(),is_roster_contact:void 0!==this.model.contact,removeContact:e=>this.removeContact(e),view:this,utils:pv}))},registerContactEventHandlers(){void 0!==this.model.contact&&(this.listenTo(this.model.contact,"change",this.render),this.listenTo(this.model.contact.vcard,"change",this.render),this.model.contact.on("destroy",()=>{delete this.model.contact,this.render()}))},async refreshContact(e){e&&e.preventDefault&&e.preventDefault();const t=this.el.querySelector(".fa-refresh");pv.addClass("fa-spin",t);try{await qc.vcard.update(this.model.contact.vcard,!0)}catch(e){Pn.fatal(e),this.alert(dd("Sorry, something went wrong while trying to refresh"),"danger")}pv.removeClass("fa-spin",t)},removeContact(e){if(e&&e.preventDefault&&e.preventDefault(),!qc.settings.get("allow_contact_removal"))return;!0===confirm(dd("Are you sure you want to remove this contact?"))&&(this.modal.hide(),setTimeout(()=>{this.model.contact.removeFromRoster(()=>this.model.contact.destroy(),e=>{Pn.error(e),qc.alert("error",dd("Error"),[dd("Sorry, there was an error while trying to remove %1$s as a contact.",this.model.contact.getDisplayName())])})},1))}}),qc.listen.on("chatBoxViewsInitialized",()=>{const e=Lc.chatboxviews;Lc.chatboxes.on("add",async t=>{e.get(t.get("id"))||t.get("type")!==Lc.PRIVATE_CHAT_TYPE||(await t.initialized,e.add(t.get("id"),new Lc.ChatBoxView({model:t})))})}),qc.listen.on("windowStateChanged",(function(e){Lc.chatboxviews&&Lc.chatboxviews.forEach(t=>{"controlbox"!==t.model.get("id")&&t.onWindowStateChanged(e.state)})})),qc.listen.on("connected",()=>qc.disco.own.features.add(hv.NS.SPOILER)),Object.assign(qc,{chatviews:{get:e=>void 0===e?Object.values(Lc.chatboxviews.getAll()):"string"==typeof e?Lc.chatboxviews.get(e):e.map(e=>Lc.chatboxviews.get(e))}})}});let vv=0;function _v(e){mv=e}function bv(){mv=null,vv=0}const yv=Symbol("haunted.phase"),wv=Symbol("haunted.hook"),Sv=Symbol("haunted.update"),xv=Symbol("haunted.commit"),Ev=Symbol("haunted.effects"),Av=Symbol("haunted.layoutEffects");class Cv{constructor(e,t){this.update=e,this.host=t,this[wv]=new Map,this[Ev]=[],this[Av]=[]}run(e){_v(this);let t=e();return bv(),t}_runEffects(e){let t=this[e];_v(this);for(let e of t)e.call(this);bv()}runEffects(){this._runEffects(Ev)}runLayoutEffects(){this._runEffects(Av)}teardown(){this[wv].forEach(e=>{"function"==typeof e.teardown&&e.teardown()})}}const jv=Promise.resolve().then.bind(Promise.resolve());function Tv(){let e,t=[];function n(){e=null;let n=t;t=[];for(var r=0,i=n.length;r<i;r++)n[r]()}return function(r){t.push(r),null==e&&(e=jv(n))}}const Ov=Tv(),kv=Tv();class Nv{constructor(e,t){this.renderer=e,this.host=t,this.state=new Cv(this.update.bind(this),t),this[yv]=null,this._updateQueued=!1}update(){this._updateQueued||(Ov(()=>{let e=this.handlePhase(Sv);kv(()=>{this.handlePhase(xv,e),kv(()=>{this.handlePhase(Ev)})}),this._updateQueued=!1}),this._updateQueued=!0)}handlePhase(e,t){switch(this[yv]=e,e){case xv:return this.commit(t),void this.runEffects(Av);case Sv:return this.render();case Ev:return this.runEffects(Ev)}this[yv]=null}render(){return this.state.run(()=>this.renderer.call(this.host,this.host))}runEffects(e){this.state._runEffects(e)}teardown(){this.state.teardown()}}function Iv(e){class t extends Nv{constructor(e,t,n){super(e,n||t),this.frag=t}commit(t){e(t,this.frag)}}return function(e,n,r){const i=(r||n||{}).baseElement||HTMLElement,{observedAttributes:s=[],useShadowDOM:o=!0,shadowRootInit:a={}}=r||n||{};class c extends i{constructor(){super(),!1===o?this._scheduler=new t(e,this):(this.attachShadow({mode:"open",...a}),this._scheduler=new t(e,this.shadowRoot,this))}static get observedAttributes(){return e.observedAttributes||s||[]}connectedCallback(){this._scheduler.update()}disconnectedCallback(){this._scheduler.teardown()}attributeChangedCallback(e,t,n){if(t===n)return;let r=""===n||n;Reflect.set(this,((e="")=>e.replace(/-+([a-z])?/g,(e,t)=>t?t.toUpperCase():""))(e),r)}}const l=new Proxy(i.prototype,{getPrototypeOf:e=>e,set(e,t,n,r){let i;if(t in e){if(i=Object.getOwnPropertyDescriptor(e,t),i&&i.set)return i.set.call(r,n),!0;Reflect.set(e,t,n)}return i="symbol"==typeof t||"_"===t[0]?{enumerable:!0,configurable:!0,writable:!0,value:n}:function(e){let t=e;return Object.freeze({enumerable:!0,configurable:!0,get:()=>t,set(e){t=e,this._scheduler.update()}})}(n),Object.defineProperty(r,t,i),i.set&&i.set.call(r,n),!0}});return Object.setPrototypeOf(c.prototype,l),c}}class Mv{constructor(e,t){this.id=e,this.state=t}}function Rv(e,...t){let n=vv++,r=mv[wv],i=r.get(n);return i||(i=new e(n,mv,...t),r.set(n,i)),i.update(...t)}function Dv(e){return Rv.bind(null,e)}function Pv(e){return Dv(class extends Mv{constructor(t,n,r,i){super(t,n),e(n,this)}update(e,t){this.callback=e,this.lastValues=this.values,this.values=t}call(){this.values&&!this.hasChanged()||this.run()}run(){this.teardown(),this._teardown=this.callback.call(this.state)}teardown(){"function"==typeof this._teardown&&this._teardown()}hasChanged(){return!this.lastValues||this.values.some((e,t)=>this.lastValues[t]!==e)}})}function Lv(e,t){e[Ev].push(t)}Pv(Lv);const zv=Dv(class extends Mv{constructor(e,t,n){super(e,t),this._updater=this._updater.bind(this),this._ranEffect=!1,this._unsubscribe=null,Lv(t,this)}update(e){if(this.state.virtual)throw new Error("can't be used with virtual components");return this.Context!==e&&(this._subscribe(e),this.Context=e),this.value}call(){this._ranEffect||(this._ranEffect=!0,this._unsubscribe&&this._unsubscribe(),this._subscribe(this.Context),this.state.update())}_updater(e){this.value=e,this.state.update()}_subscribe(e){const t={Context:e,callback:this._updater};this.state.host.dispatchEvent(new CustomEvent("haunted.context",{detail:t,bubbles:!0,cancelable:!0,composed:!0}));const{unsubscribe:n,value:r}=t;this.value=n?r:e.defaultValue,this._unsubscribe=n}teardown(){this._unsubscribe&&this._unsubscribe()}});Dv(class extends Mv{constructor(e,t,n,r){super(e,t),this.value=n(),this.values=r}update(e,t){return this.hasChanged(t)&&(this.values=t,this.value=e()),this.value}hasChanged(e=[]){return e.some((e,t)=>this.values[t]!==e)}});Pv((function(e,t){e[Av].push(t)})),Dv(class extends Mv{constructor(e,t,n){super(e,t),this.updater=this.updater.bind(this),"function"==typeof n&&(n=n()),this.makeArgs(n)}update(){return this.args}updater(e){if("function"==typeof e){const t=e,[n]=this.args;e=t(n)}this.makeArgs(e),this.state.update()}makeArgs(e){this.args=Object.freeze([e,this.updater])}}),Dv(class extends Mv{constructor(e,t,n,r,i){super(e,t),this.dispatch=this.dispatch.bind(this),this.currentState=void 0!==i?i(r):r}update(e){return this.reducer=e,[this.currentState,this.dispatch]}dispatch(e){this.currentState=this.reducer(this.currentState,e),this.state.update()}});const Fv=Array.prototype.includes;const{component:Bv,createContext:qv}=function({render:e}){const t=Iv(e),n=function(e){return t=>{const n={Provider:class extends HTMLElement{constructor(){super(),this.listeners=new Set,this.addEventListener("haunted.context",this)}disconnectedCallback(){this.removeEventListener("haunted.context",this)}handleEvent(e){const{detail:t}=e;t.Context===n&&(t.value=this.value,t.unsubscribe=this.unsubscribe.bind(this,t.callback),this.listeners.add(t.callback),e.stopPropagation())}unsubscribe(e){this.listeners.delete(e)}set value(e){this._value=e;for(let t of this.listeners)t(e)}get value(){return this._value}},Consumer:e((function({render:e}){return e(zv(n))})),defaultValue:t};return n}}(t);return{component:t,createContext:n}}({render:Wa});!function(){const e=new WeakMap,t=new WeakMap;class n extends Nv{constructor(e,t){super(e,t),this.state.virtual=!0}render(){return this.state.run(()=>this.renderer.apply(this.host,this.args))}commit(e){this.host.setValue(e),this.host.commit()}teardown(){super.teardown();let n=t.get(this);e.delete(n)}}}();function Hv(){const e=Wv(['\n            <p class="brand-subtitle">','</p>\n            <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://conversejs.org">Open Source</a> XMPP chat client brought to you by <a target="_blank" rel="nofollow" href="https://opkode.com">Opkode</a> </p>\n            <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">Translate</a> it into your own language</p>']);return Hv=function(){return e},e}function Uv(){const e=Wv(['<p class="byline">messaging freedom</p>']);return Uv=function(){return e},e}function $v(){const e=Wv(['\n        <a class="brand-heading" href="https://conversejs.org" target="_blank" rel="noopener">\n            <span class="brand-name-wrapper ','">\n                <svg class="converse-svg-logo"\n                    xmlns:svg="http://www.w3.org/2000/svg"\n                    xmlns="http://www.w3.org/2000/svg"\n                    xmlns:xlink="http://www.w3.org/1999/xlink"\n                    viewBox="0 0 364 364">\n                    <title>Converse</title>\n                    <g class="cls-1" id="g904">\n                        <g data-name="Layer 2">\n                            <g data-name="Layer 7">\n                                <path\n                                    class="cls-3"\n                                    d="M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z" />\n                                <path\n                                    class="cls-4"\n                                    d="M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z" />\n                            </g>\n                        </g>\n                    </g>\n                </svg>\n                <span class="brand-name">\n                    <span class="brand-name__text">converse<span class="subdued">.js</span></span>\n                    ',"\n                </span>\n            </span>\n        </a>\n        ","\n        "]);return $v=function(){return e},e}function Wv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Vv(){const e=Jv(['<a class="chatbox-btn close-chatbox-button fa fa-times"></a>']);return Vv=function(){return e},e}function Gv(){const e=Jv(['\n    <div class="flyout box-flyout">\n        <div class="chat-head controlbox-head">\n            ','\n        </div>\n        <div class="controlbox-panes"></div>\n    </div>']);return Gv=function(){return e},e}function Jv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-brand-heading",Bv(e=>{const t="fullscreen"===qc.settings.get("view_mode");return Ga($v(),t?"brand-name-wrapper--fullscreen":"",t?Ga(Uv()):"",t?Ga(Hv(),e.version_name):"")},{useShadowDOM:!1}));var Xv=n(136),Qv=n.n(Xv);function Yv(){const e=s_(['\n    <converse-brand-heading></converse-brand-heading>\n    <form id="converse-login" class="converse-form" method="post">\n        <div class="conn-feedback fade-in ','">\n            <p class="feedback-subject">','</p>\n            <p class="feedback-message ','">',"</p>\n        </div>\n        ","\n    </form>\n"]);return Yv=function(){return e},e}function Kv(){const e=s_(["<p>","</p>"]);return Kv=function(){return e},e}function Zv(){const e=s_(['<input class="btn btn-primary login-anon" type="submit" value="','">']);return Zv=function(){return e},e}function e_(){const e=s_(["\n        ","\n        ","\n        ","\n    "]);return e_=function(){return e},e}function t_(){const e=s_(['\n        <div class="form-group">\n            <label for="converse-login-jid">',':</label>\n            <input id="converse-login-jid"\n                ?autofocus=','\n                required\n                class="form-control"\n                type="text"\n                name="jid"\n                placeholder="','"/>\n        </div>\n        ',"\n        ",'\n        <fieldset class="buttons">\n            <input class="btn btn-primary" type="submit" value="','"/>\n        </fieldset>\n        ',"\n    "]);return t_=function(){return e},e}function n_(){const e=s_(['\n        <fieldset class="switch-form">\n            <p>','</p>\n            <p><a class="register-account toggle-register-login" href="#converse/register">',"</a></p>\n        </fieldset>\n    "]);return n_=function(){return e},e}function r_(){const e=s_(['\n        <div class="form-group">\n            <label for="converse-login-password">','</label>\n            <input id="converse-login-password" class="form-control" required="required" type="password" name="password" placeholder="','"/>\n        </div>\n    ']);return r_=function(){return e},e}function i_(){const e=s_(['\n        <div class="form-group form-check login-trusted">\n            <input id="converse-login-trusted" type="checkbox" class="form-check-input" name="trusted" ?checked=','>\n            <label for="converse-login-trusted" class="form-check-label login-trusted__desc">','</label>\n            <i class="fa fa-info-circle" data-toggle="popover"\n                data-title="Trusted device?"\n                data-content="','"></i>\n        </div>\n    ']);return i_=function(){return e},e}function s_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const o_=e=>{const t=dd("Log in"),n=dd("XMPP Address");return Ga(t_(),n,!!qc.settings.get("auto_focus"),e.placeholder_username,e.authentication!==e.EXTERNAL?(()=>{const e=dd("Password");return Ga(r_(),e,e)})():"",e.show_trust_checkbox?(e=>{const t=dd("To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It's important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available."),n=dd("This is a trusted device");return Ga(i_(),e._converse.config.get("trusted"),n,t)})(e):"",t,(e=>{const t=e._converse;return t.allow_registration&&!qc.settings.get("auto_login")&&t.pluggable.plugins["converse-register"].enabled(t)})(e)?(()=>{const e=dd("Create an account"),t=dd("Don't have a chat account?");return Ga(n_(),t,e)})():"")};var a_=e=>Ga(Yv(),e.conn_feedback_subject?e.conn_feedback_class:"hidden",e.conn_feedback_subject,e.conn_feedback_message?"":"hidden",e.conn_feedback_message,"CONNECTING"===e._converse.CONNECTION_STATUS[e.connection_status]?Tf({classes:"hor_centered"}):(e=>{const t=dd("Disconnected"),n=dd("Click here to log in anonymously");return Ga(e_(),e.authentication==e.LOGIN||e.authentication==e.EXTERNAL?o_(e):"",e.authentication==e.ANONYMOUS?Ga(Zv(),n):"",e.authentication==e.PREBIND?Ga(Kv(),t):"")})(e));function c_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l_(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */const{Strophe:hv,dayjs:fv}=Yc.env,pv=Yc.env.utils,gv=jd.extend({length:200,className:"chatbox hidden",is_chatroom:!1,events:{"click .chatbox-navback":"showControlBox","click .new-msgs-indicator":"viewUnreadMessages","click .send-button":"onFormSubmitted","click .toggle-clear":"clearMessages","input .chat-textarea":"inputChanged","keydown .chat-textarea":"onKeyDown","keyup .chat-textarea":"onKeyUp","paste .chat-textarea":"onPaste"},async initialize(){this.initDebounced(),this.listenTo(this.model,"change:composing_spoiler",this.renderMessageForm),this.listenTo(this.model,"change:hidden",e=>e.get("hidden")?this.hide():this.show()),this.listenTo(this.model,"change:status",this.onStatusMessageChanged),this.listenTo(this.model,"destroy",this.remove),this.listenTo(this.model,"show",this.show),this.listenTo(this.model,"vcard:change",this.renderHeading),this.model.contact&&this.listenTo(this.model.contact,"destroy",this.renderHeading),this.model.rosterContactAdded&&this.model.rosterContactAdded.then(()=>{this.listenTo(this.model.contact,"change:nickname",this.renderHeading),this.renderHeading()}),this.listenTo(this.model.presence,"change:show",this.onPresenceChanged),this.render(),this.listenTo(this.model.messages,"add",this.onMessageAdded),this.listenTo(this.model.messages,"remove",this.renderChatHistory),this.listenTo(this.model.messages,"rendered",this.maybeScrollDown),this.listenTo(this.model.messages,"reset",this.renderChatHistory),this.listenTo(this.model.notifications,"change",this.renderNotifications),this.listenTo(this.model,"change:show_help_messages",this.renderHelpMessages),await this.updateAfterMessagesFetched(),this.model.maybeShow(),qc.trigger("chatBoxViewInitialized",this)},initDebounced(){this.markScrolled=Tc(this._markScrolled,100),this.debouncedScrollDown=Tc(this.scrollDown,100),qc.settings.get("debounced_content_rendering")?(this.renderChatHistory=Tc(()=>this.renderChatContent(!1),100),this.renderNotifications=Tc(()=>this.renderChatContent(!0),100)):(this.renderChatHistory=()=>this.renderChatContent(!1),this.renderNotifications=()=>this.renderChatContent(!0))},render(){const e=Lm(Object.assign(this.model.toJSON(),{markScrolled:e=>this.markScrolled(e)}));return Wa(e,this.el),this.content=this.el.querySelector(".chat-content"),this.notifications=this.el.querySelector(".chat-content__notifications"),this.msgs_container=this.el.querySelector(".chat-content__messages"),this.help_container=this.el.querySelector(".chat-content__help"),this.renderChatContent(),this.renderMessageForm(),this.renderHeading(),this},onMessageAdded(e){this.renderChatHistory(),pv.isNewMessage(e)&&("me"===e.get("sender")?this.model.set("scrolled",!1):this.model.get("scrolled",!0)&&this.showNewMessagesIndicator())},getNotifications(){return this.model.notifications.get("chat_state")===Lc.COMPOSING?dd("%1$s is typing",this.model.getDisplayName()):this.model.notifications.get("chat_state")===Lc.PAUSED?dd("%1$s has stopped typing",this.model.getDisplayName()):this.model.notifications.get("chat_state")===Lc.GONE?dd("%1$s has gone away",this.model.getDisplayName()):""},getHelpMessages:()=>["<strong>/clear</strong>: ".concat(dd("Remove messages")),"<strong>/close</strong>: ".concat(dd("Close this chat")),"<strong>/me</strong>: ".concat(dd("Write in the third person")),"<strong>/help</strong>: ".concat(dd("Show this menu"))],renderHelpMessages(){Wa(Ga(uv(),this.model,this.getHelpMessages(),!this.model.get("show_help_messages"),this.model.get("type")),this.help_container)},renderChatContent(e=!1){this.tpl_chat_content||(this.tpl_chat_content=e=>Ga(lv(),this,e.messages,e.notifications));const t=this.model.messages.models,n=e?t:Array.from(t);Wa(this.tpl_chat_content({messages:n,notifications:this.getNotifications()}),this.msgs_container)},renderToolbar(){if(!qc.settings.get("show_toolbar"))return this;const e=Object.assign({model:this.model,chatview:this},this.model.toJSON(),this.getToolbarOptions());return Wa((e=>{const t=qc.settings.get("message_limit"),n=qc.settings.get("visible_toolbar_buttons").call,r=qc.settings.get("visible_toolbar_buttons").emoji,i=qc.settings.get("show_send_button"),s=qc.settings.get("visible_toolbar_buttons").spoiler,o=qc.settings.get("show_toolbar");return Ga(Vm(),e.chatview,e.model,e.composing_spoiler,e.hidden_occupants,e.is_groupchat,n,r,e.show_occupants_toggle,i,s,o,t)})(e),this.el.querySelector(".chat-toolbar")),qc.trigger("renderToolbar",this),this},renderMessageForm(){var e,t;const n=this.el.querySelector(".message-form-container");var r;Wa((r=Object.assign(this.model.toJSON(),{hint_value:null===(e=this.el.querySelector(".spoiler-hint"))||void 0===e?void 0:e.value,label_message:this.model.get("composing_spoiler")?dd("Hidden message"):dd("Message"),label_spoiler_hint:dd("Optional hint"),message_value:null===(t=this.el.querySelector(".chat-textarea"))||void 0===t?void 0:t.value,show_send_button:qc.settings.get("show_send_button"),show_toolbar:qc.settings.get("show_toolbar"),unread_msgs:dd("You have unread messages")}),Ga(Wm(),r.unread_msgs,r.label_spoiler_hint||"",r.hint_value||"",r.composing_spoiler?"":"hidden",r.show_send_button?"chat-textarea-send-button":"",r.composing_spoile?"spoiler":"",r.label_message,r.message_value||"")),n),this.el.addEventListener("focusin",e=>this.emitFocused(e)),this.el.addEventListener("focusout",e=>this.emitBlurred(e)),this.renderToolbar()},showControlBox(){Lc.chatboxviews.get("controlbox").show(),this.hide()},showUserDetailsModal(e){e.preventDefault(),void 0===this.user_details_modal&&(this.user_details_modal=new Lc.UserDetailsModal({model:this.model})),this.user_details_modal.show(e)},onDragOver(e){e.preventDefault()},onDrop(e){0!=e.dataTransfer.files.length&&(e.preventDefault(),this.model.sendFiles(e.dataTransfer.files))},async renderHeading(){const e=await this.generateHeadingTemplate();Wa(e,this.el.querySelector(".chat-head-chatbox"))},async getHeadingStandaloneButton(e){const t=await e;return Ga(cv(),t.a_class,t.icon_class,t.handler,t.i18n_title)},async getHeadingDropdownItem(e){const t=await e;return Ga(av(),t.a_class,t.handler,t.i18n_title,t.icon_class,t.i18n_text)},async generateHeadingTemplate(){var e;const t=null===(e=this.model)||void 0===e?void 0:e.vcard,n=t?t.toJSON():{},r=await this.getHeadingButtons(),i=r.filter(e=>e.standalone),s=r.filter(e=>!e.standalone);return(e=>{const t={alt_text:dd("The User's Profile Image"),extra_classes:"",height:40,width:40};return Ga(Um(),e.status?"":"chatbox-title--no-desc",e._converse.api.settings.get("singleton")?"":Ga(Hm()),e.type!==e._converse.HEADLINES_TYPE?Ga(qm(),bf(Object.assign({},e,t))):"",e.jid,e.url?Ga(Bm(),e.url,e.display_name):e.display_name,e.dropdown_btns.length?Ga(Fm(),e.dropdown_btns):"",e.standalone_btns.length?(e=>e.standalone_btns.reverse().map(e=>oh(e,"")))(e):"",e.status?Ga(zm(),e.status):"")})(Object.assign(n,this.model.toJSON(),{_converse:Lc,dropdown_btns:s.map(e=>this.getHeadingDropdownItem(e)),standalone_btns:i.map(e=>this.getHeadingStandaloneButton(e)),display_name:this.model.getDisplayName()}))},getHeadingButtons(){const e=[{a_class:"show-user-details-modal",handler:e=>this.showUserDetailsModal(e),i18n_text:dd("Details"),i18n_title:dd("See more information about this person"),icon_class:"fa-id-card",name:"details",standalone:"overlayed"===qc.settings.get("view_mode")}];return qc.settings.get("singleton")||e.push({a_class:"close-chatbox-button",handler:e=>this.close(e),i18n_text:dd("Close"),i18n_title:dd("Close and end this conversation"),icon_class:"fa-times",name:"close",standalone:"overlayed"===qc.settings.get("view_mode")}),Lc.api.hook("getHeadingButtons",this,e)},getToolbarOptions:()=>({}),async updateAfterMessagesFetched(){await this.model.messages.fetched,this.renderChatContent(),this.insertIntoDOM(),this.scrollDown(),qc.trigger("afterMessagesFetched",this.model)},maybeScrollDown(e){("me"!==e.get("sender")||e.get("is_archived"))&&this.model.isHidden()||this.debouncedScrollDown()},scrollDown(e){var t,n;if(null==e||null===(t=e.preventDefault)||void 0===t||t.call(e),null==e||null===(n=e.stopPropagation)||void 0===n||n.call(e),this.model.get("scrolled")&&pv.safeSave(this.model,{scrolled:!1,scrollTop:null}),this.msgs_container.scrollTo){const e=this.msgs_container.scrollTop?"smooth":"auto";this.msgs_container.scrollTo({top:this.msgs_container.scrollHeight,behavior:e})}else this.msgs_container.scrollTop=this.msgs_container.scrollHeight;this.onScrolledDown()},maintainScrollTop(){const e=this.model.get("scrollTop");e?this.msgs_container.scrollTop=e:this.scrollDown()},insertIntoDOM(){return Lc.chatboxviews.insertRowColumn(this.el),qc.trigger("chatBoxInsertedIntoDOM",this),this},addSpinner(e=!1){if(null===this.el.querySelector(".spinner")){const t=pv.getElementFromTemplateResult(Tf());e?(this.content.insertAdjacentElement("beforeend",t),this.scrollDown()):this.content.insertAdjacentElement("afterbegin",t)}},clearSpinner(){this.content.querySelectorAll(".spinner").forEach(pv.removeElement)},onStatusMessageChanged(e){this.renderHeading(),qc.trigger("contactStatusMessageChanged",{contact:e.attributes,message:e.get("status")})},shouldShowOnTextMessage(){return!Lc.isUniView()&&!pv.isVisible(this.el)},markFollowups(e){const t=e.getAttribute("data-from"),n=e.previousElementSibling,r=fv(e.getAttribute("data-isodate")),i=e.nextElementSibling;pv.hasClass("chat-msg--action",e)||pv.hasClass("chat-msg--action",n)||pv.hasClass("chat-info",e)||pv.hasClass("chat-info",n)||n.getAttribute("data-from")!==t||!r.isBefore(fv(n.getAttribute("data-isodate")).add(10,"minutes"))||e.getAttribute("data-encrypted")!==n.getAttribute("data-encrypted")||pv.addClass("chat-msg--followup",e),i&&(!pv.hasClass("chat-msg--action",e)&&pv.hasClass("chat-info",e)&&i.getAttribute("data-from")===t&&fv(i.getAttribute("data-isodate")).isBefore(r.add(10,"minutes"))&&e.getAttribute("data-encrypted")===i.getAttribute("data-encrypted")?pv.addClass("chat-msg--followup",i):pv.removeClass("chat-msg--followup",i))},parseMessageForCommands(e){const t=e.replace(/^\s*/,"").match(/^\/(.*)\s*$/);if(t){if("clear"===t[1])return this.clearMessages(),!0;if("close"===t[1])return this.close(),!0;if("help"===t[1])return this.model.set({show_help_messages:!0}),!0}},async onFormSubmitted(e){var t;e.preventDefault();const n=this.el.querySelector(".chat-textarea"),r=n.value.trim();if(qc.settings.get("message_limit")&&r.length>qc.settings.get("message_limit")||!r.replace(/\s/g,"").length)return;if(!Lc.connection.authenticated){const e=dd("Sorry, the connection has been lost, and your message could not be sent");return qc.alert("error",dd("Error"),e),void qc.connection.reconnect()}let i,s={};this.model.get("composing_spoiler")&&(s=this.el.querySelector("form.sendXMPPMessage input.spoiler-hint"),i=s.value),pv.addClass("disabled",n),n.setAttribute("disabled","disabled"),null===(t=this.el.querySelector("converse-emoji-dropdown"))||void 0===t||t.hideMenu();const o=this.parseMessageForCommands(r),a=o?null:await this.model.sendMessage(r,i);(o||a)&&(s.value="",n.value="",pv.removeClass("correcting",n),n.style.height="auto",this.updateCharCounter(n.value)),a&&qc.trigger("messageSend",a),"overlayed"===qc.settings.get("view_mode")&&(this.msgs_container.parentElement.style.display="none"),n.removeAttribute("disabled"),pv.removeClass("disabled",n),"overlayed"===qc.settings.get("view_mode")&&(this.msgs_container.parentElement.style.display=""),this.model.setChatState(Lc.ACTIVE,{silent:!0}),n.focus()},updateCharCounter(e){if(qc.settings.get("message_limit")){const t=this.el.querySelector(".message-limit"),n=qc.settings.get("message_limit")-e.length;t.textContent=n,n<1?pv.addClass("error",t):pv.removeClass("error",t)}},onPaste(e){if(0!==e.clipboardData.files.length)return e.preventDefault(),void this.model.sendFiles(Array.from(e.clipboardData.files));this.updateCharCounter(e.clipboardData.getData("text/plain"))},autocompleteInPicker(e,t){const n=this.el.querySelector("converse-emoji-dropdown"),r=this.el.querySelector("converse-emoji-picker");if(r&&n)return r.model.set({ac_position:e.selectionStart,autocompleting:t,query:t}),n.showMenu(),!0},onEmojiReceivedFromPicker(e){const t=this.el.querySelector("converse-emoji-picker").model,n=t.get("autocompleting"),r=t.get("ac_position");this.insertIntoTextArea(e,n,!1,r)},onKeyUp(e){this.updateCharCounter(e.target.value)},onKeyDown(e){if(!e.ctrlKey){if(!e.shiftKey&&!e.altKey&&!e.metaKey)if(e.keyCode===Yc.keycodes.TAB){const t=pv.getCurrentWord(e.target,null,/(:.*?:)/g);t.startsWith(":")&&this.autocompleteInPicker(e.target,t)&&(e.preventDefault(),e.stopPropagation())}else{if(e.keyCode===Yc.keycodes.FORWARD_SLASH)return;if(e.keyCode===Yc.keycodes.ESCAPE)return this.onEscapePressed(e);if(e.keyCode===Yc.keycodes.ENTER)return this.onEnterPressed(e);if(e.keyCode!==Yc.keycodes.UP_ARROW||e.target.selectionEnd){if(e.keyCode===Yc.keycodes.DOWN_ARROW&&e.target.selectionEnd===e.target.value.length&&pv.hasClass("correcting",this.el.querySelector(".chat-textarea")))return this.editLaterMessage()}else{const e=this.el.querySelector(".chat-textarea");if(!e.value||pv.hasClass("correcting",e))return this.editEarlierMessage()}}[Yc.keycodes.SHIFT,Yc.keycodes.META,Yc.keycodes.META_RIGHT,Yc.keycodes.ESCAPE,Yc.keycodes.ALT].includes(e.keyCode)||this.model.get("chat_state")!==Lc.COMPOSING&&this.model.setChatState(Lc.COMPOSING)}},getOwnMessages(){return this.model.messages.filter({sender:"me"})},onEnterPressed(e){return this.onFormSubmitted(e)},onEscapePressed(e){e.preventDefault();const t=this.model.messages.findLastIndex("correcting"),n=t>=0?this.model.messages.at(t):null;n&&n.save("correcting",!1),this.insertIntoTextArea("",!0,!1)},async onMessageRetractButtonClicked(e){if("me"!==e.get("sender"))return Pn.error("onMessageRetractButtonClicked called for someone else's message!");const t=dd("Be aware that other XMPP/Jabber clients (and servers) may not yet support retractions and that this message may not be removed everywhere."),n=[dd("Are you sure you want to retract this message?")];qc.settings.get("show_retraction_warning")&&(n[1]=t),await qc.confirm(dd("Confirm"),n)&&this.model.retractOwnMessage(e)},onMessageEditButtonClicked(e){var t;const n=this.model.messages.findWhere("correcting"),r=null===(t=this.el.querySelector(".chat-textarea"))||void 0===t?void 0:t.value;(!r||n&&n.get("message")===r||confirm(dd("You have an unsent message which will be lost if you continue. Are you sure?")))&&(n!==e?(null==n||n.save("correcting",!1),e.save("correcting",!0),this.insertIntoTextArea(pv.prefixMentions(e),!0,!0)):(e.save("correcting",!1),this.insertIntoTextArea("",!0,!1)))},editLaterMessage(){let e,t=this.model.messages.findLastIndex("correcting");if(t>=0)for(this.model.messages.at(t).save("correcting",!1);t<this.model.messages.length-1;){t+=1;const n=this.model.messages.at(t);if(n.get("editable")){e=n;break}}e?(this.insertIntoTextArea(pv.prefixMentions(e),!0,!0),e.save("correcting",!0)):this.insertIntoTextArea("",!0,!1)},editEarlierMessage(){let e,t=this.model.messages.findLastIndex("correcting");if(t>=0)for(this.model.messages.at(t).save("correcting",!1);t>0;){t-=1;const n=this.model.messages.at(t);if(n.get("editable")){e=n;break}}e=e||this.getOwnMessages().reverse().find(e=>e.get("editable")),e&&(this.insertIntoTextArea(pv.prefixMentions(e),!0,!0),e.save("correcting",!0))},inputChanged(e){const t=e.target.scrollHeight+"px";e.target.style.height!=t&&(e.target.style.height="auto",e.target.style.height=t)},async clearMessages(e){return e&&e.preventDefault&&e.preventDefault(),!0===confirm(dd("Are you sure you want to clear the messages from this conversation?"))&&await this.model.clearMessages(),this},insertIntoTextArea(e,t=!1,n=!1,r){const i=this.el.querySelector(".chat-textarea");if(n?pv.addClass("correcting",i):pv.removeClass("correcting",i),t)i.value=r&&"string"==typeof t?i.value.replace(new RegExp(t,"g"),(n,i)=>i==r-t.length?e+" ":n):e;else{let t=i.value;t&&" "!==t[t.length-1]&&(t+=" "),i.value=t+e+" "}this.updateCharCounter(i.value),pv.placeCaretAtEnd(i)},onPresenceChanged(e){const t=e.get("show"),n=this.model.getDisplayName();let r;pv.isVisible(this.el)&&("offline"===t?r=dd("%1$s has gone offline",n):"away"===t?r=dd("%1$s has gone away",n):"dnd"===t?r=dd("%1$s is busy",n):"online"===t&&(r=dd("%1$s is online",n)),r&&this.model.createMessage({message:r,type:"info"}))},async close(e){return e&&e.preventDefault&&e.preventDefault(),Lc.router.history.getFragment()==="converse/chat?jid="+this.model.get("jid")&&Lc.router.navigate(""),qc.connection.connected()&&(this.model.setChatState(Lc.INACTIVE),this.model.sendChatState()),await this.model.close(),this.remove(),qc.trigger("chatBoxClosed",this),this},emitBlurred(e){this.el.contains(document.activeElement)||this.el.contains(e.relatedTarget)||qc.trigger("chatBoxBlurred",this,e)},emitFocused(e){this.el.contains(e.relatedTarget)||qc.trigger("chatBoxFocused",this,e)},focus(){const e=this.el.getElementsByClassName("chat-textarea")[0];return e&&document.activeElement!==e&&e.focus(),this},maybeFocus(){qc.settings.get("auto_focus")&&this.focus()},hide(){return this.el.classList.add("hidden"),this},afterShown(){this.model.clearUnreadMsgCounter(),this.model.setChatState(Lc.ACTIVE),this.scrollDown(),this.maybeFocus()},show(){pv.isVisible(this.el)?this.maybeFocus():(qc.trigger("beforeShowingChatView",this),qc.settings.get("animate")?pv.fadeIn(this.el,()=>this.afterShown()):(pv.showElement(this.el),this.afterShown()))},showNewMessagesIndicator(){pv.showElement(this.el.querySelector(".new-msgs-indicator"))},hideNewMessagesIndicator(){const e=this.el.querySelector(".new-msgs-indicator");null!==e&&e.classList.add("hidden")},_markScrolled:function(e){let t=!0,n=null;this.msgs_container.scrollTop+this.msgs_container.clientHeight>=this.msgs_container.scrollHeight-62?(t=!1,this.onScrolledDown()):0===this.msgs_container.scrollTop?qc.trigger("chatBoxScrolledUp",this):n=e.target.scrollTop,pv.safeSave(this.model,{scrolled:t,scrollTop:n})},viewUnreadMessages(){this.model.save({scrolled:!1,scrollTop:null}),this.scrollDown()},onScrolledDown(){this.hideNewMessagesIndicator(),!this.model.isHidden()&&this.model.clearUnreadMsgCounter(),qc.trigger("chatBoxScrolledDown",{chatbox:this.model})},onWindowStateChanged(e){"visible"===e?this.model.isHidden()||this.model.get("num_unread",0)&&this.model.clearUnreadMsgCounter():"hidden"===e&&(this.model.setChatState(Lc.INACTIVE,{silent:!0}),this.model.sendChatState())}});let mv;Yc.plugins.add("converse-chatview",{dependencies:["converse-chatboxviews","converse-chat","converse-disco","converse-modal"],initialize(){qc.settings.extend({auto_focus:!0,debounced_content_rendering:!0,filter_url_query_params:null,image_urls_regex:null,message_limit:0,muc_hats:["xep317"],role_affiliation_hat_conversions:{},show_images_inline:!0,show_message_avatar:!0,show_retraction_warning:!0,show_send_button:!0,show_toolbar:!0,time_format:"HH:mm",use_system_emojis:!0,visible_toolbar_buttons:{call:!1,clear:!0,emoji:!0,spoiler:!0}}),Lc.ChatBoxView=gv,Lc.UserDetailsModal=Kd.extend({id:"user-details-modal",events:{"click button.refresh-contact":"refreshContact","click .fingerprint-trust .btn input":"toggleDeviceTrust"},initialize(){Kd.prototype.initialize.apply(this,arguments),this.model.rosterContactAdded.then(()=>this.registerContactEventHandlers()),this.listenTo(this.model,"change",this.render),this.registerContactEventHandlers(),qc.trigger("userDetailsModalInitialized",this.model)},toHTML(){var e;const t=null===(e=this.model)||void 0===e?void 0:e.vcard,n=t?t.toJSON():{};return ov(Object.assign(this.model.toJSON(),n,{_converse:Lc,allow_contact_removal:qc.settings.get("allow_contact_removal"),display_name:this.model.getDisplayName(),is_roster_contact:void 0!==this.model.contact,removeContact:e=>this.removeContact(e),view:this,utils:pv}))},registerContactEventHandlers(){void 0!==this.model.contact&&(this.listenTo(this.model.contact,"change",this.render),this.listenTo(this.model.contact.vcard,"change",this.render),this.model.contact.on("destroy",()=>{delete this.model.contact,this.render()}))},async refreshContact(e){e&&e.preventDefault&&e.preventDefault();const t=this.el.querySelector(".fa-refresh");pv.addClass("fa-spin",t);try{await qc.vcard.update(this.model.contact.vcard,!0)}catch(e){Pn.fatal(e),this.alert(dd("Sorry, something went wrong while trying to refresh"),"danger")}pv.removeClass("fa-spin",t)},removeContact(e){if(e&&e.preventDefault&&e.preventDefault(),!qc.settings.get("allow_contact_removal"))return;!0===confirm(dd("Are you sure you want to remove this contact?"))&&(this.modal.hide(),setTimeout(()=>{this.model.contact.removeFromRoster(()=>this.model.contact.destroy(),e=>{Pn.error(e),qc.alert("error",dd("Error"),[dd("Sorry, there was an error while trying to remove %1$s as a contact.",this.model.contact.getDisplayName())])})},1))}}),qc.listen.on("chatBoxViewsInitialized",()=>{const e=Lc.chatboxviews;Lc.chatboxes.on("add",async t=>{e.get(t.get("id"))||t.get("type")!==Lc.PRIVATE_CHAT_TYPE||(await t.initialized,e.add(t.get("id"),new Lc.ChatBoxView({model:t})))})}),qc.listen.on("windowStateChanged",(function(e){Lc.chatboxviews&&Lc.chatboxviews.forEach(t=>{"controlbox"!==t.model.get("id")&&t.onWindowStateChanged(e.state)})})),qc.listen.on("connected",()=>qc.disco.own.features.add(hv.NS.SPOILER)),Object.assign(qc,{chatviews:{get:e=>void 0===e?Object.values(Lc.chatboxviews.getAll()):"string"==typeof e?Lc.chatboxviews.get(e):e.map(e=>Lc.chatboxviews.get(e))}})}});let vv=0;function _v(e){mv=e}function bv(){mv=null,vv=0}const yv=Symbol("haunted.phase"),wv=Symbol("haunted.hook"),Sv=Symbol("haunted.update"),xv=Symbol("haunted.commit"),Ev=Symbol("haunted.effects"),Av=Symbol("haunted.layoutEffects");class Cv{constructor(e,t){this.update=e,this.host=t,this[wv]=new Map,this[Ev]=[],this[Av]=[]}run(e){_v(this);let t=e();return bv(),t}_runEffects(e){let t=this[e];_v(this);for(let e of t)e.call(this);bv()}runEffects(){this._runEffects(Ev)}runLayoutEffects(){this._runEffects(Av)}teardown(){this[wv].forEach(e=>{"function"==typeof e.teardown&&e.teardown()})}}const jv=Promise.resolve().then.bind(Promise.resolve());function Tv(){let e,t=[];function n(){e=null;let n=t;t=[];for(var r=0,i=n.length;r<i;r++)n[r]()}return function(r){t.push(r),null==e&&(e=jv(n))}}const Ov=Tv(),kv=Tv();class Nv{constructor(e,t){this.renderer=e,this.host=t,this.state=new Cv(this.update.bind(this),t),this[yv]=null,this._updateQueued=!1}update(){this._updateQueued||(Ov(()=>{let e=this.handlePhase(Sv);kv(()=>{this.handlePhase(xv,e),kv(()=>{this.handlePhase(Ev)})}),this._updateQueued=!1}),this._updateQueued=!0)}handlePhase(e,t){switch(this[yv]=e,e){case xv:return this.commit(t),void this.runEffects(Av);case Sv:return this.render();case Ev:return this.runEffects(Ev)}this[yv]=null}render(){return this.state.run(()=>this.renderer.call(this.host,this.host))}runEffects(e){this.state._runEffects(e)}teardown(){this.state.teardown()}}function Iv(e){class t extends Nv{constructor(e,t,n){super(e,n||t),this.frag=t}commit(t){e(t,this.frag)}}return function(e,n,r){const i=(r||n||{}).baseElement||HTMLElement,{observedAttributes:s=[],useShadowDOM:o=!0,shadowRootInit:a={}}=r||n||{};class c extends i{constructor(){super(),!1===o?this._scheduler=new t(e,this):(this.attachShadow({mode:"open",...a}),this._scheduler=new t(e,this.shadowRoot,this))}static get observedAttributes(){return e.observedAttributes||s||[]}connectedCallback(){this._scheduler.update()}disconnectedCallback(){this._scheduler.teardown()}attributeChangedCallback(e,t,n){if(t===n)return;let r=""===n||n;Reflect.set(this,((e="")=>e.replace(/-+([a-z])?/g,(e,t)=>t?t.toUpperCase():""))(e),r)}}const l=new Proxy(i.prototype,{getPrototypeOf:e=>e,set(e,t,n,r){let i;if(t in e){if(i=Object.getOwnPropertyDescriptor(e,t),i&&i.set)return i.set.call(r,n),!0;Reflect.set(e,t,n)}return i="symbol"==typeof t||"_"===t[0]?{enumerable:!0,configurable:!0,writable:!0,value:n}:function(e){let t=e;return Object.freeze({enumerable:!0,configurable:!0,get:()=>t,set(e){t=e,this._scheduler.update()}})}(n),Object.defineProperty(r,t,i),i.set&&i.set.call(r,n),!0}});return Object.setPrototypeOf(c.prototype,l),c}}class Mv{constructor(e,t){this.id=e,this.state=t}}function Rv(e,...t){let n=vv++,r=mv[wv],i=r.get(n);return i||(i=new e(n,mv,...t),r.set(n,i)),i.update(...t)}function Dv(e){return Rv.bind(null,e)}function Pv(e){return Dv(class extends Mv{constructor(t,n,r,i){super(t,n),e(n,this)}update(e,t){this.callback=e,this.lastValues=this.values,this.values=t}call(){this.values&&!this.hasChanged()||this.run()}run(){this.teardown(),this._teardown=this.callback.call(this.state)}teardown(){"function"==typeof this._teardown&&this._teardown()}hasChanged(){return!this.lastValues||this.values.some((e,t)=>this.lastValues[t]!==e)}})}function Lv(e,t){e[Ev].push(t)}Pv(Lv);const zv=Dv(class extends Mv{constructor(e,t,n){super(e,t),this._updater=this._updater.bind(this),this._ranEffect=!1,this._unsubscribe=null,Lv(t,this)}update(e){if(this.state.virtual)throw new Error("can't be used with virtual components");return this.Context!==e&&(this._subscribe(e),this.Context=e),this.value}call(){this._ranEffect||(this._ranEffect=!0,this._unsubscribe&&this._unsubscribe(),this._subscribe(this.Context),this.state.update())}_updater(e){this.value=e,this.state.update()}_subscribe(e){const t={Context:e,callback:this._updater};this.state.host.dispatchEvent(new CustomEvent("haunted.context",{detail:t,bubbles:!0,cancelable:!0,composed:!0}));const{unsubscribe:n,value:r}=t;this.value=n?r:e.defaultValue,this._unsubscribe=n}teardown(){this._unsubscribe&&this._unsubscribe()}});Dv(class extends Mv{constructor(e,t,n,r){super(e,t),this.value=n(),this.values=r}update(e,t){return this.hasChanged(t)&&(this.values=t,this.value=e()),this.value}hasChanged(e=[]){return e.some((e,t)=>this.values[t]!==e)}});Pv((function(e,t){e[Av].push(t)})),Dv(class extends Mv{constructor(e,t,n){super(e,t),this.updater=this.updater.bind(this),"function"==typeof n&&(n=n()),this.makeArgs(n)}update(){return this.args}updater(e){if("function"==typeof e){const t=e,[n]=this.args;e=t(n)}this.makeArgs(e),this.state.update()}makeArgs(e){this.args=Object.freeze([e,this.updater])}}),Dv(class extends Mv{constructor(e,t,n,r,i){super(e,t),this.dispatch=this.dispatch.bind(this),this.currentState=void 0!==i?i(r):r}update(e){return this.reducer=e,[this.currentState,this.dispatch]}dispatch(e){this.currentState=this.reducer(this.currentState,e),this.state.update()}});const Fv=Array.prototype.includes;const{component:Bv,createContext:qv}=function({render:e}){const t=Iv(e),n=function(e){return t=>{const n={Provider:class extends HTMLElement{constructor(){super(),this.listeners=new Set,this.addEventListener("haunted.context",this)}disconnectedCallback(){this.removeEventListener("haunted.context",this)}handleEvent(e){const{detail:t}=e;t.Context===n&&(t.value=this.value,t.unsubscribe=this.unsubscribe.bind(this,t.callback),this.listeners.add(t.callback),e.stopPropagation())}unsubscribe(e){this.listeners.delete(e)}set value(e){this._value=e;for(let t of this.listeners)t(e)}get value(){return this._value}},Consumer:e((function({render:e}){return e(zv(n))})),defaultValue:t};return n}}(t);return{component:t,createContext:n}}({render:Wa});!function(){const e=new WeakMap,t=new WeakMap;class n extends Nv{constructor(e,t){super(e,t),this.state.virtual=!0}render(){return this.state.run(()=>this.renderer.apply(this.host,this.args))}commit(e){this.host.setValue(e),this.host.commit()}teardown(){super.teardown();let n=t.get(this);e.delete(n)}}}();function Hv(){const e=Wv(['\n            <p class="brand-subtitle">','</p>\n            <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://conversejs.org">Open Source</a> XMPP chat client brought to you by <a target="_blank" rel="nofollow" href="https://opkode.com">Opkode</a> </p>\n            <p class="brand-subtitle"><a target="_blank" rel="nofollow" href="https://hosted.weblate.org/projects/conversejs/#languages">Translate</a> it into your own language</p>']);return Hv=function(){return e},e}function Uv(){const e=Wv(['<p class="byline">messaging freedom</p>']);return Uv=function(){return e},e}function $v(){const e=Wv(['\n        <a class="brand-heading" href="https://conversejs.org" target="_blank" rel="noopener">\n            <span class="brand-name-wrapper ','">\n                <svg class="converse-svg-logo"\n                    xmlns:svg="http://www.w3.org/2000/svg"\n                    xmlns="http://www.w3.org/2000/svg"\n                    xmlns:xlink="http://www.w3.org/1999/xlink"\n                    viewBox="0 0 364 364">\n                    <title>Converse</title>\n                    <g class="cls-1" id="g904">\n                        <g data-name="Layer 2">\n                            <g data-name="Layer 7">\n                                <path\n                                    class="cls-3"\n                                    d="M221.46,103.71c0,18.83-29.36,18.83-29.12,0C192.1,84.88,221.46,84.88,221.46,103.71Z" />\n                                <path\n                                    class="cls-4"\n                                    d="M179.9,4.15A175.48,175.48,0,1,0,355.38,179.63,175.48,175.48,0,0,0,179.9,4.15Zm-40.79,264.5c-.23-17.82,27.58-17.82,27.58,0S138.88,286.48,139.11,268.65ZM218.6,168.24A79.65,79.65,0,0,1,205.15,174a12.76,12.76,0,0,0-6.29,4.65L167.54,222a1.36,1.36,0,0,1-2.46-.8v-35.8a2.58,2.58,0,0,0-3.06-2.53c-15.43,3-30.23,7.7-42.73,19.94-38.8,38-29.42,105.69,16.09,133.16a162.25,162.25,0,0,1-91.47-67.27C-3.86,182.26,34.5,47.25,138.37,25.66c46.89-9.75,118.25,5.16,123.73,62.83C265.15,120.64,246.56,152.89,218.6,168.24Z" />\n                            </g>\n                        </g>\n                    </g>\n                </svg>\n                <span class="brand-name">\n                    <span class="brand-name__text">converse<span class="subdued">.js</span></span>\n                    ',"\n                </span>\n            </span>\n        </a>\n        ","\n        "]);return $v=function(){return e},e}function Wv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}function Vv(){const e=Jv(['<a class="chatbox-btn close-chatbox-button fa fa-times"></a>']);return Vv=function(){return e},e}function Gv(){const e=Jv(['\n    <div class="flyout box-flyout">\n        <div class="chat-head controlbox-head">\n            ','\n        </div>\n        <div class="controlbox-panes"></div>\n    </div>']);return Gv=function(){return e},e}function Jv(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}qc.elements.define("converse-brand-heading",Bv(e=>{const t="fullscreen"===qc.settings.get("view_mode");return Ga($v(),t?"brand-name-wrapper--fullscreen":"",t?Ga(Uv()):"",t?Ga(Hv(),e.version_name):"")},{useShadowDOM:!1}));var Xv=n(136),Qv=n.n(Xv);function Yv(){const e=s_(['\n    <converse-brand-heading></converse-brand-heading>\n    <form id="converse-login" class="converse-form" method="post">\n        <div class="conn-feedback fade-in ','">\n            <p class="feedback-subject">','</p>\n            <p class="feedback-message ','">',"</p>\n        </div>\n        ","\n    </form>\n"]);return Yv=function(){return e},e}function Kv(){const e=s_(["<p>","</p>"]);return Kv=function(){return e},e}function Zv(){const e=s_(['<input class="btn btn-primary login-anon" type="submit" value="','">']);return Zv=function(){return e},e}function e_(){const e=s_(["\n        ","\n        ","\n        ","\n    "]);return e_=function(){return e},e}function t_(){const e=s_(['\n        <div class="form-group">\n            <label for="converse-login-jid">',':</label>\n            <input id="converse-login-jid"\n                ?autofocus=','\n                required\n                class="form-control"\n                type="text"\n                name="jid"\n                placeholder="','"/>\n        </div>\n        ',"\n        ",'\n        <fieldset class="buttons">\n            <input class="btn btn-primary" type="submit" value="','"/>\n        </fieldset>\n        ',"\n    "]);return t_=function(){return e},e}function n_(){const e=s_(['\n        <fieldset class="switch-form">\n            <p>','</p>\n            <p><a class="register-account toggle-register-login" href="#converse/register">',"</a></p>\n        </fieldset>\n    "]);return n_=function(){return e},e}function r_(){const e=s_(['\n        <div class="form-group">\n            <label for="converse-login-password">','</label>\n            <input id="converse-login-password" class="form-control" required="required" type="password" name="password" placeholder="','"/>\n        </div>\n    ']);return r_=function(){return e},e}function i_(){const e=s_(['\n        <div class="form-group form-check login-trusted">\n            <input id="converse-login-trusted" type="checkbox" class="form-check-input" name="trusted" ?checked=','>\n            <label for="converse-login-trusted" class="form-check-label login-trusted__desc">','</label>\n            <i class="fa fa-info-circle" data-toggle="popover"\n                data-title="Trusted device?"\n                data-content="','"></i>\n        </div>\n    ']);return i_=function(){return e},e}function s_(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}const o_=e=>{const t=dd("Log in"),n=dd("XMPP Address");return Ga(t_(),n,!!qc.settings.get("auto_focus"),e.placeholder_username,e.authentication!==e.EXTERNAL?(()=>{const e=dd("Password");return Ga(r_(),e,e)})():"",e.show_trust_checkbox?(e=>{const t=dd("To improve performance, we cache your data in this browser. Uncheck this box if this is a public computer or if you want your data to be deleted when you log out. It's important that you explicitly log out, otherwise not all cached data might be deleted. Please note, when using an untrusted device, OMEMO encryption is NOT available."),n=dd("This is a trusted device");return Ga(i_(),e._converse.config.get("trusted"),n,t)})(e):"",t,(e=>{const t=e._converse;return t.allow_registration&&!qc.settings.get("auto_login")&&t.pluggable.plugins["converse-register"].enabled(t)})(e)?(()=>{const e=dd("Create an account"),t=dd("Don't have a chat account?");return Ga(n_(),t,e)})():"")};var a_=e=>Ga(Yv(),e.conn_feedback_subject?e.conn_feedback_class:"hidden",e.conn_feedback_subject,e.conn_feedback_message?"":"hidden",e.conn_feedback_message,"CONNECTING"===e._converse.CONNECTION_STATUS[e.connection_status]?Tf({classes:"hor_centered"}):(e=>{const t=dd("Disconnected"),n=dd("Click here to log in anonymously");return Ga(e_(),e.authentication==e.LOGIN||e.authentication==e.EXTERNAL?o_(e):"",e.authentication==e.ANONYMOUS?Ga(Zv(),n):"",e.authentication==e.PREBIND?Ga(Kv(),t):"")})(e));function c_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function l_(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
 /**
  * @module converse-controlbox
  * @copyright 2020, the Converse.js contributors