(self.webpackChunkelement_web=self.webpackChunkelement_web||[]).push([[2702],{"./res/img/element-icons/brands/apple.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/brands/apple.734de1e.svg"},"./res/img/element-icons/brands/facebook.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/brands/facebook.2061182.svg"},"./res/img/element-icons/brands/github.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/brands/github.a229f06.svg"},"./res/img/element-icons/brands/gitlab.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/brands/gitlab.9958062.svg"},"./res/img/element-icons/brands/google.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/brands/google.1573797.svg"},"./res/img/element-icons/brands/twitter.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/brands/twitter.b825e3c.svg"},"./res/img/element-icons/room/default_app.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/room/default_app.79b63ba.svg"},"./res/img/element-icons/room/default_cal.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/room/default_cal.6bea887.svg"},"./res/img/element-icons/room/default_clock.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/room/default_clock.d7c6411.svg"},"./res/img/element-icons/room/default_doc.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/room/default_doc.a42767c.svg"},"./res/img/element-icons/room/default_video.svg":(e,t,n)=>{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/element-icons/room/default_video.f29df7d.svg"},"./res/img/external-link.svg":(e,t,n)=>{"use strict";n.d(t,{I:()=>a});var i,s=n("./node_modules/react/index.js");function o(){return o=Object.assign?Object.assign.bind():function(e){for(var t=1;t{"use strict";n.d(t,{A:()=>i});n("./node_modules/react/index.js");const i="img/matrix.9166e4b.svg"},"./res/img/stickerpack-placeholder.png":e=>{e.exports="img/stickerpack-placeholder.877b5d0.png"},"./src/components/structures/ErrorMessage.tsx":(e,t,n)=>{"use strict";n.d(t,{K:()=>o});var i=n("./node_modules/react/index.js"),s=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/warning.js");const o=({message:e})=>{const t=e?i.createElement(s.A,{className:"mx_Icon mx_Icon_16"}):null;return i.createElement("div",{className:"mx_ErrorMessage"},t,e)}},"./src/components/views/auth/LoginWithQR-types.ts":(e,t,n)=>{"use strict";n.d(t,{HY:()=>o,Kt:()=>i,a0:()=>s});let i=function(e){return e.Show="show",e}({}),s=function(e){return e[e.Loading=0]="Loading",e[e.ShowingQR=1]="ShowingQR",e[e.OutOfBandConfirmation=2]="OutOfBandConfirmation",e[e.WaitingForDevice=3]="WaitingForDevice",e[e.Verifying=4]="Verifying",e[e.Error=5]="Error",e}({}),o=function(e){return e[e.Cancel=0]="Cancel",e[e.Decline=1]="Decline",e[e.Approve=2]="Approve",e[e.Back=3]="Back",e[e.ShowQr=4]="ShowQr",e}({})},"./src/components/views/auth/PassphraseConfirmField.tsx":(e,t,n)=>{"use strict";n.d(t,{A:()=>c});var i=n("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),s=n("./node_modules/react/index.js"),o=n("./src/components/views/elements/Field.tsx"),r=n("./src/components/views/elements/Validation.tsx"),a=n("./src/languageHandler.tsx");class l extends s.PureComponent{constructor(...e){super(...e),(0,i.A)(this,"validate",(0,r.A)({rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,a._t)(this.props.labelRequired)},{key:"match",test:({value:e})=>!e||e===this.props.password,invalid:()=>(0,a._t)(this.props.labelInvalid)}]})),(0,i.A)(this,"onValidate",async e=>{const t=await this.validate(e);return this.props.onValidate&&this.props.onValidate(t),t})}render(){return s.createElement(o.A,{id:this.props.id,ref:this.props.fieldRef,type:"password",label:(0,a._t)(this.props.label),autoComplete:this.props.autoComplete,value:this.props.value,onChange:this.props.onChange,onValidate:this.onValidate,autoFocus:this.props.autoFocus,tooltipAlignment:this.props.tooltipAlignment})}}(0,i.A)(l,"defaultProps",{label:(0,a.AO)("auth|change_password_confirm_label"),labelRequired:(0,a.AO)("auth|change_password_confirm_label"),labelInvalid:(0,a.AO)("auth|change_password_confirm_invalid")});const c=l},"./src/components/views/auth/PassphraseField.tsx":(e,t,n)=>{"use strict";n.d(t,{A:()=>h});var i=n("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),s=n("./node_modules/react/index.js"),o=n("./node_modules/classnames/index.js"),r=n.n(o),a=n("./src/SdkConfig.ts"),l=n("./src/components/views/elements/Validation.tsx"),c=n("./src/languageHandler.tsx"),d=n("./src/components/views/elements/Field.tsx"),m=n("./src/MatrixClientPeg.ts");class u extends s.PureComponent{constructor(...e){super(...e),(0,i.A)(this,"validate",(0,l.A)({description:function(e){const t=e?e.score:0;return s.createElement("progress",{className:"mx_PassphraseField_progress",max:4,value:t})},deriveData:async({value:e})=>{if(!e)return null;const{scorePassword:t}=await Promise.all([n.e(6501),n.e(9393)]).then(n.bind(n,"./src/utils/PasswordScorer.ts"));return t(m.J.get(),e,this.props.userInputs)},rules:[{key:"required",test:({value:e,allowEmpty:t})=>t||!!e,invalid:()=>(0,c._t)(this.props.labelEnterPassword)},{key:"complexity",test:async function({value:e},t){if(!e||!t)return!1;const n=t.score>=this.props.minScore;return a.Ay.get("dangerously_allow_unsafe_and_insecure_passwords")||n},valid:function(e){return e&&e.score>=this.props.minScore?(0,c._t)(this.props.labelStrongPassword):(0,c._t)(this.props.labelAllowedButUnsafe)},invalid:function(e){if(!e)return null;const{feedback:t}=e;return t.warning||t.suggestions[0]||(0,c._t)("auth|password_field_keep_going_prompt")}}],memoize:!0})),(0,i.A)(this,"onValidate",async e=>{const t=await this.validate(e);return this.props.onValidate&&this.props.onValidate(t),t})}render(){return s.createElement(d.A,{id:this.props.id,autoFocus:this.props.autoFocus,className:r()("mx_PassphraseField",this.props.className),ref:this.props.fieldRef,type:"password",autoComplete:"new-password",label:(0,c._t)(this.props.label),value:this.props.value,onChange:this.props.onChange,onValidate:this.onValidate,tooltipAlignment:this.props.tooltipAlignment})}}(0,i.A)(u,"defaultProps",{label:(0,c.AO)("common|password"),labelEnterPassword:(0,c.AO)("auth|password_field_label"),labelStrongPassword:(0,c.AO)("auth|password_field_strong_label"),labelAllowedButUnsafe:(0,c.AO)("auth|password_field_weak_label")});const h=u},"./src/components/views/rooms/CollapsibleButton.tsx":(e,t,n)=>{"use strict";n.d(t,{J:()=>u});var i=n("./node_modules/@babel/runtime/helpers/esm/extends.js"),s=n("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),o=n("./node_modules/react/index.js"),r=n("./node_modules/classnames/index.js"),a=n.n(r),l=n("./src/components/views/elements/AccessibleButton.tsx"),c=n("./src/components/views/rooms/MessageComposerButtons.tsx"),d=n("./src/components/views/context_menus/IconizedContextMenu.tsx");const m=["title","children","className","iconClassName","inputRef"],u=e=>{let{title:t,children:n,className:r,iconClassName:u,inputRef:h}=e,p=(0,s.A)(e,m);return!!(0,o.useContext)(c.ZF)?o.createElement(d.R$,(0,i.A)({},p,{iconClassName:u,label:t,inputRef:h})):o.createElement(l.A,(0,i.A)({},p,{title:t,className:a()(r,u),ref:h}),n)}},"./src/components/views/rooms/EmojiButton.tsx":(e,t,n)=>{"use strict";n.d(t,{h:()=>u});var i=n("./node_modules/@babel/runtime/helpers/esm/extends.js"),s=n("./node_modules/classnames/index.js"),o=n.n(s),r=n("./node_modules/react/index.js"),a=n("./src/languageHandler.tsx"),l=n("./src/components/structures/ContextMenu.tsx"),c=n("./src/components/views/emojipicker/EmojiPicker.tsx"),d=n("./src/components/views/rooms/CollapsibleButton.tsx"),m=n("./src/components/views/rooms/MessageComposerButtons.tsx");function u({addEmoji:e,menuPosition:t,className:n}){const s=(0,r.useContext)(m.ZF),[u,h,p,g]=(0,l.EF)();let v=null;if(u&&h.current){const n=null!=t?t:(0,l.qv)(h.current.getBoundingClientRect()),o=()=>{g(),null==s||s()};v=r.createElement(l.Ay,(0,i.A)({},n,{onFinished:o,managed:!1}),r.createElement(c.Ay,{onChoose:e,onFinished:o}))}const _=o()("mx_EmojiButton",n,{mx_EmojiButton_highlight:u});return r.createElement(r.Fragment,null,r.createElement(d.J,{className:_,iconClassName:"mx_EmojiButton_icon",onClick:p,title:(0,a._t)("common|emoji"),inputRef:h}),v)}},"./src/components/views/rooms/MessageComposerButtons.tsx":(e,t,n)=>{"use strict";n.d(t,{Ay:()=>V,ZF:()=>R});var i=n("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),s=n("./node_modules/@babel/runtime/helpers/esm/extends.js"),o=n("./node_modules/classnames/index.js"),r=n.n(o),a=n("./node_modules/matrix-js-sdk/src/matrix.ts"),l=n("./node_modules/react/index.js"),c=n("./src/languageHandler.tsx"),d=n("./src/components/views/rooms/CollapsibleButton.tsx"),m=n("./src/dispatcher/dispatcher.ts"),u=n("./src/components/views/dialogs/ErrorDialog.tsx"),h=n("./src/components/views/location/index.tsx"),p=n("./src/Modal.tsx"),g=n("./src/components/views/elements/PollCreateDialog.tsx"),v=n("./src/MatrixClientPeg.ts"),_=n("./src/ContentMessages.ts"),f=n("./src/contexts/MatrixClientContext.tsx"),E=n("./src/hooks/useDispatcher.ts"),y=n("./src/utils/BrowserWorkarounds.ts"),b=n("./src/components/views/context_menus/IconizedContextMenu.tsx"),w=n("./src/components/views/rooms/EmojiButton.tsx"),S=n("./src/utils/arrays.ts"),A=n("./src/hooks/useSettings.ts"),C=n("./src/components/views/elements/AccessibleButton.tsx"),x=n("./src/contexts/ScopedRoomContext.tsx");const R=(0,l.createContext)(null);function k(e){return l.createElement(w.h,{key:"emoji_button",addEmoji:e.addEmoji,menuPosition:e.menuPosition,className:"mx_MessageComposer_button"})}function I(){return l.createElement(N,{key:"controls_upload"})}const T=(0,l.createContext)(null),P=({roomId:e,relation:t,children:n})=>{const i=(0,l.useContext)(f.Ay),s=(0,x.ME)("timelineRenderingType"),o=(0,l.useRef)(null),r=()=>{var e;null!=i&&i.isGuest()?m.A.dispatch({action:"require_registration"}):null===(e=o.current)||void 0===e||e.click()};(0,E.F)(m.A,e=>{s.timelineRenderingType===e.context&&"upload_file"===e.action&&r()});return l.createElement(T.Provider,{value:r},n,l.createElement("input",{ref:o,type:"file",style:{display:"none"},multiple:!0,onClick:y.e,onChange:n=>{var o;0!==(null===(o=n.target.files)||void 0===o?void 0:o.length)&&(_.Ay.sharedInstance().sendContentListToRoom(Array.from(n.target.files),e,t,i,s.timelineRenderingType),n.target.value="")}}))},N=()=>{const e=(0,l.useContext)(R),t=(0,l.useContext)(T);return l.createElement(d.J,{className:"mx_MessageComposer_button",iconClassName:"mx_MessageComposer_upload",onClick:()=>{null==t||t(),null==e||e()},title:(0,c._t)("common|attachment")})};function M(e){return e.showStickersButton?l.createElement(d.J,{id:"stickersButton",key:"controls_stickers",className:"mx_MessageComposer_button",iconClassName:"mx_MessageComposer_stickers",onClick:()=>e.setStickerPickerOpen(!e.isStickerPickerOpen),title:e.isStickerPickerOpen?(0,c._t)("composer|close_sticker_picker"):(0,c._t)("common|sticker")}):null}function D(e,t){return t?null:l.createElement(d.J,{key:"voice_message_send",className:"mx_MessageComposer_button",iconClassName:"mx_MessageComposer_voiceMessage",onClick:e.onRecordStartEndClick,title:(0,c._t)("composer|voice_message_button")})}function O(e,t){return l.createElement(F,{key:"polls",room:e,relation:t})}class F extends l.PureComponent{constructor(...e){super(...e),(0,i.A)(this,"onCreateClick",()=>{var e;null===(e=this.context)||void 0===e||e.call(this);if(this.props.room.currentState.maySendEvent(a.M_POLL_START.name,v.J.safeGet().getSafeUserId())){var t;const e=(null===(t=this.props.relation)||void 0===t?void 0:t.rel_type)===a.THREAD_RELATION_TYPE.name?this.props.relation.event_id:void 0;p.Ay.createDialog(g.A,{room:this.props.room,threadId:e},"mx_CompoundDialog",!1,!0)}else p.Ay.createDialog(u.A,{title:(0,c._t)("composer|poll_button_no_perms_title"),description:(0,c._t)("composer|poll_button_no_perms_description")})})}render(){var e;return(null===(e=this.props.relation)||void 0===e?void 0:e.rel_type)===a.THREAD_RELATION_TYPE.name?null:l.createElement(d.J,{className:"mx_MessageComposer_button",iconClassName:"mx_MessageComposer_poll",onClick:this.onCreateClick,title:(0,c._t)("composer|poll_button")})}}function L(e,t,n){const i=t.getMember(n.getSafeUserId());return e.showLocationButton&&i?l.createElement(h.Uo,{key:"location",roomId:t.roomId,relation:e.relation,sender:i,menuPosition:e.menuPosition}):null}function U({isRichTextEnabled:e,onClick:t}){const n=e?(0,c._t)("composer|mode_plain"):(0,c._t)("composer|mode_rich_text");return l.createElement(d.J,{className:"mx_MessageComposer_button",iconClassName:r()({mx_MessageComposer_plain_text:!e,mx_MessageComposer_rich_text:e}),onClick:t,title:n})}(0,i.A)(F,"contextType",R);const V=e=>{const t=(0,l.useContext)(f.Ay),{room:n,narrow:i}=(0,x.ME)("room","narrow"),o=(0,A.ti)("feature_wysiwyg_composer");if(!t||!n||e.haveRecording)return null;let a,d;i?(a=[o?l.createElement(U,{key:"composerModeButton",isRichTextEnabled:e.isRichTextEnabled,onClick:e.onComposerModeClick}):k(e)],d=[I(),M(e),D(e,i),e.showPollsButton?O(n,e.relation):null,L(e,n,t)]):(a=[o?l.createElement(U,{key:"composerModeButton",isRichTextEnabled:e.isRichTextEnabled,onClick:e.onComposerModeClick}):k(e),I()],d=[M(e),D(e,i),e.showPollsButton?O(n,e.relation):null,L(e,n,t)]),a=(0,S.Bo)(a),d=(0,S.Bo)(d);const m=r()({mx_MessageComposer_button:!0,mx_MessageComposer_buttonMenu:!0,mx_MessageComposer_closeButtonMenu:e.isMenuOpen});return l.createElement(P,{roomId:n.roomId,relation:e.relation},a,d.length>0&&l.createElement(C.A,{className:m,onClick:e.toggleButtonMenu,title:(0,c._t)("quick_settings|sidebar_settings")}),e.isMenuOpen&&l.createElement(b.Ay,(0,s.A)({onFinished:e.toggleButtonMenu},e.menuPosition,{wrapperClassName:"mx_MessageComposer_Menu",compact:!0}),l.createElement(R.Provider,{value:e.toggleButtonMenu},l.createElement(b.tx,null,d))))}},"./src/components/views/settings/KeyboardShortcut.tsx":(e,t,n)=>{"use strict";n.d(t,{S:()=>l});var i=n("./node_modules/react/index.js"),s=n("./src/accessibility/KeyboardShortcuts.ts"),o=n("./src/Keyboard.ts"),r=n("./src/languageHandler.tsx");const a=({name:e,last:t})=>{const n=s.GA[e],o=s.hm[e];return i.createElement(i.Fragment,null,i.createElement("kbd",null," ",n||o&&(0,r._t)(o)||e," "),!t&&"+")},l=({value:e,className:t="mx_KeyboardShortcut"})=>{if(!e)return null;const n=[];return e.ctrlOrCmdKey?n.push(i.createElement(a,{key:"ctrlOrCmdKey",name:o.vL?o.Uz.META:o.Uz.CONTROL})):e.ctrlKey?n.push(i.createElement(a,{key:"ctrlKey",name:o.Uz.CONTROL})):e.metaKey&&n.push(i.createElement(a,{key:"metaKey",name:o.Uz.META})),e.altKey&&n.push(i.createElement(a,{key:"altKey",name:o.Uz.ALT})),e.shiftKey&&n.push(i.createElement(a,{key:"shiftKey",name:o.Uz.SHIFT})),i.createElement("div",{className:t},n,i.createElement(a,{name:e.key,last:!0}))}},"./src/effects lazy recursive ^\\.\\/.*$ referencedExports: default":(e,t,n)=>{var i={"./":["./src/effects/index.ts",9],"./ICanvasEffect":["./src/effects/ICanvasEffect.ts",7,5215],"./ICanvasEffect.ts":["./src/effects/ICanvasEffect.ts",7,5215],"./confetti":["./src/effects/confetti/index.ts",9,2382],"./confetti/":["./src/effects/confetti/index.ts",9,2382],"./confetti/index":["./src/effects/confetti/index.ts",9,2382],"./confetti/index.ts":["./src/effects/confetti/index.ts",9,2382],"./effect":["./src/effects/effect.ts",9,3508],"./effect.ts":["./src/effects/effect.ts",9,3508],"./fireworks":["./src/effects/fireworks/index.ts",9,3636],"./fireworks/":["./src/effects/fireworks/index.ts",9,3636],"./fireworks/index":["./src/effects/fireworks/index.ts",9,3636],"./fireworks/index.ts":["./src/effects/fireworks/index.ts",9,3636],"./hearts":["./src/effects/hearts/index.ts",9,1095],"./hearts/":["./src/effects/hearts/index.ts",9,1095],"./hearts/index":["./src/effects/hearts/index.ts",9,1095],"./hearts/index.ts":["./src/effects/hearts/index.ts",9,1095],"./index":["./src/effects/index.ts",9],"./index.ts":["./src/effects/index.ts",9],"./rainfall":["./src/effects/rainfall/index.ts",9,3197],"./rainfall/":["./src/effects/rainfall/index.ts",9,3197],"./rainfall/index":["./src/effects/rainfall/index.ts",9,3197],"./rainfall/index.ts":["./src/effects/rainfall/index.ts",9,3197],"./snowfall":["./src/effects/snowfall/index.ts",9,2792],"./snowfall/":["./src/effects/snowfall/index.ts",9,2792],"./snowfall/index":["./src/effects/snowfall/index.ts",9,2792],"./snowfall/index.ts":["./src/effects/snowfall/index.ts",9,2792],"./spaceinvaders":["./src/effects/spaceinvaders/index.ts",9,4522],"./spaceinvaders/":["./src/effects/spaceinvaders/index.ts",9,4522],"./spaceinvaders/index":["./src/effects/spaceinvaders/index.ts",9,4522],"./spaceinvaders/index.ts":["./src/effects/spaceinvaders/index.ts",9,4522],"./utils":["./src/effects/utils.ts",9],"./utils.ts":["./src/effects/utils.ts",9]};function s(e){if(!n.o(i,e))return Promise.resolve().then(()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t});var t=i[e],s=t[0];return Promise.all(t.slice(2).map(n.e)).then(()=>n.t(s,16|t[1]))}s.keys=()=>Object.keys(i),s.id="./src/effects lazy recursive ^\\.\\/.*$ referencedExports: default",e.exports=s},"./src/indexing/EventIndexPeg.ts":(e,t,n)=>{"use strict";n.d(t,{A:()=>v});var i=n("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),s=n("./node_modules/matrix-js-sdk/src/logger.ts"),o=n("./src/PlatformPeg.ts"),r=n("./node_modules/events/events.js"),a=n("./node_modules/matrix-js-sdk/src/matrix.ts"),l=n("./node_modules/matrix-js-sdk/src/types.ts"),c=n("./node_modules/matrix-js-sdk/src/utils.ts"),d=n("./src/MatrixClientPeg.ts"),m=n("./src/settings/SettingsStore.ts"),u=n("./src/settings/SettingLevel.ts"),h=n("./src/utils/arrays.ts");class p extends r.EventEmitter{constructor(...e){super(...e),(0,i.A)(this,"crawlerCheckpoints",[]),(0,i.A)(this,"crawler",null),(0,i.A)(this,"currentCheckpoint",null),(0,i.A)(this,"onSync",async(e,t,n)=>{var i;const s=null===(i=o.A.get())||void 0===i?void 0:i.getEventIndexingManager();if(s){if("PREPARED"===t&&"SYNCING"===e){return await s.isEventIndexEmpty()&&await this.addInitialCheckpoints(),void this.startCrawler()}"SYNCING"===t&&"SYNCING"===e&&await s.commitLiveEvents()}}),(0,i.A)(this,"onRoomTimeline",async(e,t,n,i,s)=>{if(!t)return;const o=d.J.safeGet();return o.isRoomEncrypted(e.getRoomId())?e.isRedaction()?this.redactEvent(e):void(!n&&s&&s.liveEvent&&!e.isRedacted()&&(await o.decryptEventIfNeeded(e),await this.addLiveEventToIndex(e))):void 0}),(0,i.A)(this,"onRoomStateEvent",async(e,t)=>{d.J.safeGet().isRoomEncrypted(t.roomId)&&(e.getType()!==a.EventType.RoomEncryption||await this.isRoomIndexed(t.roomId)||(s.vF.log("EventIndex: Adding a checkpoint for a newly encrypted room",t.roomId),this.addRoomCheckpoint(t.roomId,!0)))}),(0,i.A)(this,"redactEvent",async e=>{var t;const n=null===(t=o.A.get())||void 0===t?void 0:t.getEventIndexingManager();if(!n)return;const i=e.getAssociatedId();if(i)try{await n.deleteEvent(i)}catch(e){s.vF.log("EventIndex: Error deleting event from index",e)}}),(0,i.A)(this,"onTimelineReset",async e=>{e&&d.J.safeGet().isRoomEncrypted(e.roomId)&&(s.vF.log("EventIndex: Adding a checkpoint because of a limited timeline",e.roomId),this.addRoomCheckpoint(e.roomId,!1))})}async init(){var e;const t=null===(e=o.A.get())||void 0===e?void 0:e.getEventIndexingManager();t&&(this.crawlerCheckpoints=await t.loadCheckpoints(),s.vF.log("EventIndex: Loaded checkpoints",this.crawlerCheckpoints),this.registerListeners())}registerListeners(){const e=d.J.safeGet();e.on(a.ClientEvent.Sync,this.onSync),e.on(a.RoomEvent.Timeline,this.onRoomTimeline),e.on(a.RoomEvent.TimelineReset,this.onTimelineReset),e.on(a.RoomStateEvent.Events,this.onRoomStateEvent)}removeListeners(){const e=d.J.get();null!==e&&(e.removeListener(a.ClientEvent.Sync,this.onSync),e.removeListener(a.RoomEvent.Timeline,this.onRoomTimeline),e.removeListener(a.RoomEvent.TimelineReset,this.onTimelineReset),e.removeListener(a.RoomStateEvent.Events,this.onRoomStateEvent))}async addInitialCheckpoints(){var e;const t=null===(e=o.A.get())||void 0===e?void 0:e.getEventIndexingManager();if(!t)return;const n=d.J.safeGet(),i=n.getRooms(),r=await(0,h.j7)(i,async e=>{var t;return Boolean(await(null===(t=n.getCrypto())||void 0===t?void 0:t.isEncryptionEnabledInRoom(e.roomId)))});s.vF.log("EventIndex: Adding initial crawler checkpoints"),await Promise.all(r.map(async e=>{const n=e.getLiveTimeline().getPaginationToken(a.Direction.Backward),i={roomId:e.roomId,token:n,direction:a.Direction.Backward,fullCrawl:!0},o={roomId:e.roomId,token:n,direction:a.Direction.Forward};try{i.token&&(await t.addCrawlerCheckpoint(i),this.crawlerCheckpoints.push(i)),o.token&&(await t.addCrawlerCheckpoint(o),this.crawlerCheckpoints.push(o))}catch(t){s.vF.log("EventIndex: Error adding initial checkpoints for room",e.roomId,i,o,t)}}))}isValidEvent(e){const t=[a.EventType.RoomMessage,a.EventType.RoomName,a.EventType.RoomTopic].includes(e.getType())&&!e.isRedacted()&&!e.isDecryptionFailure();let n=!0,i=!0;if(e.getType()!==a.EventType.RoomMessage||e.isRedacted())e.getType()!==a.EventType.RoomTopic||e.isRedacted()?e.getType()!==a.EventType.RoomName||e.isRedacted()||e.getContent().name||(i=!1):e.getContent().topic||(i=!1);else{const t=e.getContent().msgtype;n=!!t&&!t.startsWith("m.key.verification"),e.getContent().body||(i=!1)}return t&&n&&i}eventToJson(e){const t=e.getEffectiveEvent();return e.isEncrypted()?(t.curve25519Key=e.getSenderKey(),t.ed25519Key=e.getClaimedEd25519Key(),t.algorithm=e.getWireContent().algorithm,t.forwardingCurve25519KeyChain=e.getForwardingCurve25519KeyChain()):(delete t.curve25519Key,delete t.ed25519Key,delete t.algorithm,delete t.forwardingCurve25519KeyChain),t}async addLiveEventToIndex(e){var t,n,i;const s=null===(t=o.A.get())||void 0===t?void 0:t.getEventIndexingManager();if(!s||!this.isValidEvent(e))return;const r=this.eventToJson(e),a={displayname:null===(n=e.sender)||void 0===n?void 0:n.rawDisplayName,avatar_url:null===(i=e.sender)||void 0===i?void 0:i.getMxcAvatarUrl()};await s.addEventToIndex(r,a)}emitNewCheckpoint(){this.emit("changedCheckpoint",this.currentRoom())}async addEventsFromLiveTimeline(e){const t=e.getEvents();for(let e=0;e{t=!0}};let r=!1;for(;!t;){let e=m.A.getValueAt(u.p.DEVICE,"crawlerSleepTime");if(e=Math.max(e,100),r&&(e=5e3),null!==this.currentCheckpoint&&(this.currentCheckpoint=null,this.emitNewCheckpoint()),await(0,c.yy)(e),t)break;const o=this.crawlerCheckpoints.shift();if(void 0===o){r=!0;continue}this.currentCheckpoint=o,this.emitNewCheckpoint(),r=!1;const d=n.getEventMapper({preventReEmit:!0});let h;try{h=await n.createMessagesRequest(o.roomId,o.token,100,o.direction)}catch(e){if(e instanceof a.HTTPError&&403===e.httpStatus){s.vF.log("EventIndex: Removing checkpoint as we don't have ","permissions to fetch messages from this room.",o);try{await i.removeCrawlerCheckpoint(o)}catch(e){s.vF.log("EventIndex: Error removing checkpoint",o,e)}continue}s.vF.log("EventIndex: Error crawling using checkpoint:",o,",",e),this.crawlerCheckpoints.push(o);continue}if(t){this.crawlerCheckpoints.push(o);break}if(0===h.chunk.length){s.vF.log("EventIndex: Done with the checkpoint",o);try{await i.removeCrawlerCheckpoint(o)}catch(e){s.vF.log("EventIndex: Error removing checkpoint",o,e)}continue}const p=h.chunk.map(d);let g=[];void 0!==h.state&&(g=h.state.map(d));const v={};g.forEach(e=>{e.getContent().membership===l.O.Join&&(v[e.getSender()]={displayname:e.getContent().displayname,avatar_url:e.getContent().avatar_url})});const _=p.filter(e=>e.isEncrypted()).map(e=>n.decryptEventIfNeeded(e,{emit:!1}));await Promise.all(_);const f=p.filter(this.isValidEvent),E=p.filter(e=>e.isRedaction()),y=f.map(e=>{const t=this.eventToJson(e);let n={};t.sender in v&&(n=v[t.sender]);return{event:t,profile:n}});let b=null;h.end&&(b={roomId:o.roomId,token:h.end,fullCrawl:o.fullCrawl,direction:o.direction});try{for(let e=0;e{const n=p(t.event),i=new a.RoomMember(e.roomId,n.getSender());i.name=t.profile.displayname+" ("+n.getSender()+")";const s=p({content:{membership:l.O.Join,avatar_url:t.profile.avatar_url,displayname:t.profile.displayname},type:a.EventType.RoomMember,event_id:n.getId()+":eventIndex",room_id:n.getRoomId(),sender:n.getSender(),origin_server_ts:n.getTs(),state_key:n.getSender()});return i.events.member=s,n.sender=i,n})}async populateFileTimeline(e,t,n,i=10,o,r=a.EventTimeline.BACKWARDS){const l=await this.loadFileEvents(n,i,o,r);null===o&&(l.reverse(),r=r==a.EventTimeline.BACKWARDS?a.EventTimeline.FORWARDS:a.EventTimeline.BACKWARDS),l.forEach(n=>{e.eventIdToTimeline(n.getId())||e.addEventToTimeline(n,t,{toStartOfTimeline:r==a.EventTimeline.BACKWARDS,fromCache:!1,addToState:!1})});let c=!1,d="";return l.length>0&&(d=l[l.length-1].getId(),c=!0),s.vF.log("EventIndex: Populating file panel with",l.length,"events and setting the pagination token to",d),t.setPaginationToken(d,a.EventTimeline.BACKWARDS),c}paginateTimelineWindow(e,t,n,i){const s=t.getTimelineIndex(n);if(!s)return Promise.resolve(!1);if(s.pendingPaginate)return s.pendingPaginate;if(t.extend(n,i))return Promise.resolve(!0);const o=(async(e,t,n,i,s)=>{var o;const r=t.timeline,a=r.getTimelineSet(),l=null!==(o=r.getPaginationToken(i))&&void 0!==o?o:void 0,c=await this.populateFileTimeline(a,r,n,s,l,i);return t.pendingPaginate=void 0,e.extend(i,s),c})(t,s,e,n,i);return s.pendingPaginate=o,o}async getStats(){var e;const t=null===(e=o.A.get())||void 0===e?void 0:e.getEventIndexingManager();return null==t?void 0:t.getStats()}async isRoomIndexed(e){var t;const n=null===(t=o.A.get())||void 0===t?void 0:t.getEventIndexingManager();return null==n?void 0:n.isRoomIndexed(e)}currentRoom(){if(null===this.currentCheckpoint&&0===this.crawlerCheckpoints.length)return null;const e=d.J.safeGet();return null!==this.currentCheckpoint?e.getRoom(this.currentCheckpoint.roomId):e.getRoom(this.crawlerCheckpoints[0].roomId)}crawlingRooms(){const e=new Set,t=new Set;this.crawlerCheckpoints.forEach((e,n)=>{t.add(e.roomId)}),null!==this.currentCheckpoint&&t.add(this.currentCheckpoint.roomId);const n=d.J.safeGet();return n.getRooms().filter(e=>n.isRoomEncrypted(e.roomId)).forEach((t,n)=>{e.add(t.roomId)}),{crawlingRooms:t,totalRooms:e}}}class g{constructor(){(0,i.A)(this,"index",null),(0,i.A)(this,"error",void 0),(0,i.A)(this,"_supportIsInstalled",!1)}async init(){var e;const t=null===(e=o.A.get())||void 0===e?void 0:e.getEventIndexingManager();return t?(this._supportIsInstalled=await t.supportsEventIndexing(),this.supportIsInstalled()?m.A.getValueAt(u.p.DEVICE,"enableEventIndexing")?this.initEventIndex():(s.vF.log("EventIndex: Event indexing is disabled, not initializing"),!1):(s.vF.log("EventIndex: Event indexing isn't installed for the platform, not initializing."),!1)):(s.vF.log("EventIndex: Platform doesn't support event indexing, not initializing."),!1)}async initEventIndex(){var e;const t=new p,n=null===(e=o.A.get())||void 0===e?void 0:e.getEventIndexingManager(),i=d.J.get();if(!n||!i)throw new Error("Unable to init event index");const r=i.getUserId(),a=i.getDeviceId();try{await n.initEventIndex(r,a);const e=await n.getUserVersion(),i=await n.isEventIndexEmpty();i?await n.setUserVersion(1):0!==e||i||(await n.closeEventIndex(),await this.deleteEventIndex(),await n.initEventIndex(r,a),await n.setUserVersion(1)),s.vF.log("EventIndex: Successfully initialized the event index"),await t.init()}catch(e){return s.vF.log("EventIndex: Error initializing the event index",e),this.error=e,!1}return this.index=t,!0}platformHasSupport(){var e;return null!=(null===(e=o.A.get())||void 0===e?void 0:e.getEventIndexingManager())}supportIsInstalled(){return this._supportIsInstalled}get(){return this.index}start(){null!==this.index&&this.index.startCrawler()}stop(){null!==this.index&&this.index.stopCrawler()}async unset(){null!==this.index&&(await this.index.close(),this.index=null)}async deleteEventIndex(){var e;const t=null===(e=o.A.get())||void 0===e?void 0:e.getEventIndexingManager();t&&(await this.unset(),s.vF.log("EventIndex: Deleting event index."),await t.deleteEventIndex())}}window.mxEventIndexPeg||(window.mxEventIndexPeg=new g);const v=window.mxEventIndexPeg},"./src/vector/app.tsx":(e,t,n)=>{"use strict";n.r(t),n.d(t,{loadApp:()=>$R});n("./node_modules/matrix-js-sdk/src/browser-index.ts");var i=n("./node_modules/react/index.js"),s=n("./node_modules/matrix-js-sdk/src/logger.ts"),o=n("./node_modules/matrix-js-sdk/src/matrix.ts"),r=n("./node_modules/@matrix-org/react-sdk-module-api/lib/lifecycles/WrapperLifecycle.js"),a=n("./src/PlatformPeg.ts"),l=n("./src/languageHandler.tsx"),c=n("./src/SdkConfig.ts");const d=[o.AutoDiscovery.ERROR_INVALID_HOMESERVER,o.AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER],m=Object.values(o.AutoDiscoveryError),u=e=>m.includes(e),h=e=>{switch(e){case o.AutoDiscoveryError.GenericFailure:return(0,l.AO)("auth|autodiscovery_invalid");case o.AutoDiscoveryError.Invalid:return(0,l.AO)("auth|autodiscovery_generic_failure");case o.AutoDiscoveryError.InvalidHsBaseUrl:return(0,l.AO)("auth|autodiscovery_invalid_hs_base_url");case o.AutoDiscoveryError.InvalidHomeserver:return(0,l.AO)("auth|autodiscovery_invalid_hs");case o.AutoDiscoveryError.InvalidIsBaseUrl:return(0,l.AO)("auth|autodiscovery_invalid_is_base_url");case o.AutoDiscoveryError.InvalidIdentityServer:return(0,l.AO)("auth|autodiscovery_invalid_is");case o.AutoDiscoveryError.InvalidIs:return(0,l.AO)("auth|autodiscovery_invalid_is_response");case o.AutoDiscoveryError.MissingWellknown:return(0,l.AO)("auth|autodiscovery_no_well_known");case o.AutoDiscoveryError.InvalidJson:return(0,l.AO)("auth|autodiscovery_invalid_json");case o.AutoDiscoveryError.UnsupportedHomeserverSpecVersion:return(0,l.AO)("auth|autodiscovery_hs_incompatible")}};class p{static isLivelinessError(e){if(!e)return!1;let t=e;return e instanceof l.P7?t=e.cause:e instanceof Error&&(t=e.message),d.includes(t)}static authComponentStateForError(e,t="login"){if(!e)return{serverIsAlive:!0,serverErrorIsFatal:!1,serverDeadError:null};let n=(0,l._t)("cannot_reach_homeserver"),s=(0,l._t)("cannot_reach_homeserver_detail");if(!p.isLivelinessError(e)){const e=c.Ay.get().brand;n=(0,l._t)("auth|misconfigured_title",{brand:e}),s=(0,l._t)("auth|misconfigured_body",{brand:e},{a:e=>i.createElement("a",{href:"https://github.com/vector-im/element-web/blob/master/docs/config.md",target:"_blank",rel:"noreferrer noopener"},e)})}let r=!0;return(e instanceof Error?e.message:e)===o.AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER&&(r=!1,n=(0,l._t)("auth|failed_connect_identity_server"),s="register"===t?(0,l._t)("auth|failed_connect_identity_server_register"):"reset_password"===t?(0,l._t)("auth|failed_connect_identity_server_reset_password"):(0,l._t)("auth|failed_connect_identity_server_other")),{serverIsAlive:!1,serverErrorIsFatal:r,serverDeadError:i.createElement("div",null,i.createElement("strong",null,n),i.createElement("div",null,s))}}static async validateServerConfigWithStaticUrls(e,t,n=!1){if(!e)throw new l.P7("auth|no_hs_url_provided");const i={"m.homeserver":{base_url:e}};t&&(i["m.identity_server"]={base_url:t});const s=await o.AutoDiscovery.fromDiscoveryConfig(i),r=new URL(e).hostname;return p.buildValidatedConfigFromDiscovery(r,s,n,!0)}static async validateServerName(e){const t=await o.AutoDiscovery.findClientConfig(e);return p.buildValidatedConfigFromDiscovery(e,t)}static async buildValidatedConfigFromDiscovery(e,t,n=!1,i=!1){var r,a;if(null==t||!t["m.homeserver"])throw s.vF.error("Ended up in a state of not knowing which homeserver to connect to."),new l.P7("auth|autodiscovery_unexpected_error_hs");const d=t["m.homeserver"],m=t["m.identity_server"],g=c.Ay.get("validated_server_config");let v=g&&g.isUrl;var _;if(m&&m.state===o.AutoDiscovery.SUCCESS)v=null!==(_=m.base_url)&&void 0!==_?_:void 0;else if(m&&m.state!==o.AutoDiscovery.PROMPT){if(s.vF.error("Error determining preferred identity server URL:",m),m.state===o.AutoDiscovery.FAIL_ERROR){if(u(m.error))throw new l.P7(h(m.error),{cause:d.error});throw new l.P7("auth|autodiscovery_unexpected_error_is")}d.error=o.AutoDiscovery.ERROR_INVALID_IDENTITY_SERVER,m.base_url&&(v=m.base_url)}if(d.state!==o.AutoDiscovery.SUCCESS&&(s.vF.error("Error processing homeserver config:",d),!n||!p.isLivelinessError(d.error))){if(u(d.error))throw new l.P7(h(d.error),{cause:d.error});throw new l.P7("auth|autodiscovery_unexpected_error_hs")}const f=d.base_url;if(!f)throw s.vF.error("No homeserver URL configured"),new l.P7("auth|autodiscovery_unexpected_error_hs");let E=null!=e?e:d.server_name;const y=new URL(f);if(E||(E=y.hostname),!E)throw s.vF.error("Failed to parse homeserver name from homeserver URL"),new l.P7("auth|autodiscovery_unexpected_error_hs");let b,w;try{const e=new o.MatrixClient({baseUrl:f});b=await e.getAuthMetadata()}catch(e){e instanceof o.MatrixError&&404===e.httpStatus&&"M_UNRECOGNIZED"===e.errcode||(w=e)}return{hsUrl:f,hsName:E,hsNameIsDifferent:y.hostname!==E,isUrl:v,isDefault:!1,warning:null!==(r=null!==(a=d.error)&&void 0!==a?a:w)&&void 0!==r?r:null,isNameResolvable:!i,delegatedAuthentication:b}}}var g=n("./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js"),v=n("./src/MatrixClientPeg.ts"),_=n("./src/modules/ModuleRunner.ts"),f=n("./src/indexing/EventIndexPeg.ts"),E=n("./src/utils/createMatrixClient.ts"),y=n("./src/Notifier.ts"),b=n("./src/UserActivity.ts"),w=n("./node_modules/@babel/runtime/helpers/esm/defineProperty.js"),S=n("./src/dispatcher/dispatcher.ts"),A=n("./src/utils/Timer.ts");const C=new class{constructor(){(0,w.A)(this,"unavailableTimer",void 0),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"state",void 0),(0,w.A)(this,"onAction",e=>{var t;"user_activity"===e.action&&(this.setState(o.SetPresence.Online),null===(t=this.unavailableTimer)||void 0===t||t.restart())})}async start(){for(this.unavailableTimer=new A.A(18e4),this.dispatcherRef=S.A.register(this.onAction);this.unavailableTimer;)try{await this.unavailableTimer.finished(),this.setState(o.SetPresence.Unavailable)}catch{}}stop(){var e;S.A.unregister(this.dispatcherRef),this.dispatcherRef=void 0,null===(e=this.unavailableTimer)||void 0===e||e.abort(),this.unavailableTimer=void 0}getState(){var e;return null!==(e=this.state)&&void 0!==e?e:null}async setState(e){if(e===this.state)return;const t=this.state;if(this.state=e,!v.J.safeGet().isGuest())try{await v.J.safeGet().setSyncPresence(this.state),s.vF.debug("Presence:",e)}catch(e){s.vF.error("Failed to set presence:",e),this.state=t}}};var x=n("./src/utils/DMRoomMap.ts"),R=n("./src/Modal.tsx"),k=n("./src/stores/ActiveWidgetStore.ts");class I{constructor(e,t,n,i){(0,w.A)(this,"flows",[]),(0,w.A)(this,"defaultDeviceDisplayName",void 0),(0,w.A)(this,"delegatedAuthentication",void 0),(0,w.A)(this,"tempClient",null),this.hsUrl=e,this.isUrl=t,this.fallbackHsUrl=n,this.defaultDeviceDisplayName=i.defaultDeviceDisplayName,this.delegatedAuthentication=i.delegatedAuthentication}getHomeserverUrl(){return this.hsUrl}getIdentityServerUrl(){return this.isUrl}setHomeserverUrl(e){this.tempClient=null,this.hsUrl=e}setIdentityServerUrl(e){this.tempClient=null,this.isUrl=e}setDelegatedAuthentication(e){this.tempClient=null,this.delegatedAuthentication=e}createTemporaryClient(){return this.tempClient||(this.tempClient=(0,o.createClient)({baseUrl:this.hsUrl,idBaseUrl:this.isUrl})),this.tempClient}async getFlows(e){if(this.delegatedAuthentication)try{return[await T(this.delegatedAuthentication,c.Ay.get().oidc_static_clients,e)]}catch(e){s.vF.error(e)}const t=this.createTemporaryClient(),{flows:n}=await t.loginFlows(),i=n.find(e=>"m.login.sso"===e.type&&o.DELEGATED_OIDC_COMPATIBILITY.findIn(e));return this.flows=i?[i]:n,this.flows}loginViaPassword(e,t,n,i){const o=!!e&&e.indexOf("@")>0;let r;r=t&&n?{type:"m.id.phone",country:t,phone:n,number:n}:o?{type:"m.id.thirdparty",medium:"email",address:e}:{type:"m.id.user",user:e};const a={password:i,identifier:r,initial_device_display_name:this.defaultDeviceDisplayName},l=e=>P(this.fallbackHsUrl,this.isUrl,"m.login.password",a).catch(t=>{throw s.vF.log("fallback HS login failed",t),e});let c=null;return P(this.hsUrl,this.isUrl,"m.login.password",a).catch(e=>{if(c=e,403===e.httpStatus&&this.fallbackHsUrl)return l(c);throw c}).catch(e=>{throw s.vF.log("Login failed",e),e})}}const T=async(e,t,n)=>{if(n&&!(e=>{const t=e.prompt_values_supported;return Array.isArray(t)&&(null==t?void 0:t.includes("create"))})(e))throw new Error("Registration is not supported by OP");const i=await(async(e,t)=>{const n=((e,t)=>{var n;const i=e.endsWith("/")?e:e+"/";return null==t||null===(n=t[i])||void 0===n?void 0:n.client_id})(e.issuer,t);return n?(s.vF.debug(`Using static clientId for issuer ${e.issuer}`),n):await(0,o.registerOidcClient)(e,await a.A.get().getOidcClientMetadata())})(e,t);return{type:"oidcNativeFlow",clientId:i}};async function P(e,t,n,i){const r=(0,o.createClient)({baseUrl:e,idBaseUrl:t}),a=await r.login(n,i),l=a.well_known;var c,d;l&&(null!==(c=l["m.homeserver"])&&void 0!==c&&c.base_url&&(e=l["m.homeserver"].base_url,s.vF.log(`Overrode homeserver setting with ${e} from login response`)),null!==(d=l["m.identity_server"])&&void 0!==d&&d.base_url&&(t=l["m.identity_server"].base_url,s.vF.log(`Overrode IS setting with ${t} from login response`)));const m={homeserverUrl:e,identityServerUrl:t,userId:a.user_id,deviceId:a.device_id,accessToken:a.access_token};return _.r.instance.extensions.cryptoSetup.examineLoginResponse(a,m),m}var N=n("./src/utils/StorageManager.ts"),M=n("./src/utils/StorageAccess.ts"),D=n("./src/settings/SettingsStore.ts"),O=n("./src/settings/SettingLevel.ts"),F=n("./src/stores/ToastStore.ts"),L=n("./src/integrations/IntegrationManagers.ts"),U=n("./src/mjolnir/Mjolnir.ts"),V=n("./node_modules/matrix-js-sdk/src/crypto-api/index.ts"),B=n("./node_modules/matrix-js-sdk/src/randomstring.ts"),j=n("./src/PosthogAnalytics.ts"),W=n("./src/components/views/toasts/GenericToast.tsx"),H=n("./src/dispatcher/actions.ts");const z="mx_snooze_bulk_unverified_device_nag",K="reviewsessions",G=e=>{F.A.sharedInstance().addOrReplaceToast({key:K,title:(0,l._t)("encryption|verification|unverified_sessions_toast_title"),icon:"verification_warning",props:{description:(0,l._t)("encryption|verification|unverified_sessions_toast_description"),primaryLabel:(0,l._t)("action|review"),onPrimaryClick:()=>{yt.sharedInstance().dismissUnverifiedSessions(e),S.A.dispatch({action:H.r.ViewUserDeviceSettings})},secondaryLabel:(0,l._t)("encryption|verification|unverified_sessions_toast_reject"),onSecondaryClick:()=>{yt.sharedInstance().dismissUnverifiedSessions(e),(()=>{try{localStorage.setItem(z,String(Date.now()))}catch(e){s.vF.error("Failed to persist bulk unverified device nag snooze",e)}})()}},component:W.A,priority:50})};var J=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/key.js"),$=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/devices.js"),q=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/lock-solid.js"),Y=n("./node_modules/@vector-im/compound-web/dist/components/Button/Button.js"),X=n("./node_modules/matrix-js-sdk/src/types.ts"),Q=n("./src/components/views/dialogs/BaseDialog.tsx"),Z=n("./src/components/views/right_panel/EncryptionPanel.tsx");class ee extends i.Component{constructor(e){var t;super(e),(0,w.A)(this,"onRequestChange",()=>{this.setState(e=>{var t;return{phase:null===(t=e.verificationRequest)||void 0===t?void 0:t.phase}})}),this.state={verificationRequest:this.props.verificationRequest,phase:null===(t=this.props.verificationRequest)||void 0===t?void 0:t.phase}}componentDidMount(){var e,t;null===(e=this.state.verificationRequest)||void 0===e||e.on(V.FM.Change,this.onRequestChange),null===(t=this.props.verificationRequestPromise)||void 0===t||t.then(e=>{var t;null===(t=this.state.verificationRequest)||void 0===t||t.off(V.FM.Change,this.onRequestChange),e.on(V.FM.Change,this.onRequestChange),this.setState({verificationRequest:e,phase:e.phase})})}componentWillUnmount(){var e;null===(e=this.state.verificationRequest)||void 0===e||e.off(V.FM.Change,this.onRequestChange)}render(){const e=this.state.verificationRequest,t=null==e?void 0:e.otherUserId,n=this.props.member||(t?v.J.safeGet().getUser(t):null),s=this.dialogTitle(e);return n?i.createElement(Q.A,{className:"mx_InfoDialog",onFinished:this.props.onFinished,contentId:"mx_Dialog_content",title:s,hasCancel:!0},i.createElement(Z.A,{layout:"dialog",verificationRequest:this.state.verificationRequest,verificationRequestPromise:this.props.verificationRequestPromise,onClose:this.props.onFinished,member:n,isRoomEncrypted:!1})):null}dialogTitle(e){if(null==e||!e.isSelfVerification)return(0,l._t)("encryption|verification|verification_dialog_title_user");switch(e.phase){case V.X9.Ready:return(0,l._t)("encryption|verification|verification_dialog_title_choose");case V.X9.Done:return(0,l._t)("encryption|verification|verification_dialog_title_verified");case V.X9.Started:switch(e.chosenMethod){case X.V.Reciprocate:return(0,l._t)("encryption|verification|verification_dialog_title_confirm_green_shield");case X.V.Sas:return(0,l._t)("encryption|verification|verification_dialog_title_compare_emojis");default:return(0,l._t)("encryption|verification|verification_dialog_title_device")}case V.X9.Unsent:case V.X9.Requested:return(0,l._t)("encryption|verification|verification_dialog_title_start_on_other_device");case V.X9.Cancelled:return(0,l._t)("encryption|verification|verification_dialog_title_failed");default:return(0,l._t)("encryption|verification|verification_dialog_title_device")}}}var te=n("./node_modules/events/events.js"),ne=n.n(te),ie=n("./src/SecurityManager.ts"),se=n("./src/utils/arrays.ts"),oe=n("./src/utils/device/dehydration.ts");let re=function(e){return e[e.Loading=0]="Loading",e[e.Intro=1]="Intro",e[e.Busy=2]="Busy",e[e.Done=3]="Done",e[e.ConfirmSkip=4]="ConfirmSkip",e[e.Finished=5]="Finished",e}({});class ae extends(ne()){constructor(...e){super(...e),(0,w.A)(this,"started",void 0),(0,w.A)(this,"phase",void 0),(0,w.A)(this,"verificationRequest",null),(0,w.A)(this,"backupInfo",null),(0,w.A)(this,"keyId",null),(0,w.A)(this,"keyInfo",null),(0,w.A)(this,"hasDevicesToVerifyAgainst",void 0),(0,w.A)(this,"onUserTrustStatusChanged",async e=>{var t;if(e!==v.J.safeGet().getSafeUserId())return;await(null===(t=v.J.safeGet().getCrypto())||void 0===t?void 0:t.getCrossSigningKeyId())&&(this.phase=re.Done,this.emit("update"))}),(0,w.A)(this,"onVerificationRequest",e=>{this.setActiveVerificationRequest(e)}),(0,w.A)(this,"onVerificationRequestChange",async()=>{var e,t;if((null===(e=this.verificationRequest)||void 0===e?void 0:e.phase)===V.X9.Cancelled)this.verificationRequest.off(V.FM.Change,this.onVerificationRequestChange),this.verificationRequest=null,this.emit("update");else if((null===(t=this.verificationRequest)||void 0===t?void 0:t.phase)===V.X9.Done){var n;this.verificationRequest.off(V.FM.Change,this.onVerificationRequestChange),this.verificationRequest=null;const e=await(null===(n=v.J.safeGet().getCrypto())||void 0===n?void 0:n.getCrossSigningKeyId());this.phase=e?re.Done:re.Busy,this.emit("update")}})}static sharedInstance(){return window.mxSetupEncryptionStore||(window.mxSetupEncryptionStore=new ae),window.mxSetupEncryptionStore}start(){if(this.started)return;this.started=!0,this.phase=re.Loading;const e=v.J.safeGet();e.on(V.cr.VerificationRequestReceived,this.onVerificationRequest),e.on(V.cr.UserTrustStatusChanged,this.onUserTrustStatusChanged);const t=e.getCrypto().getVerificationRequestsToDeviceInProgress(e.getUserId());t.length&&this.setActiveVerificationRequest(t[t.length-1]),this.fetchKeyInfo()}stop(){var e;if(!this.started)return;this.started=!1,null===(e=this.verificationRequest)||void 0===e||e.off(V.FM.Change,this.onVerificationRequestChange);const t=v.J.get();t&&(t.removeListener(V.cr.VerificationRequestReceived,this.onVerificationRequest),t.removeListener(V.cr.UserTrustStatusChanged,this.onUserTrustStatusChanged))}async fetchKeyInfo(){var e,t;if(!this.started)return;const n=v.J.safeGet(),i=await n.secretStorage.isStored("m.cross_signing.master");null===i||0===Object.keys(i).length?(this.keyId=null,this.keyInfo=null):(this.keyId=Object.keys(i)[0],this.keyInfo=i[this.keyId]);const s=n.getUserId(),o=n.getCrypto(),r=null!==(e=null===(t=(await o.getUserDeviceInfo([s])).get(s))||void 0===t?void 0:t.values())&&void 0!==e?e:[];this.hasDevicesToVerifyAgainst=await(0,se.rm)(r,async e=>{if(e.dehydrated)return!1;if(!e.getIdentityKey())return!1;const t=await o.getDeviceVerificationStatus(s,e.deviceId);return!(null==t||!t.signedByOwner)}),this.phase=re.Intro,this.emit("update")}async usePassPhrase(){s.vF.debug("SetupEncryptionStore.usePassphrase"),this.phase=re.Busy,this.emit("update");try{var e,t,n;const i=v.J.safeGet(),o=null!==(e=await(null===(t=i.getCrypto())||void 0===t?void 0:t.getKeyBackupInfo()))&&void 0!==e?e:null;this.backupInfo=o,this.emit("update"),await new Promise((e,t)=>{(0,ie.cb)(async()=>{var t,n;(s.vF.debug("SetupEncryptionStore.usePassphrase: cross-signing and secret storage set up; checking dehydration and backup in the background"),e(),await(0,oe.p)(i),o)&&(await(null===(t=i.getCrypto())||void 0===t?void 0:t.loadSessionBackupPrivateKeyFromSecretStorage()),await(null===(n=i.getCrypto())||void 0===n?void 0:n.restoreKeyBackup()))}).catch(t)}),await(null===(n=i.getCrypto())||void 0===n?void 0:n.getCrossSigningKeyId())&&(s.vF.debug("SetupEncryptionStore.usePassphrase: done"),this.phase=re.Done,this.emit("update"))}catch(e){e instanceof ie.qQ?s.vF.debug("SetupEncryptionStore.usePassphrase: user cancelled access to secret storage"):s.vF.log("SetupEncryptionStore.usePassphrase: error",e),this.phase=re.Intro,this.emit("update")}}skip(){this.phase=re.ConfirmSkip,this.emit("update")}skipConfirm(){this.phase=re.Finished,this.emit("update")}returnAfterSkip(){this.phase=re.Intro,this.emit("update")}done(){this.phase=re.Finished,this.emit("update")}async setActiveVerificationRequest(e){this.started&&e.otherUserId===v.J.safeGet().getUserId()&&(this.verificationRequest&&this.verificationRequest.off(V.FM.Change,this.onVerificationRequestChange),this.verificationRequest=e,await e.accept(),e.on(V.FM.Change,this.onVerificationRequestChange),this.emit("update"))}lostKeys(){return!this.hasDevicesToVerifyAgainst&&!this.keyInfo}}var le=n("./src/components/views/elements/AccessibleButton.tsx"),ce=n("./src/components/views/elements/Spinner.tsx"),de=n("./src/contexts/MatrixClientContext.tsx"),me=n("./node_modules/@vector-im/compound-web/dist/components/VisualList/VisualList.js"),ue=n("./node_modules/@vector-im/compound-web/dist/components/VisualList/VisualListItem.js"),he=n("./node_modules/@vector-im/compound-web/dist/components/InlineSpinner/InlineSpinner.js"),pe=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/check.js"),ge=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/info.js"),ve=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/error-solid.js"),_e=n("./src/components/views/settings/encryption/EncryptionCard.tsx"),fe=n("./src/components/views/auth/InteractiveAuthEntryComponents.tsx"),Ee=n("./src/components/views/dialogs/InteractiveAuthDialog.tsx");async function ye(e,t){try{await t(null)}catch(n){if(!(n instanceof o.MatrixError&&n.data&&n.data.flows))throw n;const i={[fe.av.PHASE_PREAUTH]:{title:(0,l._t)("auth|uia|sso_title"),body:(0,l._t)("auth|uia|sso_preauth_body"),continueText:(0,l._t)("auth|sso"),continueKind:"primary"},[fe.av.PHASE_POSTAUTH]:{title:(0,l._t)("encryption|confirm_encryption_setup_title"),body:(0,l._t)("encryption|confirm_encryption_setup_body"),continueText:(0,l._t)("action|confirm"),continueKind:"primary"}},{finished:s}=R.Ay.createDialog(Ee.A,{title:"",matrixClient:e,makeRequest:t,aestheticsForStagePhases:{[fe.av.LOGIN_TYPE]:i,[fe.av.UNSTABLE_LOGIN_TYPE]:i}}),[r]=await s;if(!r)throw new Error("Cross-signing key upload auth canceled")}}var be=n("./src/components/views/settings/encryption/EncryptionCardButtons.tsx"),we=n("./packages/shared-components/src/utils/Flex/index.ts");function Se({children:e}){return i.createElement(we.s,{direction:"column",gap:"var(--cpd-space-3x)",align:"normal",className:"mx_EncryptionCard_emphasisedContent"},e)}function Ae({onCancelClick:e,onReset:t,variant:n}){const s=(0,de.nH)(),[o,r]=(0,i.useState)(!1);return i.createElement(_e.g,{Icon:ve.A,destructive:!0,title:Ce(n)},i.createElement(Se,null,i.createElement(me.V,null,i.createElement(ue.k,{Icon:pe.A,success:!0},(0,l._t)("settings|encryption|advanced|breadcrumb_first_description")),i.createElement(ue.k,{Icon:ge.A},(0,l._t)("settings|encryption|advanced|breadcrumb_second_description")),i.createElement(ue.k,{Icon:ge.A},(0,l._t)("settings|encryption|advanced|breadcrumb_third_description"))),"compromised"===n&&i.createElement("span",null,(0,l._t)("settings|encryption|advanced|breadcrumb_warning"))),i.createElement(be.D,null,i.createElement(Y.$,{destructive:!0,disabled:o,onClick:async()=>{var e;r(!0),await(null===(e=s.getCrypto())||void 0===e?void 0:e.resetEncryption(e=>ye(s,e))),t()}},o?i.createElement(i.Fragment,null,i.createElement(he.Z,null)," ",(0,l._t)("settings|encryption|advanced|reset_in_progress")):(0,l._t)("action|continue")),o?i.createElement(Se,null,i.createElement("span",{className:"mx_ResetIdentityPanel_warning"},(0,l._t)("settings|encryption|advanced|do_not_close_warning"))):i.createElement(Y.$,{kind:"tertiary",onClick:e},(0,l._t)("action|cancel"))))}function Ce(e){switch(e){case"compromised":case"confirm":return(0,l._t)("settings|encryption|advanced|breadcrumb_title");case"sync_failed":return(0,l._t)("settings|encryption|advanced|breadcrumb_title_sync_failed");case"forgot":return(0,l._t)("settings|encryption|advanced|breadcrumb_title_forgot");case"no_verification_method":return(0,l._t)("settings|encryption|advanced|breadcrumb_title_cant_confirm")}}function xe({onFinished:e,onReset:t,variant:n}){const s=v.J.safeGet();return i.createElement(de.Ay.Provider,{value:s},i.createElement(Ae,{onReset:()=>{t(),e()},onCancelClick:e,variant:n}))}var Re=n("./src/components/views/elements/ExternalLink.tsx");class ke extends i.Component{constructor(e){super(e),(0,w.A)(this,"onStoreUpdate",()=>{const e=ae.sharedInstance();e.phase!==re.Finished?this.setState({phase:e.phase,verificationRequest:e.verificationRequest,backupInfo:e.backupInfo}):this.props.onFinished()}),(0,w.A)(this,"onUsePassphraseClick",async()=>{ae.sharedInstance().usePassPhrase()}),(0,w.A)(this,"onVerifyClick",()=>{var e;const t=v.J.safeGet(),n=t.getSafeUserId(),i=t.getCrypto().requestOwnUserVerification();this.props.onFinished();const{finished:s}=R.Ay.createDialog(ee,{verificationRequestPromise:i,member:null!==(e=t.getUser(n))&&void 0!==e?e:void 0});s.then(async()=>{(await i).cancel(),this.props.onFinished()})}),(0,w.A)(this,"onSkipConfirmClick",()=>{ae.sharedInstance().skipConfirm()}),(0,w.A)(this,"onSkipBackClick",()=>{ae.sharedInstance().returnAfterSkip()}),(0,w.A)(this,"onCantConfirmClick",()=>{const e=ae.sharedInstance();R.Ay.createDialog(xe,{onReset:()=>{this.props.onFinished();ae.sharedInstance().done()},variant:e.lostKeys()?"no_verification_method":"confirm"})}),(0,w.A)(this,"onSignOutClick",()=>{S.A.dispatch({action:"logout"})}),(0,w.A)(this,"onDoneClick",()=>{ae.sharedInstance().done()}),(0,w.A)(this,"onEncryptionPanelClose",()=>{this.props.onFinished()});const t=ae.sharedInstance();t.start(),this.state={phase:t.phase,verificationRequest:t.verificationRequest,backupInfo:t.backupInfo}}componentDidMount(){ae.sharedInstance().on("update",this.onStoreUpdate)}componentWillUnmount(){const e=ae.sharedInstance();e.off("update",this.onStoreUpdate),e.stop()}render(){const e=v.J.safeGet(),{phase:t}=this.state;if(this.state.verificationRequest&&e.getUser(this.state.verificationRequest.otherUserId))return i.createElement(Z.A,{layout:"dialog",verificationRequest:this.state.verificationRequest,onClose:this.onEncryptionPanelClose,member:e.getUser(this.state.verificationRequest.otherUserId),isRoomEncrypted:!1});if(t===re.Intro){const e=ae.sharedInstance();let t,n,s;return e.hasDevicesToVerifyAgainst&&(t=i.createElement(Y.$,{kind:"primary",onClick:this.onVerifyClick},i.createElement($.A,null)," ",(0,l._t)("encryption|verification|use_another_device"))),e.keyInfo&&(n=i.createElement(Y.$,{kind:"primary",onClick:this.onUsePassphraseClick},(0,l._t)("encryption|verification|use_recovery_key"))),this.props.allowLogout&&(s=i.createElement(Y.$,{kind:"tertiary",onClick:this.onSignOutClick},(0,l._t)("action|sign_out"))),i.createElement(_e.g,{title:(0,l._t)("encryption|verification|confirm_identity_title"),Icon:q.A,className:"mx_EncryptionCard_noBorder mx_SetupEncryptionBody"},i.createElement(Se,null,i.createElement("span",null,(0,l._t)("encryption|verification|confirm_identity_description")),i.createElement("span",null,i.createElement(Re.A,{href:"https://element.io/help#encryption-device-verification"},(0,l._t)("action|learn_more")))),i.createElement(be.D,null,t,n,i.createElement(Y.$,{kind:"secondary",onClick:this.onCantConfirmClick},(0,l._t)("encryption|verification|cant_confirm")),s))}if(t===re.Done){let e;return e=this.state.backupInfo?i.createElement("p",null,(0,l._t)("encryption|verification|verification_success_with_backup")):i.createElement("p",null,(0,l._t)("encryption|verification|verification_success_without_backup")),i.createElement("div",null,i.createElement("div",{className:"mx_CompleteSecurity_heroIcon mx_E2EIcon_verified"}),e,i.createElement("div",{className:"mx_CompleteSecurity_actionRow"},i.createElement(le.A,{kind:"primary",onClick:this.onDoneClick},(0,l._t)("action|done"))))}return t===re.ConfirmSkip?i.createElement("div",null,i.createElement("p",null,(0,l._t)("encryption|verification|verification_skip_warning")),i.createElement("div",{className:"mx_CompleteSecurity_actionRow"},i.createElement(le.A,{kind:"danger_outline",onClick:this.onSkipConfirmClick},(0,l._t)("encryption|verification|verify_later")),i.createElement(le.A,{kind:"primary",onClick:this.onSkipBackClick},(0,l._t)("action|go_back")))):t===re.Busy||t===re.Loading?i.createElement(ce.A,null):void s.vF.log(`SetupEncryptionBody: Unknown phase ${t}`)}}class Ie extends i.Component{constructor(e){super(e)}render(){return i.createElement(Q.A,{onFinished:this.props.onFinished,fixedWidth:!1},i.createElement(ke,{onFinished:this.props.onFinished}))}}var Te=n("./src/components/views/dialogs/UserTab.ts"),Pe=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/error.js"),Ne=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/pop-out.js");class Me extends i.Component{constructor(e){super(e),(0,w.A)(this,"onGoToSettingsClick",()=>{const e={action:H.r.ViewUserSettings,initialTabId:Te.v.Encryption};S.A.dispatch(e),this.props.onFinished(!1)}),(0,w.A)(this,"onDismissClick",()=>{this.props.onFinished(!0)})}render(){return i.createElement(_e.g,{Icon:Pe.A,destructive:!0,title:(0,l._t)("settings|encryption|confirm_key_storage_off")},(0,l._t)("settings|encryption|confirm_key_storage_off_description",void 0,{a:e=>i.createElement(i.Fragment,null,i.createElement("br",null),i.createElement("a",{href:c.Ay.get("help_encryption_url"),target:"_blank",rel:"noreferrer noopener"},e," ",i.createElement(Ne.A,null)))}),i.createElement(be.D,null,i.createElement(Y.$,{onClick:this.onGoToSettingsClick,autoFocus:!0,kind:"primary",className:""},(0,l._t)("common|go_to_settings")),i.createElement(Y.$,{onClick:this.onDismissClick,kind:"secondary"},(0,l._t)("action|yes_dismiss"))))}}const De="setupencryption",Oe=e=>{switch(e){case je.SET_UP_RECOVERY:return(0,l._t)("encryption|set_up_recovery");case je.VERIFY_THIS_SESSION:return(0,l._t)("encryption|verify_toast_title");case je.KEY_STORAGE_OUT_OF_SYNC:case je.KEY_STORAGE_OUT_OF_SYNC_STORE:return(0,l._t)("encryption|key_storage_out_of_sync");case je.TURN_ON_KEY_STORAGE:return(0,l._t)("encryption|turn_on_key_storage")}},Fe=e=>{switch(e){case je.SET_UP_RECOVERY:return;case je.VERIFY_THIS_SESSION:case je.KEY_STORAGE_OUT_OF_SYNC:case je.KEY_STORAGE_OUT_OF_SYNC_STORE:return"verification_warning";case je.TURN_ON_KEY_STORAGE:return"key_storage"}},Le=e=>{switch(e){case je.SET_UP_RECOVERY:return(0,l._t)("action|continue");case je.VERIFY_THIS_SESSION:return(0,l._t)("action|verify");case je.KEY_STORAGE_OUT_OF_SYNC:case je.KEY_STORAGE_OUT_OF_SYNC_STORE:return(0,l._t)("encryption|enter_recovery_key");case je.TURN_ON_KEY_STORAGE:return(0,l._t)("action|continue")}},Ue=e=>{switch(e){case je.KEY_STORAGE_OUT_OF_SYNC:case je.KEY_STORAGE_OUT_OF_SYNC_STORE:return J.A;default:return}},Ve=e=>{switch(e){case je.SET_UP_RECOVERY:return(0,l._t)("action|dismiss");case je.VERIFY_THIS_SESSION:return(0,l._t)("encryption|verification|unverified_sessions_toast_reject");case je.KEY_STORAGE_OUT_OF_SYNC:case je.KEY_STORAGE_OUT_OF_SYNC_STORE:return(0,l._t)("encryption|forgot_recovery_key");case je.TURN_ON_KEY_STORAGE:return(0,l._t)("action|dismiss")}},Be=e=>{switch(e){case je.SET_UP_RECOVERY:return(0,l._t)("encryption|set_up_recovery_toast_description");case je.VERIFY_THIS_SESSION:return(0,l._t)("encryption|verify_toast_description");case je.KEY_STORAGE_OUT_OF_SYNC:case je.KEY_STORAGE_OUT_OF_SYNC_STORE:return(0,l._t)("encryption|key_storage_out_of_sync_description");case je.TURN_ON_KEY_STORAGE:return(0,l._t)("encryption|turn_on_key_storage_description")}};let je=function(e){return e.SET_UP_RECOVERY="set_up_recovery",e.VERIFY_THIS_SESSION="verify_this_session",e.KEY_STORAGE_OUT_OF_SYNC="key_storage_out_of_sync",e.KEY_STORAGE_OUT_OF_SYNC_STORE="key_storage_out_of_sync_store",e.TURN_ON_KEY_STORAGE="turn_on_key_storage",e}({});const We=e=>{if(_.r.instance.extensions.cryptoSetup.setupEncryptionNeeded({kind:e,storeProvider:{getInstance:()=>ae.sharedInstance()}}))return;const t=(e,t)=>{if(t instanceof ie.qQ);else{const t={action:H.r.ViewUserSettings,initialTabId:Te.v.Encryption,props:{initialEncryptionState:e===je.KEY_STORAGE_OUT_OF_SYNC?"reset_identity_sync_failed":"change_recovery_key"}};S.A.dispatch(t)}};F.A.sharedInstance().addOrReplaceToast({key:De,title:Oe(e),icon:Fe(e),props:{description:Be(e),primaryLabel:Le(e),PrimaryIcon:Ue(e),onPrimaryClick:async()=>{switch(e){case je.SET_UP_RECOVERY:case je.TURN_ON_KEY_STORAGE:{const e={action:H.r.ViewUserSettings,initialTabId:Te.v.Encryption};S.A.dispatch(e);break}case je.VERIFY_THIS_SESSION:R.Ay.createDialog(Ie,{},void 0,!1,!0);break;case je.KEY_STORAGE_OUT_OF_SYNC:case je.KEY_STORAGE_OUT_OF_SYNC_STORE:{const n=R.Ay.createDialog(ce.A,void 0,"mx_Dialog_spinner",!1,!0);try{await(0,ie.cb)()}catch(n){t(e,n)}finally{n.close()}break}}},secondaryLabel:Ve(e),onSecondaryClick:async()=>{switch(e){case je.SET_UP_RECOVERY:{const e=yt.sharedInstance();await e.recordRecoveryDisabled(),e.dismissEncryptionSetup();break}case je.KEY_STORAGE_OUT_OF_SYNC:case je.KEY_STORAGE_OUT_OF_SYNC_STORE:{const e={action:H.r.ViewUserSettings,initialTabId:Te.v.Encryption,props:{initialEncryptionState:"reset_identity_forgot"}};S.A.dispatch(e);break}case je.TURN_ON_KEY_STORAGE:{const e=R.Ay.createDialog(Me,void 0,"mx_ConfirmKeyStorageOffDialog"),[t]=await e.finished;if(t){const e=yt.sharedInstance();await e.recordKeyBackupDisabled(),e.dismissEncryptionSetup()}break}default:yt.sharedInstance().dismissEncryptionSetup()}},overrideWidth:e===je.KEY_STORAGE_OUT_OF_SYNC?"366px":void 0},component:W.A,priority:e===je.VERIFY_THIS_SESSION?95:40})},He=()=>{F.A.sharedInstance().dismissToast(De)},ze=async(e,t)=>{var n;const i=await(null===(n=e.getCrypto())||void 0===n?void 0:n.getDeviceVerificationStatus(e.getSafeUserId(),t));return i?i.crossSigningVerified:null};var Ke,Ge=n("./src/utils/device/parseUserAgent.ts");function Je(){return Je=Object.assign?Object.assign.bind():function(e){for(var t=1;t!!e.last_seen_ts&&e.last_seen_ts!!e.isVerified,[Ye.Unverified]:e=>!e.isVerified,[Ye.Inactive]:Qe},et=(e,t)=>{const n=t.map(e=>Ze[e]);return n.length?e.filter(e=>n.every(t=>t(e))):e};var tt=n("./src/DateUtils.ts");const nt=(e,t=(new Date).getTime())=>{if(e+5184e5>=t){const t=new Date(e);return(0,tt.Yq)(t)}return(0,tt.fw)(new Date(e))},it=({value:e,id:t})=>e?i.createElement("span",null,e):null,st=({device:e})=>{const t=(e=>{if(Qe(e)&&e.last_seen_ts)return{id:"inactive",value:i.createElement(i.Fragment,null,i.createElement(qe,{className:"mx_DeviceTile_inactiveIcon"}),(0,l._t)("settings|sessions|inactive_days",{inactiveAgeDays:90})+` (${nt(e.last_seen_ts)})`)}})(e),n=e.last_seen_ts&&`${(0,l._t)("settings|sessions|last_activity")} ${nt(e.last_seen_ts)}`,s=e.isVerified?(0,l._t)("common|verified"):(0,l._t)("common|unverified"),o=t?[t,{id:"lastSeenIp",value:e.last_seen_ip}]:[{id:"isVerified",value:s},{id:"lastActivity",value:n},{id:"lastSeenIp",value:e.last_seen_ip},{id:"deviceId",value:e.device_id}];return i.createElement(i.Fragment,null,o.map(({id:e,value:t},n)=>t?i.createElement(i.Fragment,{key:e},!!n&&" · ",i.createElement(it,{id:e,value:t})):null))};function ot(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function rt(e){for(var t=1;t{const t=v.J.safeGet(),n=await t.getDevice(e),s=rt(rt({},n),{},{isVerified:await ze(t,e),deviceType:Ge.b.Unknown});F.A.sharedInstance().addOrReplaceToast({key:at(e),title:(0,l._t)("encryption|verification|unverified_session_toast_title"),icon:"verification_warning",props:{description:n.display_name,detail:i.createElement(st,{device:s}),primaryLabel:(0,l._t)("encryption|verification|unverified_session_toast_accept"),onPrimaryClick:()=>{yt.sharedInstance().dismissUnverifiedSessions([e])},secondaryLabel:(0,l._t)("action|no"),onSecondaryClick:()=>{yt.sharedInstance().dismissUnverifiedSessions([e]),S.A.dispatch({action:H.r.ViewUserDeviceSettings})},destructive:"secondary"},component:W.A,priority:80})},ct=e=>{F.A.sharedInstance().dismissToast(at(e))},dt="io.element.matrix_client_information.",mt=e=>`${dt}${e}`,ut=async(e,t,n)=>{const i=e.getDeviceId(),{brand:s}=t,o=await(null==n?void 0:n.getAppVersion()),r=mt(i),a=(()=>{if(window.electron)return;const e=new URL(window.location.href);return[e.host,e.pathname.replace(/\/$/,"")].join("")})();await e.setAccountData(r,{name:s,version:o,url:a})},ht=e=>e&&"string"==typeof e?e:void 0,pt=(e,t)=>{const n=e.getAccountData(mt(t));if(!n)return{};const{name:i,version:s,url:o}=n.getContent();return{name:ht(i),version:ht(s),url:ht(o)}};var gt=n("./src/settings/UIFeature.ts"),vt=n("./src/utils/crypto/deviceInfo.ts");const _t="m.org.matrix.custom.backup_disabled",ft="io.element.recovery",Et=s.vF.getChild("DeviceListener:");class yt{constructor(){(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"dismissed",new Set),(0,w.A)(this,"dismissedThisDeviceToast",!1),(0,w.A)(this,"keyBackupInfo",null),(0,w.A)(this,"keyBackupFetchedAt",null),(0,w.A)(this,"ourDeviceIdsAtStart",null),(0,w.A)(this,"displayingToastsForDeviceIds",new Set),(0,w.A)(this,"running",!1),(0,w.A)(this,"client",void 0),(0,w.A)(this,"shouldRecordClientInformation",!1),(0,w.A)(this,"enableBulkUnverifiedSessionsReminder",!0),(0,w.A)(this,"deviceClientInformationSettingWatcherRef",void 0),(0,w.A)(this,"analyticsVerificationState",void 0),(0,w.A)(this,"analyticsRecoveryState",void 0),(0,w.A)(this,"onDevicesUpdated",async(e,t)=>{if(!this.client)return;if(t)return;const n=this.client.getSafeUserId();e.includes(n)&&await this.ensureDeviceIdsAtStartPopulated(),this.recheck()}),(0,w.A)(this,"onUserTrustStatusChanged",e=>{this.client&&e===this.client.getUserId()&&this.recheck()}),(0,w.A)(this,"onKeyBackupStatusChanged",()=>{Et.info("Backup status changed"),this.cachedKeyBackupUploadActive=void 0,this.recheck()}),(0,w.A)(this,"onCrossSingingKeysChanged",()=>{this.recheck()}),(0,w.A)(this,"onAccountData",e=>{(e.getType().startsWith("m.secret_storage.")||e.getType().startsWith("m.cross_signing.")||"m.megolm_backup.v1"===e.getType()||e.getType()===_t||e.getType()===ft)&&this.recheck()}),(0,w.A)(this,"onSync",(e,t)=>{"PREPARED"===e&&null===t&&this.recheck()}),(0,w.A)(this,"onRoomStateEvents",e=>{e.getType()===o.EventType.RoomEncryption&&this.recheck()}),(0,w.A)(this,"onAction",({action:e})=>{e===H.r.OnLoggedIn&&(this.recheck(),this.updateClientInformation())}),(0,w.A)(this,"onToDeviceEvent",e=>{e.getType()===o.EventType.SecretSend&&this.recheck()}),(0,w.A)(this,"checkKeyBackupStatus",async()=>{await this.isKeyBackupUploadActive(Et)||S.A.dispatch({action:H.r.ReportKeyBackupNotEnabled})}),(0,w.A)(this,"isKeyBackupUploadActive",async e=>{if(!this.client)return!0;const t=this.client.getCrypto();if(!t)return!1;if(void 0!==this.cachedKeyBackupUploadActive)return this.cachedKeyBackupUploadActive;const n=await t.getActiveSessionBackupVersion();return this.cachedKeyBackupUploadActive=!!n,e.debug("Key backup upload is "+(this.cachedKeyBackupUploadActive?"active":"inactive")),this.cachedKeyBackupUploadActive}),(0,w.A)(this,"cachedKeyBackupUploadActive",void 0),(0,w.A)(this,"onRecordClientInformationSettingChange",(e,t,n,i,s)=>{const o=this.shouldRecordClientInformation;this.shouldRecordClientInformation=!!s,this.shouldRecordClientInformation!==o&&this.updateClientInformation()}),(0,w.A)(this,"updateClientInformation",async()=>{if(this.client)try{var e;if(this.shouldRecordClientInformation)await ut(this.client,c.Ay.get(),null!==(e=a.A.get())&&void 0!==e?e:void 0);else await(async e=>{const t=e.getDeviceId(),n=mt(t),i=pt(e,t);(i.name||i.version||i.url)&&await e.deleteAccountData(n)})(this.client)}catch(e){Et.error("Failed to update client information",e)}})}static sharedInstance(){return window.mxDeviceListener||(window.mxDeviceListener=new yt),window.mxDeviceListener}start(e){this.running=!0,this.client=e,this.client.on(V.cr.DevicesUpdated,this.onDevicesUpdated),this.client.on(V.cr.UserTrustStatusChanged,this.onUserTrustStatusChanged),this.client.on(V.cr.KeysChanged,this.onCrossSingingKeysChanged),this.client.on(V.cr.KeyBackupStatus,this.onKeyBackupStatusChanged),this.client.on(o.ClientEvent.AccountData,this.onAccountData),this.client.on(o.ClientEvent.Sync,this.onSync),this.client.on(o.RoomStateEvent.Events,this.onRoomStateEvents),this.client.on(o.ClientEvent.ToDeviceEvent,this.onToDeviceEvent),this.shouldRecordClientInformation=D.A.getValue("deviceClientInformationOptIn"),this.enableBulkUnverifiedSessionsReminder=D.A.getValue(gt.f.BulkUnverifiedSessionsReminder),this.deviceClientInformationSettingWatcherRef=D.A.watchSetting("deviceClientInformationOptIn",null,this.onRecordClientInformationSettingChange),this.dispatcherRef=S.A.register(this.onAction),this.recheck(),this.updateClientInformation()}stop(){this.running=!1,this.client&&(this.client.removeListener(V.cr.DevicesUpdated,this.onDevicesUpdated),this.client.removeListener(V.cr.UserTrustStatusChanged,this.onUserTrustStatusChanged),this.client.removeListener(V.cr.KeysChanged,this.onCrossSingingKeysChanged),this.client.removeListener(o.ClientEvent.AccountData,this.onAccountData),this.client.removeListener(o.ClientEvent.Sync,this.onSync),this.client.removeListener(o.RoomStateEvent.Events,this.onRoomStateEvents),this.client.removeListener(o.ClientEvent.ToDeviceEvent,this.onToDeviceEvent)),D.A.unwatchSetting(this.deviceClientInformationSettingWatcherRef),S.A.unregister(this.dispatcherRef),this.dispatcherRef=void 0,this.dismissed.clear(),this.dismissedThisDeviceToast=!1,this.keyBackupInfo=null,this.keyBackupFetchedAt=null,this.cachedKeyBackupUploadActive=void 0,this.ourDeviceIdsAtStart=null,this.displayingToastsForDeviceIds=new Set,this.client=void 0}async dismissUnverifiedSessions(e){Et.debug("Dismissing unverified sessions: "+Array.from(e).join(","));for(const t of e)this.dismissed.add(t);this.recheck()}dismissEncryptionSetup(){this.dismissedThisDeviceToast=!0,this.recheck()}async recordKeyBackupDisabled(){var e;await(null===(e=this.client)||void 0===e?void 0:e.setAccountData(_t,{disabled:!0}))}async recordRecoveryDisabled(){var e;await(null===(e=this.client)||void 0===e?void 0:e.setAccountData(ft,{enabled:!1}))}async ensureDeviceIdsAtStartPopulated(){null===this.ourDeviceIdsAtStart&&(this.ourDeviceIdsAtStart=await this.getDeviceIds())}async getDeviceIds(){const e=this.client;return e?await(0,vt.a)(e,e.getSafeUserId()):new Set}async getKeyBackupInfo(){if(!this.client)return null;const e=(new Date).getTime(),t=this.client.getCrypto();return t?((!this.keyBackupInfo||!this.keyBackupFetchedAt||this.keyBackupFetchedAtt.isEncryptionEnabledInRoom(e))}recheck(){this.doRecheck().catch(e=>{e instanceof o.ClientStoppedError||Et.error("Error during `DeviceListener.recheck`",e)})}async doRecheck(){var e;if(!this.running||!this.client)return;const t=new s.Tl(Et,"check_"+(0,B.US)(4));t.debug("starting recheck...");const n=this.client;if(!await n.isVersionSupported("v1.1"))return void t.debug("cross-signing not supported");const i=n.getCrypto();if(!i)return void t.debug("crypto not enabled");if(!n.isInitialSyncComplete())return void t.debug("initial sync not yet complete");const o=await i.isCrossSigningReady(),r=await i.isSecretStorageReady(),a=await i.getCrossSigningStatus(),l=a.privateKeysCachedLocally.masterKey&&a.privateKeysCachedLocally.selfSigningKey&&a.privateKeysCachedLocally.userSigningKey,c=await n.secretStorage.getDefaultKeyId(),d=await this.recheckRecoveryDisabled(n),m=r||d,u=o&&Boolean(null===(e=await i.getDeviceVerificationStatus(n.getSafeUserId(),n.deviceId))||void 0===e?void 0:e.crossSigningVerified),h=await this.isKeyBackupUploadActive(t),p=await this.recheckBackupDisabled(n),g=h||p,v=u&&l&&g&&m;await this.reportCryptoSessionStateToAnalytics(n),this.dismissedThisDeviceToast||v?(t.info("No toast needed"),He(),this.checkKeyBackupStatus()):await this.shouldShowSetupEncryptionToast()?(await i.getUserDeviceInfo([n.getSafeUserId()]),u?l?g?null===c?d?(t.info("Recovery disabled: no toast needed"),He()):h?(t.info("No default 4S key: showing SET_UP_RECOVERY toast"),We(je.SET_UP_RECOVERY)):(t.info("No default 4S key but backup disabled: no toast needed"),He()):(t.warn("4S is missing secrets",{crossSigningReady:o,secretStorageReady:r,allCrossSigningSecretsCached:l,isCurrentDeviceTrusted:u,defaultKeyId:c}),We(je.KEY_STORAGE_OUT_OF_SYNC_STORE)):(t.info("Key backup upload is unexpectedly turned off: showing TURN_ON_KEY_STORAGE toast"),We(je.TURN_ON_KEY_STORAGE)):(t.info("Some secrets not cached: showing KEY_STORAGE_OUT_OF_SYNC toast",a.privateKeysCachedLocally),We(je.KEY_STORAGE_OUT_OF_SYNC)):(t.info("Current device not verified: showing VERIFY_THIS_SESSION toast"),We(je.VERIFY_THIS_SESSION))):t.info("Not yet ready, but shouldShowSetupEncryptionToast==false"),await this.ensureDeviceIdsAtStartPopulated();const _=new Set,f=new Set;if(o){const e=await this.getDeviceIds();for(const t of e){if(t===n.deviceId)continue;const e=await i.getDeviceVerificationStatus(n.getSafeUserId(),t);var E;if(!(null!=e&&e.crossSigningVerified||this.dismissed.has(t)))null!==(E=this.ourDeviceIdsAtStart)&&void 0!==E&&E.has(t)?_.add(t):f.add(t)}}t.debug("Old unverified sessions: "+Array.from(_).join(",")),t.debug("New unverified sessions: "+Array.from(f).join(",")),t.debug("Currently showing toasts for: "+Array.from(this.displayingToastsForDeviceIds).join(","));const y=(()=>{try{const e=localStorage.getItem(z),t=Number.parseInt(e||"",10);return Number.isInteger(t)&&t+6048e5>Date.now()}catch{return!1}})();_.size>0&&u&&this.enableBulkUnverifiedSessionsReminder&&!y?G(_):F.A.sharedInstance().dismissToast(K);for(const e of f)lt(e);for(const e of this.displayingToastsForDeviceIds)f.has(e)||(t.debug("Hiding unverified session toast for "+e),ct(e));this.displayingToastsForDeviceIds=f}async recheckBackupDisabled(e){const t=await e.getAccountDataFromServer(_t);return!(null==t||!t.disabled)}async recheckRecoveryDisabled(e){const t=await e.getAccountDataFromServer(ft);return!1===(null==t?void 0:t.enabled)}async reportCryptoSessionStateToAnalytics(e){const t=e.getCrypto(),n=await t.isSecretStorageReady(),i=await t.getCrossSigningStatus(),s=await this.getKeyBackupInfo(),o=null!=await e.secretStorage.getDefaultKeyId(),r=await t.getDeviceVerificationStatus(e.getUserId(),e.getDeviceId()),a=null!=r&&r.signedByOwner&&null!=r&&r.crossSigningVerified?"Verified":"NotVerified";let l;if(o){const e=i.privateKeysCachedLocally.masterKey&&i.privateKeysCachedLocally.selfSigningKey&&i.privateKeysCachedLocally.userSigningKey;if(null!=s){const i=null!=await t.getSessionBackupPrivateKey();l=n&&e&&i?"Enabled":"Incomplete"}else l=n&&e?"Enabled":"Incomplete"}else l="Disabled";this.analyticsVerificationState===a&&this.analyticsRecoveryState===l||(this.analyticsRecoveryState=l,this.analyticsVerificationState=a,j.Vo.instance.setProperty("recoveryState",l),j.Vo.instance.setProperty("verificationState",a),j.Vo.instance.trackEvent({eventName:"CryptoSessionState",verificationState:a,recoveryState:l}))}}var bt=n("./src/widgets/Jitsi.ts"),wt=n("./src/BasePlatform.ts"),St=n("./node_modules/rfc4648/lib/rfc4648.js");function At(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}const Ct="mx_threepid_invite_";class xt extends(ne()){static get instance(){return xt._instance||(xt._instance=new xt),xt._instance}storeInvite(e,t){const n=function(e){for(var t=1;tthis.translateInvite(e))}pickBestInvite(){return this.getInvites()[0]}resolveInvite(e){localStorage.removeItem(`${Ct}${e.id}`)}generateIdOf(e){return St.RG.stringify((new TextEncoder).encode(JSON.stringify(e)))}translateInvite(e){return{id:this.generateIdOf(e),roomId:e.roomId,toEmail:e.email,signUrl:e.signurl,roomName:e.room_name,roomAvatarUrl:e.room_avatar_url,inviterName:e.inviter_name}}translateToWireFormat(e){return{email:e.toEmail,signurl:e.signUrl,room_name:e.roomName,room_avatar_url:e.roomAvatarUrl,inviter_name:e.inviterName}}}(0,w.A)(xt,"_instance",void 0);var Rt=n("./src/LegacyCallHandler.tsx"),kt=n("./src/customisations/Lifecycle.ts"),It=n("./src/components/views/dialogs/ErrorDialog.tsx"),Tt=n("./src/components/views/dialogs/QuestionDialog.tsx"),Pt=n("./src/components/views/dialogs/BugReportDialog.tsx"),Nt=n("./src/components/views/elements/DialogButtons.tsx");class Mt extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"sendBugReport",()=>{R.Ay.createDialog(Pt.A,{error:this.props.error})}),(0,w.A)(this,"onClearStorageClick",()=>{const{finished:e}=R.Ay.createDialog(Tt.A,{title:(0,l._t)("action|sign_out"),description:i.createElement("div",null,(0,l._t)("error|session_restore|clear_storage_description")),button:(0,l._t)("action|sign_out"),danger:!0});e.then(([e])=>this.props.onFinished(e))}),(0,w.A)(this,"onRefreshClick",()=>{window.location.reload()})}render(){const e=c.Ay.get().brand,t=i.createElement("button",{onClick:this.onClearStorageClick,className:"danger"},(0,l._t)("error|session_restore|clear_storage_button"));let n;return n=c.Ay.get().bug_report_endpoint_url?i.createElement(Nt.A,{primaryButton:(0,l._t)("bug_reporting|send_logs"),onPrimaryButtonClick:this.sendBugReport,focus:!0,hasCancel:!1},t):i.createElement(Nt.A,{primaryButton:(0,l._t)("action|refresh"),onPrimaryButtonClick:this.onRefreshClick,focus:!0,hasCancel:!1},t),i.createElement(Q.A,{className:"mx_ErrorDialog",onFinished:this.props.onFinished,title:(0,l._t)("error|session_restore|title"),contentId:"mx_Dialog_content",hasCancel:!1},i.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},i.createElement("p",null,(0,l._t)("error|session_restore|description_1")),i.createElement("p",null,(0,l._t)("error|session_restore|description_2",{brand:e})),i.createElement("p",null,(0,l._t)("error|session_restore|description_3"))),n)}}class Dt extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"sendBugReport",e=>{e.preventDefault(),R.Ay.createDialog(Pt.A,{})}),(0,w.A)(this,"onSignOutClick",()=>{this.props.onFinished(!0)})}render(){let e;return c.Ay.get().bug_report_endpoint_url&&(e=(0,l._t)("bug_reporting|log_request",{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:this.sendBugReport},e)})),i.createElement(Q.A,{className:"mx_ErrorDialog",onFinished:this.props.onFinished,title:(0,l._t)("error|storage_evicted_title"),contentId:"mx_Dialog_content",hasCancel:!1},i.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},i.createElement("p",null,(0,l._t)("error|storage_evicted_description_1")),i.createElement("p",null,(0,l._t)("error|storage_evicted_description_2")," ",e)),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|sign_out"),onPrimaryButtonClick:this.onSignOutClick,focus:!0,hasCancel:!1}))}}var Ot=n("./src/sentry.ts"),Ft=n("./node_modules/classnames/index.js"),Lt=n.n(Ft),Ut=n("./src/components/views/dialogs/RoomSettingsDialog.tsx"),Vt=n("./src/hooks/useSettings.ts"),Bt=n("./src/settings/enums/Layout.ts"),jt=n("./src/Avatar.ts"),Wt=n("./node_modules/@babel/runtime/helpers/esm/extends.js"),Ht=n("./node_modules/matrix-js-sdk/src/webrtc/call.ts"),zt=n("./node_modules/@vector-im/compound-web/dist/components/Tooltip/Tooltip.js"),Kt=n("./node_modules/lodash/lodash.js"),Gt=n("./src/utils/permalinks/Permalinks.ts"),Jt=n("./src/utils/FormattingUtils.ts"),$t=n("./src/customisations/UserIdentifier.ts");class qt extends i.Component{render(){const{fallbackName:e,member:t,colored:n,emphasizeDisplayName:s,withTooltip:o,onClick:r}=this.props,a=(null==t?void 0:t.rawDisplayName)||e,c=null==t?void 0:t.userId;let d,m,u;if(n&&(d=(0,Jt.yJ)(null!=c?c:"")),c){var h,p;const e=null!==(h=null===(p=$t.A.getDisplayUserIdentifier)||void 0===p?void 0:p.call($t.A,c,{withDisplayName:!0,roomId:t.roomId}))&&void 0!==h?h:c;null!=t&&t.disambiguate&&(m=i.createElement("span",{className:"mx_DisambiguatedProfile_mxid"},e)),u=(0,l._t)("timeline|disambiguated_profile",{displayName:a,matrixId:e})}const g=Lt()(d,{mx_DisambiguatedProfile_displayName:s});return i.createElement("div",{className:"mx_DisambiguatedProfile",title:o?u:void 0,onClick:r},i.createElement("span",{className:g,dir:"auto"},a),m)}}var Yt=n("./src/hooks/room/useRoomMemberProfile.ts");function Xt({mxEvent:e,onClick:t,withTooltip:n}){var s;const r=(0,Yt.s)({userId:e.getSender(),member:e.sender});return e.getContent().msgtype!==o.MsgType.Emote?i.createElement(qt,{fallbackName:null!==(s=e.getSender())&&void 0!==s?s:"",onClick:t,member:r,colored:!0,emphasizeDisplayName:!0,withTooltip:n}):i.createElement(i.Fragment,null)}var Qt=n("./src/components/views/messages/MImageBody.tsx"),Zt=n("./src/hooks/useMediaVisible.ts");class en extends Qt.R{constructor(...e){super(...e),(0,w.A)(this,"onClick",e=>{e.preventDefault()})}wrapImage(e,t){return t}render(){if(this.state.error)return super.render();const e=this.props.mxEvent.getContent(),t=this.state.contentUrl?this.messageContent(this.state.contentUrl,this.state.thumbUrl,e,44):void 0;return i.createElement("div",{className:"mx_MImageReplyBody"},t)}}const tn=e=>{const[t,n]=(0,Zt.E)(e.mxEvent);return i.createElement(en,(0,Wt.A)({mediaVisible:t,setMediaVisible:n},e))};var nn=n("./src/utils/EventUtils.ts"),sn=n("./src/events/EventTileFactory.tsx"),on=n("./src/call-types.ts");function rn(e,t,n,i){const s=t.getContent(),r=s.msgtype,a=t.getType();let l=!1;if(D.A.getValue("feature_msc3531_hide_messages_pending_moderation"))switch((0,nn.$k)(t,e)){case nn.H3.VISIBLE_FOR_ALL:case nn.H3.HIDDEN_TO_CURRENT_USER:break;case nn.H3.SEE_THROUGH_FOR_CURRENT_USER:l=!0}let c=(0,sn.Sj)(t,e,n),d=a.startsWith("m.key.verification")||a===o.EventType.RoomMessage&&(null==r?void 0:r.startsWith("m.key.verification"))||a===o.EventType.RoomCreate||a===o.EventType.RoomEncryption||c===sn.ur;const m=!d&&(a===o.EventType.CallInvite||on.Fm.matches(a));let u=((e,t,n,i)=>!(n||i||e===o.EventType.RoomMessage||e===o.EventType.RoomMessageEncrypted||e===o.EventType.Sticker||e===o.EventType.RoomCreate||o.M_POLL_START.matches(e)||o.M_POLL_END.matches(e)||o.M_BEACON_INFO.matches(e)))(a,0,d,m);const h=a===o.EventType.RoomMessage&&r===o.MsgType.Emote||o.M_POLL_START.matches(a)||o.M_BEACON_INFO.matches(a)||(0,nn.wq)(t);return!i&&(0,sn.bN)(t,e,n)||(c=(0,sn.Sj)(t,e,n,!0),c===sn.DD&&(d=!1,u=!0)),{hasRenderer:!!c,isInfoMessage:u,isBubbleMessage:d,isLeftAlignedBubbleMessage:m,noBubbleEvent:h,isSeeingThroughMessageHiddenForModeration:l}}var an=n("./src/components/views/messages/MFileBody.tsx"),ln=n("./src/components/views/avatars/MemberAvatar.tsx"),cn=n("./src/components/views/messages/MVoiceMessageBody.tsx");function dn(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function mn(e){for(var t=1;t{this.forceUpdate()}),(0,w.A)(this,"onEventRequiresUpdate",()=>{this.forceUpdate()}),(0,w.A)(this,"onClick",e=>{const t=e.target;"a"===t.tagName.toLowerCase()&&null!==t.closest("a")&&t!==this.anchorElement.current||(e.preventDefault(),this.props.toggleExpandedQuote&&e.shiftKey?this.props.toggleExpandedQuote():S.A.dispatch({action:H.r.ViewRoom,event_id:this.props.mxEvent.getId(),highlighted:!0,room_id:this.props.mxEvent.getRoomId(),metricsTrigger:void 0}))})}componentDidMount(){this.props.mxEvent.on(o.MatrixEventEvent.Decrypted,this.onDecrypted),this.props.mxEvent.on(o.MatrixEventEvent.BeforeRedaction,this.onEventRequiresUpdate),this.props.mxEvent.on(o.MatrixEventEvent.Replaced,this.onEventRequiresUpdate)}componentWillUnmount(){this.props.mxEvent.removeListener(o.MatrixEventEvent.Decrypted,this.onDecrypted),this.props.mxEvent.removeListener(o.MatrixEventEvent.BeforeRedaction,this.onEventRequiresUpdate),this.props.mxEvent.removeListener(o.MatrixEventEvent.Replaced,this.onEventRequiresUpdate)}render(){const e=this.props.mxEvent,t=e.getContent().msgtype,n=e.getType(),{hasRenderer:r,isInfoMessage:a,isSeeingThroughMessageHiddenForModeration:c}=rn(v.J.safeGet(),e,!1);if(!r){const{mxEvent:e}=this.props;return s.vF.warn(`Event type not supported: type:${e.getType()} isState:${e.isState()}`),i.createElement("div",{className:"mx_ReplyTile mx_ReplyTile_info mx_MNoticeBody"},(0,l._t)("timeline|error_no_renderer"))}const d=Lt()("mx_ReplyTile",{mx_ReplyTile_inline:t===o.MsgType.Emote,mx_ReplyTile_info:a&&!e.isRedacted(),mx_ReplyTile_audio:t===o.MsgType.Audio,mx_ReplyTile_video:t===o.MsgType.Video});let m,u="#";this.props.permalinkCreator&&(u=this.props.permalinkCreator.forEvent(e.getId()));a||n===o.EventType.RoomCreate||(m=i.createElement("div",{className:"mx_ReplyTile_sender"},i.createElement(ln.A,{member:e.sender,fallbackUserId:e.getSender(),size:"16px"}),i.createElement(Xt,{mxEvent:e})));const h={[o.MsgType.Image]:tn,[o.MsgType.Audio]:(0,nn.Mp)(e)?cn.A:an.Ay,[o.MsgType.Video]:an.Ay},p={[o.EventType.Sticker]:tn};return i.createElement("div",{className:d},i.createElement("a",{href:u,onClick:this.onClick,ref:this.anchorElement},m,(0,sn.BP)(mn(mn({},this.props),{},{ref:void 0,showUrlPreview:!1,overrideBodyTypes:h,overrideEventTypes:p,maxImageHeight:96,isSeeingThroughMessageHiddenForModeration:c,highlights:this.props.highlights,highlightLink:this.props.highlightLink,permalinkCreator:this.props.permalinkCreator,showHiddenEvents:!1}),!1)))}}var hn=n("./src/components/views/elements/Pill.tsx"),pn=n("./src/utils/Reply.ts"),gn=n("./src/contexts/RoomContext.ts");class vn extends i.Component{constructor(e){super(e),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"room",void 0),(0,w.A)(this,"blockquoteRef",i.createRef()),(0,w.A)(this,"canCollapse",()=>this.state.events.length>1),(0,w.A)(this,"collapse",()=>{this.initialize()}),(0,w.A)(this,"onQuoteClick",async()=>{if(!this.state.loadedEv)return;const e=[this.state.loadedEv,...this.state.events];let t=null;e.length>0&&(t=await this.getNextEvent(e[0])),this.setState({loadedEv:t,events:e}),S.A.fire(H.r.FocusSendMessageComposer)}),this.state={events:[],loadedEv:null,loading:!0,err:!1},this.room=this.matrixClient.getRoom(this.props.parentEv.getRoomId())}get matrixClient(){return v.J.safeGet()}componentDidMount(){this.unmounted=!1,this.initialize(),this.trySetExpandableQuotes()}componentDidUpdate(){this.trySetExpandableQuotes()}componentWillUnmount(){this.unmounted=!0}trySetExpandableQuotes(){if(void 0===this.props.isQuoteExpanded&&this.blockquoteRef.current){const e=this.blockquoteRef.current.querySelector(".mx_EventTile_body");if(e){const t=e.querySelector("code"),n=!!t&&t.offsetHeight>=60;(e.offsetHeight>=60||n)&&this.props.setQuoteExpanded(!1)}}}async initialize(){const{parentEv:e}=this.props,t=await this.getEvent((0,pn.Ul)(e));if(!this.unmounted)if(t){const e=await this.getNextEvent(t);this.setState({events:[t],loadedEv:e,loading:!1})}else this.setState({err:!0})}async getNextEvent(e){try{const t=(0,pn.Ul)(e);return t?await this.getEvent(t):null}catch{return null}}async getEvent(e){var t;if(!e)return null;const n=this.room.findEventById(e);if(n)return n;try{await this.matrixClient.getEventTimeline(this.room.getUnfilteredTimelineSet(),e)}catch{return null}return null!==(t=this.room.findEventById(e))&&void 0!==t?t:null}getReplyChainColorClass(e){return(0,Jt.yJ)(e.getSender()).replace("Username","ReplyChain")}render(){let e;if(this.state.err)e=i.createElement("blockquote",{className:"mx_ReplyChain mx_ReplyChain_error"},(0,l._t)("timeline|reply|error_loading"));else if(this.state.loadedEv&&(0,pn.c$)(this.state.events[0])){const t=this.state.loadedEv,n=this.matrixClient.getRoom(t.getRoomId());e=i.createElement("blockquote",{className:`mx_ReplyChain ${this.getReplyChainColorClass(t)}`},(0,l._t)("timeline|reply|in_reply_to",{},{a:e=>i.createElement(le.A,{kind:"link_inline",className:"mx_ReplyChain_show",onClick:this.onQuoteClick},e),pill:i.createElement(hn.a,{type:hn.y.UserMention,room:null!=n?n:void 0,url:(0,Gt.Ne)(t.getSender()),shouldShowPillAvatar:D.A.getValue("Pill.shouldShowPillAvatar")})}))}else if(this.props.forExport){const t=(0,pn.Ul)(this.props.parentEv);e=i.createElement("p",{className:"mx_ReplyChain_Export"},(0,l._t)("timeline|reply|in_reply_to_for_export",{},{a:e=>i.createElement("a",{className:"mx_reply_anchor",href:`#${t}`,"data-scroll-to":t}," ",e," ")}))}else this.state.loading&&(e=i.createElement(ce.A,{w:16,h:16}));const{isQuoteExpanded:t}=this.props,n=this.state.events.map(e=>{const n=Lt()({mx_ReplyChain:!0,[this.getReplyChainColorClass(e)]:!0,"mx_ReplyChain--expanded":!0===t,"mx_ReplyChain--collapsed":!1===t});return i.createElement("blockquote",{ref:this.blockquoteRef,className:n,key:e.getId()},i.createElement(un,{mxEvent:e,permalinkCreator:this.props.permalinkCreator,toggleExpandedQuote:()=>this.props.setQuoteExpanded(!this.props.isQuoteExpanded),getRelationsForEvent:this.props.getRelationsForEvent}))});return i.createElement("div",{className:"mx_ReplyChain_wrapper"},i.createElement("div",null,e),i.createElement("div",null,n))}}(0,w.A)(vn,"contextType",gn.Ay);var _n,fn=n("./src/components/views/messages/DecryptionFailureBody.tsx"),En=n("./src/components/views/avatars/RoomAvatar.tsx"),yn=n("./src/components/views/context_menus/MessageContextMenu.tsx"),bn=n("./src/components/structures/ContextMenu.tsx"),wn=n("./src/utils/objects.ts"),Sn=n("./src/stores/notifications/StaticNotificationState.ts"),An=n("./src/components/views/rooms/NotificationBadge.tsx"),Cn=n("./src/components/views/messages/MessageTimestamp.tsx"),xn=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/overflow-horizontal.js"),Rn=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/threads.js"),kn=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/unpin.js"),In=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/pin.js"),Tn=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/delete.js"),Pn=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/restart.js"),Nn=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/reply.js");function Mn(){return Mn=Object.assign?Object.assign.bind():function(e){for(var t=1;tt(),[t]),r=null!==(n=null==o?void 0:o.media.srcHttp)&&void 0!==n?n:"",a=null==o?void 0:o.fileName,{download:c,loading:d,canDownload:m}=(0,Zn.Q)(r,a,e),u=function(e,t){return e?t?(0,l._t)("timeline|download_action_decrypting"):(0,l._t)("timeline|download_action_downloading"):(0,l._t)("action|download")}(d,null!==(s=null==o?void 0:o.media.isEncrypted)&&void 0!==s&&s);if(!m)return null;const h=d?i.createElement(ce.A,{w:18,h:18}):void 0,p=Lt()({mx_MessageActionBar_iconButton:!0,mx_MessageActionBar_downloadButton:!0,mx_MessageActionBar_downloadSpinnerButton:!!h});return i.createElement(qn.k,{className:p,title:u,onClick:c,disabled:d,placement:"left"},i.createElement(Qn.A,null),h)}var ti=n("./src/components/views/emojipicker/ReactionPicker.tsx"),ni=n("./src/components/views/right_panel/context.ts"),ii=n("./src/Keyboard.ts"),si=n("./src/accessibility/KeyboardShortcuts.ts"),oi=n("./src/utils/PinningUtils.ts"),ri=n("./src/PosthogTrackers.ts"),ai=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/visibility-off.js");const li=({mxEvent:e})=>{const[t,n]=(0,Zt.E)(e);if(t)return i.createElement(qn.k,{className:"mx_MessageActionBar_iconButton ",title:(0,l._t)("action|hide"),onClick:()=>n(!1),placement:"left"},i.createElement(ai.A,null))},ci=({mxEvent:e,getTile:t,getReplyChain:n,permalinkCreator:s,onFocusChange:o,getRelationsForEvent:r})=>{const[a,c,d,m]=(0,bn.EF)(),[u,h]=(0,qn.A9)(c);(0,i.useEffect)(()=>{o(a)},[o,a]);const p=(0,i.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),d(),u()},[d,u]);let g;if(a&&c.current){const o=null==t?void 0:t(),a=n(),l=c.current.getBoundingClientRect();g=i.createElement(yn.A,(0,Wt.A)({},(0,bn.qv)(l),{mxEvent:e,permalinkCreator:s,eventTileOps:o&&o.getEventTileOps?o.getEventTileOps():void 0,collapseReplyChain:null!=a&&a.canCollapse()?a.collapse:void 0,onFinished:m,getRelationsForEvent:r}))}return i.createElement(i.Fragment,null,i.createElement(bn.oW,{className:"mx_MessageActionBar_iconButton mx_MessageActionBar_optionsButton",title:(0,l._t)("common|options"),onClick:p,onContextMenu:p,isExpanded:a,ref:c,onFocus:u,tabIndex:h?0:-1,placement:"left"},i.createElement(xn.A,null)),g)},di=({mxEvent:e,reactions:t,onFocusChange:n})=>{const[s,o,r,a]=(0,bn.EF)(),[c,d]=(0,qn.A9)(o);let m;if((0,i.useEffect)(()=>{n(s)},[n,s]),s&&o.current){const n=o.current.getBoundingClientRect();m=i.createElement(bn.Ay,(0,Wt.A)({},(0,bn.qv)(n),{onFinished:a,managed:!1}),i.createElement(ti.A,{mxEvent:e,reactions:t,onFinished:a}))}const u=(0,i.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),r(),c()},[r,c]);return i.createElement(i.Fragment,null,i.createElement(bn.oW,{className:"mx_MessageActionBar_iconButton",title:(0,l._t)("action|react"),onClick:u,onContextMenu:u,isExpanded:s,ref:o,onFocus:c,tabIndex:d?0:-1,placement:"left"},i.createElement(Vn,null)),m)},mi=({mxEvent:e})=>{var t;const n=(0,i.useContext)(ni.E),s=null==e||null===(t=e.getRelation())||void 0===t?void 0:t.rel_type,r=!!s&&s!==o.RelationType.Thread,a=t=>{t.preventDefault(),t.stopPropagation();const i=e.getThread();null!=i&&i.rootEvent&&!e.isThreadRoot?S.A.dispatch({action:H.r.ShowThread,rootEvent:i.rootEvent,initialEvent:e,scroll_into_view:!0,highlighted:!0,push:n.isCard}):S.A.dispatch({action:H.r.ShowThread,rootEvent:e,push:n.isCard})},c=r?(0,l._t)("threads|error_start_thread_existing_relation"):(0,l._t)("action|reply_in_thread");return i.createElement(qn.k,{className:"mx_MessageActionBar_iconButton mx_MessageActionBar_threadButton",disabled:r,title:c,onClick:a,onContextMenu:a,placement:"left"},i.createElement(Rn.A,null))};class ui extends i.PureComponent{constructor(...e){super(...e),(0,w.A)(this,"onDecrypted",()=>{this.forceUpdate()}),(0,w.A)(this,"onBeforeRedaction",()=>{this.forceUpdate()}),(0,w.A)(this,"onRoomEvent",e=>{e&&e.getType()===o.EventType.RoomPinnedEvents&&this.forceUpdate()}),(0,w.A)(this,"onSent",()=>{this.forceUpdate()}),(0,w.A)(this,"onFocusChange",e=>{var t,n;null===(t=(n=this.props).onFocusChange)||void 0===t||t.call(n,e)}),(0,w.A)(this,"onReplyClick",e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:"reply_to_event",event:this.props.mxEvent,context:this.context.timelineRenderingType})}),(0,w.A)(this,"onEditClick",e=>{e.preventDefault(),e.stopPropagation(),(0,nn.ju)(v.J.safeGet(),this.props.mxEvent,this.context.timelineRenderingType,this.props.getRelationsForEvent)}),(0,w.A)(this,"forbiddenThreadHeadMsgType",[o.MsgType.KeyVerificationRequest]),(0,w.A)(this,"onResendClick",e=>{e.preventDefault(),e.stopPropagation(),this.runActionOnFailedEv(e=>Yn.A.resend(v.J.safeGet(),e))}),(0,w.A)(this,"onCancelClick",e=>{this.runActionOnFailedEv(e=>Yn.A.removeFromQueue(v.J.safeGet(),e),e=>(0,nn.d1)(e.status))}),(0,w.A)(this,"onPinClick",async(e,t)=>{e.preventDefault(),e.stopPropagation(),await oi.A.pinOrUnpinEvent(v.J.safeGet(),this.props.mxEvent),ri.A.trackPinUnpinMessage(t?"Pin":"Unpin","Timeline")})}componentDidMount(){var e;this.props.mxEvent.status&&this.props.mxEvent.status!==o.EventStatus.SENT&&this.props.mxEvent.on(o.MatrixEventEvent.Status,this.onSent);v.J.safeGet().decryptEventIfNeeded(this.props.mxEvent),this.props.mxEvent.isBeingDecrypted()&&this.props.mxEvent.once(o.MatrixEventEvent.Decrypted,this.onDecrypted),this.props.mxEvent.on(o.MatrixEventEvent.BeforeRedaction,this.onBeforeRedaction),null===(e=this.context.room)||void 0===e||null===(e=e.getLiveTimeline().getState(o.EventTimeline.FORWARDS))||void 0===e||e.on(o.RoomStateEvent.Events,this.onRoomEvent)}componentWillUnmount(){var e;this.props.mxEvent.off(o.MatrixEventEvent.Status,this.onSent),this.props.mxEvent.off(o.MatrixEventEvent.Decrypted,this.onDecrypted),this.props.mxEvent.off(o.MatrixEventEvent.BeforeRedaction,this.onBeforeRedaction),null===(e=this.context.room)||void 0===e||null===(e=e.getLiveTimeline().getState(o.EventTimeline.FORWARDS))||void 0===e||e.off(o.RoomStateEvent.Events,this.onRoomEvent)}get showReplyInThreadAction(){const e=this.context.timelineRenderingType!==gn.Ae.Thread,t=!this.forbiddenThreadHeadMsgType.includes(this.props.mxEvent.getContent().msgtype)&&!o.M_BEACON_INFO.matches(this.props.mxEvent.getType());return e&&t}runActionOnFailedEv(e,t){t||(t=()=>!0);const n=this.props.mxEvent,i=n.replacingEvent(),s=[n.localRedactionEvent(),i,n];for(const n of s)if(n&&t(n)){e(n);break}}render(){var e,t;const n=[];if((0,nn.wQ)(v.J.safeGet(),this.props.mxEvent)&&n.push(i.createElement(qn.k,{className:"mx_MessageActionBar_iconButton",title:(0,l._t)("action|edit"),onClick:this.onEditClick,onContextMenu:this.onEditClick,key:"edit",placement:"left"},i.createElement(On,null))),oi.A.canPin(v.J.safeGet(),this.props.mxEvent)||oi.A.canUnpin(v.J.safeGet(),this.props.mxEvent)){const e=oi.A.isPinned(v.J.safeGet(),this.props.mxEvent);n.push(i.createElement(qn.k,{className:"mx_MessageActionBar_iconButton",title:e?(0,l._t)("action|unpin"):(0,l._t)("action|pin"),onClick:t=>this.onPinClick(t,e),onContextMenu:t=>this.onPinClick(t,e),key:"pin",placement:"left"},e?i.createElement(kn.A,null):i.createElement(In.A,null)))}const s=i.createElement(qn.k,{className:"mx_MessageActionBar_iconButton",title:(0,l._t)("action|delete"),onClick:this.onCancelClick,onContextMenu:this.onCancelClick,key:"cancel",placement:"left"},i.createElement(Tn.A,null)),r=i.createElement(mi,{mxEvent:this.props.mxEvent,key:"reply_thread"}),a=this.props.mxEvent,c=null===(e=a.replacingEvent())||void 0===e?void 0:e.status,d=null===(t=a.localRedactionEvent())||void 0===t?void 0:t.status,m=(0,nn.d1)(a.status)||(0,nn.d1)(c)||(0,nn.d1)(d),u=[a.status,c,d].includes(o.EventStatus.NOT_SENT);if(m&&u)n.splice(0,0,i.createElement(qn.k,{className:"mx_MessageActionBar_iconButton mx_MessageActionBar_retryButton",title:(0,l._t)("action|retry"),onClick:this.onResendClick,onContextMenu:this.onResendClick,key:"resend",placement:"left"},i.createElement(Pn.A,null))),n.push(s);else{if((0,nn.qe)(this.props.mxEvent)?(this.context.canSendMessages&&(this.showReplyInThreadAction&&n.splice(0,0,r),n.splice(0,0,i.createElement(qn.k,{className:"mx_MessageActionBar_iconButton",title:(0,l._t)("action|reply"),onClick:this.onReplyClick,onContextMenu:this.onReplyClick,key:"reply",placement:"left"},i.createElement(Nn.A,null)))),this.context.canReact&&!this.context.search&&n.splice(0,0,i.createElement(di,{mxEvent:this.props.mxEvent,reactions:this.props.reactions,onFocusChange:this.onFocusChange,key:"react"})),Xn.j.isEligible(this.props.mxEvent)&&n.splice(0,0,i.createElement(ei,{mxEvent:this.props.mxEvent,mediaEventHelperGet:()=>{var e,t;return null===(e=this.props.getTile())||void 0===e||null===(t=e.getMediaHelper)||void 0===t?void 0:t.call(e)},key:"download"})),Xn.j.canHide(this.props.mxEvent)&&n.splice(0,0,i.createElement(li,{mxEvent:this.props.mxEvent,key:"hide"}))):this.context.timelineRenderingType===gn.Ae.Room&&this.props.mxEvent.getThread()&&n.unshift(r),m&&n.push(s),void 0!==this.props.isQuoteExpanded&&(0,pn.c$)(this.props.mxEvent)){const e=Lt()({mx_MessageActionBar_iconButton:!0,mx_MessageActionBar_expandCollapseMessageButton:!0});n.push(i.createElement(qn.k,{className:e,title:this.props.isQuoteExpanded?(0,l._t)("timeline|mab|collapse_reply_chain"):(0,l._t)("timeline|mab|expand_reply_chain"),caption:(0,l._t)(si.hm[ii.Uz.SHIFT])+" + "+(0,l._t)("action|click"),onClick:this.props.toggleThreadExpanded,key:"expand",placement:"left"},this.props.isQuoteExpanded?i.createElement(Jn,null):i.createElement(Hn,null)))}n.push(i.createElement(ci,{mxEvent:this.props.mxEvent,getReplyChain:this.props.getReplyChain,getTile:this.props.getTile,permalinkCreator:this.props.permalinkCreator,onFocusChange:this.onFocusChange,key:"menu",getRelationsForEvent:this.props.getRelationsForEvent}))}return i.createElement($n.A,{className:"mx_MessageActionBar","aria-label":(0,l._t)("timeline|mab|label"),"aria-live":"off"},n)}}(0,w.A)(ui,"contextType",gn.Ay);var hi=n("./node_modules/matrix-js-sdk/src/NamespacedValue.ts"),pi=n("./src/accessibility/context_menu/ContextMenuTooltipButton.tsx"),gi=n("./src/customisations/Media.ts"),vi=n("./src/HtmlUtils.tsx");class _i extends i.PureComponent{render(){const{content:e,reactionEvents:t,mxEvent:n,children:s}=this.props,o=this.context.getRoom(n.getRoomId());if(o){const n=[];let a;for(const e of t){var r;const t=o.getMember(e.getSender()),i=null!==(r=null==t?void 0:t.name)&&void 0!==r?r:e.getSender();n.push(i),a=this.props.customReactionImagesEnabled&&Ei.findIn(e.getContent())||void 0}const c=(0,vi.aS)(e)||a,d=(0,Jt.ki)(n,6),m=c?(0,l._t)("timeline|reactions|tooltip_caption",{shortName:c}):void 0;return i.createElement(zt.m,{description:d,caption:m,placement:"right"},s)}return s}}(0,w.A)(_i,"contextType",de.Ay);class fi extends i.PureComponent{constructor(...e){super(...e),(0,w.A)(this,"onClick",()=>{const{mxEvent:e,myReactionEvent:t,content:n}=this.props;t?this.context.redactEvent(e.getRoomId(),t.getId()):(this.context.sendEvent(e.getRoomId(),o.EventType.Reaction,{"m.relates_to":{rel_type:o.RelationType.Annotation,event_id:e.getId(),key:n}}),S.A.dispatch({action:"message_sent"}))})}render(){const{mxEvent:e,content:t,count:n,reactionEvents:s,myReactionEvent:o}=this.props,r=Lt()({mx_ReactionsRowButton:!0,mx_ReactionsRowButton_selected:!!o}),a=this.context.getRoom(e.getRoomId());let c,d;if(a){const e=[];for(const t of s){const n=a.getMember(t.getSender());e.push((null==n?void 0:n.name)||t.getSender()),d=this.props.customReactionImagesEnabled&&Ei.findIn(t.getContent())||void 0}const n=(0,Jt.ki)(e,6);c=t?(0,l._t)("timeline|reactions|label",{reactors:n,content:d||t}):n}let m=i.createElement("span",{className:"mx_ReactionsRowButton_content","aria-hidden":"true"},t);if(this.props.customReactionImagesEnabled&&t.startsWith("mxc://")){const e=(0,gi.mediaFromMxc)(t).srcHttp;e&&(m=i.createElement("img",{className:"mx_ReactionsRowButton_content",alt:d||(0,l._t)("timeline|reactions|custom_reaction_fallback_label"),src:e,width:"16",height:"16"}))}return i.createElement(_i,{mxEvent:this.props.mxEvent,content:t,reactionEvents:s,customReactionImagesEnabled:this.props.customReactionImagesEnabled},i.createElement(le.A,{className:r,"aria-label":c,onClick:this.onClick,disabled:this.props.disabled},m,i.createElement("span",{className:"mx_ReactionsRowButton_count","aria-hidden":"true"},n)))}}(0,w.A)(fi,"contextType",de.Ay);const Ei=new hi.qr("shortcode","com.beeper.reaction.shortcode"),yi=({mxEvent:e,reactions:t})=>{const[n,s,o,r]=(0,bn.EF)();let a;if(n&&s.current){const n=s.current.getBoundingClientRect();a=i.createElement(bn.Ay,(0,Wt.A)({},(0,bn.qv)(n),{onFinished:r,managed:!1}),i.createElement(ti.A,{mxEvent:e,reactions:t,onFinished:r}))}return i.createElement(i.Fragment,null,i.createElement(pi.o,{className:Lt()("mx_ReactionsRow_addReactionButton",{mx_ReactionsRow_addReactionButton_active:n}),title:(0,l._t)("timeline|reactions|add_reaction_prompt"),onClick:o,onContextMenu:e=>{e.preventDefault(),o()},isExpanded:n,ref:s}),a)};class bi extends i.PureComponent{constructor(e,t){super(e,t),(0,w.A)(this,"onDecrypted",()=>{this.forceUpdate()}),(0,w.A)(this,"onReactionsChange",()=>{this.setState({myReactions:this.getMyReactions()}),this.forceUpdate()}),(0,w.A)(this,"onShowAllClick",()=>{this.setState({showAll:!0})}),this.state={myReactions:this.getMyReactions(),showAll:!1}}componentDidMount(){const{mxEvent:e,reactions:t}=this.props;(e.isBeingDecrypted()||e.shouldAttemptDecryption())&&e.once(o.MatrixEventEvent.Decrypted,this.onDecrypted),t&&(t.on(o.RelationsEvent.Add,this.onReactionsChange),t.on(o.RelationsEvent.Remove,this.onReactionsChange),t.on(o.RelationsEvent.Redaction,this.onReactionsChange))}componentWillUnmount(){const{mxEvent:e,reactions:t}=this.props;e.off(o.MatrixEventEvent.Decrypted,this.onDecrypted),t&&(t.off(o.RelationsEvent.Add,this.onReactionsChange),t.off(o.RelationsEvent.Remove,this.onReactionsChange),t.off(o.RelationsEvent.Redaction,this.onReactionsChange))}componentDidUpdate(e){this.props.reactions&&e.reactions!==this.props.reactions&&(this.props.reactions.on(o.RelationsEvent.Add,this.onReactionsChange),this.props.reactions.on(o.RelationsEvent.Remove,this.onReactionsChange),this.props.reactions.on(o.RelationsEvent.Redaction,this.onReactionsChange),this.onReactionsChange())}getMyReactions(){var e,t;const n=this.props.reactions;if(!n)return null;const i=null===(e=this.context.room)||void 0===e?void 0:e.client.getUserId();if(!i)return null;const s=null===(t=n.getAnnotationsBySender())||void 0===t?void 0:t[i];return s?[...s.values()]:null}render(){var e,t;const{mxEvent:n,reactions:s}=this.props,{myReactions:o,showAll:r}=this.state;if(!s||!(0,nn.qe)(n))return null;const a=D.A.getValue("feature_render_reaction_images");let c,d,m=null===(e=s.getSortedAnnotationsByKey())||void 0===e?void 0:e.map(([e,t])=>{if(!t.size)return null;const s=(0,Kt.uniqBy)([...t],e=>e.getSender()),r=null==o?void 0:o.find(t=>{var n;return!t.isRedacted()&&(null===(n=t.getRelation())||void 0===n?void 0:n.key)===e});return i.createElement(fi,{key:e,content:e,count:s.length,mxEvent:n,reactionEvents:s,myReactionEvent:r,customReactionImagesEnabled:a,disabled:!this.context.canReact||r&&!r.isRedacted()&&!this.context.canSelfRedact})}).filter(e=>!!e);return null!==(t=m)&&void 0!==t&&t.length?(m.length>9&&!r&&(m=m.slice(0,8),c=i.createElement(le.A,{kind:"link_inline",className:"mx_ReactionsRow_showAll",onClick:this.onShowAllClick},(0,l._t)("action|show_all"))),this.context.canReact&&(d=i.createElement(yi,{mxEvent:n,reactions:s})),i.createElement("div",{className:"mx_ReactionsRow",role:"toolbar","aria-label":(0,l._t)("common|reactions")},m,c,d)):null}}(0,w.A)(bi,"contextType",gn.Ay);var wi,Si=n("./src/utils/strings.ts"),Ai=n("./node_modules/bloom-filters/dist/bloom/scalable-bloom-filter.js"),Ci=n.n(Ai),xi=n("./src/utils/crypto/index.ts");function Ri(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}const ki="mx_decryption_failure_event_ids";class Ii{constructor(e,t,n,i,s,o){(0,w.A)(this,"timeToDecryptMillis",void 0),this.failedEventId=e,this.errorCode=t,this.ts=n,this.isFederated=i,this.wasVisibleToUser=s,this.userTrustsOwnIdentity=o}}class Ti{constructor(e,t,n=!0){if((0,w.A)(this,"failures",new Map),(0,w.A)(this,"visibleEvents",new Set),(0,w.A)(this,"reportedEvents",new(Ci())),(0,w.A)(this,"checkInterval",null),(0,w.A)(this,"trackInterval",null),(0,w.A)(this,"baseProperties",{}),(0,w.A)(this,"userDomain",void 0),(0,w.A)(this,"userTrustsOwnIdentity",void 0),(0,w.A)(this,"checkingVerificationStatus",!1),(0,w.A)(this,"retryVerificationStatus",!1),this.fn=e,this.errorCodeMapFn=t,this.checkReportedEvents=n,!e||"function"!=typeof e)throw new Error("DecryptionFailureTracker requires tracking function");if("function"!=typeof t)throw new Error("DecryptionFailureTracker second constructor argument should be a function")}static get instance(){return Ti.internalInstance}loadReportedEvents(){const e=localStorage.getItem(ki);this.reportedEvents=e?Ci().fromJSON(JSON.parse(e)):new(Ci())}saveReportedEvents(){localStorage.setItem(ki,JSON.stringify(this.reportedEvents.saveAsJSON()))}eventDecrypted(e,t){if(e.getWireContent().algorithm!=xi.Q)return;const n=e.decryptionFailureReason;if(null===n)return void this.removeDecryptionFailuresForEvent(e,t);const i=e.getId();if(this.reportedEvents.has(i)&&this.checkReportedEvents)return;const s=this.failures.get(i),o=s?s.ts:t,r=e.getSender(),a=null==r?void 0:r.replace(/^.*?:/,"");let l;void 0!==this.userDomain&&void 0!==a&&(l=this.userDomain!==a);const c=this.visibleEvents.has(i);this.failures.set(i,new Ii(i,n,o,l,c,this.userTrustsOwnIdentity))}addVisibleEvent(e){const t=e.getId();if(this.reportedEvents.has(t)&&this.checkReportedEvents)return;const n=this.failures.get(t);n&&(n.wasVisibleToUser=!0),this.visibleEvents.add(t)}removeDecryptionFailuresForEvent(e,t){const n=e.getId(),i=this.failures.get(n);if(i){this.failures.delete(n);const e=t-i.ts;if(ethis.checkFailures(Date.now()),Ti.CHECK_INTERVAL_MS)}async calculateClientProperties(e){var t;const n={};this.baseProperties=n,this.userDomain=null!==(t=e.getDomain())&&void 0!==t?t:void 0,"matrix.org"===this.userDomain?n.isMatrixDotOrg=!0:void 0!==this.userDomain&&(n.isMatrixDotOrg=!1);const i=e.getCrypto();if(i){i.getVersion().startsWith("Rust SDK")?n.cryptoSDK="Rust":n.cryptoSDK="Legacy",this.userTrustsOwnIdentity=(await i.getUserVerificationStatus(e.getUserId())).isCrossSigningVerified()}}registerHandlers(e){const t=e=>this.eventDecrypted(e,Date.now()),n=()=>{this.handleKeysChanged(e).catch(e=>{console.log("Error handling KeysChanged event",e)})},i=()=>{e.removeListener(o.MatrixEventEvent.Decrypted,t),e.removeListener(V.cr.KeysChanged,n),e.removeListener(o.HttpApiEvent.SessionLoggedOut,i),this.stop()};e.on(o.MatrixEventEvent.Decrypted,t),e.on(V.cr.KeysChanged,n),e.on(o.HttpApiEvent.SessionLoggedOut,i)}stop(){this.checkInterval&&clearInterval(this.checkInterval),this.trackInterval&&clearInterval(this.trackInterval),this.userTrustsOwnIdentity=void 0,this.failures=new Map,this.visibleEvents=new Set}checkFailures(e){const t=new Map;for(const[n,i]of this.failures)void 0!==i.timeToDecryptMillis||e>i.ts+Ti.MAXIMUM_LATE_DECRYPTION_PERIOD?this.reportFailure(i):t.set(n,i);this.failures=t,this.saveReportedEvents()}reportFailure(e){var t;const n=e.errorCode,i=this.errorCodeMapFn(n),s={timeToDecryptMillis:null!==(t=e.timeToDecryptMillis)&&void 0!==t?t:-1,wasVisibleToUser:e.wasVisibleToUser};void 0!==e.isFederated&&(s.isFederated=e.isFederated),void 0!==e.userTrustsOwnIdentity&&(s.userTrustsOwnIdentity=e.userTrustsOwnIdentity),this.baseProperties&&Object.assign(s,this.baseProperties),this.fn(i,n,s),this.reportedEvents.add(e.failedEventId),this.visibleEvents.delete(e.failedEventId)}}wi=Ti,(0,w.A)(Ti,"internalInstance",new wi((e,t,n)=>{const i=function(e){for(var t=1;t{switch(e){case V.RT.MEGOLM_UNKNOWN_INBOUND_SESSION_ID:case V.RT.MEGOLM_KEY_WITHHELD:return"OlmKeysNotSentError";case V.RT.MEGOLM_KEY_WITHHELD_FOR_UNVERIFIED_DEVICE:return"RoomKeysWithheldForUnverifiedDevice";case V.RT.OLM_UNKNOWN_MESSAGE_INDEX:return"OlmIndexError";case V.RT.HISTORICAL_MESSAGE_NO_KEY_BACKUP:case V.RT.HISTORICAL_MESSAGE_BACKUP_UNCONFIGURED:case V.RT.HISTORICAL_MESSAGE_WORKING_BACKUP:return"HistoricalMessage";case V.RT.HISTORICAL_MESSAGE_USER_NOT_JOINED:return"ExpectedDueToMembership";case V.RT.SENDER_IDENTITY_PREVIOUSLY_VERIFIED:return"ExpectedVerificationViolation";case V.RT.UNSIGNED_SENDER_DEVICE:return"ExpectedSentByInsecureDevice";default:return"UnknownError"}})),(0,w.A)(Ti,"CHECK_INTERVAL_MS",4e4),(0,w.A)(Ti,"GRACE_PERIOD_MS",4e3),(0,w.A)(Ti,"MAXIMUM_LATE_DECRYPTION_PERIOD",6e4);var Pi=n("./src/components/views/messages/RedactedBody.tsx"),Ni=n("./src/components/structures/ViewSource.tsx");class Mi extends i.Component{constructor(e){super(e),(0,w.A)(this,"onBugReport",()=>{R.Ay.createDialog(Pt.A,{label:"react-soft-crash-tile",error:this.state.error})}),(0,w.A)(this,"onViewSource",()=>{R.Ay.createDialog(Ni.A,{mxEvent:this.props.mxEvent},"mx_Dialog_viewsource")}),this.state={}}static getDerivedStateFromError(e){return{error:e}}render(){if(this.state.error){const{mxEvent:e}=this.props,t={mx_EventTile:!0,mx_EventTile_info:!0,mx_EventTile_content:!0,mx_EventTile_tileError:!0};let n,s;return c.Ay.get().bug_report_endpoint_url&&(n=i.createElement(i.Fragment,null," ",i.createElement(le.A,{kind:"link",onClick:this.onBugReport},(0,l._t)("bug_reporting|submit_debug_logs")))),e&&D.A.getValue("developerMode")&&(s=i.createElement(i.Fragment,null," ",i.createElement(le.A,{onClick:this.onViewSource,kind:"link"},(0,l._t)("action|view_source")))),i.createElement("li",{className:Lt()(t),"data-layout":this.props.layout},i.createElement("div",{className:"mx_EventTile_line"},i.createElement("span",null,(0,l._t)("timeline|error_rendering_message"),e&&` (${e.getType()})`,n,s)))}return this.props.children}}var Di=n("./node_modules/@vector-im/compound-web/dist/components/Icon/IndicatorIcon/IndicatorIcon.js"),Oi=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/threads-solid.js"),Fi=n("./src/hooks/useEventEmitter.ts"),Li=n("./src/hooks/useUnreadNotifications.ts"),Ui=n("./src/utils/notifications.ts"),Vi=n("./src/stores/room-list/MessagePreviewStore.ts"),Bi=n("./src/hooks/useAsyncMemo.ts");const ji=["mxEvent","className"],Wi=["preview","className"];function Hi(e){let{mxEvent:t,className:n}=e,s=(0,g.A)(e,ji);const o=Ki(t);return o?i.createElement(zi,(0,Wt.A)({},s,{preview:o,className:n})):null}function zi(e){let{preview:[t,n],className:s}=e,o=(0,g.A)(e,Wi);const r=Lt()("mx_EventPreview",s);return n?i.createElement("span",(0,Wt.A)({},o,{className:r}),(0,l._t)("event_preview|preview",{prefix:n,preview:t},{bold:e=>i.createElement("span",{className:"mx_EventPreview_prefix"},e)})):i.createElement("span",(0,Wt.A)({},o,{className:r,title:t}),t)}function Ki(e){const t=(0,i.useContext)(de.Ay),[n,s]=(0,i.useState)(null==e?void 0:e.getContent());(0,Fi.YK)(null!=e?e:void 0,o.MatrixEventEvent.Replaced,()=>{s(e.getContent())});const r=(null==e?void 0:e.shouldAttemptDecryption())||(null==e?void 0:e.isBeingDecrypted());return(0,Fi.YK)(r&&null!=e?e:void 0,o.MatrixEventEvent.Decrypted,()=>{s(e.getContent())}),(0,Bi.e)(async()=>!e||e.isRedacted()||e.isDecryptionFailure()?null:(await t.decryptEventIfNeeded(e),[Vi.X.instance.generatePreviewForEvent(e),Gi(e.getType(),null==n?void 0:n.msgtype)]),[e,n],null)}function Gi(e,t){if(e===o.M_POLL_START.name)return(0,l._t)("event_preview|prefix|poll");switch(t){case o.MsgType.Audio:return(0,l._t)("event_preview|prefix|audio");case o.MsgType.Image:return(0,l._t)("event_preview|prefix|image");case o.MsgType.Video:return(0,l._t)("event_preview|prefix|video");case o.MsgType.File:return(0,l._t)("event_preview|prefix|file");default:return null}}var Ji=n("./src/contexts/ScopedRoomContext.tsx");const $i=["mxEvent","thread"],qi=({thread:e,showDisplayname:t=!1})=>{var n,s,r;const a=null!==(n=(0,Fi.DY)(e,o.ThreadEvent.Update,()=>e.replyToEvent))&&void 0!==n?n:void 0,c=Ki(a);return c&&a?i.createElement(i.Fragment,null,i.createElement(ln.A,{member:a.sender,fallbackUserId:a.getSender(),size:"24px",className:"mx_ThreadSummary_avatar"}),t&&i.createElement("div",{className:"mx_ThreadSummary_sender"},null!==(s=null===(r=a.sender)||void 0===r?void 0:r.name)&&void 0!==s?s:a.getSender()),a.isDecryptionFailure()?i.createElement("div",{className:"mx_ThreadSummary_content mx_DecryptionFailureBody",title:(0,l._t)("timeline|decryption_failure|unable_to_decrypt")},(0,l._t)("timeline|decryption_failure|unable_to_decrypt")):i.createElement(zi,{preview:c,className:"mx_ThreadSummary_content"})):null},Yi=e=>{let{mxEvent:t,thread:n}=e,s=(0,g.A)(e,$i);const r=(0,Ji.ME)("narrow"),a=(0,i.useContext)(ni.E),c=(0,Fi.DY)(n,o.ThreadEvent.Update,()=>n.length),{level:d}=(0,Li.X)(n.room,n.id);if(!c)return null;let m=c;return r.narrow||(m=(0,l._t)("threads|count_of_reply",{count:c})),i.createElement(le.A,(0,Wt.A)({},s,{className:"mx_ThreadSummary",onClick:e=>{S.A.dispatch({action:H.r.ShowThread,rootEvent:t,push:a.isCard}),ri.A.trackInteraction("WebRoomTimelineThreadSummaryButton",e)},"aria-label":(0,l._t)("threads|open_thread")}),i.createElement(Di.N,{size:"24px",indicator:(0,Ui.W7)(d)},i.createElement(Oi.A,null)),i.createElement("span",{className:"mx_ThreadSummary_replies_amount"},m),i.createElement(qi,{thread:n,showDisplayname:!r.narrow}),i.createElement("div",{className:"mx_ThreadSummary_chevron"}))};class Xi extends i.Component{constructor(e){super(e),(0,w.A)(this,"nodes",{}),(0,w.A)(this,"children",{}),this.updateChildren(this.props.children)}componentDidUpdate(){this.updateChildren(this.props.children)}applyStyles(e,t){t&&Object.entries(t).forEach(([t,n])=>{e.style[t]=n})}updateChildren(e){const t=this.children||{};this.children={},i.Children.toArray(e).forEach(e=>{if(!function(e){return"object"==typeof e&&"type"in e}(e))return;const n=e.props;if(t[e.key]){const s=t[e.key],o=this.nodes[s.key];o&&n.style&&o.style.left!==n.style.left&&this.applyStyles(o,{left:n.style.left}),this.children[e.key]=i.cloneElement(s,n,n.children)}else{const t={},s=n.style,o=this.props.startStyles;if(o.length>0){const e=o[0];t.style=e}t.ref=t=>this.collectNode(e.key,t,s),this.children[e.key]=i.cloneElement(e,t)}})}collectNode(e,t,n){const i="bigint"==typeof e?Number(e):e;if(t&&void 0===this.nodes[i]&&this.props.startStyles.length>0){const e=this.props.startStyles;for(let n=1;n{this.applyStyles(t,n)},0)}t?this.nodes[i]=t:delete this.nodes[i],this.props.innerRef&&(this.props.innerRef.current=t)}render(){return i.createElement(i.Fragment,null,Object.values(this.children))}}(0,w.A)(Xi,"defaultProps",{startStyles:[]});var Qi=n("./src/utils/units.ts");class Zi extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"avatar",(0,i.createRef)()),this.state={suppressDisplay:!this.props.suppressAnimation}}componentWillUnmount(){const e=this.props.readReceiptPosition;e&&(this.props.checkUnmounting&&this.props.checkUnmounting()||this.buildReadReceiptInfo(e))}componentDidMount(){this.state.suppressDisplay&&this.animateMarker()}componentDidUpdate(e){const t=e.offset!==this.props.offset,n=e.hidden!==this.props.hidden;(t||n)&&this.animateMarker()}buildReadReceiptInfo(e={}){const t=this.avatar.current,n=null==t?void 0:t.offsetParent;if(!n||!n.getBoundingClientRect)return s.vF.warn(`ReadReceiptMarker for ${this.props.fallbackUserId} has no valid horizontalContainer`),e.top=0,e.right=0,e;const i=t.getBoundingClientRect();return e.top=i.top,e.right=i.right-n.getBoundingClientRect().right,e}animateMarker(){var e;const t=this.props.readReceiptPosition,n=null!==(e=this.buildReadReceiptInfo().top)&&void 0!==e?e:0,i=t&&void 0!==t.top?t.top:-ts,s=[];null!=t&&t.right&&s.push({top:i-n,right:t.right}),s.push({top:i-n,right:0}),this.setState({suppressDisplay:!1,startStyles:s})}render(){var e;if(this.state.suppressDisplay)return i.createElement("div",{ref:this.avatar});const t={right:(0,Qi.c)(this.props.offset),top:"0px"};return i.createElement(Xi,{startStyles:this.state.startStyles,innerRef:this.avatar},i.createElement(ln.A,{member:null!==(e=this.props.member)&&void 0!==e?e:null,fallbackUserId:this.props.fallbackUserId,"aria-hidden":"true","aria-live":"off",size:"14px",style:t,hideTitle:!0,tabIndex:-1}))}}var es=n("./src/components/structures/AutoHideScrollbar.tsx");const ts=16;function ns({readReceipts:e,readReceiptMap:t,checkUnmounting:n,suppressAnimation:s,isTwelveHour:o}){const[r,a,c,d]=(0,bn.EF)(),m=e.length>4?3:4,u=function(e,t){return(0,Jt.ki)(e,t)}(e.map(e=>{var t,n;return null!==(t=null===(n=e.roomMember)||void 0===n?void 0:n.name)&&void 0!==t?t:e.userId}),m);if(0===e.length)return i.createElement("div",{className:"mx_EventTile_msgOption"},i.createElement("div",{className:"mx_ReadReceiptGroup"},i.createElement("div",{className:"mx_ReadReceiptGroup_button"},i.createElement("span",{className:"mx_ReadReceiptGroup_container"}))));const h=e.map((e,r)=>{const{hidden:a,position:l}=function(e,t){return e0&&(p=i.createElement("span",{className:"mx_ReadReceiptGroup_remainder","aria-live":"off"},"+",g)),r&&a.current){const t=a.current.getBoundingClientRect();v=i.createElement(bn.Ay,(0,Wt.A)({menuClassName:"mx_ReadReceiptGroup_popup",onFinished:d},(0,bn.qv)(t)),i.createElement(es.A,null,i.createElement(ss,{className:"mx_ReadReceiptGroup_title"},(0,l._t)("timeline|read_receipt_title",{count:e.length})),e.map(e=>i.createElement(is,(0,Wt.A)({key:e.userId},e,{isTwelveHour:o,onAfterClick:d})))))}return i.createElement("div",{className:"mx_EventTile_msgOption"},i.createElement(zt.m,{label:(0,l._t)("timeline|read_receipt_title",{count:e.length}),caption:u,placement:"top-end"},i.createElement("div",{className:"mx_ReadReceiptGroup",role:"group","aria-label":(0,l._t)("timeline|read_receipts_label")},i.createElement(le.A,{className:"mx_ReadReceiptGroup_button",ref:a,"aria-label":u,"aria-haspopup":"true",onClick:c},p,i.createElement("span",{className:"mx_ReadReceiptGroup_container",style:{width:10*Math.min(m,e.length)+ts-10}},h)),v)))}function is({userId:e,roomMember:t,ts:n,isTwelveHour:s,onAfterClick:o}){var r,a;return i.createElement(zt.m,{description:null!==(r=null==t?void 0:t.rawDisplayName)&&void 0!==r?r:e,caption:e,placement:"top"},i.createElement("div",null,i.createElement(bn.Dr,{className:"mx_ReadReceiptGroup_person",onClick:()=>{S.A.dispatch({action:H.r.ViewUser,member:null!=t?t:{userId:e},push:!1}),null==o||o()}},i.createElement(ln.A,{member:t,fallbackUserId:e,size:"24px","aria-hidden":"true","aria-live":"off",resizeMethod:"crop",hideTitle:!0}),i.createElement("div",{className:"mx_ReadReceiptGroup_name"},i.createElement("p",null,null!==(a=null==t?void 0:t.name)&&void 0!==a?a:e),i.createElement("p",{className:"mx_ReadReceiptGroup_secondary"},(0,tt.Yq)(new Date(n),s))))))}function ss({className:e,children:t}){const[n,,s]=(0,qn.A9)();return i.createElement("h3",{className:e,role:"menuitem",onFocus:n,tabIndex:-1,ref:s},t)}var os=n("./src/utils/localRoom/isLocalRoom.ts"),rs=n("./src/components/views/rooms/NotificationBadge/StatelessNotificationBadge.tsx");function as({room:e,threadId:t,forceDot:n}){const{symbol:s,count:o,level:r}=(0,Li.X)(e,t);return i.createElement(rs.V,{symbol:s,count:o,level:r,forceDot:n})}var ls,cs=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/link.js");function ds(){return ds=Object.assign?Object.assign.bind():function(e){for(var t=1;t{this.setState({thread:e})}),(0,w.A)(this,"onNewThread",e=>{if(e.id===this.props.mxEvent.getId()){this.updateThread(e);const t=v.J.safeGet().getRoom(this.props.mxEvent.getRoomId());null==t||t.off(o.ThreadEvent.New,this.onNewThread)}}),(0,w.A)(this,"viewInRoom",e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.ViewRoom,event_id:this.props.mxEvent.getId(),highlighted:!0,room_id:this.props.mxEvent.getRoomId(),metricsTrigger:void 0})}),(0,w.A)(this,"copyLinkToThread",async e=>{e.preventDefault(),e.stopPropagation();const{permalinkCreator:t,mxEvent:n}=this.props;if(!t)return;const i=t.forEvent(n.getId());await(0,Si.nC)(i)}),(0,w.A)(this,"onRoomReceipt",(e,t)=>{t===v.J.safeGet().getRoom(this.props.mxEvent.getRoomId())&&(this.shouldShowSentReceipt||this.shouldShowSendingReceipt||this.isListeningForReceipts)&&this.forceUpdate(()=>{this.shouldShowSentReceipt||this.shouldShowSendingReceipt||(v.J.safeGet().removeListener(o.RoomEvent.Receipt,this.onRoomReceipt),this.isListeningForReceipts=!1)})}),(0,w.A)(this,"onDecrypted",()=>{this.verifyEvent(),this.forceUpdate()}),(0,w.A)(this,"onUserVerificationChanged",(e,t)=>{e===this.props.mxEvent.getSender()&&this.verifyEvent()}),(0,w.A)(this,"onReplaced",()=>{this.verifyEvent()}),(0,w.A)(this,"onSenderProfileClick",()=>{S.A.dispatch({action:H.r.ComposerInsert,userId:this.props.mxEvent.getSender(),timelineRenderingType:this.context.timelineRenderingType})}),(0,w.A)(this,"onPermalinkClicked",e=>{e.preventDefault(),S.A.dispatch({action:H.r.ViewRoom,event_id:this.props.mxEvent.getId(),highlighted:!0,room_id:this.props.mxEvent.getRoomId(),metricsTrigger:this.context.timelineRenderingType===gn.Ae.Search?"MessageSearch":void 0})}),(0,w.A)(this,"onActionBarFocusChange",e=>{this.setState({actionBarFocused:e})}),(0,w.A)(this,"getTile",()=>this.tile.current),(0,w.A)(this,"getReplyChain",()=>this.replyChain.current),(0,w.A)(this,"getReactions",()=>{var e;if(!this.props.showReactions||!this.props.getRelationsForEvent)return null;const t=this.props.mxEvent.getId();return null!==(e=this.props.getRelationsForEvent(t,"m.annotation","m.reaction"))&&void 0!==e?e:null}),(0,w.A)(this,"onReactionsCreated",(e,t)=>{"m.annotation"===e&&"m.reaction"===t&&this.setState({reactions:this.getReactions()})}),(0,w.A)(this,"onContextMenu",e=>{this.showContextMenu(e)}),(0,w.A)(this,"onTimestampContextMenu",e=>{var t;this.showContextMenu(e,null===(t=this.props.permalinkCreator)||void 0===t?void 0:t.forEvent(this.props.mxEvent.getId()))}),(0,w.A)(this,"onCloseMenu",()=>{this.setState({contextMenu:void 0,actionBarFocused:!1})}),(0,w.A)(this,"setQuoteExpanded",e=>{this.setState({isQuoteExpanded:e})});const n=this.thread;this.state={actionBarFocused:!1,shieldColour:V.so.NONE,shieldReason:null,reactions:this.getReactions(),hover:!1,thread:n},this.suppressReadReceiptAnimation=!0,this.isListeningForReceipts=!1}get isEligibleForSpecialReceipt(){if(this.props.readReceipts&&this.props.readReceipts.length>0)return!1;if(!this.props.mxEvent)return!1;if(!v.J.safeGet().getRoom(this.props.mxEvent.getRoomId()))return!1;const e=v.J.safeGet().getSafeUserId();return this.props.mxEvent.getSender()===e&&Es(this.props.mxEvent)}get shouldShowSentReceipt(){if(!this.isEligibleForSpecialReceipt)return!1;if(!this.props.lastSuccessful)return!1;if(this.props.eventSendStatus&&this.props.eventSendStatus!==o.EventStatus.SENT)return!1;const e=this.props.readReceipts||[],t=v.J.safeGet().getUserId();return!e.some(e=>e.userId!==t)}get shouldShowSendingReceipt(){return!!this.isEligibleForSpecialReceipt&&!(!this.props.eventSendStatus||this.props.eventSendStatus===o.EventStatus.SENT)}componentDidMount(){this.unmounted=!1,this.suppressReadReceiptAnimation=!1;const e=v.J.safeGet();this.props.forExport||(e.on(V.cr.UserTrustStatusChanged,this.onUserVerificationChanged),this.props.mxEvent.on(o.MatrixEventEvent.Decrypted,this.onDecrypted),this.props.mxEvent.on(o.MatrixEventEvent.Replaced,this.onReplaced),Ti.instance.addVisibleEvent(this.props.mxEvent),this.props.showReactions&&this.props.mxEvent.on(o.MatrixEventEvent.RelationsCreated,this.onReactionsCreated),(this.shouldShowSentReceipt||this.shouldShowSendingReceipt)&&(e.on(o.RoomEvent.Receipt,this.onRoomReceipt),this.isListeningForReceipts=!0)),this.props.mxEvent.on(o.ThreadEvent.Update,this.updateThread),e.decryptEventIfNeeded(this.props.mxEvent);const t=e.getRoom(this.props.mxEvent.getRoomId());null==t||t.on(o.ThreadEvent.New,this.onNewThread),this.verifyEvent()}shouldComponentUpdate(e,t){return!!(0,wn.No)(this.state,t)||!this.propsEqual(this.props,e)}componentWillUnmount(){const e=v.J.get();if(e){e.removeListener(V.cr.UserTrustStatusChanged,this.onUserVerificationChanged),e.removeListener(o.RoomEvent.Receipt,this.onRoomReceipt);const t=e.getRoom(this.props.mxEvent.getRoomId());null==t||t.off(o.ThreadEvent.New,this.onNewThread)}this.isListeningForReceipts=!1,this.props.mxEvent.removeListener(o.MatrixEventEvent.Decrypted,this.onDecrypted),this.props.mxEvent.removeListener(o.MatrixEventEvent.Replaced,this.onReplaced),this.props.showReactions&&this.props.mxEvent.removeListener(o.MatrixEventEvent.RelationsCreated,this.onReactionsCreated),this.props.mxEvent.off(o.ThreadEvent.Update,this.updateThread),this.unmounted=!1,this.props.resizeObserver&&this.ref.current&&this.props.resizeObserver.unobserve(this.ref.current)}componentDidUpdate(e,t){this.isListeningForReceipts||!this.shouldShowSentReceipt&&!this.shouldShowSendingReceipt||(v.J.safeGet().on(o.RoomEvent.Receipt,this.onRoomReceipt),this.isListeningForReceipts=!0),e.eventSendStatus!==this.props.eventSendStatus&&this.verifyEvent(),this.props.resizeObserver&&this.ref.current&&this.props.resizeObserver.observe(this.ref.current)}get thread(){let e=this.props.mxEvent.getThread();if(!e){var t;const n=v.J.safeGet().getRoom(this.props.mxEvent.getRoomId());e=null!==(t=null==n?void 0:n.findThreadForEvent(this.props.mxEvent))&&void 0!==t?t:void 0}return null!=e?e:null}renderThreadPanelSummary(){return this.state.thread?i.createElement("div",{className:"mx_ThreadPanel_replies"},i.createElement("span",{className:"mx_ThreadPanel_replies_amount"},this.state.thread.length),i.createElement(qi,{thread:this.state.thread})):null}renderThreadInfo(){return this.state.thread&&this.state.thread.id===this.props.mxEvent.getId()?i.createElement(Yi,{mxEvent:this.props.mxEvent,thread:this.state.thread}):this.context.timelineRenderingType===gn.Ae.Search&&this.props.mxEvent.threadRootId?this.props.highlightLink?i.createElement("a",{className:"mx_ThreadSummary_icon",href:this.props.highlightLink},(0,l._t)("timeline|thread_info_basic")):i.createElement("p",{className:"mx_ThreadSummary_icon"},(0,l._t)("timeline|thread_info_basic")):void 0}verifyEvent(){this.doVerifyEvent().catch(e=>{const t=this.props.mxEvent;s.vF.error(`Error getting encryption info on event ${t.getId()} in room ${t.getRoomId()}`,e)})}async doVerifyEvent(){var e,t,n;const i=null!==(e=this.props.mxEvent.replacingEvent())&&void 0!==e?e:this.props.mxEvent;if(!i.isEncrypted()||i.isRedacted())return void this.setState({shieldColour:V.so.NONE,shieldReason:null});const s=null!==(t=await(null===(n=v.J.safeGet().getCrypto())||void 0===n?void 0:n.getEncryptionInfoForEvent(i)))&&void 0!==t?t:null;this.unmounted||(null!==s?this.setState({shieldColour:s.shieldColour,shieldReason:s.shieldReason}):this.setState({shieldColour:V.so.NONE,shieldReason:null}))}propsEqual(e,t){const n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(let i=0;ithis.setQuoteExpanded(!_),getRelationsForEvent:this.props.getRelationsForEvent}):void 0,F=this.props.mxEvent.getTs()&&!this.props.hideTimestamp&&(this.props.alwaysShowTimestamps||this.props.last||this.state.hover||this.state.actionBarFocused||Boolean(this.state.contextMenu));let L=this.context.timelineRenderingType!==gn.Ae.ThreadsList?this.props.mxEvent.getTs():null===(e=this.state.thread)||void 0===e||null===(e=e.replyToEvent)||void 0===e?void 0:e.getTs();"number"!=typeof L&&(L=this.props.mxEvent.getTs());const U=i.createElement(Cn.A,{showRelative:this.context.timelineRenderingType===gn.Ae.ThreadsList,showTwelveHour:this.props.isTwelveHour,ts:L,receivedTs:null===(t=ps(this.props.mxEvent))||void 0===t?void 0:t.received_ts}),V=F&&L?U:null;let B,j;oi.A.isPinned(v.J.safeGet(),this.props.mxEvent)&&(B=i.createElement(vs,{"aria-describedby":c,tabIndex:0})),b||(j=i.createElement(bi,{mxEvent:this.props.mxEvent,reactions:this.state.reactions,key:"mx_EventTile_reactionsRow"}));const W=Boolean(j&&this.state.reactions||B),z=this.props.hideTimestamp?null:i.createElement("a",{href:I,onClick:this.onPermalinkClicked,"aria-label":(0,tt.fU)(new Date(this.props.mxEvent.getTs()),this.props.isTwelveHour),onContextMenu:this.onTimestampContextMenu},V),K=this.props.layout===Bt.P.IRC,G=K?null:z,J=K?z:null,$=this.props.layout===Bt.P.Bubble?U:void 0,q=!K&&!m&&this.renderE2EPadlock(),Y=K&&!m&&this.renderE2EPadlock();let X,Q;if(this.shouldShowSentReceipt||this.shouldShowSendingReceipt)X=i.createElement(xs,{messageState:this.props.mxEvent.getAssociatedStatus()});else if(this.props.showReadReceipts){var Z,ee;X=i.createElement(ns,{readReceipts:null!==(Z=this.props.readReceipts)&&void 0!==Z?Z:[],readReceiptMap:null!==(ee=this.props.readReceiptMap)&&void 0!==ee?ee:{},checkUnmounting:this.props.checkUnmounting,suppressAnimation:this.suppressReadReceiptAnimation,isTwelveHour:this.props.isTwelveHour})}(0,sn.bN)(this.props.mxEvent,v.J.safeGet(),this.context.showHiddenEvents)&&(0,pn.c$)(this.props.mxEvent)&&(Q=i.createElement(vn,{parentEv:this.props.mxEvent,ref:this.replyChain,forExport:this.props.forExport,permalinkCreator:this.props.permalinkCreator,layout:this.props.layout,alwaysShowTimestamps:this.props.alwaysShowTimestamps||this.state.hover,isQuoteExpanded:_,setQuoteExpanded:this.setQuoteExpanded,getRelationsForEvent:this.props.getRelationsForEvent}));const te=(null===(n=this.props.mxEvent)||void 0===n?void 0:n.getSender())===v.J.safeGet().getUserId();switch(this.context.timelineRenderingType){case gn.Ae.Thread:return i.createElement(this.props.as||"li",{ref:this.ref,className:R,"aria-live":k,"aria-atomic":!0,"data-scroll-tokens":T,"data-has-reply":!!Q,"data-layout":this.props.layout,"data-self":te,"data-event-id":this.props.mxEvent.getId(),onMouseEnter:()=>this.setState({hover:!0}),onMouseLeave:()=>this.setState({hover:!1})},[i.createElement("div",{className:"mx_EventTile_senderDetails",key:"mx_EventTile_senderDetails"},M,D),i.createElement("div",{id:c,className:E,key:"mx_EventTile_line",onContextMenu:this.onContextMenu},this.renderContextMenu(),Q,(0,sn.rd)(gn.Ae.Thread,fs(fs({},this.props),{},{ref:this.tile,isSeeingThroughMessageHiddenForModeration:g,highlights:this.props.highlights,highlightLink:this.props.highlightLink,permalinkCreator:this.props.permalinkCreator,showHiddenEvents:this.context.showHiddenEvents})),O,i.createElement("a",{href:I,onClick:this.onPermalinkClicked},V),X),W&&i.createElement("div",{className:"mx_EventTile_footer",key:"mx_EventTile_footer"},(this.props.layout===Bt.P.Group||!te)&&B,j,this.props.layout===Bt.P.Bubble&&te&&B)]);case gn.Ae.Notification:case gn.Ae.ThreadsList:{const e=v.J.safeGet().getRoom(this.props.mxEvent.getRoomId());return i.createElement(this.props.as||"li",{ref:this.ref,className:R,tabIndex:-1,"aria-live":k,"aria-atomic":"true","data-scroll-tokens":T,"data-layout":this.props.layout,"data-shape":this.context.timelineRenderingType,"data-self":te,"data-has-reply":!!Q,onMouseEnter:()=>this.setState({hover:!0}),onMouseLeave:()=>this.setState({hover:!1}),onClick:e=>{const t=e.currentTarget;let n=-1;switch(t.parentElement&&(n=Array.from(t.parentElement.children).indexOf(t)),this.context.timelineRenderingType){case gn.Ae.Notification:this.viewInRoom(e);break;case gn.Ae.ThreadsList:S.A.dispatch({action:H.r.ShowThread,rootEvent:this.props.mxEvent,push:!0}),ri.A.trackInteraction("WebThreadsPanelThreadItem",e,null!=n?n:-1)}}},i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_EventTile_details"},D,C&&e?i.createElement("span",{className:"mx_EventTile_truncated"}," ",(0,l._t)("timeline|in_room_name",{room:e.name},{strong:e=>i.createElement("strong",null,e)})):"",V,i.createElement(as,{room:e||void 0,threadId:this.props.mxEvent.getId(),forceDot:!0})),C&&e?i.createElement("div",{className:"mx_EventTile_avatar"},i.createElement(En.A,{room:e,size:"28px"})):M,i.createElement("div",{className:E,key:"mx_EventTile_line"},i.createElement("div",{className:"mx_EventTile_body"},this.props.mxEvent.isRedacted()?i.createElement(Pi.A,{mxEvent:this.props.mxEvent}):this.props.mxEvent.isDecryptionFailure()?i.createElement(fn.A,{mxEvent:this.props.mxEvent}):i.createElement(Hi,{mxEvent:this.props.mxEvent})),this.renderThreadPanelSummary()),this.context.timelineRenderingType===gn.Ae.ThreadsList&&i.createElement(hs,{viewInRoom:this.viewInRoom,copyLinkToThread:this.copyLinkToThread}),X))}case gn.Ae.File:return i.createElement(this.props.as||"li",{className:R,"aria-live":k,"aria-atomic":!0,"data-scroll-tokens":T},[i.createElement("a",{className:"mx_EventTile_senderDetailsLink",key:"mx_EventTile_senderDetailsLink",href:I,onClick:this.onPermalinkClicked},i.createElement("div",{className:"mx_EventTile_senderDetails",onContextMenu:this.onTimestampContextMenu},M,D,V)),i.createElement("div",{className:E,key:"mx_EventTile_line",onContextMenu:this.onContextMenu},this.renderContextMenu(),(0,sn.rd)(gn.Ae.File,fs(fs({},this.props),{},{ref:this.tile,isSeeingThroughMessageHiddenForModeration:g,highlights:this.props.highlights,highlightLink:this.props.highlightLink,permalinkCreator:this.props.permalinkCreator,showHiddenEvents:this.context.showHiddenEvents})))]);default:return i.createElement(this.props.as||"li",{ref:this.ref,className:R,tabIndex:-1,"aria-live":k,"aria-atomic":"true","data-scroll-tokens":T,"data-layout":this.props.layout,"data-self":te,"data-event-id":this.props.mxEvent.getId(),"data-has-reply":!!Q,onMouseEnter:()=>this.setState({hover:!0}),onMouseLeave:()=>this.setState({hover:!1})},i.createElement(i.Fragment,null,J,D,Y,M,i.createElement("div",{id:c,className:E,key:"mx_EventTile_line",onContextMenu:this.onContextMenu},this.renderContextMenu(),G,q,Q,(0,sn.rd)(this.context.timelineRenderingType,fs(fs({},this.props),{},{ref:this.tile,isSeeingThroughMessageHiddenForModeration:g,timestamp:$,highlights:this.props.highlights,highlightLink:this.props.highlightLink,permalinkCreator:this.props.permalinkCreator,showHiddenEvents:this.context.showHiddenEvents})),O,this.props.layout===Bt.P.IRC&&i.createElement(i.Fragment,null,W&&i.createElement("div",{className:"mx_EventTile_footer"},B,j),this.renderThreadInfo())),this.props.layout!==Bt.P.IRC&&i.createElement(i.Fragment,null,W&&i.createElement("div",{className:"mx_EventTile_footer"},(this.props.layout===Bt.P.Group||!te)&&B,j,this.props.layout===Bt.P.Bubble&&te&&B),this.renderThreadInfo()),X))}}}(0,w.A)(ys,"defaultProps",{forExport:!1,layout:Bt.P.Group}),(0,w.A)(ys,"contextType",gn.Ay);const bs=e=>{var t;return i.createElement(Mi,{mxEvent:e.mxEvent,layout:null!==(t=e.layout)&&void 0!==t?t:Bt.P.Group},i.createElement(ys,e))};function ws(e){return i.createElement(Cs,(0,Wt.A)({title:(0,l._t)("common|unencrypted"),icon:As.Warning},e))}function Ss(e){return i.createElement(Cs,(0,Wt.A)({title:(0,l._t)("timeline|undecryptable_tooltip"),icon:As.DecryptionFailure},e))}var As=function(e){return e.Normal="normal",e.Warning="warning",e.DecryptionFailure="decryption_failure",e}(As||{});class Cs extends i.Component{constructor(e){super(e),this.state={hover:!1}}render(){const e=`mx_EventTile_e2eIcon mx_EventTile_e2eIcon_${this.props.icon}`;return i.createElement(zt.m,{label:this.props.title,isTriggerInteractive:!0},i.createElement("div",{className:e,tabIndex:0,"aria-label":(0,l._t)("timeline|e2e_state")}))}}function xs({messageState:e}){const t=!e||"sent"===e,n="not_sent"===e,s=Lt()({mx_EventTile_receiptSent:t,mx_EventTile_receiptSending:!t&&!n});let o;n&&(o=i.createElement(An.A,{notification:Sn.d.RED_EXCLAMATION}));let r=(0,l._t)("timeline|send_state_sending");return"encrypting"===e?r=(0,l._t)("timeline|send_state_encrypting"):t?r=(0,l._t)("timeline|send_state_sent"):n&&(r=(0,l._t)("timeline|send_state_failed")),i.createElement("div",{className:"mx_EventTile_msgOption"},i.createElement("div",{className:"mx_ReadReceiptGroup"},i.createElement(zt.m,{label:r,placement:"top-end"},i.createElement("div",{className:"mx_ReadReceiptGroup_button",role:"status"},i.createElement("span",{className:"mx_ReadReceiptGroup_container"},i.createElement("span",{className:s},o))))))}var Rs=n("./src/components/structures/SearchBox.tsx"),ks=n("./src/components/views/avatars/DecoratedRoomAvatar.tsx"),Is=n("./src/stores/room-list/algorithms/tag-sorting/RecentAlgorithm.ts"),Ts=n("./src/autocomplete/QueryMatcher.ts"),Ps=n("./src/components/views/elements/TruncatedList.tsx"),Ns=n("./src/utils/location/index.ts"),Ms=n("./src/stores/spaces/SpaceStore.ts");const Ds=["room","component"];function Os(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function Fs(e){for(var t=1;t2;if(!e.isSpaceRoom()&&t&&!n)return{details:t};const[i,s,...o]=Ms.Ay.instance.getKnownParents(e.roomId);if(s&&(null==o||!o.length)){var r,a;const t=null===(r=e.client.getRoom(i))||void 0===r?void 0:r.name,n=null===(a=e.client.getRoom(s))||void 0===a?void 0:a.name;return{details:(0,Jt.ki)([null!=t?t:"",null!=n?n:""]),ariaLabel:(0,l._t)("in_space1_and_space2",{space1Name:t,space2Name:n})}}if(i){var c,d;const t=null!==(c=null===(d=e.client.getRoom(i))||void 0===d?void 0:d.name)&&void 0!==c?c:"",n=o.length;return n>0?{details:(0,Jt.ki)([t,...o],1),ariaLabel:(0,l._t)("in_space_and_n_other_spaces",{spaceName:t,count:n})}:{details:t,ariaLabel:(0,l._t)("in_space",{spaceName:t})}}return{details:e.getCanonicalAlias()}}(t);return o?i.createElement(null!=n?n:"div",Fs(Fs({},s),{},{"aria-label":o.ariaLabel}),[o.details]):i.createElement(i.Fragment,null)}var Us=n("./src/KeyBindingsManager.ts");const Vs=({remaining:e,onClick:t})=>i.createElement(le.A,{onClick:t,className:"mx_OverflowTileView"},i.createElement("div",{className:"mx_OverflowTileView_icon"},i.createElement(xn.A,{height:"36px",width:"36px"})),i.createElement("div",{className:"mx_OverflowTileView_text"},(0,l._t)("common|and_n_others",{count:e}))),Bs=["m.relates_to"];function js(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function Ws(e){for(var t=1;t{const[r,a]=(0,i.useState)(Hs.CanSend),[c,d,m]=(0,qn.A9)();let u,h,p,g=!1;r===Hs.CanSend?(u="mx_ForwardList_canSend",e.maySendMessage()||(g=!0,h=(0,l._t)("forward|no_perms_title"))):r===Hs.Sending?(u="mx_ForwardList_sending",g=!0,h=(0,l._t)("forward|sending"),p=i.createElement("div",{className:"mx_ForwardList_sendIcon","aria-label":h})):r===Hs.Sent?(u="mx_ForwardList_sent",g=!0,h=(0,l._t)("forward|sent"),p=i.createElement("div",{className:"mx_ForwardList_sendIcon","aria-label":h})):(u="mx_ForwardList_sendFailed",g=!0,h=(0,l._t)("timeline|send_state_failed"),p=i.createElement(An.A,{notification:Sn.d.RED_EXCLAMATION}));const v=`mx_ForwardDialog_entry_${e.roomId}`;return i.createElement("div",{className:Lt()("mx_ForwardList_entry",{mx_ForwardList_entry_active:d}),"aria-labelledby":`${v}_name`,"aria-describedby":`${v}_send`,role:"listitem",ref:m,onFocus:c,id:v},i.createElement(le.A,{className:"mx_ForwardList_roomButton",onClick:t=>{S.A.dispatch({action:H.r.ViewRoom,room_id:e.roomId,metricsTrigger:"WebForwardShortcut",metricsViaKeyboard:"click"!==t.type}),o(!0)},title:(0,l._t)("forward|open_room"),placement:"top",tabIndex:d?0:-1},i.createElement(ks.A,{room:e,size:"32px",tooltipProps:{tabIndex:d?0:-1}}),i.createElement("span",{className:"mx_ForwardList_entry_name",id:`${v}_name`},e.name),i.createElement(Ls,{component:"span",className:"mx_ForwardList_entry_detail",room:e})),i.createElement(le.A,{kind:r===Hs.Failed?"danger_outline":"primary_outline",className:`mx_ForwardList_sendButton ${u}`,onClick:async()=>{a(Hs.Sending);try{await s.sendEvent(e.roomId,t,n),a(Hs.Sent)}catch{a(Hs.Failed)}},disabled:g,title:h,placement:"top",tabIndex:d?0:-1,id:`${v}_send`},i.createElement("div",{className:"mx_ForwardList_sendLabel"},(0,l._t)("forward|send_label")),p))},Ks=({matrixClient:e,event:t,permalinkCreator:n,onFinished:s})=>{const r=e.getSafeUserId(),[a,c]=(0,i.useState)({});(0,i.useEffect)(()=>{e.getProfileInfo(r).then(e=>c(e))},[e,r]);const{type:d,content:m}=(e=>{const t=e.getContent(),{"m.relates_to":n}=t,i=(0,g.A)(t,Bs),s=o.M_BEACON.matches(e.getType())?o.EventType.RoomMessage:e.getType();if((0,nn.wq)(e)&&(0,Ns.qy)(i)||o.M_BEACON.matches(e.getType())){const t=o.M_TIMESTAMP.findIn(i),n=(0,Ns.jm)(e);return{type:s,content:Ws(Ws({},i),o.ContentHelpers.makeLocationContent(void 0,n,t||Date.now(),void 0,o.LocationAssetType.Pin))}}return{type:s,content:i}})(t),u=new o.MatrixEvent({type:"m.room.message",sender:r,content:m,unsigned:{age:97},event_id:"$9999999999999999999999999999999999999999999",room_id:t.getRoomId(),origin_server_ts:t.getTs()});u.sender={name:a.displayname||r,rawDisplayName:a.displayname,userId:r,getAvatarUrl:(...e)=>(0,jt.r4)({avatarUrl:a.avatar_url},30,30,"crop"),getMxcAvatarUrl:()=>a.avatar_url};const[h,p]=(0,i.useState)(""),v=h.toLowerCase(),_=(0,Vt.ti)("layout"),f=(0,Vt.ti)("feature_dynamic_room_predecessors");let E=(0,i.useMemo)(()=>(0,Is.pP)(e.getVisibleRooms(f).filter(e=>e.getMyMembership()===X.O.Join&&!e.isSpaceRoom())),[e,f]);v&&(E=new Ts.A(E,{keys:["name"],funcs:[e=>(0,se.Bo)([e.getCanonicalAlias(),...e.getAltAliases()])],shouldMatchWordsOnly:!1}).match(v));const[y,b]=(0,i.useState)(20);function w(e,t){return i.createElement(Vs,{remaining:e,onClick:()=>b(t)})}return i.createElement(Q.A,{title:(0,l._t)("common|forward_message"),className:"mx_ForwardDialog",contentId:"mx_ForwardList",onFinished:s,fixedWidth:!1},i.createElement("h3",null,(0,l._t)("forward|message_preview_heading")),i.createElement("div",{className:Lt()("mx_ForwardDialog_preview",{mx_IRCLayout:_==Bt.P.IRC})},i.createElement(bs,{mxEvent:u,layout:_,permalinkCreator:n,as:"div",inhibitInteraction:!0})),i.createElement("hr",null),i.createElement(qn.Se,{handleUpDown:!0,handleInputFields:!0,onKeyDown:(e,t)=>{let n=!0;var i;(0,Us.zM)().getAccessibilityAction(e)===si.bY.Enter?null===(i=t.activeNode)||void 0===i||null===(i=i.querySelector(".mx_ForwardList_sendButton"))||void 0===i||i.click():n=!1;n&&(e.preventDefault(),e.stopPropagation())},scrollIntoView:{block:"center"}},({onKeyDownHandler:t})=>i.createElement("div",{className:"mx_ForwardList",id:"mx_ForwardList"},i.createElement(qn.ui.Consumer,null,e=>{var n;return i.createElement(Rs.A,{className:"mx_textinput_icon mx_textinput_search",placeholder:(0,l._t)("forward|filter_placeholder"),onSearch:t=>{p(t),setTimeout(()=>{const t=e.state.nodes[0];var n;t&&(e.dispatch({type:qn.ZU.SetFocus,payload:{node:t}}),null==t||null===(n=t.scrollIntoView)||void 0===n||n.call(t,{block:"nearest"}))})},autoFocus:!0,onKeyDown:t,"aria-activedescendant":null===(n=e.state.activeNode)||void 0===n?void 0:n.id,"aria-owns":"mx_ForwardDialog_resultsList"})}),i.createElement(es.A,{className:"mx_ForwardList_content"},E.length>0?i.createElement("div",{className:"mx_ForwardList_results"},i.createElement(Ps.A,{id:"mx_ForwardDialog_resultsList",className:"mx_ForwardList_resultsList",truncateAt:y,createOverflowElement:w,getChildren:(t,n)=>E.slice(t,n).map(t=>i.createElement(zs,{key:t.roomId,room:t,type:d,content:m,matrixClient:e,onFinished:s})),getChildCount:()=>E.length})):i.createElement("span",{className:"mx_ForwardList_noResults"},(0,l._t)("common|no_results"))))))};var Gs=n("./src/createRoom.ts"),Js=n("./src/Markdown.ts"),$s=n("./src/components/views/elements/StyledRadioButton.tsx"),qs=n("./src/components/views/elements/Field.tsx"),Ys=n("./src/components/views/elements/LabelledCheckbox.tsx");const Xs=["org.matrix.msc3215.room.moderation.moderated_by"];var Qs=function(e){return e.Disagreement="org.matrix.msc3215.abuse.nature.disagreement",e.Toxic="org.matrix.msc3215.abuse.nature.toxic",e.Illegal="org.matrix.msc3215.abuse.nature.illegal",e.Spam="org.matrix.msc3215.abuse.nature.spam",e.Other="org.matrix.msc3215.abuse.nature.other",e}(Qs||{}),Zs=function(e){return e.Admin="non-standard.abuse.nature.admin",e}(Zs||{});class eo extends i.Component{constructor(e){super(e),(0,w.A)(this,"moderation",void 0),(0,w.A)(this,"componentDidMount",async()=>{const e=v.J.safeGet().getCrypto(),t=this.props.mxEvent.getRoomId();e&&t&&this.setState({isRoomEncrypted:await e.isEncryptionEnabledInRoom(t)})}),(0,w.A)(this,"onIgnoreUserTooChanged",e=>{this.setState({ignoreUserToo:e})}),(0,w.A)(this,"onReasonChange",({target:{value:e}})=>{this.setState({reason:e})}),(0,w.A)(this,"onNatureChosen",e=>{this.setState({nature:e.currentTarget.value})}),(0,w.A)(this,"onCancel",()=>{this.props.onFinished(!1)}),(0,w.A)(this,"onSubmit",async()=>{let e=this.state.reason||"";if(e=e.trim(),this.moderation){if(!this.state.nature||(this.state.nature==Qs.Other||this.state.nature==Zs.Admin)&&!e)return void this.setState({err:(0,l._t)("report_content|missing_reason")})}else if(!e)return void this.setState({err:(0,l._t)("report_content|missing_reason")});this.setState({busy:!0,err:void 0});try{const e=v.J.safeGet(),t=this.props.mxEvent;if(this.moderation&&this.state.nature!==Zs.Admin){const n=this.state.nature,i=await(0,Gs.EP)(e,this.moderation.moderationBotUserId);if(!i)throw new l.P7("report_content|error_create_room_moderation_bot");await e.sendEvent(i,"org.matrix.msc3215.abuse.report",{event_id:t.getId(),room_id:t.getRoomId(),moderated_by_id:this.moderation.moderationRoomId,nature:n,reporter:e.getUserId(),comment:this.state.reason.trim()})}else await e.reportEvent(t.getRoomId(),t.getId(),-100,this.state.reason.trim());this.state.ignoreUserToo&&await e.setIgnoredUsers([...e.getIgnoredUsers(),t.getSender()]),this.props.onFinished(!0)}catch(e){s.vF.error(e),this.setState({busy:!1,err:e instanceof Error?e.message:String(e)})}});let t=null,n=null;if(D.A.getValue("feature_report_to_moderators")){const i=v.J.safeGet().getRoom(e.mxEvent.getRoomId());for(const e of Xs){const s=null==i?void 0:i.currentState.getStateEvents(e,e);if(!s)continue;if(Array.isArray(s))throw new TypeError(`getStateEvents(${e}, ${e}) should return at most one state event`);const o=s.event;if(!("content"in o)||"object"!=typeof o.content){console.debug("Moderation error","state event",e,"should have an object field `content`, got",o);continue}const r=o.content;"room_id"in r&&"string"==typeof r.room_id?"user_id"in r&&"string"==typeof r.user_id?(t=r.room_id,n=r.user_id):console.debug("Moderation error","state event",e,"should have a string field `content.user_id`, got",o):console.debug("Moderation error","state event",e,"should have a string field `content.room_id`, got",o)}t&&n&&(this.moderation={moderationRoomId:t,moderationBotUserId:n})}this.state={reason:"",busy:!1,err:void 0,nature:void 0,ignoreUserToo:!1,isRoomEncrypted:!1}}render(){var e;let t,n;this.state.err&&(t=i.createElement("div",{className:"error"},this.state.err)),this.state.busy&&(n=i.createElement("div",{className:"progress"},i.createElement(ce.A,null)));const s=i.createElement(Ys.A,{value:this.state.ignoreUserToo,label:(0,l._t)("report_content|ignore_user"),byline:(0,l._t)("report_content|hide_messages_from_user"),onChange:this.onIgnoreUserTooChanged,disabled:this.state.busy}),o=null===(e=c.Ay.getObject("report_event"))||void 0===e?void 0:e.get("admin_message_md","adminMessageMD");let r;if(o){const e=new Js.A(o).toHTML({externalLinks:!0});r=i.createElement("p",{dangerouslySetInnerHTML:{__html:e}})}if(this.moderation){const e=c.Ay.get("validated_server_config").hsName;let o;switch(this.state.nature){case Qs.Disagreement:o=(0,l._t)("report_content|nature_disagreement");break;case Qs.Toxic:o=(0,l._t)("report_content|nature_toxic");break;case Qs.Illegal:o=(0,l._t)("report_content|nature_illegal");break;case Qs.Spam:o=(0,l._t)("report_content|nature_spam");break;case Zs.Admin:o=this.state.isRoomEncrypted?(0,l._t)("report_content|nature_nonstandard_admin_encrypted",{homeserver:e}):(0,l._t)("report_content|nature_nonstandard_admin",{homeserver:e});break;case Qs.Other:o=(0,l._t)("report_content|nature_other");break;default:o=(0,l._t)("report_content|nature")}return i.createElement(Q.A,{className:"mx_ReportEventDialog",onFinished:this.props.onFinished,title:(0,l._t)("action|report_content"),contentId:"mx_ReportEventDialog"},i.createElement("div",null,i.createElement($s.A,{name:"nature",value:Qs.Disagreement,checked:this.state.nature==Qs.Disagreement,onChange:this.onNatureChosen},(0,l._t)("report_content|disagree")),i.createElement($s.A,{name:"nature",value:Qs.Toxic,checked:this.state.nature==Qs.Toxic,onChange:this.onNatureChosen},(0,l._t)("report_content|toxic_behaviour")),i.createElement($s.A,{name:"nature",value:Qs.Illegal,checked:this.state.nature==Qs.Illegal,onChange:this.onNatureChosen},(0,l._t)("report_content|illegal_content")),i.createElement($s.A,{name:"nature",value:Qs.Spam,checked:this.state.nature==Qs.Spam,onChange:this.onNatureChosen},(0,l._t)("report_content|spam_or_propaganda")),i.createElement($s.A,{name:"nature",value:Zs.Admin,checked:this.state.nature==Zs.Admin,onChange:this.onNatureChosen},(0,l._t)("report_content|report_entire_room")),i.createElement($s.A,{name:"nature",value:Qs.Other,checked:this.state.nature==Qs.Other,onChange:this.onNatureChosen},(0,l._t)("report_content|other_label")),i.createElement("p",null,o),i.createElement(qs.A,{className:"mx_ReportEventDialog_reason",element:"textarea",label:(0,l._t)("room_settings|permissions|ban_reason"),rows:5,onChange:this.onReasonChange,value:this.state.reason,disabled:this.state.busy}),n,t,s),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|send_report"),onPrimaryButtonClick:this.onSubmit,focus:!0,onCancel:this.onCancel,disabled:this.state.busy}))}return i.createElement(Q.A,{className:"mx_ReportEventDialog",onFinished:this.props.onFinished,title:(0,l._t)("report_content|report_content_to_homeserver"),contentId:"mx_ReportEventDialog"},i.createElement("div",{className:"mx_ReportEventDialog",id:"mx_ReportEventDialog"},i.createElement("p",null,(0,l._t)("report_content|description")),r,i.createElement(qs.A,{className:"mx_ReportEventDialog_reason",element:"textarea",label:(0,l._t)("room_settings|permissions|ban_reason"),rows:5,onChange:this.onReasonChange,value:this.state.reason,disabled:this.state.busy}),n,t,s),i.createElement(Nt.A,{primaryButton:(0,l._t)("action|send_report"),onPrimaryButtonClick:this.onSubmit,focus:!0,onCancel:this.onCancel,disabled:this.state.busy}))}}var to=n("./src/components/structures/TabbedView.tsx"),no=n("./src/components/views/elements/StyledCheckbox.tsx");const io=({room:e,children:t})=>{const[n,s]=(0,i.useState)(null==e?void 0:e.name);return(0,Fi.YK)(e,o.RoomEvent.Name,()=>{s(null==e?void 0:e.name)}),(0,i.useEffect)(()=>{s(null==e?void 0:e.name)},[e]),t?t(null!=n?n:""):i.createElement(i.Fragment,null,n||"")};let so=function(e){return e.Appearance="SPACE_PREFERENCE_APPEARANCE_TAB",e}({});var oo=n("./src/components/views/settings/tabs/SettingsTab.tsx"),ro=n("./src/components/views/settings/shared/SettingsSection.tsx"),ao=n("./src/components/views/settings/shared/SettingsSubsection.tsx");const lo=({space:e})=>{const t=(0,Vt.ti)("Spaces.showPeopleInSpace",e.roomId);return i.createElement(oo.A,null,i.createElement(ro.X,{heading:(0,l._t)("space|preferences|sections_section")},i.createElement(ao.P,null,i.createElement(no.A,{checked:!!t,onChange:n=>{D.A.setValue("Spaces.showPeopleInSpace",e.roomId,O.p.ROOM_ACCOUNT,!t)},description:(0,l._t)("space|preferences|show_people_in_space",{spaceName:e.name})},(0,l._t)("common|people")),i.createElement(ao.s,null))))},co=({space:e,onFinished:t})=>{const n=[new to.oz(so.Appearance,(0,l.AO)("common|appearance"),"mx_SpacePreferencesDialog_appearanceIcon",i.createElement(lo,{space:e}))];return i.createElement(Q.A,{className:"mx_SpacePreferencesDialog",hasCancel:!0,onFinished:t,title:(0,l._t)("common|preferences"),fixedWidth:!1},i.createElement("h4",null,i.createElement(io,{room:e})),i.createElement("div",{className:"mx_SettingsDialog_content"},i.createElement(to.Ay,{tabs:n,activeTabId:so.Appearance,onChange:()=>{}})))};var mo=n("./src/hooks/useDispatcher.ts"),uo=n("./src/components/views/spaces/SpaceBasicSettings.tsx"),ho=n("./src/editor/serialize.ts"),po=n("./src/utils/leave-behaviour.ts");const go=e=>{var t;const n=null==e||null===(t=e.currentState)||void 0===t||null===(t=t.getStateEvents(o.EventType.RoomTopic,""))||void 0===t?void 0:t.getContent();return n?o.ContentHelpers.parseTopicContent(n):null};function vo(e){const[t,n]=(0,i.useState)(go(e));return(0,Fi.YK)(null==e?void 0:e.currentState,o.RoomStateEvent.Events,t=>{t.getType()===o.EventType.RoomTopic&&n(go(e))}),(0,i.useEffect)(()=>{n(go(e))},[e]),t}const _o=({matrixClient:e,space:t})=>{var n,r,a;const[c,d]=(0,i.useState)(!1),[m,u]=(0,i.useState)(""),h=e.getUserId(),[p,g]=(0,i.useState)(null),v=t.currentState.maySendStateEvent(o.EventType.RoomAvatar,h),_=null!==p,[f,E]=(0,i.useState)(t.name),y=t.currentState.maySendStateEvent(o.EventType.RoomName,h),b=f!==t.name,w=null!==(n=null===(r=go(t))||void 0===r?void 0:r.text)&&void 0!==n?n:"",[S,A]=(0,i.useState)(w),C=t.currentState.maySendStateEvent(o.EventType.RoomTopic,h),x=S!==w;return i.createElement(oo.A,null,i.createElement(ro.X,{heading:(0,l._t)("common|general")},i.createElement("div",null,i.createElement("div",null,(0,l._t)("room_settings|general|description_space")),m&&i.createElement("div",{className:"mx_SpaceRoomView_errorText"},m),i.createElement(uo.A,{avatarUrl:null!==(a=(0,jt.ze)(t,80,80,"crop"))&&void 0!==a?a:void 0,avatarDisabled:c||!v,setAvatar:g,name:f,nameDisabled:c||!y,setName:E,topic:S,topicDisabled:c||!C,setTopic:A}),i.createElement(le.A,{onClick:()=>{g(null),E(t.name),A(w)},disabled:c||!(_||b||x),kind:"link"},(0,l._t)("action|cancel")),i.createElement(le.A,{onClick:async()=>{d(!0);const n=[];if(_&&(p?n.push((async()=>{const{content_uri:n}=await e.uploadContent(p);await e.sendStateEvent(t.roomId,o.EventType.RoomAvatar,{url:n},"")})()):n.push(e.sendStateEvent(t.roomId,o.EventType.RoomAvatar,{},""))),b&&n.push(e.setRoomName(t.roomId,f)),x){const i=(0,ho.Ro)(S,{forceHTML:!1});n.push(e.setRoomTopic(t.roomId,S,i))}const i=await Promise.allSettled(n);d(!1);const r=i.filter(e=>"rejected"===e.status);r.length>0&&(s.vF.error("Failed to save space settings: ",r),u((0,l._t)("room_settings|general|error_save_space_settings")))},disabled:c,kind:"primary"},c?(0,l._t)("common|saving"):(0,l._t)("room_settings|general|save"))),i.createElement(ao.P,{heading:(0,l._t)("room_settings|general|leave_space")},i.createElement(le.A,{kind:"danger",onClick:()=>{(0,po.e)(t)}},(0,l._t)("room_settings|general|leave_space")))))};var fo=n("./src/components/views/room_settings/AliasSettings.tsx"),Eo=n("./src/hooks/useStateToggle.ts"),yo=n("./src/components/views/elements/LabelledToggleSwitch.tsx"),bo=n("./src/hooks/useLocalEcho.ts"),wo=n("./src/components/views/settings/JoinRuleSettings.tsx"),So=n("./src/hooks/useRoomState.ts"),Ao=n("./src/components/views/settings/SettingsFieldset.tsx");const Co=({matrixClient:e,space:t,closeSettingsFn:n})=>{const[s,r]=(0,i.useState)(""),a=(0,Bi.e)(async()=>e.isVersionSupported("v1.4").then(t=>t||e.doesServerSupportUnstableFeature("org.matrix.msc3827.stable")),[e],!1),c=e.getUserId(),d=(0,So.U)(t,e=>e.getJoinRule()),[m,u]=(0,bo.W)(()=>{var e;return(null===(e=t.currentState.getStateEvents(o.EventType.RoomGuestAccess,""))||void 0===e||null===(e=e.getContent())||void 0===e?void 0:e.guest_access)===o.GuestAccess.CanJoin},n=>e.sendStateEvent(t.roomId,o.EventType.RoomGuestAccess,{guest_access:n?o.GuestAccess.CanJoin:o.GuestAccess.Forbidden},""),()=>r((0,l._t)("room_settings|visibility|error_update_guest_access"))),[h,p]=(0,bo.W)(()=>{var e;return(null===(e=t.currentState.getStateEvents(o.EventType.RoomHistoryVisibility,""))||void 0===e||null===(e=e.getContent())||void 0===e?void 0:e.history_visibility)||o.HistoryVisibility.Shared},n=>e.sendStateEvent(t.roomId,o.EventType.RoomHistoryVisibility,{history_visibility:n},""),()=>r((0,l._t)("room_settings|visibility|error_update_history_visibility"))),[g,v]=(0,Eo.X)(),_=t.currentState.maySendStateEvent(o.EventType.RoomGuestAccess,c),f=t.currentState.maySendStateEvent(o.EventType.RoomHistoryVisibility,c),E=t.currentState.mayClientSendStateEvent(o.EventType.RoomCanonicalAlias,e),y=t.currentState.getStateEvents(o.EventType.RoomCanonicalAlias,"");let b,w;return d===o.JoinRule.Public&&(b=i.createElement("div",null,i.createElement(le.A,{onClick:v,kind:"link",className:"mx_SettingsTab_showAdvanced","aria-expanded":g},g?(0,l._t)("action|hide_advanced"):(0,l._t)("action|show_advanced")),g&&i.createElement("div",{className:"mx_SettingsTab_toggleWithDescription"},i.createElement(yo.A,{value:m,onChange:u,disabled:!_,label:(0,l._t)("room_settings|visibility|guest_access_label")}),i.createElement("p",null,(0,l._t)("room_settings|visibility|guest_access_explainer"),i.createElement("br",null),(0,l._t)("room_settings|visibility|guest_access_explainer_public_space"))))),t.getJoinRule()===o.JoinRule.Public&&(w=i.createElement(ro.X,{heading:(0,l._t)("room_settings|visibility|alias_section")},i.createElement(fo.A,{roomId:t.roomId,canSetCanonicalAlias:E,canSetAliases:!0,canonicalAliasEvent:null!=y?y:void 0,hidePublishSetting:!a}))),i.createElement(oo.A,null,i.createElement(ro.X,{heading:(0,l._t)("room_settings|visibility|title")},s&&i.createElement("div",{className:"mx_SpaceRoomView_errorText"},s),i.createElement(Ao.A,{legend:(0,l._t)("room_settings|access|title"),description:(0,l._t)("room_settings|access|description_space",{spaceName:t.name})},i.createElement(wo.A,{room:t,onError:()=>r((0,l._t)("room_settings|visibility|error_failed_save")),closeSettingsFn:n}),b,i.createElement("div",{className:"mx_SettingsTab_toggleWithDescription"},i.createElement(yo.A,{value:h===o.HistoryVisibility.WorldReadable,onChange:e=>{p(e?o.HistoryVisibility.WorldReadable:o.HistoryVisibility.Shared)},disabled:!f,label:(0,l._t)("room_settings|visibility|history_visibility_anyone_space")}),i.createElement("p",null,(0,l._t)("room_settings|visibility|history_visibility_anyone_space_description"),i.createElement("br",null),i.createElement("strong",null,(0,l._t)("room_settings|visibility|history_visibility_anyone_space_recommendation"))))),w))};var xo=n("./src/components/views/settings/tabs/room/AdvancedRoomSettingsTab.tsx"),Ro=n("./src/components/views/settings/tabs/room/RolesRoomSettingsTab.tsx");let ko=function(e){return e.General="SPACE_GENERAL_TAB",e.Visibility="SPACE_VISIBILITY_TAB",e.Roles="SPACE_ROLES_TAB",e.Advanced="SPACE_ADVANCED_TAB",e}({});const Io=({matrixClient:e,space:t,onFinished:n})=>{(0,mo.F)(S.A,e=>{e.action===H.r.AfterLeaveRoom&&e.room_id===t.roomId&&n()});const s=(0,i.useMemo)(()=>[new to.oz(ko.General,(0,l.AO)("common|general"),"mx_SpaceSettingsDialog_generalIcon",i.createElement(_o,{matrixClient:e,space:t})),new to.oz(ko.Visibility,(0,l.AO)("room_settings|visibility|title"),"mx_SpaceSettingsDialog_visibilityIcon",i.createElement(Co,{matrixClient:e,space:t,closeSettingsFn:n})),new to.oz(ko.Roles,(0,l.AO)("room_settings|permissions|title"),"mx_RoomSettingsDialog_rolesIcon",i.createElement(Ro.A,{room:t})),D.A.getValue(gt.f.AdvancedSettings)?new to.oz(ko.Advanced,(0,l.AO)("common|advanced"),"mx_RoomSettingsDialog_warningIcon",i.createElement(xo.A,{room:t,closeSettingsFn:n})):null].filter(Boolean),[e,t,n]),[o,r]=i.useState(ko.General);return i.createElement(Q.A,{title:(0,l._t)("space_settings|title",{spaceName:t.name||(0,l._t)("common|unnamed_space")}),className:"mx_SpaceSettingsDialog",contentId:"mx_SpaceSettingsDialog",onFinished:n,fixedWidth:!1},i.createElement("div",{className:"mx_SpaceSettingsDialog_content",id:"mx_SpaceSettingsDialog"},i.createElement(to.Ay,{tabs:s,activeTabId:o,onChange:r})))};var To,Po=n("./src/components/views/dialogs/InviteDialog.tsx"),No=n("./src/components/views/dialogs/AddExistingToSpaceDialog.tsx"),Mo=n("./src/utils/space.tsx"),Do=n("./src/contexts/SDKContext.ts");class Oo{constructor(){(0,w.A)(this,"isRegistered",!1),(0,w.A)(this,"matrixClient",void 0),(0,w.A)(this,"onDispatch",e=>{if(this.matrixClient)switch(e.action){case"open_room_settings":R.Ay.createDialog(Ut.A,{roomId:e.room_id||Do.M.instance.roomViewStore.getRoomId(),initialTabId:e.initial_tab_id},void 0,!1,!0);break;case H.r.OpenForwardDialog:R.Ay.createDialog(Ks,{matrixClient:this.matrixClient,event:e.event,permalinkCreator:e.permalinkCreator});break;case H.r.OpenReportEventDialog:R.Ay.createDialog(eo,{mxEvent:e.event},"mx_Dialog_reportEvent");break;case H.r.OpenSpacePreferences:R.Ay.createDialog(co,{space:e.space},void 0,!1,!0);break;case H.r.OpenSpaceSettings:R.Ay.createDialog(Io,{matrixClient:e.space.client,space:e.space},void 0,!1,!0);break;case H.r.OpenInviteDialog:R.Ay.createDialog(Po.A,{kind:e.kind,call:e.call,roomId:e.roomId},Lt()("mx_InviteDialog_flexWrapper",e.className),!1,!0).finished.then(t=>{var n;null===(n=e.onFinishedCallback)||void 0===n||n.call(e,t)});break;case H.r.OpenAddToExistingSpaceDialog:{const t=e.space,{finished:n}=R.Ay.createDialog(No.Ay,{onCreateRoomClick:e=>{(0,Mo.PT)(t),ri.A.trackInteraction("WebAddExistingToSpaceDialogCreateRoomButton",e)},onAddSubspaceClick:()=>(0,Mo.K1)(t),space:t},"mx_AddExistingToSpaceDialog_wrapper");n.then(([e])=>{e&&Do.M.instance.roomViewStore.getRoomId()===t.roomId&&S.A.fire(H.r.UpdateSpaceHierarchy)});break}}})}prepare(e){this.matrixClient=e,this.isRegistered||(S.A.register(this.onDispatch),this.isRegistered=!0)}}To=Oo,(0,w.A)(Oo,"instance",new To);var Fo=n("./src/utils/ErrorUtils.tsx"),Lo=n("./node_modules/matrix-js-sdk/src/oidc/authorize.ts"),Uo=n("./node_modules/matrix-js-sdk/src/oidc/error.ts");let Vo=function(e){return e.InvalidQueryParameters="Invalid query parameters for OIDC native login. `code` and `state` are required.",e}({});const Bo=async(e,t,n,i,s)=>{var o;const r=a.A.get().getOidcCallbackUrl().href,l=(0,B.US)(10),c=s?"create":void 0,d=await(0,Lo.R2)({metadata:e,redirectUri:r,clientId:t,homeserverUrl:n,identityServerUrl:i,nonce:l,prompt:c,urlState:null===(o=a.A.get())||void 0===o?void 0:o.getOidcClientState()});window.location.href=d},jo=async e=>{const{code:t,state:n}=(e=>{const t=e.code,n=e.state;if(!t||"string"!=typeof t||!n||"string"!=typeof n)throw new Error(Vo.InvalidQueryParameters);return{code:t,state:n}})(e),{homeserverUrl:i,tokenResponse:s,idTokenClaims:o,identityServerUrl:r,oidcClientSettings:a}=await(0,Lo.SU)(t,n);return{homeserverUrl:i,identityServerUrl:r,accessToken:s.access_token,refreshToken:s.refresh_token,idToken:s.id_token,clientId:a.clientId,issuer:a.issuer,idTokenClaims:o}};var Wo=n("./src/utils/oidc/persistOidcSettings.ts"),Ho=n("./node_modules/matrix-js-sdk/src/utils/decryptAESSecretStorageItem.ts"),zo=n("./node_modules/matrix-js-sdk/src/utils/encryptAESSecretStorageItem.ts");const Ko="mx_access_token",Go="mx_refresh_token",Jo="access_token",$o="refresh_token",qo="mx_has_access_token",Yo="mx_has_refresh_token";async function Xo(e){const t=new Uint8Array(e.length);for(let n=0;n{if(e.action===H.r.TriggerLogout)Tr();else if(e.action===H.r.OverwriteLogin){const t=e;Nr(!1),wr(t.credentials,!0,!0).catch(e=>{s.vF.warn("Failed to overwrite login",e)})}});let ar=!1;function lr(){if(ar)throw new cr("session lock has been released")}class cr extends Error{}async function dr(e={}){try{let t=e.enableGuest||!1;const n=e.guestHsUrl,i=e.guestIsUrl,r=e.fragmentQueryParams||{},a=e.defaultDeviceDisplayName;if(t&&!n&&(s.vF.warn("Cannot enable guest access: can't determine HS URL to use"),t=!1),t&&n&&r.guest_user_id&&r.guest_access_token)return s.vF.log("Using guest access credentials"),await wr({userId:r.guest_user_id,accessToken:r.guest_access_token,homeserverUrl:n,identityServerUrl:i,guest:!0},!0,!1),!0;return!!await Er({ignoreGuest:Boolean(e.ignoreGuest)})||!ar&&(!(!t||!n)&&function(e,t,n){s.vF.log(`Doing guest login on ${e}`);const i=(0,o.createClient)({baseUrl:e});return i.registerGuest({body:{initial_device_display_name:n}}).then(n=>(s.vF.log(`Registered as guest: ${n.user_id}`),wr({userId:n.user_id,deviceId:n.device_id,accessToken:n.access_token,homeserverUrl:e,identityServerUrl:t,guest:!0},!0,!0).then(()=>!0)),e=>(s.vF.error("Failed to register as guest",e),!1))}(n,i,a))}catch(n){var t;return(null===(t=e.abortSignal)||void 0===t||!t.aborted)&&(!(n instanceof Sr)&&(!ar&&async function(e,t){s.vF.error("Unable to load session",e);const n=R.Ay.createDialog(Mt,{error:e}),[i]=await n.finished;if(i)return await Pr(),!1;return dr(t)}(n,e)))}}async function mr(){const{hsUrl:e,userId:t,hasAccessToken:n,isGuest:i}=await _r();return e&&t&&n?[t,!!i]:[null,null]}async function ur(e,t,n){return e.code&&e.state?(console.log("We have OIDC params - attempting OIDC login"),async function(e){try{const{accessToken:t,refreshToken:n,homeserverUrl:i,identityServerUrl:r,idToken:a,clientId:l,issuer:c}=await jo(e),{user_id:d,device_id:m,is_guest:u}=await async function(e,t,n){try{const i=(0,o.createClient)({baseUrl:t,accessToken:e,idBaseUrl:n});return await i.whoami()}catch(e){throw s.vF.error("Failed to retrieve userId using accessToken",e),new Error("Failed to retrieve userId using accessToken")}}(t,i,r),h={accessToken:t,refreshToken:n,homeserverUrl:i,identityServerUrl:r,deviceId:m,userId:d,isGuest:u};return s.vF.debug("Logged in via OIDC native flow"),await pr(h),(0,Wo.UF)(l,c,a),!0}catch(e){return s.vF.error("Failed to login via OIDC",e),gr((e=>{switch(e.message){case Uo.u.MissingOrInvalidStoredState:return(0,l._t)("auth|oidc|missing_or_invalid_stored_state");case Vo.InvalidQueryParameters:case Uo.u.CodeExchangeFailed:case Uo.u.InvalidBearerTokenResponse:case Uo.u.InvalidIdToken:default:return(0,l._t)("auth|oidc|generic_auth_error")}})(e)),!1}}(e)):function(e,t,n){var i;if(!e.loginToken)return Promise.resolve(!1);console.log("We have token login params - attempting token login");const r=localStorage.getItem(wt.FL),c=null!==(i=localStorage.getItem(wt.U7))&&void 0!==i?i:void 0;if(!r)return s.vF.warn("Cannot log in with token: can't determine HS URL to use"),gr((0,l._t)("auth|sso_failed_missing_storage")),Promise.resolve(!1);return P(r,c,"m.login.token",{token:e.loginToken,initial_device_display_name:t}).then(async function(e){return s.vF.log("Logged in with token"),await pr(e),!0}).catch(e=>{const t=()=>{var e;const t=(0,o.createClient)({baseUrl:r,idBaseUrl:c}),i=localStorage.getItem(wt.ot)||void 0;null===(e=a.A.get())||void 0===e||e.startSingleSignOn(t,"sso",n,i,o.SSOAction.LOGIN)};return gr((0,Fo.Y0)(e,{hsUrl:r,hsName:r}),t),s.vF.error("Failed to log in with login token:",e),!1})}(e,t,n)}async function hr(e){var t,n;const i=e.userId,o=e.deviceId;let r=null!==(t=await(null===(n=a.A.get())||void 0===n?void 0:n.getPickleKey(i,null!=o?o:"")))&&void 0!==t?t:void 0;var l,c;r?s.vF.log(`Pickle key already exists for ${e.userId}|${e.deviceId} do not create a new one`):(r=i&&o&&null!==(l=await(null===(c=a.A.get())||void 0===c?void 0:c.createPickleKey(i,o)))&&void 0!==l?l:void 0,r?s.vF.log(`Created pickle key for ${e.userId}|${e.deviceId}`):s.vF.log("Pickle key not created"));return r}async function pr(e){await Pr(),e.pickleKey=await hr(e),await Ar(e),sessionStorage.setItem("mx_fresh_login",String(!0))}function gr(e,t){const{finished:n}=R.Ay.createDialog(It.A,{title:(0,l._t)("auth|oidc|error_title"),description:e,button:(0,l._t)("action|try_again")});n.then(([e])=>{e&&(null==t||t())})}async function vr(e){let t;try{t=await M.Gt("account",e)}catch(t){s.vF.error(`StorageManager.idbLoad failed for account:${e}`,t)}var n;if(!t&&(t=null!==(n=localStorage.getItem(e))&&void 0!==n?n:void 0,t))try{await M.x7("account",e,t),localStorage.removeItem(e)}catch(t){s.vF.error(`migration of token ${e} to IndexedDB failed`,t)}return t}async function _r(){var e,t,n,i;const s=null!==(e=localStorage.getItem(or))&&void 0!==e?e:void 0,o=null!==(t=localStorage.getItem(rr))&&void 0!==t?t:void 0,r=await vr(Ko),a=await vr(Go),l="true"===localStorage.getItem(qo)||!!r,c="true"===localStorage.getItem(Yo)||!!a,d=null!==(n=localStorage.getItem("mx_user_id"))&&void 0!==n?n:void 0,m=null!==(i=localStorage.getItem("mx_device_id"))&&void 0!==i?i:void 0;let u;return u=null!==localStorage.getItem("mx_is_guest")?"true"===localStorage.getItem("mx_is_guest"):"true"===localStorage.getItem("matrix-is-guest"),{hsUrl:s,isUrl:o,hasAccessToken:l,accessToken:r,refreshToken:a,hasRefreshToken:c,userId:d,deviceId:m,isGuest:u}}async function fr(){if(await async function(){const{finished:e}=R.Ay.createDialog(Dt),[t]=await e;return!!t}())throw await Pr(),new Sr("Aborting login in progress because of storage inconsistency")}async function Er(e){const t=null==e?void 0:e.ignoreGuest;if(!localStorage)return!1;const{hsUrl:n,isUrl:i,hasAccessToken:o,accessToken:r,refreshToken:l,userId:c,deviceId:d,isGuest:m}=await _r();if(o&&!r&&(s.vF.warn("restoreSessionFromStorage: storage indicates we should have an access token, but we do not. Displaying StorageEvictedDialog"),await fr()),r&&c&&n){var u,h;if(t&&m)return s.vF.log("Ignoring stored guest account: "+c),!1;const e=null!==(u=await(null===(h=a.A.get())||void 0===h?void 0:h.getPickleKey(c,null!=d?d:"")))&&void 0!==u?u:void 0;e?s.vF.log(`Got pickle key for ${c}|${d}`):s.vF.log(`No pickle key available for ${c}|${d}`);const o=await Qo(e,r,Jo),p=l&&await Qo(e,l,$o),g="true"===sessionStorage.getItem("mx_fresh_login");return sessionStorage.removeItem("mx_fresh_login"),s.vF.log(`Restoring session for ${c}`),await wr({userId:c,deviceId:d,accessToken:o,refreshToken:p,homeserverUrl:n,identityServerUrl:i,guest:m,pickleKey:null!=e?e:void 0,freshLogin:g},!1,g),!0}return s.vF.log("No previous session found."),!1}async function yr(e){return e.freshLogin=!0,Nr(),e.pickleKey=await hr(e),wr(e,!0,!0)}async function br(e){const t=v.J.safeGet().getUserId(),n=v.J.safeGet().getDeviceId();Nr(),localStorage.removeItem("mx_soft_logout"),Cr=!1;const i=e.userId!==t||e.deviceId!==n;var o,r;(i&&s.vF.warn("Clearing all data: Old session belongs to a different user/session"),e.pickleKey||void 0===e.deviceId)||(s.vF.info("Lifecycle#hydrateSession: Pickle key not provided - trying to get one"),e.pickleKey=null!==(o=await(null===(r=a.A.get())||void 0===r?void 0:r.getPickleKey(e.userId,e.deviceId)))&&void 0!==o?o:void 0);return wr(e,i,!1)}async function wr(e,t,n){lr(),e.guest=Boolean(e.guest);const i=kr();s.vF.log("setLoggedIn: mxid: "+e.userId+" deviceId: "+e.deviceId+" guest: "+e.guest+" hs: "+e.homeserverUrl+" softLogout: "+i," freshLogin: "+e.freshLogin),t&&await Pr();const r=await N.zV();r.dataInLocalStorage&&r.cryptoInited&&!r.dataInCryptoStore&&(s.vF.warn("doSetLoggedIn: StorageManager consistency check failed; displaying StorageEvictedDialog."),await fr());const l=await async function(e){if(!e.refreshToken)return;const t=(0,Wo.HB)();if(t)try{const n=(0,Wo.rW)(),i=(0,Wo.ag)(),s=a.A.get().getOidcCallbackUrl().href,o=e.deviceId;if(!o)throw new Error("Expected deviceId in user credentials.");const r=new nr(t,n,s,o,i,e.userId);return await r.oidcClientReady,r}catch(e){s.vF.error("Failed to initialise OIDC token refresher",e)}}(e);lr(),v.J.replaceUsingCreds(e,null==l?void 0:l.doRefreshAccessToken.bind(l));const c=v.J.safeGet();if((0,Ot.Tm)(e.userId),j.Vo.instance.isEnabled()&&j.Vo.instance.startListeningToSettingsChanges(c),localStorage)try{await Ar(e),sessionStorage.removeItem("mx_fresh_login")}catch(e){s.vF.warn("Error using local storage: can't persist session!",e)}else s.vF.warn("No local storage available: can't persist session!");lr(),S.A.fire(H.r.OnLoggedIn);const d={};e.pickleKey&&(43===e.pickleKey.length?d.rustCryptoStoreKey=(0,o.decodeBase64)(e.pickleKey):d.rustCryptoStorePassword=e.pickleKey);try{await Ir(c,!i,d)}finally{var m;null===(m=d.rustCryptoStoreKey)||void 0===m||m.fill(0)}return D.A.runMigrations(n),n&&!e.guest&&localStorage.setItem("must_verify_device","true"),c}class Sr extends Error{}async function Ar(e){var t;localStorage.setItem(or,e.homeserverUrl),e.identityServerUrl&&localStorage.setItem(rr,e.identityServerUrl),localStorage.setItem("mx_user_id",e.userId),localStorage.setItem("mx_is_guest",JSON.stringify(e.guest)),await er(e.accessToken,e.pickleKey),await tr(e.refreshToken,e.pickleKey),e.pickleKey?localStorage.setItem("mx_has_pickle_key",String(!0)):"true"===localStorage.getItem("mx_has_pickle_key")&&s.vF.error("Expected a pickle key, but none provided. Encryption may not work."),e.deviceId&&localStorage.setItem("mx_device_id",e.deviceId),null===(t=_.r.instance.extensions.cryptoSetup)||void 0===t||t.persistCredentials(e),s.vF.log(`Session persisted for ${e.userId}`)}let Cr=!1;function xr(e){var t,n;const i=v.J.get();i&&(j.Vo.instance.logout(),i.isGuest()?setTimeout(Tr,0):(Cr=!0,null===(t=a.A.get())||void 0===t||t.destroyPickleKey(i.getSafeUserId(),null!==(n=i.getDeviceId())&&void 0!==n?n:""),async function(e,t){if(null!=t&&t.isUserAuthenticatedWithOidc){var n,i;const s=null!==(n=e.getAccessToken())&&void 0!==n?n:void 0,o=null!==(i=e.getRefreshToken())&&void 0!==i?i:void 0;await t.revokeTokens(s,o)}else await e.logout(!0)}(i,e).then(Tr,e=>{s.vF.warn("Failed to call logout API: token will not be invalidated",e),Tr()})))}function Rr(){v.J.get()&&(localStorage.setItem("mx_soft_logout","true"),s.vF.log("Soft logout initiated"),Cr=!0,S.A.dispatch({action:"on_client_not_viable"}),Nr(!1))}function kr(){return"true"===localStorage.getItem("mx_soft_logout")}async function Ir(e,t,n){s.vF.log("Lifecycle: Starting MatrixClient"),S.A.dispatch({action:"will_start_client"},!0),Do.M.instance.typingStore.reset(),F.A.sharedInstance().reset(),Oo.instance.prepare(e),y.default.start(),b.A.sharedInstance().start(),x.A.makeShared(e).start(),L.J.sharedInstance().startWatching(),k.A.instance.start(),Rt.Ay.instance.start(),(0,ir.o7)(),U.u.sharedInstance().start(),t?(await f.A.init(),await v.J.start(n)):(s.vF.warn("Caller requested only auxiliary services be started"),await v.J.assign(n)),lr(),yt.sharedInstance().start(e),D.A.getValue("lowBandwidth")||C.start(),bt.k.getInstance().start(),S.A.dispatch({action:"client_started"}),kr()&&Rr()}async function Tr(){var e,t;S.A.fire(H.r.OnLoggedOut,!0),Nr(),await Pr({deleteEverything:!0}),null===(e=kt.A.onLoggedOutAndStorageCleared)||void 0===e||e.call(kt.A),await(null===(t=a.A.get())||void 0===t?void 0:t.clearStorage()),D.A.reset(),c.Ay.get().logout_redirect_url&&(s.vF.log("Redirecting to external provider to finish logout"),window.setTimeout(()=>{window.location.href=c.Ay.get().logout_redirect_url},100)),Cr=!1}async function Pr(e){var t;if(s.vF.info(`Clearing storage, deleteEverything=${null==e?void 0:e.deleteEverything}`),window.localStorage){const t=D.A.getValueAt(O.p.DEVICE,"language",null,!0,!0),n=xt.instance.getWireInvites(),i=window.localStorage.getItem("mx_registration_time");window.localStorage.clear();try{await M.pr("account")}catch(e){s.vF.error("idbClear failed for account",e)}null!=e&&e.deleteEverything||(t&&await D.A.setValue("language",null,O.p.DEVICE,t),n.forEach(e=>{let{roomId:t}=e,n=(0,g.A)(e,sr);xt.instance.storeInvite(t,n)}),i&&window.localStorage.setItem("mx_registration_time",i))}null===(t=window.sessionStorage)||void 0===t||t.clear();const n=(0,E.A)({baseUrl:""});await f.A.deleteEventIndex(),await n.clearStores()}function Nr(e=!0){var t;y.default.stop(),Rt.Ay.instance.stop(),b.A.sharedInstance().stop(),Do.M.instance.typingStore.reset(),C.stop(),k.A.instance.stop(),L.J.sharedInstance().stopWatching(),U.u.sharedInstance().stop(),yt.sharedInstance().stop(),null===(t=x.A.shared())||void 0===t||t.stop(),f.A.stop();const n=v.J.get();n&&(n.stopClient(),n.removeAllListeners(),e&&(v.J.unset(),f.A.unset(),n.store.destroy()))}window.mxLoginWithAccessToken=async(e,t)=>{const n=(0,o.createClient)({baseUrl:e,accessToken:t}),{user_id:i,device_id:s}=await n.whoami();await wr({homeserverUrl:e,accessToken:t,userId:i,deviceId:s},!0,!1)};var Mr=n("./src/utils/SnakedObject.ts"),Dr=n("./node_modules/@vector-im/compound-web/dist/components/Tooltip/TooltipProvider.js"),Or=(n("./node_modules/what-input/dist/what-input.js"),n("./node_modules/sanitize-html/index.js")),Fr=n.n(Or),Lr=n("./src/RoomInvite.tsx"),Ur=n("./src/Rooms.ts"),Vr=n("./node_modules/matrix-js-sdk/src/version-support.ts"),Br=n("./src/stores/AsyncStore.ts");const jr={deferredAction:null};class Wr extends Br.y{constructor(){super(S.A,jr)}onDispatch(e){switch(e.action){case H.r.DoAfterSyncPrepared:this.updateState({deferredAction:e.deferred_action});break;case"cancel_after_sync_prepared":this.updateState({deferredAction:null});break;case"MatrixActions.sync":{if(e.state===o.SyncState.Syncing&&e.prevState!==o.SyncState.Syncing&&async function(){try{const e=v.J.get();if(!e)return;for(const t of Vr.Hr)if(await e.isVersionSupported(t))return;const t="LEGACY_SERVER";F.A.sharedInstance().addOrReplaceToast({key:t,title:(0,l._t)("unsupported_server_title"),props:{description:(0,l._t)("unsupported_server_description",{version:Vr.eD,brand:c.Ay.get().brand}),primaryLabel:(0,l._t)("action|ok"),onPrimaryClick:()=>{F.A.sharedInstance().dismissToast(t)}},component:W.A,priority:98})}catch(e){s.vF.warn("Failed to check server versions",e)}}(),"PREPARED"!==e.state)break;if(!this.state.deferredAction)break;const t=Object.assign({},this.state.deferredAction);this.updateState({deferredAction:null}),S.A.dispatch(t);break}case"on_client_not_viable":case H.r.OnLoggedOut:this.reset()}}}let Hr=null;Hr||(Hr=new Wr);var zr,Kr=n("./node_modules/matrix-js-sdk/src/utils.ts"),Gr=n("./node_modules/uuid/dist/v4.js"),Jr=n("./src/rageshake/submit-rageshake.ts"),$r=n("./src/stores/AsyncStoreWithClient.ts");function qr(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function Yr(e){for(var t=1;t6e4?(await this.updateState({lastRageshakeTime:i}),s.vF.info(`Sending sender-side autorageshake for event ${t.event_id}/session ${t.session_id}`),await(0,Jr.Ay)(c.Ay.get().bug_report_endpoint_url,{userText:`Auto-reporting decryption error (sender)\nRecipient rageshake: ${n}`,sendLogs:!0,labels:["Z-UISI","web","uisi-sender"],customApp:c.Ay.get().uisi_autorageshake_app,customFields:{recipient_rageshake:n,auto_uisi:JSON.stringify(t)}})):s.vF.info(`Not sending sender-side autorageshake for event ${t.event_id}/session ${t.session_id}: last rageshake was too recent`)}async onReportKeyBackupNotEnabled(){D.A.getValue("automaticKeyBackNotEnabledReporting")&&await(0,Jr.Ay)(c.Ay.get().bug_report_endpoint_url,{userText:"Auto-reporting key backup not enabled",sendLogs:!0,labels:["web",H.r.ReportKeyBackupNotEnabled]})}}zr=Qr,(0,w.A)(Qr,"internalInstance",(()=>{const e=new zr;return e.start(),e})()),window.mxAutoRageshakeStore=Qr.instance;var Zr=n("./src/PageTypes.ts"),ea=n("./src/settings/controllers/ThemeController.ts");const ta=/^[a-z0-9=_\-./]+$/;var na=n("./src/settings/watchers/ThemeWatcher.ts"),ia=n("./src/settings/watchers/FontWatcher.ts"),sa=n("./src/RoomAliasCache.ts"),oa=n("./src/MediaDeviceHandler.ts");const ra=({vertical:e,reverse:t,id:n,passRef:s})=>{const o=["mx_ResizeHandle"];return e?o.push("mx_ResizeHandle--vertical"):o.push("mx_ResizeHandle--horizontal"),t&&o.push("mx_ResizeHandle_reverse"),i.createElement("div",{ref:s,className:o.join(" "),"data-id":n},i.createElement("div",null))};class aa{constructor(e,t,n,i){(0,w.A)(this,"domNode",void 0),(0,w.A)(this,"id",void 0),(0,w.A)(this,"reverse",void 0),this.resizer=t,this.sizer=n,this.container=i,this.reverse=t.isReverseResizeHandle(e),this.domNode=i||(this.reverse?e.nextElementSibling:e.previousElementSibling),this.id=e.getAttribute("data-id")}copyWith(e,t,n,i){return new(0,this.constructor)(e,t,n,i)}advance(e){let t=this.reverse?this.domNode.previousElementSibling:this.domNode.nextElementSibling;const n=e!==this.reverse;do{var i,s;if(n)t=null===(i=t)||void 0===i?void 0:i.nextElementSibling;else t=null===(s=t)||void 0===s?void 0:s.previousElementSibling}while(t&&!this.resizer.isResizeHandle(t));if(t){const e=this.copyWith(t,this.resizer,this.sizer);return e.reverse=this.reverse,e}}next(){return this.advance(!0)}previous(){return this.advance(!1)}size(){return this.sizer.getItemSize(this.domNode)}offset(){return this.sizer.getItemOffset(this.domNode)}start(){this.sizer.start(this.domNode)}finish(){this.sizer.finish(this.domNode)}getSize(){return this.sizer.getDesiredItemSize(this.domNode)}setRawSize(e){this.sizer.setItemSize(this.domNode,e)}setSize(e){var t,n;this.setRawSize(`${Math.round(e)}px`),null===(t=this.resizer.config)||void 0===t||null===(n=t.onResized)||void 0===n||n.call(t,e,this.id,this.domNode)}clearSize(){var e,t;this.sizer.clearItemSize(this.domNode),null===(e=this.resizer.config)||void 0===e||null===(t=e.onResized)||void 0===t||t.call(e,null,this.id,this.domNode)}first(){var e;if(null===(e=this.domNode.parentElement)||void 0===e||!e.children)return;const t=Array.from(this.domNode.parentElement.children).find(e=>this.resizer.isResizeHandle(e));return t?this.copyWith(t,this.resizer,this.sizer):void 0}last(){var e;if(null===(e=this.domNode.parentElement)||void 0===e||!e.children)return;const t=Array.from(this.domNode.parentElement.children).reverse().find(e=>this.resizer.isResizeHandle(e));return t?this.copyWith(t,this.resizer,this.sizer):void 0}}class la{constructor(e,t,n){this.container=e,this.vertical=t,this.reverse=n}getItemOffset(e){const t=(this.vertical?e.offsetTop:e.offsetLeft)-this.getOffset();return this.reverse?this.getTotalSize()-(t+this.getItemSize(e)):t}getItemSize(e){return this.vertical?e.offsetHeight:e.offsetWidth}getTotalSize(){return this.vertical?this.container.offsetHeight:this.container.offsetWidth}getOffset(){return this.vertical?this.container.offsetTop:this.container.offsetLeft}getPageOffset(){let e=this.container,t=0;for(;e;){t+=this.vertical?e.offsetTop:e.offsetLeft,e=e.offsetParent}return t}getDesiredItemSize(e){return this.vertical?e.style.height:e.style.width}setItemSize(e,t){this.vertical?e.style.height=t:e.style.width=t}clearItemSize(e){this.vertical?e.style.removeProperty("height"):e.style.removeProperty("width")}start(e){}finish(e){}offsetFromEvent(e){const t=this.vertical?e.pageY:e.pageX;return this.reverse?this.getPageOffset()+this.getTotalSize()-t:t-this.getPageOffset()}}class ca{static createSizer(e,t,n){return new la(e,t,n)}constructor(e){(0,w.A)(this,"beforeOffset",void 0),this.item=e,this.beforeOffset=e.offset()}get size(){return this.item.getSize()}set size(e){this.item.setRawSize(e)}resize(e){this.item.setSize(e)}resizeFromContainerOffset(e){this.resize(e-this.beforeOffset)}start(){this.item.start()}finish(){this.item.finish()}}class da extends ca{static createItem(e,t,n){return new aa(e,t,n)}}class ma extends aa{notifyCollapsed(e){var t,n;null===(t=this.resizer.config)||void 0===t||null===(n=t.onCollapsed)||void 0===n||n.call(t,e,this.id,this.domNode)}get isCollapsed(){var e,t,n;return null!==(e=null===(t=this.resizer.config)||void 0===t||null===(n=t.isItemCollapsed)||void 0===n?void 0:n.call(t,this.domNode))&&void 0!==e&&e}}class ua extends ca{static createItem(e,t,n,i){return new ma(e,t,n,i)}constructor(e){var t;super(e),(0,w.A)(this,"toggleSize",void 0),(0,w.A)(this,"isCollapsed",void 0),this.toggleSize=null===(t=e.resizer)||void 0===t||null===(t=t.config)||void 0===t?void 0:t.toggleSize,this.isCollapsed=e.isCollapsed}resize(e){const t=!!this.toggleSize&&e{var t,n,i;if(0!==e.button)return;const s=e.target&&e.target.closest(`.${this.classNames.handle}`),o=null==this||null===(t=this.config)||void 0===t?void 0:t.handler;if(!s||!o&&s.parentElement!==this.container||o&&s!==o)return;var r;(e.preventDefault(),this.classNames.resizing)&&(null===(r=this.container)||void 0===r||null===(r=r.classList)||void 0===r||r.add(this.classNames.resizing));null===(n=this.config)||void 0===n||null===(i=n.onResizeStart)||void 0===i||i.call(n);const{sizer:a,distributor:l}=this.createSizerAndDistributor(s);l.start();const c=e=>{const t=a.offsetFromEvent(e);l.resizeFromContainerOffset(t)},d=document.body,m=()=>{var e,t,n;this.classNames.resizing&&(null===(n=this.container)||void 0===n||null===(n=n.classList)||void 0===n||n.remove(this.classNames.resizing));l.finish(),null===(e=this.config)||void 0===e||null===(t=e.onResizeStop)||void 0===t||t.call(e),d.removeEventListener("mouseup",m,!1),document.removeEventListener("mouseleave",m,!1),d.removeEventListener("mousemove",c,!1)};d.addEventListener("mouseup",m,!1),document.addEventListener("mouseleave",m,!1),d.addEventListener("mousemove",c,!1)}),(0,w.A)(this,"onResize",(0,Kt.throttle)(()=>{const e=this.getDistributors();e.forEach(e=>e.start()),e.forEach(e=>e.finish())},100,{trailing:!0,leading:!0})),(0,w.A)(this,"getDistributors",()=>this.getResizeHandles().map(e=>{const{distributor:t}=this.createSizerAndDistributor(e);return t})),this.container=e,this.distributorCtor=t,this.config=n,this.classNames={handle:"resizer-handle",reverse:"resizer-reverse",vertical:"resizer-vertical",resizing:"resizer-resizing"}}setClassNames(e){this.classNames=e}attach(){var e,t;const n=null!==(e=null==this||null===(t=this.config)||void 0===t||null===(t=t.handler)||void 0===t?void 0:t.parentElement)&&void 0!==e?e:this.container;null==n||n.addEventListener("mousedown",this.onMouseDown,!1),window.addEventListener("resize",this.onResize)}detach(){var e,t;const n=null!==(e=null==this||null===(t=this.config)||void 0===t||null===(t=t.handler)||void 0===t?void 0:t.parentElement)&&void 0!==e?e:this.container;null==n||n.removeEventListener("mousedown",this.onMouseDown,!1),window.removeEventListener("resize",this.onResize)}forHandleAt(e){const t=this.getResizeHandles()[e];if(t){const{distributor:e}=this.createSizerAndDistributor(t);return e}}forHandleWithId(e){const t=this.getResizeHandles().find(t=>t.getAttribute("data-id")===e);if(t){const{distributor:e}=this.createSizerAndDistributor(t);return e}}isReverseResizeHandle(e){return e.classList.contains(this.classNames.reverse)}isResizeHandle(e){return e.classList.contains(this.classNames.handle)}createSizerAndDistributor(e){var t;const n=e.classList.contains(this.classNames.vertical),i=this.isReverseResizeHandle(e),s=this.distributorCtor,o=null!==(t=this.config)&&void 0!==t&&t.handler?this.container:void 0,r=s.createSizer(this.container,n,i),a=s.createItem(e,this,r,null!=o?o:void 0);return{sizer:r,distributor:new s(a)}}getResizeHandles(){var e,t;return null!=this&&null!==(e=this.config)&&void 0!==e&&e.handler?[this.config.handler]:null!==(t=this.container)&&void 0!==t&&t.children?Array.from(this.container.querySelectorAll(`.${this.classNames.handle}`)):[]}}var pa=n("./src/stores/room-list/models.ts");const ga="serverlimit",va=()=>{F.A.sharedInstance().dismissToast(ga)};var _a=n("./src/components/views/rooms/LegacyRoomList.tsx"),fa=n("./src/components/views/rooms/RoomSublist.tsx");class Ea extends i.PureComponent{openSpotlight(){S.A.fire(H.r.OpenSpotlight)}render(){const e=Lt()({mx_RoomSearch:!0,mx_RoomSearch_minimized:this.props.isMinimized},"mx_RoomSearch_spotlightTrigger"),t=i.createElement("div",{className:"mx_RoomSearch_icon"}),n=i.createElement("kbd",{className:"mx_RoomSearch_shortcutPrompt"},ii.vL?"⌘ K":(0,l._t)(si.hm[ii.Uz.CONTROL])+" K");return i.createElement(le.A,{onClick:this.openSpotlight,className:e,"aria-label":(0,l._t)("action|search")},t,!this.props.isMinimized&&i.createElement("div",{className:"mx_RoomSearch_spotlightTriggerText"},(0,l._t)("action|search")),n)}}var ya=n("./src/stores/spaces/index.ts"),ba=n("./src/stores/UIStore.ts"),wa=n("./src/customisations/helpers/UIComponents.ts"),Sa=n("./src/components/views/beta/BetaCard.tsx"),Aa=n("./src/components/views/context_menus/IconizedContextMenu.tsx");const Ca=["space","hideHeader","onFinished"],xa=e=>{let{space:t,hideHeader:n,onFinished:s}=e,r=(0,g.A)(e,Ca);const a=(0,i.useContext)(de.Ay).getSafeUserId(),c=(0,Vt.ny)("feature_video_rooms"),d=(0,Vt.ny)("feature_element_call_video_rooms");if(!t)return null;let m=null;if("public"===t.getJoinRule()||t.canInvite(a)){const e=e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.Lo)(t),s()};m=i.createElement(Aa.R$,{className:"mx_SpacePanel_contextMenu_inviteButton",iconClassName:"mx_SpacePanel_iconInvite",label:(0,l._t)("action|invite"),onClick:e})}let u=null,h=null;if((0,Mo.Kv)(t)){const e=e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.hL)(t),s()};u=i.createElement(Aa.R$,{iconClassName:"mx_SpacePanel_iconSettings",label:(0,l._t)("common|settings"),onClick:e})}else{const e=e=>{e.preventDefault(),e.stopPropagation(),(0,po.e)(t),s()};h=i.createElement(Aa.R$,{iconClassName:"mx_SpacePanel_iconLeave",className:"mx_IconizedContextMenu_option_red",label:(0,l._t)("space|leave_dialog_action"),onClick:e})}let p=null;if(D.A.getValue("developerMode")){const e=e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.ViewRoom,room_id:t.roomId,forceTimeline:!0,metricsTrigger:void 0}),s()};p=i.createElement(Aa.R$,{iconClassName:"mx_SpacePanel_iconSettings",label:(0,l._t)("space|context_menu|devtools_open_timeline"),onClick:e})}const v=t.currentState.maySendStateEvent(o.EventType.SpaceChild,a),_=v&&(0,wa.g)(gt.C.CreateRooms),f=_&&c,E=v&&(0,wa.g)(gt.C.CreateSpaces);let y=null;if(_||E){const e=e=>{e.preventDefault(),e.stopPropagation(),ri.A.trackInteraction("WebSpaceContextMenuNewRoomItem",e),(0,Mo.PT)(t),s()},n=e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.PT)(t,d?o.RoomType.UnstableCall:o.RoomType.ElementVideo),s()},r=e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.Sl)(t),s()};y=i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_SpacePanel_contextMenu_separatorLabel"},(0,l._t)("action|add")),_&&i.createElement(Aa.R$,{iconClassName:"mx_SpacePanel_iconPlus",label:(0,l._t)("common|room"),onClick:e}),f&&i.createElement(Aa.R$,{iconClassName:"mx_SpacePanel_iconPlus",label:(0,l._t)("common|video_room"),onClick:n},i.createElement(Sa.s,null)),E&&i.createElement(Aa.R$,{iconClassName:"mx_SpacePanel_iconPlus",label:(0,l._t)("common|space"),onClick:r},i.createElement(Sa.s,null)))}const b=e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.ViewRoom,room_id:t.roomId,metricsTrigger:void 0}),s()};return i.createElement(Aa.Ay,(0,Wt.A)({},r,{onFinished:s,className:"mx_SpacePanel_contextMenu",compact:!0}),!n&&i.createElement("div",{className:"mx_SpacePanel_contextMenu_header"},t.name),i.createElement(Aa.tx,{first:!0},i.createElement(Aa.R$,{iconClassName:"mx_SpacePanel_iconHome",label:(0,l._t)("space|context_menu|home"),onClick:e=>{ri.A.trackInteraction("WebSpaceContextMenuHomeItem",e),b(e)}}),m,i.createElement(Aa.R$,{iconClassName:"mx_SpacePanel_iconExplore",label:_?(0,l._t)("space|context_menu|manage_and_explore"):(0,l._t)("space|context_menu|explore"),onClick:e=>{ri.A.trackInteraction("WebSpaceContextMenuExploreRoomsItem",e),b(e)}}),i.createElement(Aa.R$,{iconClassName:"mx_SpacePanel_iconPreferences",label:(0,l._t)("common|preferences"),onClick:e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.Wi)(t),s()}}),p,u,h,y))};var Ra=n("./src/components/views/elements/InlineSpinner.tsx"),ka=n("./node_modules/react-beautiful-dnd/dist/react-beautiful-dnd.esm.js"),Ia=n("./src/components/views/spaces/SpaceCreateMenu.tsx");const Ta=(e,t)=>{let n="";if(t)for(const e of t.entries())n+=e+"/";return`mx_space_collapsed_${n+e}`};class Pa{static get instance(){return Pa.internalInstance||(Pa.internalInstance=new Pa),Pa.internalInstance}setSpaceCollapsedState(e,t,n){localStorage.setItem(Ta(e,t),n.toString())}getSpaceCollapsedState(e,t,n){const i=localStorage.getItem(Ta(e,t));return i?"true"===i:n}}(0,w.A)(Pa,"internalInstance",void 0);var Na=n("./src/stores/notifications/NotificationLevel.ts");const Ma=["space","spaceKey","className","selected","label","contextMenuTooltip","notificationState","size","isNarrow","children","innerRef","ContextMenuComponent"],Da=["space","activeSpaces","isNested","isPanelCollapsed","onExpand","parents","innerRef","dragHandleProps"],Oa=["tabIndex"],Fa=e=>{var t;let{space:n,spaceKey:s,className:o,selected:r,label:a,contextMenuTooltip:c,notificationState:d,size:m,isNarrow:u,children:h,innerRef:p,ContextMenuComponent:v}=e,_=(0,g.A)(e,Ma);const[f,E,y,b]=(0,bn.EF)(p),[w,A,C]=(0,qn.A9)(E),x=A?0:-1,R=null!=s?s:null==n?void 0:n.roomId;let k,I,T=i.createElement("div",{className:"mx_SpaceButton_avatarPlaceholder"},i.createElement("div",{className:"mx_SpaceButton_icon"}));if(n&&(T=i.createElement(En.A,{size:m,room:n,type:"square"})),R&&d){let e=(0,l._t)("a11y_jump_first_unread_room");(null==n?void 0:n.getMyMembership())===X.O.Invite&&(e=(0,l._t)("a11y|jump_first_invite"));const t=e=>{e.stopPropagation(),e.preventDefault(),Ms.Ay.instance.setActiveRoomInSpace(R)};k=i.createElement("div",{className:"mx_SpacePanel_badgeContainer"},i.createElement(An.A,{onClick:t,notification:d,"aria-label":e,tabIndex:x,showUnsentTooltip:!0}))}f&&E.current&&v&&(I=i.createElement(v,(0,Wt.A)({},(0,bn.Dq)(E.current.getBoundingClientRect(),0),{space:n,onFinished:b})));const P=null!==(t=_.onClick)&&void 0!==t?t:r&&n?()=>S.A.dispatch({action:H.r.ViewRoom,room_id:n.roomId}):()=>{R&&Ms.Ay.instance.setActiveSpace(R)};return i.createElement(le.A,(0,Wt.A)({},_,{className:Lt()("mx_SpaceButton",o,{mx_SpaceButton_active:r,mx_SpaceButton_hasMenuOpen:f,mx_SpaceButton_narrow:u}),"aria-label":a,title:!u||f?void 0:a,onClick:P,onContextMenu:y,ref:C,tabIndex:x,onFocus:w}),h,i.createElement("div",{className:"mx_SpaceButton_selectionWrapper"},i.createElement("div",{className:"mx_SpaceButton_avatarWrapper"},T,k),!u&&i.createElement("span",{className:"mx_SpaceButton_name"},a),v&&i.createElement(pi.o,{className:"mx_SpaceButton_menuButton",onClick:y,title:c,isExpanded:f}),I))};class La extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"buttonRef",(0,i.createRef)()),(0,w.A)(this,"onSpaceUpdate",()=>{this.setState({childSpaces:this.childSpaces})}),(0,w.A)(this,"onRoomNameChange",()=>{this.setState({name:this.props.space.name})}),(0,w.A)(this,"toggleCollapse",e=>{this.props.onExpand&&this.isCollapsed&&this.props.onExpand();const t=!this.isCollapsed;Pa.instance.setSpaceCollapsedState(this.props.space.roomId,this.props.parents,t),this.setState({collapsed:t}),e.stopPropagation()}),(0,w.A)(this,"onKeyDown",e=>{var t;let n=!0;const i=(0,Us.zM)().getRoomListAction(e),s=null===(t=this.state.childSpaces)||void 0===t?void 0:t.length;switch(i){case si.bY.CollapseRoomListSection:if(s&&!this.isCollapsed)this.toggleCollapse(e);else{var o;const e=null===(o=this.buttonRef)||void 0===o||null===(o=o.current)||void 0===o||null===(o=o.parentElement)||void 0===o?void 0:o.parentElement,t=null==e?void 0:e.previousElementSibling;null==t||t.focus()}break;case si.bY.ExpandRoomListSection:if(s)if(this.isCollapsed)this.toggleCollapse(e);else{var r,a;const e=null===(r=this.buttonRef)||void 0===r||null===(r=r.current)||void 0===r?void 0:r.nextElementSibling,t=null==e?void 0:e.querySelector(".mx_SpaceItem");null==t||null===(a=t.querySelector(".mx_SpaceButton"))||void 0===a||a.focus()}break;default:n=!1}n&&(e.stopPropagation(),e.preventDefault())});const t=Pa.instance.getSpaceCollapsedState(e.space.roomId,this.props.parents,!e.isNested);this.state={name:this.props.space.name,collapsed:t,childSpaces:this.childSpaces}}componentDidMount(){Ms.Ay.instance.on(this.props.space.roomId,this.onSpaceUpdate),this.props.space.on(o.RoomEvent.Name,this.onRoomNameChange)}componentWillUnmount(){Ms.Ay.instance.off(this.props.space.roomId,this.onSpaceUpdate),this.props.space.off(o.RoomEvent.Name,this.onRoomNameChange)}get childSpaces(){return Ms.Ay.instance.getChildSpaces(this.props.space.roomId).filter(e=>{var t;return!(null!==(t=this.props.parents)&&void 0!==t&&t.has(e.roomId))})}get isCollapsed(){return this.state.collapsed||!!this.props.isPanelCollapsed}render(){var e,t;const n=this.props,{space:s,activeSpaces:o,isNested:r,isPanelCollapsed:a,onExpand:c,parents:d,innerRef:m,dragHandleProps:u}=n,h=(0,g.A)(n,Da),p=this.isCollapsed,v=Lt()(this.props.className,{mx_SpaceItem:!0,mx_SpaceItem_narrow:a,collapsed:p,hasSubSpaces:null===(e=this.state.childSpaces)||void 0===e?void 0:e.length}),_=s.getMyMembership()===X.O.Invite,f=_?Sn.d.forSymbol("!",Na.S.Highlight):Ms.Ay.instance.getNotificationState(s.roomId),E=null===(t=this.state.childSpaces)||void 0===t?void 0:t.length;let y;E&&!p&&(y=i.createElement(Ua,{spaces:this.state.childSpaces,activeSpaces:o,isNested:!0,parents:new Set(d).add(s.roomId)}));const b=E?i.createElement(le.A,{className:"mx_SpaceButton_toggleCollapse",onClick:this.toggleCollapse,tabIndex:-1,"aria-label":p?(0,l._t)("action|expand"):(0,l._t)("action|collapse")}):null,w=u||{},{tabIndex:S}=w,A=(0,g.A)(w,Oa),C=o.includes(s.roomId);return i.createElement("li",(0,Wt.A)({},h,{className:v,ref:m,"aria-expanded":E?!p:void 0,"aria-selected":C,role:"treeitem"}),i.createElement(Fa,(0,Wt.A)({},A,{space:s,className:_?"mx_SpaceButton_invite":void 0,selected:C,label:this.state.name,contextMenuTooltip:(0,l._t)("space|context_menu|options"),notificationState:f,isNarrow:a,size:r?"24px":"32px",onKeyDown:this.onKeyDown,ContextMenuComponent:this.props.space.getMyMembership()===X.O.Join?xa:void 0}),b),y)}}const Ua=({spaces:e,activeSpaces:t,isNested:n,parents:s})=>i.createElement("ul",{className:"mx_SpaceTreeLevel",role:"group"},e.map(e=>i.createElement(La,{key:e.roomId,activeSpaces:t,space:e,isNested:n,parents:s})));var Va=n("./src/stores/notifications/RoomNotificationStateStore.ts"),Ba=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/favourite-solid.js"),ja=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/user-profile-solid.js"),Wa=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/home-solid.js"),Ha=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/video-call-solid.js");function za(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function Ka(e){for(var t=1;tasync n=>{const i=D.A.getValue("Spaces.enabledMetaSpaces");await D.A.setValue("Spaces.enabledMetaSpaces",null,O.p.ACCOUNT,Ka(Ka({},i),{},{[e]:n.target.checked})),ri.A.trackInteraction(t,n,[ya._b.Home,null,ya._b.Favourites,ya._b.People,ya._b.Orphans,ya._b.VideoRooms].indexOf(e))},Ja=()=>{const{[ya._b.Home]:e,[ya._b.Favourites]:t,[ya._b.People]:n,[ya._b.Orphans]:s,[ya._b.VideoRooms]:o}=(0,Vt.ti)("Spaces.enabledMetaSpaces"),r=(0,Vt.ti)("Spaces.allRoomsInHome"),a=(0,i.useMemo)(()=>c.Ay.get("element_call").guest_spa_url,[]),d=(0,l._t)("settings|sidebar|metaspaces_video_rooms_description")+(a?" "+(0,l._t)("settings|sidebar|metaspaces_video_rooms_description_invite_extension"):""),m=(0,Vt.ti)("feature_new_room_list");return i.createElement(oo.A,null,i.createElement(ro.X,null,i.createElement(ao.P,{heading:(0,l._t)("settings|sidebar|metaspaces_subsection"),description:(0,l._t)("settings|sidebar|spaces_explainer")},i.createElement(no.A,{checked:!!e,onChange:Ga(ya._b.Home,"WebSettingsSidebarTabSpacesCheckbox"),className:"mx_SidebarUserSettingsTab_checkbox",disabled:e,description:(0,l._t)("settings|sidebar|metaspaces_home_description")},i.createElement(Wa.A,{className:"mx_SidebarUserSettingsTab_icon"}),(0,l._t)("common|home")),i.createElement(no.A,{checked:r,disabled:!e,onChange:async e=>{await D.A.setValue("Spaces.allRoomsInHome",null,O.p.ACCOUNT,e.target.checked),ri.A.trackInteraction("WebSettingsSidebarTabSpacesCheckbox",e,1)},className:"mx_SidebarUserSettingsTab_checkbox mx_SidebarUserSettingsTab_homeAllRoomsCheckbox",description:(0,l._t)("settings|sidebar|metaspaces_home_all_rooms_description")},(0,l._t)("settings|sidebar|metaspaces_home_all_rooms")),!m&&i.createElement(i.Fragment,null,i.createElement(no.A,{checked:!!t,onChange:Ga(ya._b.Favourites,"WebSettingsSidebarTabSpacesCheckbox"),className:"mx_SidebarUserSettingsTab_checkbox",description:(0,l._t)("settings|sidebar|metaspaces_favourites_description")},i.createElement(Ba.A,{className:"mx_SidebarUserSettingsTab_icon"}),(0,l._t)("common|favourites")),i.createElement(no.A,{checked:!!n,onChange:Ga(ya._b.People,"WebSettingsSidebarTabSpacesCheckbox"),className:"mx_SidebarUserSettingsTab_checkbox",description:(0,l._t)("settings|sidebar|metaspaces_people_description")},i.createElement(ja.A,{className:"mx_SidebarUserSettingsTab_icon"}),(0,l._t)("common|people"))),i.createElement(no.A,{checked:!!s,onChange:Ga(ya._b.Orphans,"WebSettingsSidebarTabSpacesCheckbox"),className:"mx_SidebarUserSettingsTab_checkbox",description:(0,l._t)("settings|sidebar|metaspaces_orphans_description")},(0,l._t)("settings|sidebar|metaspaces_orphans")),D.A.getValue("feature_video_rooms")&&i.createElement(no.A,{checked:!!o,onChange:Ga(ya._b.VideoRooms,"WebSettingsSidebarTabSpacesCheckbox"),className:"mx_SidebarUserSettingsTab_checkbox",description:d},i.createElement(Ha.A,{className:"mx_SidebarUserSettingsTab_icon"}),(0,l._t)("settings|sidebar|metaspaces_video_rooms")))))};var $a=n("./src/theme.ts"),qa=n("./src/components/views/elements/Dropdown.tsx");function Ya(){const e=(0,Vt.ti)("theme"),t=(0,Vt.wL)(O.p.DEVICE,"use_system_theme",null,!1,!0),n=(0,Vt.wL)(O.p.DEVICE,"theme",null,!1,!0),i=(0,Vt.ti)("use_system_theme");return t?{theme:e,systemThemeActivated:!0}:n?{theme:e,systemThemeActivated:!1}:{theme:e,systemThemeActivated:i}}const Xa="MATCH_SYSTEM_THEME_ID",Qa=({requestClose:e})=>{const t=(0,i.useMemo)(()=>(0,$a.E0)(),[]),n=Ya(),s=(0,$a.kZ)(n.theme),o=s||n.theme,{systemThemeActivated:r}=n,a=[{id:Xa,name:(0,l._t)("theme|match_system")},...t],c=r?Xa:o;return i.createElement("div",{className:"mx_QuickThemeSwitcher"},i.createElement("h4",{className:"mx_QuickThemeSwitcher_heading"},(0,l._t)("common|theme")),i.createElement(qa.A,{id:"mx_QuickSettingsButton_themePickerDropdown",onOptionChange:async t=>{ri.A.trackInteraction("WebQuickSettingsThemeDropdown");try{t===Xa?await D.A.setValue("use_system_theme",null,O.p.DEVICE,!0):(S.A.dispatch({action:H.r.RecheckTheme,forceTheme:t}),await Promise.all([D.A.setValue("theme",null,O.p.DEVICE,t),D.A.setValue("use_system_theme",null,O.p.DEVICE,!1)]))}catch{S.A.dispatch({action:H.r.RecheckTheme})}e()},value:c,label:(0,l._t)("common|theme")},a.map(e=>i.createElement("div",{key:e.id},e.name))))};var Za=n("./src/components/views/dialogs/DevtoolsDialog.tsx"),el=n("./node_modules/@vector-im/compound-web/dist/components/ReleaseAnnouncement/ReleaseAnnouncement.js"),tl=n("./src/settings/Settings.tsx");const nl=["newNotificationSounds","newRoomList_intro","newRoomList_sort","newRoomList_filter","newRoomList_settings"];class il extends o.TypedEventEmitter{static get instance(){return il.internalInstance||(il.internalInstance=new il),il.internalInstance}constructor(){super(),(0,w.A)(this,"index",0),D.A.watchSetting("releaseAnnouncementData",null,()=>{this.emit("releaseAnnouncementChanged",this.getReleaseAnnouncement())}),F.A.sharedInstance().on("update",()=>{this.emit("releaseAnnouncementChanged",this.getReleaseAnnouncement())})}getViewedReleaseAnnouncements(){return(0,Kt.cloneDeep)(D.A.getValue("releaseAnnouncementData"))}isReleaseAnnouncementEnabled(){return D.A.getValue(tl.O5.ReleaseAnnouncement)}getReleaseAnnouncement(){if(!this.isReleaseAnnouncementEnabled())return null;if(F.A.sharedInstance().getToasts().length>0)return null;const e=this.getViewedReleaseAnnouncements();for(let t=this.index;tt(!0)),(0,Fi.YK)(R.Ay,R.XM.Closed,()=>!R.Ay.hasDialogs()&&t(!1)),e}(),n=(0,Fi.DY)(il.instance,"releaseAnnouncementChanged",()=>il.instance.getReleaseAnnouncement()===e);return!t&&n}(0,w.A)(il,"internalInstance",void 0);const ol=["feature","children"];function rl(e){let{feature:t,children:n}=e,s=(0,g.A)(e,ol);const o=sl(t);return i.createElement(el.l,(0,Wt.A)({open:o,onClick:()=>il.instance.nextReleaseAnnouncement()},s),n)}const al=({isPanelCollapsed:e=!1})=>{const[t,n,s,o]=(0,bn.EF)(),{[ya._b.Favourites]:r,[ya._b.People]:a}=(0,Vt.ti)("Spaces.enabledMetaSpaces"),c=Do.M.instance.roomViewStore.getRoomId(),d=(0,Vt.ti)("developerMode"),m=(0,Vt.ti)("feature_new_room_list");let u;return t&&n.current&&(u=i.createElement(bn.Ay,(0,Wt.A)({},(0,bn.Gi)(n.current.getBoundingClientRect(),bn.t4.None,16),{wrapperClassName:Lt()("mx_QuickSettingsButton_ContextMenuWrapper",{mx_QuickSettingsButton_ContextMenuWrapper_new_room_list:m}),onFinished:o,managed:!1,focusLock:!0}),i.createElement("h2",null,(0,l._t)("quick_settings|title")),i.createElement(le.A,{onClick:()=>{o(),S.A.dispatch({action:H.r.ViewUserSettings})},kind:"primary_outline"},(0,l._t)("quick_settings|all_settings")),c&&d&&i.createElement(le.A,{onClick:()=>{o(),R.Ay.createDialog(Za.A,{roomId:c},"mx_DevtoolsDialog_wrapper")},kind:"danger_outline"},(0,l._t)("devtools|title")),!m&&i.createElement(i.Fragment,null,i.createElement("h4",null,i.createElement(gs.A,{className:"mx_QuickSettingsButton_icon"}),(0,l._t)("quick_settings|metaspace_section")),i.createElement(no.A,{className:"mx_QuickSettingsButton_option",checked:!!r,onChange:Ga(ya._b.Favourites,"WebQuickSettingsPinToSidebarCheckbox")},i.createElement(Ba.A,{className:"mx_QuickSettingsButton_icon"}),(0,l._t)("common|favourites")),i.createElement(no.A,{className:"mx_QuickSettingsButton_option",checked:!!a,onChange:Ga(ya._b.People,"WebQuickSettingsPinToSidebarCheckbox")},i.createElement(ja.A,{className:"mx_QuickSettingsButton_icon"}),(0,l._t)("common|people")),i.createElement(le.A,{className:"mx_QuickSettingsButton_moreOptionsButton mx_QuickSettingsButton_option",onClick:()=>{o(),S.A.dispatch({action:H.r.ViewUserSettings,initialTabId:Te.v.Sidebar})}},i.createElement(xn.A,{className:"mx_QuickSettingsButton_icon"}),(0,l._t)("quick_settings|sidebar_settings"))),i.createElement(Qa,{requestClose:o}))),i.createElement(i.Fragment,null,i.createElement(rl,{feature:"newRoomList_settings",header:(0,l._t)("room_list|release_announcement|settings|title"),description:(0,l._t)("room_list|release_announcement|settings|description"),closeLabel:(0,l._t)("room_list|release_announcement|done"),placement:"right"},i.createElement(le.A,{className:Lt()("mx_QuickSettingsButton",{expanded:!e}),onClick:s,"aria-label":(0,l._t)("quick_settings|title"),title:e?(0,l._t)("quick_settings|title"):void 0,ref:n,"aria-expanded":!e},e?null:(0,l._t)("common|settings"))),u)};var ll=n("./src/components/views/dialogs/InfoDialog.tsx");const cl=e=>{const t=(0,i.useRef)(null),[n,s]=(0,i.useState)(""),[o,r]=(0,Eo.X)(!1);(0,i.useEffect)(()=>{var e;null===(e=t.current)||void 0===e||e.focus()},[]);const a=()=>{e.onFinished(),R.Ay.createDialog(Pt.A,{})},d=!!c.Ay.get().bug_report_endpoint_url;let m,u;d&&(m=i.createElement("div",{className:"mx_FeedbackDialog_section mx_FeedbackDialog_rateApp"},i.createElement("h3",null,(0,l._t)("feedback|comment_label")),i.createElement("p",null,(0,l._t)("feedback|platform_username")),i.createElement(qs.A,{id:"feedbackComment",label:(0,l._t)("common|feedback"),type:"text",autoComplete:"off",value:n,element:"textarea",onChange:e=>{s(e.target.value)},ref:t}),i.createElement(no.A,{checked:o,onChange:r},(0,l._t)("feedback|may_contact_label")))),d&&(u=i.createElement("p",{className:"mx_FeedbackDialog_section_microcopy"},(0,l._t)("feedback|pro_type",{},{debugLogsLink:e=>i.createElement(le.A,{kind:"link_inline",onClick:a},e)})));const h=c.Ay.getObject("feedback").get("existing_issues_url"),p=c.Ay.getObject("feedback").get("new_issue_url");return i.createElement(Tt.A,{className:"mx_FeedbackDialog",hasCancelButton:d,title:(0,l._t)("common|feedback"),description:i.createElement(i.Fragment,null,i.createElement("div",{className:"mx_FeedbackDialog_section mx_FeedbackDialog_reportBug"},i.createElement("h3",null,(0,l._t)("common|report_a_bug")),i.createElement("p",null,(0,l._t)("feedback|existing_issue_link",{},{existingIssuesLink:e=>i.createElement(Re.A,{target:"_blank",rel:"noreferrer noopener",href:h},e),newIssueLink:e=>i.createElement(Re.A,{target:"_blank",rel:"noreferrer noopener",href:p},e)})),u),m),button:d?(0,l._t)("feedback|send_feedback_action"):(0,l._t)("action|go_back"),buttonDisabled:d&&!n,onFinished:t=>{if(d&&t){const t=e.feature?`${e.feature}-feedback`:"feedback";(0,Jr.Wz)(t,n,o),R.Ay.createDialog(ll.A,{title:(0,l._t)("feedback|sent"),description:(0,l._t)("bug_reporting|thank_you")})}e.onFinished()}})};var dl=function(e){return e[e.LOADING=0]="LOADING",e[e.NO_CRYPTO=1]="NO_CRYPTO",e[e.BACKUP_ACTIVE=2]="BACKUP_ACTIVE",e[e.SERVER_BACKUP_BUT_DISABLED=3]="SERVER_BACKUP_BUT_DISABLED",e[e.BACKUP_NO_RECOVERY=4]="BACKUP_NO_RECOVERY",e[e.NO_BACKUP=5]="NO_BACKUP",e[e.ERROR=6]="ERROR",e}(dl||{});async function ml(e){const t=null==e?void 0:e.getCrypto();if(!t)return!1;const n=e.getRooms();for(const e of n){if(await t.isEncryptionEnabledInRoom(e.roomId))return!0}return!1}class ul extends i.Component{constructor(e){super(e),(0,w.A)(this,"onExportE2eKeysClicked",()=>{R.Ay.createDialog((0,i.lazy)(()=>n.e(7692).then(n.bind(n,"./src/async-components/views/dialogs/security/ExportE2eKeysDialog.tsx"))),{matrixClient:v.J.safeGet()})}),(0,w.A)(this,"onFinished",e=>{e&&S.A.dispatch({action:"logout"}),this.props.onFinished(!!e)}),(0,w.A)(this,"onSetRecoveryMethodClick",()=>{const e={action:H.r.ViewUserSettings,initialTabId:Te.v.Encryption};S.A.dispatch(e),this.props.onFinished(!0)}),(0,w.A)(this,"onLogoutConfirm",()=>{S.A.dispatch({action:"logout"}),this.props.onFinished(!0)}),this.state={backupStatus:dl.LOADING}}componentDidMount(){this.startLoadBackupStatus()}startLoadBackupStatus(){this.loadBackupStatus().catch(e=>{s.vF.log("Unable to fetch key backup status",e),this.setState({backupStatus:dl.ERROR})})}async loadBackupStatus(){const e=v.J.safeGet().getCrypto();if(!e)return void this.setState({backupStatus:dl.NO_CRYPTO});if(null!==await e.getActiveSessionBackupVersion())return void(await e.isSecretStorageReady()?this.setState({backupStatus:dl.BACKUP_ACTIVE}):this.setState({backupStatus:dl.BACKUP_NO_RECOVERY}));const t=await e.getKeyBackupInfo();this.setState({backupStatus:t?dl.SERVER_BACKUP_BUT_DISABLED:dl.NO_BACKUP})}renderSetupRecoveryMethod(){const e=i.createElement("div",null,i.createElement("p",null,(0,l._t)("auth|logout_dialog|setup_secure_backup_description_1")),i.createElement("p",null,(0,l._t)("auth|logout_dialog|setup_secure_backup_description_2")),i.createElement("p",null,(0,l._t)("encryption|setup_secure_backup|explainer"))),t=i.createElement("div",null,i.createElement("div",{className:"mx_Dialog_content",id:"mx_Dialog_content"},e),i.createElement(Nt.A,{primaryButton:(0,l._t)("common|go_to_settings"),hasCancel:!1,onPrimaryButtonClick:this.onSetRecoveryMethodClick,focus:!0},i.createElement("button",{onClick:this.onLogoutConfirm},(0,l._t)("auth|logout_dialog|skip_key_backup"))),i.createElement("details",null,i.createElement("summary",{className:"mx_LogoutDialog_ExportKeyAdvanced"},(0,l._t)("common|advanced")),i.createElement("p",null,i.createElement("button",{onClick:this.onExportE2eKeysClicked},(0,l._t)("auth|logout_dialog|megolm_export")))));return i.createElement(Q.A,{title:(0,l._t)("auth|logout_dialog|setup_key_backup_title"),contentId:"mx_Dialog_content",hasCancel:!0,onFinished:this.onFinished},t)}render(){switch(this.state.backupStatus){case dl.LOADING:return i.createElement(Q.A,{title:(0,l._t)("action|sign_out"),contentId:"mx_Dialog_content",hasCancel:!0,onFinished:this.onFinished},i.createElement(ce.A,null));case dl.NO_CRYPTO:case dl.BACKUP_ACTIVE:return i.createElement(Tt.A,{hasCancelButton:!0,title:(0,l._t)("action|sign_out"),description:(0,l._t)("auth|logout_dialog|description"),button:(0,l._t)("action|sign_out"),onFinished:this.onFinished});case dl.NO_BACKUP:case dl.SERVER_BACKUP_BUT_DISABLED:case dl.ERROR:case dl.BACKUP_NO_RECOVERY:return this.renderSetupRecoveryMethod()}}}(0,w.A)(ul,"defaultProps",{onFinished:function(){}});var hl=n("./src/utils/WellKnownUtils.ts");function pl(e,t){const n=new Mr.Q(e).get("embedded_pages");let i=n?new Mr.Q(n).get("home_url"):null;var o;(i||(i=e.welcomePageUrl,i&&s.vF.warn("You are using a deprecated config option: `welcomePageUrl`. Please use `embedded_pages.home_url` instead, per https://github.com/vector-im/element-web/issues/21428")),i)||(i=null===(o=(0,hl.qh)(t))||void 0===o?void 0:o.home_url);return i}var gl=n("./src/stores/OwnProfileStore.ts"),vl=n("./src/components/views/avatars/BaseAvatar.tsx"),_l=n("./src/utils/Feedback.ts");class fl extends i.Component{constructor(e){super(e),(0,w.A)(this,"dispatcherRef",void 0),(0,w.A)(this,"themeWatcherRef",void 0),(0,w.A)(this,"dndWatcherRef",void 0),(0,w.A)(this,"buttonRef",(0,i.createRef)()),(0,w.A)(this,"onProfileUpdate",async()=>{this.forceUpdate()}),(0,w.A)(this,"onSelectedSpaceUpdate",async()=>{this.setState({selectedSpace:Ms.Ay.instance.activeSpaceRoom})}),(0,w.A)(this,"onThemeChanged",()=>{this.setState({isDarkTheme:this.isUserOnDarkTheme(),isHighContrast:this.isUserOnHighContrastTheme()})}),(0,w.A)(this,"onAction",e=>{if(e.action===H.r.ToggleUserMenu)this.state.contextMenuPosition?this.setState({contextMenuPosition:null}):this.buttonRef.current&&this.buttonRef.current.click()}),(0,w.A)(this,"onOpenMenuClick",e=>{e.preventDefault(),e.stopPropagation(),this.setState({contextMenuPosition:e.currentTarget.getBoundingClientRect()})}),(0,w.A)(this,"onContextMenu",e=>{e.preventDefault(),e.stopPropagation(),this.setState({contextMenuPosition:{left:e.clientX,top:e.clientY,width:20,height:0}})}),(0,w.A)(this,"onCloseMenu",()=>{this.setState({contextMenuPosition:null})}),(0,w.A)(this,"onSwitchThemeClick",e=>{e.preventDefault(),e.stopPropagation(),ri.A.trackInteraction("WebUserMenuThemeToggleButton",e),D.A.setValue("use_system_theme",null,O.p.DEVICE,!1);let t=this.state.isDarkTheme?"light":"dark";if(this.state.isHighContrast){const e=(0,$a.TJ)(t);e&&(t=e)}D.A.setValue("theme",null,O.p.DEVICE,t)}),(0,w.A)(this,"onSettingsOpen",(e,t,n)=>{e.preventDefault(),e.stopPropagation();const i={action:H.r.ViewUserSettings,initialTabId:t,props:n};S.A.dispatch(i),this.setState({contextMenuPosition:null})}),(0,w.A)(this,"onProvideFeedback",e=>{e.preventDefault(),e.stopPropagation(),R.Ay.createDialog(cl),this.setState({contextMenuPosition:null})}),(0,w.A)(this,"onSignOutClick",async e=>{e.preventDefault(),e.stopPropagation(),await ml(v.J.safeGet())?R.Ay.createDialog(ul):S.A.dispatch({action:"logout"}),this.setState({contextMenuPosition:null})}),(0,w.A)(this,"onSignInClick",()=>{S.A.dispatch({action:"start_login"}),this.setState({contextMenuPosition:null})}),(0,w.A)(this,"onRegisterClick",()=>{S.A.dispatch({action:"start_registration"}),this.setState({contextMenuPosition:null})}),(0,w.A)(this,"onHomeClick",e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.ViewHomePage}),this.setState({contextMenuPosition:null})}),(0,w.A)(this,"renderContextMenu",()=>{if(!this.state.contextMenuPosition)return null;let e,t,n;v.J.safeGet().isGuest()&&(e=i.createElement("div",{className:"mx_UserMenu_contextMenu_header mx_UserMenu_contextMenu_guestPrompts"},(0,l._t)("auth|sign_in_prompt",{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:this.onSignInClick},e)}),D.A.getValue(gt.f.Registration)?(0,l._t)("auth|create_account_prompt",{},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:this.onRegisterClick},e)}):null)),this.hasHomePage&&(t=i.createElement(Aa.R$,{iconClassName:"mx_UserMenu_iconHome",label:(0,l._t)("common|home"),onClick:this.onHomeClick})),(0,_l.I)()&&(n=i.createElement(Aa.R$,{iconClassName:"mx_UserMenu_iconMessage",label:(0,l._t)("common|feedback"),onClick:this.onProvideFeedback}));const s=i.createElement(Aa.R$,{iconClassName:"mx_UserMenu_iconQr",label:(0,l._t)("user_menu|link_new_device"),onClick:e=>this.onSettingsOpen(e,Te.v.SessionManager,{showMsc4108QrCode:!0})});let o=i.createElement(Aa.tx,null,t,s,i.createElement(Aa.R$,{iconClassName:"mx_UserMenu_iconBell",label:(0,l._t)("notifications|enable_prompt_toast_title"),onClick:e=>this.onSettingsOpen(e,Te.v.Notifications)}),i.createElement(Aa.R$,{iconClassName:"mx_UserMenu_iconLock",label:(0,l._t)("room_settings|security|title"),onClick:e=>this.onSettingsOpen(e,Te.v.Security)}),i.createElement(Aa.R$,{iconClassName:"mx_UserMenu_iconSettings",label:(0,l._t)("user_menu|settings"),onClick:e=>this.onSettingsOpen(e)}),n,i.createElement(Aa.R$,{className:"mx_IconizedContextMenu_option_red",iconClassName:"mx_UserMenu_iconSignOut",label:(0,l._t)("action|sign_out"),onClick:this.onSignOutClick}));v.J.safeGet().isGuest()&&(o=i.createElement(Aa.tx,null,t,i.createElement(Aa.R$,{iconClassName:"mx_UserMenu_iconSettings",label:(0,l._t)("common|settings"),onClick:e=>this.onSettingsOpen(e)}),n));const r=this.props.isPanelCollapsed?{left:(a=this.state.contextMenuPosition).width+a.left+8,top:a.top,chevronFace:bn.t4.None}:(e=>({left:e.left,top:e.top+e.height,chevronFace:bn.t4.None}))(this.state.contextMenuPosition);var a;const c=$t.A.getDisplayUserIdentifier(v.J.safeGet().getSafeUserId(),{withDisplayName:!0});return i.createElement(Aa.Ay,(0,Wt.A)({},r,{onFinished:this.onCloseMenu,className:"mx_UserMenu_contextMenu"}),i.createElement("div",{className:"mx_UserMenu_contextMenu_header"},i.createElement("div",{className:"mx_UserMenu_contextMenu_name"},i.createElement("span",{className:"mx_UserMenu_contextMenu_displayName"},gl.V.instance.displayName),i.createElement("span",{className:"mx_UserMenu_contextMenu_userId",title:c||""},c)),i.createElement(qn.k,{className:"mx_UserMenu_contextMenu_themeButton",onClick:this.onSwitchThemeClick,title:this.state.isDarkTheme?(0,l._t)("user_menu|switch_theme_light"):(0,l._t)("user_menu|switch_theme_dark")},i.createElement("img",{src:"img/element-icons/roomlist/dark-light-mode.328ce0f.svg",role:"presentation",alt:"",width:16}))),e,o)}),this.state={contextMenuPosition:null,isDarkTheme:this.isUserOnDarkTheme(),isHighContrast:this.isUserOnHighContrastTheme(),selectedSpace:Ms.Ay.instance.activeSpaceRoom}}get hasHomePage(){return!!pl(c.Ay.get(),this.context.client)}componentDidMount(){gl.V.instance.on(Br.H,this.onProfileUpdate),Ms.Ay.instance.on(ya.tw,this.onSelectedSpaceUpdate),this.dispatcherRef=S.A.register(this.onAction),this.themeWatcherRef=D.A.watchSetting("theme",null,this.onThemeChanged)}componentWillUnmount(){D.A.unwatchSetting(this.themeWatcherRef),D.A.unwatchSetting(this.dndWatcherRef),S.A.unregister(this.dispatcherRef),gl.V.instance.off(Br.H,this.onProfileUpdate),Ms.Ay.instance.off(ya.tw,this.onSelectedSpaceUpdate)}isUserOnDarkTheme(){if(D.A.getValue("use_system_theme"))return window.matchMedia("(prefers-color-scheme: dark)").matches;{const e=D.A.getValue("theme");return e.startsWith("custom-")?!!(0,$a.TP)(e.substring(7)).is_dark:"dark"===e}}isUserOnHighContrastTheme(){if(D.A.getValue("use_system_theme"))return window.matchMedia("(prefers-contrast: more)").matches;{const e=D.A.getValue("theme");return!e.startsWith("custom-")&&(0,$a.AZ)(e)}}render(){const e=v.J.safeGet().getSafeUserId(),t=gl.V.instance.displayName||e,n=gl.V.instance.getHttpAvatarUrl(32);let s;return this.props.isPanelCollapsed||(s=i.createElement("div",{className:"mx_UserMenu_name"},t)),i.createElement("div",{className:"mx_UserMenu"},i.createElement(bn.VJ,{className:"mx_UserMenu_contextMenuButton",onClick:this.onOpenMenuClick,ref:this.buttonRef,label:(0,l._t)("a11y|user_menu"),isExpanded:!!this.state.contextMenuPosition,onContextMenu:this.onContextMenu},i.createElement("div",{className:"mx_UserMenu_userAvatar"},i.createElement(vl.A,{idName:e,name:t,url:n,size:"32px",className:"mx_UserMenu_userAvatar_BaseAvatar"})),s,this.renderContextMenu()),this.props.children)}}(0,w.A)(fl,"contextType",Do.A);const El=["children","trackHorizontalOverflow","verticalScrollsHorizontally"];class yl extends i.Component{constructor(e){super(e),(0,w.A)(this,"autoHideScrollbar",(0,i.createRef)()),(0,w.A)(this,"scrollElement",void 0),(0,w.A)(this,"likelyTrackpadUser",null),(0,w.A)(this,"checkAgainForTrackpad",0),(0,w.A)(this,"collectScroller",e=>{var t,n;null===(t=(n=this.props).wrappedRef)||void 0===t||t.call(n,e),e&&!this.scrollElement&&(this.scrollElement=e,this.scrollElement.addEventListener("scroll",this.checkOverflow,{passive:!0}),this.checkOverflow())}),(0,w.A)(this,"checkOverflow",()=>{if(!this.scrollElement)return;const e=this.scrollElement.scrollTop>0,t=this.scrollElement.scrollHeight>this.scrollElement.scrollTop+this.scrollElement.clientHeight,n=this.scrollElement.scrollLeft>0,i=this.scrollElement.scrollWidth>this.scrollElement.scrollLeft+this.scrollElement.clientWidth;e?this.scrollElement.classList.add("mx_IndicatorScrollbar_topOverflow"):this.scrollElement.classList.remove("mx_IndicatorScrollbar_topOverflow"),t?this.scrollElement.classList.add("mx_IndicatorScrollbar_bottomOverflow"):this.scrollElement.classList.remove("mx_IndicatorScrollbar_bottomOverflow"),n?this.scrollElement.classList.add("mx_IndicatorScrollbar_leftOverflow"):this.scrollElement.classList.remove("mx_IndicatorScrollbar_leftOverflow"),i?this.scrollElement.classList.add("mx_IndicatorScrollbar_rightOverflow"):this.scrollElement.classList.remove("mx_IndicatorScrollbar_rightOverflow"),this.props.trackHorizontalOverflow&&this.setState({leftIndicatorOffset:n?`${this.scrollElement.scrollLeft}px`:"0",rightIndicatorOffset:i?`-${this.scrollElement.scrollLeft}px`:"0"})}),(0,w.A)(this,"onMouseWheel",e=>{if(this.props.verticalScrollsHorizontally&&this.scrollElement){const t=0,n=1,i=(new Date).getTime();if(Math.abs(e.deltaX)>0?(this.likelyTrackpadUser=!0,this.checkAgainForTrackpad=i+6e4):this.likelyTrackpadUser&&i>=this.checkAgainForTrackpad&&(this.likelyTrackpadUser=!1),this.likelyTrackpadUser)return;if(Math.abs(e.deltaX)<=t){const t=e.deltaY<0?-50:50,i=Math.abs(e.deltaY)<25?e.deltaY+t:e.deltaY;this.scrollElement.scrollLeft+=i*n}}}),this.state={leftIndicatorOffset:"0",rightIndicatorOffset:"0"}}componentDidUpdate(e){i.Children.count(e.children)!==i.Children.count(this.props.children)&&this.checkOverflow()}componentDidMount(){this.checkOverflow(),ba.A.instance.on(ba.x.Resize,this.checkOverflow)}componentWillUnmount(){var e;null===(e=this.scrollElement)||void 0===e||e.removeEventListener("scroll",this.checkOverflow),ba.A.instance.off(ba.x.Resize,this.checkOverflow)}render(){const e=this.props,{children:t,trackHorizontalOverflow:n,verticalScrollsHorizontally:s}=e,o=(0,g.A)(e,El),r={left:this.state.leftIndicatorOffset},a={right:this.state.rightIndicatorOffset},l=n?i.createElement("div",{className:"mx_IndicatorScrollbar_leftOverflowIndicator",style:r}):null,c=n?i.createElement("div",{className:"mx_IndicatorScrollbar_rightOverflowIndicator",style:a}):null;return i.createElement(es.A,(0,Wt.A)({},o,{ref:this.autoHideScrollbar,wrappedRef:this.collectScroller,onWheel:this.onMouseWheel}),l,t,c)}}var bl=n("./node_modules/@vector-im/compound-web/dist/components/Menu/Menu.js"),wl=n("./node_modules/@vector-im/compound-web/dist/components/Menu/MenuItem.js"),Sl=n("./node_modules/@vector-im/compound-web/dist/components/Button/IconButton/IconButton.js"),Al=n("./node_modules/@vector-im/compound-web/dist/components/Typography/Text.js");const Cl=["displayLabel","notificationLevel","disableTooltip","ref"],xl=function(e){let{displayLabel:t,notificationLevel:n,disableTooltip:s,ref:o}=e,r=(0,g.A)(e,Cl);const a=!s&&!t&&void 0;return i.createElement(zt.m,{label:(0,l._t)("common|threads"),placement:"right",open:a},i.createElement(Sl.K,(0,Wt.A)({"aria-label":(0,l._t)("common|threads"),className:Lt()("mx_ThreadsActivityCentreButton",{expanded:t}),indicator:(0,Ui.W7)(n)},r,{ref:o}),i.createElement(i.Fragment,null,i.createElement(Oi.A,{className:"mx_ThreadsActivityCentreButton_Icon"}),t&&i.createElement(Al.E,{className:"mx_ThreadsActivityCentreButton_Text",as:"span",size:"md",title:(0,l._t)("common|threads")},(0,l._t)("common|threads")))))};var Rl=n("./src/stores/right-panel/RightPanelStore.ts"),kl=n("./src/stores/right-panel/RightPanelStorePhases.ts"),Il=n("./src/Unread.ts"),Tl=n("./src/stores/room-list/filters/VisibilityProvider.ts");function Pl(e){const t=(0,Vt.ti)("feature_dynamic_room_predecessors"),n=(0,Vt.ti)("Notifications.tac_only_notifications"),s=(0,de.nH)(),[r,a]=(0,i.useState)({greatestNotificationLevel:Na.S.None,rooms:[]}),l=(0,i.useCallback)(()=>{a(function(e,t,n){const i=e.getVisibleRooms(t);let s=Na.S.None;const o=[];for(const e of i)if(Tl.W.instance.isRoomVisible(e)&&(0,Il.Nb)(e)){const t=(0,Ui.gM)(e);if(n&&t<=Na.S.Activity)continue;t>s&&(s=t),o.push({room:e,notificationLevel:t})}const r=o.sort((e,t)=>function(e,t){var n,i;const{notificationLevel:s,room:o}=e,{notificationLevel:r,room:a}=t,l=null===(n=o.getLastThread())||void 0===n||null===(n=n.events.at(-1))||void 0===n?void 0:n.getTs(),c=null===(i=a.getLastThread())||void 0===i||null===(i=i.events.at(-1))||void 0===i?void 0:i.getTs();return s>r?-1:r>s?1:l?c?c-l:-1:1}(e,t));return{greatestNotificationLevel:s,rooms:r}}(s,t,n))},[s,t,n]),c=(0,i.useMemo)(()=>(0,Kt.throttle)(l,500,{leading:!1,trailing:!0}),[l]);return(0,Fi.ml)(s,o.ClientEvent.Sync,c),(0,Fi.ml)(s,o.MatrixEventEvent.Decrypted,c),(0,i.useEffect)(()=>{e&&l()},[l,e]),r}function Nl({displayButtonLabel:e}){const[t,n]=(0,i.useState)(!1),s=Pl(t),o=(0,Vt.ti)("Notifications.tac_only_notifications")?(0,l._t)("threads_activity_centre|no_rooms_with_threads_notifs"):(0,l._t)("threads_activity_centre|no_rooms_with_unread_threads");return i.createElement("div",{className:"mx_ThreadsActivityCentre_container",onKeyDown:e=>{if(!t)return;(0,Us.zM)().getNavigationAction(e)===si.bY.FilterRooms&&e.stopPropagation()}},i.createElement(bl.W,{align:"start",side:"top",open:t,onOpenChange:e=>{e&&ri.A.trackInteraction("WebThreadsActivityCentreButton"),n(e)},title:(0,l._t)("threads_activity_centre|header"),trigger:i.createElement(xl,{displayLabel:e,notificationLevel:s.greatestNotificationLevel})},i.createElement("div",{className:"mx_ThreadsActivityCentre_rows"},s.rooms.map(({room:e,notificationLevel:t})=>i.createElement(Ml,{key:e.roomId,room:e,notificationLevel:t,onClick:()=>n(!1)})),0===s.rooms.length&&i.createElement("div",{className:"mx_ThreadsActivityCentre_emptyCaption"},o))))}function Ml({room:e,onClick:t,notificationLevel:n}){return i.createElement(wl.D,{className:"mx_ThreadsActivityCentreRow",onSelect:n=>{t(),Rl.A.instance.setCard({phase:kl.n.ThreadPanel},!0,e.roomId),ri.A.trackInteraction("WebThreadsActivityCentreRoomItem",n),S.A.dispatch({action:H.r.ViewRoom,show_room_tile:!0,room_id:e.roomId,metricsTrigger:"WebThreadsActivityCentre",focusNext:"threadsPanel"})},label:e.name,Icon:i.createElement(ks.A,{room:e,size:"32px"})},i.createElement(rs.V,{level:n,count:0,symbol:null,forceDot:!0}))}var Dl=n("./src/accessibility/LandmarkNavigation.ts"),Ol=n("./src/components/views/settings/KeyboardShortcut.tsx");const Fl=["onFinished","hideHeader"],Ll=["selected","isPanelCollapsed","size"],Ul=["children","isPanelCollapsed","setPanelCollapsed","isDraggingOver","innerRef"],Vl=e=>{let{onFinished:t,hideHeader:n}=e,s=(0,g.A)(e,Fl);const o=(0,Vt.ti)("Spaces.allRoomsInHome");return i.createElement(Aa.Ay,(0,Wt.A)({},s,{onFinished:t,className:"mx_SpacePanel_contextMenu",compact:!0}),!n&&i.createElement("div",{className:"mx_SpacePanel_contextMenu_header"},(0,l._t)("common|home")),i.createElement(Aa.tx,{first:!0},i.createElement(Aa.LS,{iconClassName:"mx_SpacePanel_noIcon",label:(0,l._t)("settings|sidebar|metaspaces_home_all_rooms"),active:o,onClick:()=>{t(),D.A.setValue("Spaces.allRoomsInHome",null,O.p.ACCOUNT,!o)}})))},Bl=e=>{let{selected:t,isPanelCollapsed:n,size:s="32px"}=e,o=(0,g.A)(e,Ll);return i.createElement("li",{className:Lt()("mx_SpaceItem",{collapsed:n}),role:"treeitem","aria-selected":t},i.createElement(Fa,(0,Wt.A)({},o,{selected:t,isNarrow:n,size:s})))},jl=()=>Ms.Ay.instance.allRoomsInHome?Va.n.instance.globalState:Ms.Ay.instance.getNotificationState(ya._b.Home),Wl=({isPanelCollapsed:e,setPanelCollapsed:t})=>{const[n,s,o,r]=(0,bn.EF)();let a;(0,i.useEffect)(()=>{!e&&n&&r()},[e]),n&&(a=i.createElement(Ia.Ay,{onFinished:r}));const c=n?r:()=>{e||t(!0),o()};return i.createElement("li",{className:Lt()("mx_SpaceItem mx_SpaceItem_new",{collapsed:e}),role:"treeitem","aria-selected":!1},i.createElement(Fa,{className:Lt()("mx_SpaceButton_new",{mx_SpaceButton_newCancel:n}),label:n?(0,l._t)("action|cancel"):(0,l._t)("create_space|label"),onClick:c,isNarrow:e,innerRef:s,size:"32px"}),a)},Hl={[ya._b.Home]:({selected:e,isPanelCollapsed:t})=>{const n=(0,Fi.dF)(Ms.Ay.instance,ya.EC,()=>Ms.Ay.instance.allRoomsInHome),[s,o]=(0,i.useState)(jl()),r=(0,i.useCallback)(()=>{o(jl())},[]);return(0,i.useEffect)(r,[r,n]),(0,Fi.ml)(Va.n.instance,Va.N,r),i.createElement(Bl,{spaceKey:ya._b.Home,className:"mx_SpaceButton_home",selected:e,isPanelCollapsed:t,label:(0,ya.Ff)(ya._b.Home,n),notificationState:s,ContextMenuComponent:Vl,contextMenuTooltip:(0,l._t)("common|options"),size:"32px"})},[ya._b.Favourites]:({selected:e,isPanelCollapsed:t})=>i.createElement(Bl,{spaceKey:ya._b.Favourites,className:"mx_SpaceButton_favourites",selected:e,isPanelCollapsed:t,label:(0,ya.Ff)(ya._b.Favourites),notificationState:Ms.Ay.instance.getNotificationState(ya._b.Favourites),size:"32px"}),[ya._b.People]:({selected:e,isPanelCollapsed:t})=>i.createElement(Bl,{spaceKey:ya._b.People,className:"mx_SpaceButton_people",selected:e,isPanelCollapsed:t,label:(0,ya.Ff)(ya._b.People),notificationState:Ms.Ay.instance.getNotificationState(ya._b.People),size:"32px"}),[ya._b.Orphans]:({selected:e,isPanelCollapsed:t})=>i.createElement(Bl,{spaceKey:ya._b.Orphans,className:"mx_SpaceButton_orphans",selected:e,isPanelCollapsed:t,label:(0,ya.Ff)(ya._b.Orphans),notificationState:Ms.Ay.instance.getNotificationState(ya._b.Orphans),size:"32px"}),[ya._b.VideoRooms]:({selected:e,isPanelCollapsed:t})=>i.createElement(Bl,{spaceKey:ya._b.VideoRooms,className:"mx_SpaceButton_videoRooms",selected:e,isPanelCollapsed:t,label:(0,ya.Ff)(ya._b.VideoRooms),notificationState:Ms.Ay.instance.getNotificationState(ya._b.VideoRooms),size:"32px"})},zl=i.memo(e=>{let{children:t,isPanelCollapsed:n,setPanelCollapsed:s,isDraggingOver:o,innerRef:r}=e,a=(0,g.A)(e,Ul);const[c,d,m,u]=(()=>{const e=(0,Fi.dF)(Ms.Ay.instance,ya.kQ,()=>Ms.Ay.instance.invitedSpaces),[t,n]=(0,Fi.dF)(Ms.Ay.instance,ya.bZ,()=>[Ms.Ay.instance.enabledMetaSpaces,Ms.Ay.instance.spacePanelSpaces]);return[e,t,n,(0,Fi.dF)(Ms.Ay.instance,ya.tw,()=>Ms.Ay.instance.activeSpace)]})(),h=u?[u]:[],p=d.filter(e=>!(e===ya._b.VideoRooms&&!D.A.getValue("feature_video_rooms"))).map(e=>{const t=Hl[e];return i.createElement(t,{key:e,selected:u===e,isPanelCollapsed:n})});return i.createElement(yl,(0,Wt.A)({},a,{wrappedRef:r,className:"mx_SpaceTreeLevel",style:o?{pointerEvents:"none"}:void 0,element:"ul",role:"tree","aria-label":(0,l._t)("common|spaces")}),p,c.map(e=>i.createElement(La,{key:e.roomId,space:e,activeSpaces:h,isPanelCollapsed:n,onExpand:()=>s(!1)})),m.map((e,t)=>i.createElement(ka.sx,{key:e.roomId,draggableId:e.roomId,index:t},(t,o)=>i.createElement(La,(0,Wt.A)({},t.draggableProps,{dragHandleProps:t.dragHandleProps,key:e.roomId,innerRef:t.innerRef,className:o.isDragging?"mx_SpaceItem_dragging":void 0,space:e,activeSpaces:h,isPanelCollapsed:n,onExpand:()=>s(!1)})))),t,(0,wa.g)(gt.C.CreateSpaces)&&i.createElement(Wl,{isPanelCollapsed:n,setPanelCollapsed:s}))}),Kl=()=>{const[e,t]=(0,i.useState)(!1),[n,s]=(0,i.useState)(!0),o=(0,i.useRef)(null);(0,i.useLayoutEffect)(()=>(o.current&&ba.A.instance.trackElementDimensions("SpacePanel",o.current),()=>ba.A.instance.stopTrackingElementDimensions("SpacePanel")),[]),(0,mo.F)(S.A,e=>{e.action===H.r.ToggleSpacePanel&&s(!n)});const r=(0,Vt.ti)("feature_new_room_list");return i.createElement(qn.Se,{handleHomeEnd:!0,handleUpDown:!e},({onKeyDownHandler:e,onDragEndHandler:a})=>i.createElement(ka.JY,{onDragStart:()=>{t(!0)},onDragEnd:e=>{t(!1),e.destination&&(Ms.Ay.instance.moveRootSpace(e.source.index,e.destination.index),a())}},i.createElement(rl,{feature:"newNotificationSounds",header:(0,l._t)("settings|notifications|sounds_release_announcement|title"),description:(0,l._t)("settings|notifications|sounds_release_announcement|description"),closeLabel:(0,l._t)("action|ok"),displayArrow:!1,placement:"right-start"},i.createElement("nav",{className:Lt()("mx_SpacePanel",{collapsed:n,newUi:r}),onKeyDown:t=>{const n=(0,Us.zM)().getNavigationAction(t);if(n===si.bY.NextLandmark||n===si.bY.PreviousLandmark)return Dl.r.findAndFocusNextLandmark(Dl.H.ACTIVE_SPACE_BUTTON,n===si.bY.PreviousLandmark),t.stopPropagation(),void t.preventDefault();e(t)},ref:o,"aria-label":(0,l._t)("common|spaces")},i.createElement(fl,{isPanelCollapsed:n},i.createElement(le.A,{className:Lt()("mx_SpacePanel_toggleCollapse",{expanded:!n}),onClick:()=>s(!n),title:n?(0,l._t)("action|expand"):(0,l._t)("action|collapse"),caption:i.createElement(Ol.S,{value:{ctrlOrCmdKey:!0,shiftKey:!0,key:"d"},className:"mx_SpacePanel_Tooltip_KeyboardShortcut"})})),i.createElement(ka.gL,{droppableId:"top-level-spaces"},(e,t)=>i.createElement(zl,(0,Wt.A)({},e.droppableProps,{isPanelCollapsed:n,setPanelCollapsed:s,isDraggingOver:t.isDraggingOver,innerRef:e.innerRef}),e.placeholder)),i.createElement(Nl,{displayButtonLabel:!n}),i.createElement(al,{isPanelCollapsed:n})))))},Gl=e=>({left:e.left+window.scrollX,top:e.bottom+window.scrollY+12,chevronFace:bn.t4.None});var Jl=function(e){return e[e.JoinRoom=0]="JoinRoom",e[e.BulkRedact=1]="BulkRedact",e}(Jl||{});const $l=({onVisibilityChange:e})=>{var t;const n=(0,i.useContext)(de.Ay),[s,r,a,c]=(0,bn.EF)(),[d,m,u,h]=(0,bn.EF)(),[p,g]=(0,Fi.dF)(Ms.Ay.instance,ya.tw,()=>[Ms.Ay.instance.activeSpace,Ms.Ay.instance.activeSpaceRoom]),v=(0,Fi.dF)(Ms.Ay.instance,ya.EC,()=>Ms.Ay.instance.allRoomsInHome),_=(0,Vt.ny)("feature_video_rooms"),f=(0,Vt.ny)("feature_element_call_video_rooms"),E=(()=>{const e=(0,i.useContext)(de.Ay),[t,n]=(0,i.useState)(new Map),s=(e,i)=>{const s=new Set(t.get(e));s.add(i),n(new Map(t).set(e,s))},r=(e,i)=>{const s=new Set(t.get(e));s.delete(i)&&n(new Map(t).set(e,s))};return(0,mo.F)(S.A,e=>{switch(e.action){case H.r.JoinRoom:s(Jl.JoinRoom,e.roomId);break;case H.r.JoinRoomReady:case H.r.JoinRoomError:r(Jl.JoinRoom,e.roomId);break;case H.r.BulkRedactStart:s(Jl.BulkRedact,e.roomId);break;case H.r.BulkRedactEnd:r(Jl.BulkRedact,e.roomId)}}),(0,Fi.YK)(e,o.ClientEvent.Room,e=>r(Jl.JoinRoom,e.roomId)),t})(),y=g||p===ya._b.Home;(0,i.useEffect)(()=>{s&&!y&&c()},[c,y,s]);const b=(0,Fi.DY)(null!=g?g:void 0,o.RoomEvent.Name,()=>null==g?void 0:g.name);(0,i.useEffect)(()=>{null==e||e()},[e]);const w=(0,wa.g)(gt.C.ExploreRooms),A=(0,wa.g)(gt.C.CreateRooms),C=(0,wa.g)(gt.C.CreateSpaces),x=null==g||null===(t=g.currentState)||void 0===t?void 0:t.maySendStateEvent(o.EventType.SpaceChild,n.getUserId()),R=x&&A,k=x&&C,I=A||w||C||g;let T,P;if(s&&r.current){let e;e=g?xa:Vl,T=i.createElement(e,(0,Wt.A)({},Gl(r.current.getBoundingClientRect()),{space:g,onFinished:c,hideHeader:!0}))}else if(d&&g){let e,t;(0,Mo.MI)(g)&&(e=i.createElement(Aa.R$,{label:(0,l._t)("action|invite"),iconClassName:"mx_LegacyRoomListHeader_iconInvite",onClick:e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.Lo)(g),h()}})),null!=g&&g.currentState.maySendStateEvent(o.EventType.RoomAvatar,n.getUserId())&&(t=i.createElement(i.Fragment,null,i.createElement(Aa.R$,{iconClassName:"mx_LegacyRoomListHeader_iconNewRoom",label:(0,l._t)("action|new_room"),onClick:e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.PT)(g),ri.A.trackInteraction("WebRoomListHeaderPlusMenuCreateRoomItem",e),h()}}),_&&i.createElement(Aa.R$,{iconClassName:"mx_LegacyRoomListHeader_iconNewVideoRoom",label:(0,l._t)("action|new_video_room"),onClick:e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.PT)(g,f?o.RoomType.UnstableCall:o.RoomType.ElementVideo),h()}},i.createElement(Sa.s,null)))),T=i.createElement(Aa.Ay,(0,Wt.A)({},Gl(m.current.getBoundingClientRect()),{onFinished:h,compact:!0}),i.createElement(Aa.tx,{first:!0},e,t,i.createElement(Aa.R$,{label:(0,l._t)("action|explore_rooms"),iconClassName:"mx_LegacyRoomListHeader_iconExplore",onClick:e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.ViewRoom,room_id:g.roomId,metricsTrigger:void 0}),h(),ri.A.trackInteraction("WebRoomListHeaderPlusMenuExploreRoomsItem",e)}}),i.createElement(Aa.R$,{label:(0,l._t)("action|add_existing_room"),iconClassName:"mx_LegacyRoomListHeader_iconPlus",onClick:e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.yV)(g),h()},disabled:!R,title:R?void 0:(0,l._t)("spaces|error_no_permission_add_room")}),C&&i.createElement(Aa.R$,{label:(0,l._t)("room_list|add_space_label"),iconClassName:"mx_LegacyRoomListHeader_iconPlus",onClick:e=>{e.preventDefault(),e.stopPropagation(),(0,Mo.Sl)(g),h()},disabled:!k,title:k?void 0:(0,l._t)("spaces|error_no_permission_add_space")},i.createElement(Sa.s,null))))}else if(d){let e,t;A&&(e=i.createElement(i.Fragment,null,i.createElement(Aa.R$,{label:(0,l._t)("action|start_new_chat"),iconClassName:"mx_LegacyRoomListHeader_iconStartChat",onClick:e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.CreateChat}),ri.A.trackInteraction("WebRoomListHeaderPlusMenuCreateChatItem",e),h()}}),i.createElement(Aa.R$,{label:(0,l._t)("action|new_room"),iconClassName:"mx_LegacyRoomListHeader_iconNewRoom",onClick:e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.CreateRoom}),ri.A.trackInteraction("WebRoomListHeaderPlusMenuCreateRoomItem",e),h()}}),_&&i.createElement(Aa.R$,{label:(0,l._t)("action|new_video_room"),iconClassName:"mx_LegacyRoomListHeader_iconNewVideoRoom",onClick:e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.CreateRoom,type:f?o.RoomType.UnstableCall:o.RoomType.ElementVideo}),h()}},i.createElement(Sa.s,null)))),w&&(t=i.createElement(Aa.R$,{label:(0,l._t)("room_list|join_public_room_label"),iconClassName:"mx_LegacyRoomListHeader_iconExplore",onClick:e=>{e.preventDefault(),e.stopPropagation(),S.A.dispatch({action:H.r.ViewRoomDirectory}),ri.A.trackInteraction("WebRoomListHeaderPlusMenuExploreRoomsItem",e),h()}})),T=i.createElement(Aa.Ay,(0,Wt.A)({},Gl(m.current.getBoundingClientRect()),{onFinished:h,compact:!0}),i.createElement(Aa.tx,{first:!0},e,t))}P=g&&b?b:(0,ya.Ff)(p,v);const N=[...E.entries()].filter(([e,t])=>t.size>0).map(([e,t])=>{switch(e){case Jl.JoinRoom:return(0,l._t)("room_list|joining_rooms_status",{count:t.size});case Jl.BulkRedact:return(0,l._t)("room_list|redacting_messages_status",{count:t.size})}}).join("\n");let M=i.createElement("div",{className:"mx_LegacyRoomListHeader_contextLessTitle"},P);if(y){const e={ref:r,onClick:a,isExpanded:s,className:"mx_LegacyRoomListHeader_contextMenuButton",children:P};M=g?i.createElement(bn.VJ,(0,Wt.A)({},e,{label:(0,l._t)("room_list|space_menu_label",{spaceName:null!=b?b:g.name})})):i.createElement(bn.oW,(0,Wt.A)({},e,{title:(0,l._t)("room_list|home_menu_label")}))}return i.createElement("aside",{className:"mx_LegacyRoomListHeader","aria-label":(0,l._t)("room|context_menu|title")},M,N?i.createElement(zt.m,{label:N,isTriggerInteractive:!1},i.createElement(Ra.A,null)):null,I&&i.createElement(bn.oW,{ref:m,onClick:u,isExpanded:d,className:"mx_LegacyRoomListHeader_plusButton",title:(0,l._t)("action|add")}),T)};var ql=n("./src/stores/BreadcrumbsStore.ts"),Yl=n("./src/stores/room-list/RoomListStore.ts"),Xl=n("./node_modules/react-transition-group/esm/CSSTransition.js");const Ql=({room:e,onClick:t})=>{const[n,s,o]=(0,qn.A9)();return i.createElement(le.A,{className:"mx_RoomBreadcrumbs_crumb",onClick:t,"aria-label":(0,l._t)("a11y|room_name",{name:e.name}),title:e.name,onFocus:n,ref:o,tabIndex:s?0:-1,placement:"right"},i.createElement(ks.A,{room:e,size:"32px",displayBadge:!0,hideIfDot:!0,tooltipProps:{tabIndex:s?0:-1}}))};class Zl extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"toolbar",(0,i.createRef)()),(0,w.A)(this,"onBreadcrumbsUpdate",()=>{this.unmounted||(this.setState({doAnimation:!1,skipFirst:!0}),window.setTimeout(()=>this.setState({doAnimation:!0,skipFirst:!1}),0))}),(0,w.A)(this,"viewRoom",(e,t,n=!1)=>{S.A.dispatch({action:H.r.ViewRoom,room_id:e.roomId,metricsTrigger:"WebHorizontalBreadcrumbs",metricsViaKeyboard:n})}),this.state={doAnimation:!0,skipFirst:!1}}componentDidMount(){this.unmounted=!1,ql.Y.instance.on(Br.H,this.onBreadcrumbsUpdate)}componentWillUnmount(){this.unmounted=!0,ql.Y.instance.off(Br.H,this.onBreadcrumbsUpdate)}render(){const e=ql.Y.instance.rooms.map((e,t)=>i.createElement(Ql,{key:e.roomId,room:e,onClick:n=>this.viewRoom(e,t,"click"!==n.type)}));return e.length>0?i.createElement(Xl.A,{appear:!0,in:this.state.doAnimation,timeout:640,classNames:"mx_RoomBreadcrumbs",nodeRef:this.toolbar},i.createElement($n.A,{className:"mx_RoomBreadcrumbs","aria-label":(0,l._t)("room_list|breadcrumbs_label"),ref:this.toolbar},e.slice(this.state.skipFirst?1:0))):i.createElement("div",{className:"mx_RoomBreadcrumbs"},i.createElement("div",{className:"mx_RoomBreadcrumbs_placeholder"},(0,l._t)("room_list|breadcrumbs_empty")))}}var ec=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/explore.js"),tc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/search.js"),nc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/dial-pad.js");function ic({activeSpace:e}){const t=e===ya._b.Home&&(0,wa.g)(gt.C.ExploreRooms),n=(0,Fi.DY)(Rt.Ay.instance,Rt.uv.ProtocolSupport,()=>Rt.Ay.instance.getSupportsPstnProtocol());return i.createElement(we.s,{className:"mx_RoomListSearch",role:"search",gap:"var(--cpd-space-2x)",align:"center"},i.createElement(Y.$,{className:"mx_RoomListSearch_search",kind:"secondary",size:"sm",Icon:tc.A,onClick:()=>S.A.fire(H.r.OpenSpotlight)},i.createElement(we.s,{as:"span",justify:"space-between"},i.createElement("span",{className:"mx_RoomListSearch_search_text"},(0,l._t)("action|search")),i.createElement("kbd",null,ii.vL?"⌘ K":(0,l._t)(si.hm[ii.Uz.CONTROL])+" K"))),n&&i.createElement(Y.$,{kind:"secondary",size:"sm",Icon:nc.A,iconOnly:!0,"aria-label":(0,l._t)("left_panel|open_dial_pad"),onClick:e=>{S.A.fire(H.r.OpenDialPad)}}),t&&i.createElement(Y.$,{kind:"secondary",size:"sm",Icon:ec.A,iconOnly:!0,"aria-label":(0,l._t)("action|explore_rooms"),onClick:e=>{S.A.fire(H.r.ViewRoomDirectory),ri.A.trackInteraction("WebLeftPanelExploreRoomsButton",e)}}))}var sc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/compose.js"),oc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/user-add.js"),rc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/chevron-down.js"),ac=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/room.js"),lc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/home.js"),cc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/preferences.js"),dc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/settings.js"),mc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/video-call.js"),uc=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/chat.js"),hc=n("./src/utils/membership.ts");function pc(e){return e.getMyMembership()===o.KnownMembership.Invite||e.getMyMembership()!==o.KnownMembership.Knock&&!(0,hc.yE)(e)&&(0,wa.g)(gt.C.RoomOptionsMenu)}function gc(e,t,n){return!t&&!n&&pc(e)}async function vc(e){e?await(0,Mo.PT)(e):S.A.fire(H.r.CreateRoom)}function _c(e,t){var n;const i=(0,wa.g)(gt.C.CreateRooms);return t&&i?Boolean(null==t||null===(n=t.getLiveTimeline().getState(o.EventTimeline.FORWARDS))||void 0===n?void 0:n.maySendStateEvent(o.EventType.RoomAvatar,e.getSafeUserId())):i}class fc{constructor(e){(0,w.A)(this,"_isInActiveSpace",!1),(0,w.A)(this,"next",[]),(0,w.A)(this,"previous",[]),(0,w.A)(this,"filterKeysSet",new Set),this.room=e}get isInActiveSpace(){return this._isInActiveSpace}checkIfRoomBelongsToActiveSpace(){const e=Ms.Ay.instance.activeSpace;this._isInActiveSpace=Ms.Ay.instance.isRoomInSpace(e,this.room.roomId)}doesRoomMatchFilters(e){return!e.some(e=>!this.filterKeysSet.has(e))}applyFilters(e){this.filterKeysSet=new Set;for(const t of e)t.matches(this.room)&&this.filterKeysSet.add(t.key)}}function Ec(){return Math.random()<.5}class yc{get size(){return this._size}constructor(e){(0,w.A)(this,"head",void 0),(0,w.A)(this,"current",void 0),(0,w.A)(this,"_size",0),this.level=e}setNext(e){this.head||(this.head=e),this.current?(e.previous[this.level]=this.current,this.current.next[this.level]=e,this.current=e):this.current=e,this._size++}generateNextLevel(){const e=new yc(this.level+1);let t=this.head;for(;t;)Ec()&&e.setNext(t),t=t.next[this.level];return e}removeNode(e){if(!(this.head===e||e.previous[this.level]))return;const t=e.previous[this.level];if(t){const n=e.next[this.level];t.next[this.level]=n,n&&(n.previous[this.level]=t)}else{const t=e.next[this.level];this.head=t,t&&(t.previous[this.level]=e.previous[this.level])}this._size--}insertAfter(e,t){const n=this.level,i=e.next[n];i&&(t.next[n]=i,i.previous[n]=t),e.next[n]=t,t.previous[n]=e,this._size++}insertAtHead(e){const t=this.head;this.head=e,t&&(e.next[this.level]=t,t.previous[this.level]=e),this._size++}}class bc{constructor(e){this.current=e}next(){const e=this.current;return e?(this.current=e.next[0],{value:e.room}):{value:void 0,done:!0}}}class wc{constructor(e,t){this.current=e,this.filters=t}[Symbol.iterator](){return this}next(){let e=this.current;for(;e&&(!e.isInActiveSpace||!e.doesRoomMatchFilters(this.filters));)e=e.next[0];return e?(this.current=e.next[0],{value:e.room}):{value:void 0,done:!0}}}class Sc{constructor(e,t=[]){(0,w.A)(this,"levels",[new yc(0)]),(0,w.A)(this,"roomNodeMap",new Map),(0,w.A)(this,"initialized",!1),this.sorter=e,this.filters=t}reset(){this.levels=[new yc(0)],this.roomNodeMap=new Map}seed(e){const t=this.sorter.sort(e).map(e=>new fc(e));let n=this.levels[0];for(const e of t)e.applyFilters(this.filters),n.setNext(e),this.roomNodeMap.set(e.room.roomId,e);do{this.levels[n.level]=n,n=n.generateNextLevel()}while(n.size>1);this.calculateActiveSpaceForNodes(),this.initialized=!0}calculateActiveSpaceForNodes(){for(const e of this.roomNodeMap.values())e.checkIfRoomBelongsToActiveSpace()}useNewSorter(e,t){this.reset(),this.sorter=e,this.seed(t)}removeRoom(e){const t=this.roomNodeMap.get(e.roomId);if(this.roomNodeMap.delete(e.roomId),t)for(const e of this.levels)e.removeNode(t)}reInsertRoom(e){this.roomNodeMap.has(e.roomId)&&(this.removeRoom(e),this.addNewRoom(e))}addNewRoom(e){if(this.roomNodeMap.has(e.roomId))throw new Error(`Can't add room to skiplist: ${e.roomId} is already in the skiplist!`);this.insertRoom(e)}insertRoom(e){const t=new fc(e);t.checkIfRoomBelongsToActiveSpace(),t.applyFilters(this.filters),this.roomNodeMap.set(e.roomId,t);const n=[];for(let t=this.levels.length-1;t>=0;--t){const i=this.levels[t];if(!i.head){n[t]=null;continue}let s=i.head,o=null;for(;s&&this.sorter.comparator(s.room,e)<0;)o=s,s=s.next[t];n[t]=o}for(const[e,i]of n.entries()){if(0!==e&&!Ec())break;{const n=this.levels[e];i?n.insertAfter(i,t):n.insertAtHead(t)}}}[Symbol.iterator](){return new bc(this.levels[0].head)}getRoomsInActiveSpace(e=[]){return new wc(this.levels[0].head,e)}get size(){return this.levels[0].size}get activeSortAlgorithm(){return this.sorter.type}}var Ac=n("./src/stores/room-list-v3/skip-list/sorters/index.ts");class Cc{constructor(e){this.myUserId=e}sort(e){const t={};return[...e].sort((e,n)=>this.comparator(e,n,t))}comparator(e,t,n){const i=this.getScore(e)-this.getScore(t);if(0!==i)return i;const s=this.getTs(e,n);return this.getTs(t,n)-s}get type(){return Ac.U.Recency}getScore(e){const t=!!e.tags[pa.zO.LowPriority],n=Va.n.instance.getRoomState(e).muted;return n&&t?5:n?10:t?2:0}getTs(e,t){var n;const i=null!==(n=null==t?void 0:t[e.roomId])&&void 0!==n?n:(0,Is.Qi)(e,this.myUserId);return t&&(t[e.roomId]=i),i}}class xc{constructor(){(0,w.A)(this,"collator",new Intl.Collator)}sort(e){return[...e].sort((e,t)=>this.comparator(e,t))}comparator(e,t){return this.collator.compare(e.name,t.name)}get type(){return Ac.U.Alphabetic}}var Rc=n("./src/utils/read-receipts.ts");let kc=function(e){return e[e.FavouriteFilter=0]="FavouriteFilter",e[e.UnreadFilter=1]="UnreadFilter",e[e.PeopleFilter=2]="PeopleFilter",e[e.RoomsFilter=3]="RoomsFilter",e[e.LowPriorityFilter=4]="LowPriorityFilter",e[e.MentionsFilter=5]="MentionsFilter",e[e.InvitesFilter=6]="InvitesFilter",e}({});var Ic=n("./src/stores/room-list/utils/roomMute.ts");const Tc=[new class{matches(e){return!!e.tags[pa.zO.Favourite]}get key(){return kc.FavouriteFilter}},new class{matches(e){return Va.n.instance.getRoomState(e).hasUnreadCount||!!(0,Ui.nx)(e)}get key(){return kc.UnreadFilter}},new class{matches(e){return!!x.A.shared().getUserIdForRoomId(e.roomId)}get key(){return kc.PeopleFilter}},new class{matches(e){return!x.A.shared().getUserIdForRoomId(e.roomId)}get key(){return kc.RoomsFilter}},new class{matches(e){return e.getMyMembership()===o.KnownMembership.Invite}get key(){return kc.InvitesFilter}},new class{matches(e){return Va.n.instance.getRoomState(e).isMention}get key(){return kc.MentionsFilter}},new class{matches(e){return!!e.tags[pa.zO.LowPriority]}get key(){return kc.LowPriorityFilter}}];let Pc=function(e){return e.ListsUpdate="lists_update",e.ListsLoaded="lists_loaded",e}({});const Nc=Pc.ListsUpdate,Mc=Pc.ListsLoaded;class Dc extends $r.r{constructor(e){super(e),(0,w.A)(this,"roomSkipList",void 0),(0,w.A)(this,"msc3946ProcessDynamicPredecessor",void 0),this.msc3946ProcessDynamicPredecessor=D.A.getValue("feature_dynamic_room_predecessors"),Ms.Ay.instance.on(ya.tw,()=>{this.onActiveSpaceChanged()}),Ms.Ay.instance.on(ya.EC,()=>this.onActiveSpaceChanged())}getRooms(){var e,t;let n=null!==(e=null===(t=this.matrixClient)||void 0===t?void 0:t.getVisibleRooms(this.msc3946ProcessDynamicPredecessor))&&void 0!==e?e:[];return n=n.filter(e=>Tl.W.instance.isRoomVisible(e)),n}get isLoadingRooms(){var e;return!(null!==(e=this.roomSkipList)&&void 0!==e&&e.initialized)}getSortedRooms(){var e;return null!==(e=this.roomSkipList)&&void 0!==e&&e.initialized?Array.from(this.roomSkipList):[]}getSortedRoomsInActiveSpace(e){var t;const n=Ms.Ay.instance.activeSpace;return null!==(t=this.roomSkipList)&&void 0!==t&&t.initialized?{spaceId:n,filterKeys:e,rooms:Array.from(this.roomSkipList.getRoomsInActiveSpace(e))}:{spaceId:n,filterKeys:e,rooms:[]}}resort(e){if(!this.roomSkipList)throw new Error("Cannot resort room list before skip list is created.");if(!this.matrixClient)throw new Error("Cannot resort room list without matrix client.");if(this.roomSkipList.activeSortAlgorithm===e)return;const t=e===Ac.U.Alphabetic?new xc:new Cc(this.matrixClient.getSafeUserId());this.roomSkipList.useNewSorter(t,this.getRooms()),this.emit(Nc),D.A.setValue("RoomList.preferredSorting",null,O.p.DEVICE,e)}get activeSortAlgorithm(){var e;return null===(e=this.roomSkipList)||void 0===e?void 0:e.activeSortAlgorithm}async onReady(){var e;if(null!==(e=this.roomSkipList)&&void 0!==e&&e.initialized||!this.matrixClient)return;const t=this.getPreferredSorter(this.matrixClient.getSafeUserId());this.roomSkipList=new Sc(t,Tc),await Ms.Ay.instance.storeReadyPromise;const n=this.getRooms();this.roomSkipList.seed(n),this.emit(Mc),this.emit(Nc)}async onAction(e){var t;if(this.matrixClient&&null!==(t=this.roomSkipList)&&void 0!==t&&t.initialized)switch(e.action){case"MatrixActions.Room.receipt":if((0,Rc.A)(e.event,this.matrixClient)){const t=e.room;if(!t)return void s.vF.warn(`Own read receipt was in unknown room ${t.roomId}`);this.addRoomAndEmit(t)}break;case"MatrixActions.Room.tags":{const t=e.room;this.addRoomAndEmit(t);break}case"MatrixActions.Room.accountData":{const t=e.event_type;if(t===Ui.uk||t===Ui.HG){const t=e.room;this.addRoomAndEmit(t)}break}case"MatrixActions.Event.decrypted":{const t=e.event.getRoomId();if(!t)return;const n=this.matrixClient.getRoom(t);if(!n)return void s.vF.warn(`Event ${e.event.getId()} was decrypted in an unknown room ${t}`);this.addRoomAndEmit(n);break}case"MatrixActions.accountData":this.handleAccountDataPayload(e);break;case"MatrixActions.Room.timeline":if(!e.isLiveEvent||!e.isLiveUnfilteredRoomTimelineEvent||!e.room)return;this.addRoomAndEmit(e.room);break;case"MatrixActions.Room.myMembership":{var n;const t=(0,hc.Cs)(e.oldMembership),i=(0,hc.E3)(e.room,e.membership),s=this.matrixClient.getSafeUserId();if(null===(n=e.room.getMember(s))||void 0===n?void 0:n.isKicked())return void this.addRoomAndEmit(e.room);if((t===hc._T.Invite||t===hc._T.Join)&&i===hc._T.Leave)return this.roomSkipList.removeRoom(e.room),void this.emit(Nc);if(t!==hc._T.Join&&i===hc._T.Join){const t=e.room,n=t.client.getRoomUpgradeHistory(t.roomId,!0,this.msc3946ProcessDynamicPredecessor),i=n.slice(0,n.indexOf(t));for(const e of i)this.roomSkipList.removeRoom(e)}this.addRoomAndEmit(e.room,!0);break}case H.r.AfterForgetRoom:{const t=e.room;this.roomSkipList.removeRoom(t),this.emit(Nc);break}}}handleAccountDataPayload(e){let t=!1;switch(e.event_type){case o.EventType.Direct:{const n=e.event.getContent();for(const e of Object.keys(n)){const i=n[e];for(const e of i){const n=this.matrixClient.getRoom(e);n?(this.roomSkipList.reInsertRoom(n),t=!0):s.vF.warn(`${e} was found in DMs but the room is not in the store`)}}break}case o.EventType.PushRules:{const n=(0,Ic.Q)(e);if(!n)return;const i=n.map(e=>{var t;return null===(t=this.matrixClient)||void 0===t?void 0:t.getRoom(e)}).filter(e=>!!e);for(const e of i)this.roomSkipList.reInsertRoom(e),t=!0;break}}t&&this.emit(Nc)}getPreferredSorter(e){switch(D.A.getValue("RoomList.preferredSorting")){case Ac.U.Alphabetic:return new xc;case Ac.U.Recency:return new Cc(e);default:throw new Error("Got unknown sort preference from RoomList.preferredSorting setting")}}addRoomAndEmit(e,t=!1){if(!this.roomSkipList)throw new Error("roomSkipList hasn't been created yet!");if(t){if(!Tl.W.instance.isRoomVisible(e))return void s.vF.info(`RoomListStoreV3: Refusing to add new room ${e.roomId} because isRoomVisible returned false.`);this.roomSkipList.addNewRoom(e)}else this.roomSkipList.reInsertRoom(e);this.emit(Nc)}onActiveSpaceChanged(){this.roomSkipList&&(this.roomSkipList.calculateActiveSpaceForNodes(),this.emit(Nc))}}class Oc{static get instance(){if(!Oc.internalInstance){const e=new Dc(S.A);e.start(),Oc.internalInstance=e}return this.internalInstance}}(0,w.A)(Oc,"internalInstance",void 0),window.mxRoomListStoreV3=Oc.instance;let Fc=function(e){return e[e.Activity=Ac.U.Recency]="Activity",e[e.AToZ=Ac.U.Alphabetic]="AToZ",e}({});const Lc={[Ac.U.Alphabetic]:Fc.AToZ,[Ac.U.Recency]:Fc.Activity},Uc={[Fc.AToZ]:Ac.U.Alphabetic,[Fc.Activity]:Ac.U.Recency};function Vc(){const e=(0,de.nH)(),{activeSpace:t,title:n}=function(){const[e,t]=(0,Fi.dF)(Ms.Ay.instance,ya.tw,()=>[Ms.Ay.instance.activeSpace,Ms.Ay.instance.activeSpaceRoom]),n=(0,Fi.DY)(null!=t?t:void 0,o.RoomEvent.Name,()=>null==t?void 0:t.name),i=(0,Fi.dF)(Ms.Ay.instance,ya.EC,()=>Ms.Ay.instance.allRoomsInHome),s=null!=n?n:(0,ya.Ff)(e,i);return{activeSpace:t,title:s}}(),s=Boolean(t),r=_c(e,t),a=(0,Vt.ny)("feature_video_rooms")&&r,l=r,c=s,d=Boolean((null==t?void 0:t.getJoinRule())===o.JoinRule.Public||(null==t?void 0:t.canInvite(e.getSafeUserId()))),m=Boolean(t&&(0,Mo.Kv)(t)),{activeSortOption:u,sort:h}=function(){const[e,t]=(0,i.useState)(()=>D.A.getValue("RoomList.preferredSorting"));return{sort:e=>{const n=Uc[e];Oc.instance.resort(n),t(n)},activeSortOption:Lc[e]}}(),p=(0,i.useCallback)(e=>{S.A.fire(H.r.CreateChat),ri.A.trackInteraction("WebRoomListHeaderPlusMenuCreateChatItem",e)},[]),g=(0,i.useCallback)(e=>{vc(t),ri.A.trackInteraction("WebRoomListHeaderPlusMenuCreateRoomItem",e)},[t]),v=(0,Vt.ny)("feature_element_call_video_rooms");return{title:n,displayComposeMenu:l,displaySpaceMenu:c,canCreateRoom:r,canCreateVideoRoom:a,canInviteInSpace:d,canAccessSpaceSettings:m,createChatRoom:p,createRoom:g,createVideoRoom:(0,i.useCallback)(()=>{const e=v?o.RoomType.UnstableCall:o.RoomType.ElementVideo;t?(0,Mo.PT)(t,e):S.A.dispatch({action:H.r.CreateRoom,type:e})},[t,v]),openSpaceHome:(0,i.useCallback)(()=>{t&&S.A.dispatch({action:H.r.ViewRoom,room_id:t.roomId,metricsTrigger:void 0})},[t]),inviteInSpace:(0,i.useCallback)(()=>{t&&(0,Mo.Lo)(t)},[t]),openSpacePreferences:(0,i.useCallback)(()=>{t&&(0,Mo.Wi)(t)},[t]),openSpaceSettings:(0,i.useCallback)(()=>{t&&(0,Mo.hL)(t)},[t]),activeSortOption:u,sort:h}}var Bc=n("./node_modules/@vector-im/compound-web/dist/components/Menu/MenuTitle.js"),jc=n("./node_modules/@vector-im/compound-web/dist/components/Menu/RadioMenuItem.js");const Wc=["ref"],Hc=e=>{let{ref:t}=e,n=(0,g.A)(e,Wc);return i.createElement(zt.m,{label:(0,l._t)("room_list|room_options")},i.createElement(Sl.K,(0,Wt.A)({"aria-label":(0,l._t)("room_list|room_options")},n,{ref:t}),i.createElement(xn.A,{color:"var(--cpd-color-icon-secondary)"})))};function zc({vm:e}){const[t,n]=(0,i.useState)(!1),s=(0,i.useCallback)(()=>{e.sort(Fc.Activity)},[e]),o=(0,i.useCallback)(()=>{e.sort(Fc.AToZ)},[e]);return i.createElement(bl.W,{open:t,onOpenChange:n,title:(0,l._t)("room_list|room_options"),showTitle:!1,align:"start",trigger:i.createElement(Hc,null)},i.createElement(Bc.e,{title:(0,l._t)("room_list|sort")}),i.createElement(jc.E,{label:(0,l._t)("room_list|sort_type|activity"),checked:e.activeSortOption===Fc.Activity,onSelect:s}),i.createElement(jc.E,{label:(0,l._t)("room_list|sort_type|atoz"),checked:e.activeSortOption===Fc.AToZ,onSelect:o}))}function Kc(){const e=Vc();return i.createElement(we.s,{as:"header",className:"mx_RoomListHeaderView","aria-label":(0,l._t)("room|context_menu|title"),justify:"space-between",align:"center"},i.createElement(we.s,{className:"mx_RoomListHeaderView_title",align:"center",gap:"var(--cpd-space-1x)"},i.createElement("h1",{title:e.title},e.title),e.displaySpaceMenu&&i.createElement(Gc,{vm:e})),i.createElement(we.s,{align:"center",gap:"var(--cpd-space-2x)"},i.createElement(rl,{feature:"newRoomList_sort",header:(0,l._t)("room_list|release_announcement|sort|title"),description:(0,l._t)("room_list|release_announcement|sort|description"),closeLabel:(0,l._t)("room_list|release_announcement|next"),placement:"bottom"},i.createElement("div",{className:"mx_RoomListHeaderView_ReleaseAnnouncementAnchor"},i.createElement(zc,{vm:e}))),i.createElement(rl,{feature:"newRoomList_intro",header:(0,l._t)("room_list|release_announcement|intro|title"),description:(0,l._t)("room_list|release_announcement|intro|description"),closeLabel:(0,l._t)("room_list|release_announcement|next")},i.createElement("div",{className:"mx_RoomListHeaderView_ReleaseAnnouncementAnchor"},e.displayComposeMenu?i.createElement(Jc,{vm:e}):i.createElement(Sl.K,{"aria-label":(0,l._t)("action|start_chat"),onClick:t=>e.createChatRoom(t.nativeEvent)},i.createElement(sc.A,{color:"var(--cpd-color-icon-secondary)"}))))))}function Gc({vm:e}){const[t,n]=(0,i.useState)(!1);return i.createElement(bl.W,{open:t,onOpenChange:n,title:e.title,side:"right",align:"start",trigger:i.createElement(Sl.K,{className:"mx_SpaceMenu_button","aria-label":(0,l._t)("room_list|open_space_menu"),size:"20px"},i.createElement(rc.A,{color:"var(--cpd-color-icon-secondary)"}))},i.createElement(wl.D,{Icon:lc.A,label:(0,l._t)("room_list|space_menu|home"),onSelect:e.openSpaceHome,hideChevron:!0}),e.canInviteInSpace&&i.createElement(wl.D,{Icon:oc.A,label:(0,l._t)("action|invite"),onSelect:e.inviteInSpace,hideChevron:!0}),i.createElement(wl.D,{Icon:cc.A,label:(0,l._t)("common|preferences"),onSelect:e.openSpacePreferences,hideChevron:!0}),e.canAccessSpaceSettings&&i.createElement(wl.D,{Icon:dc.A,label:(0,l._t)("room_list|space_menu|space_settings"),onSelect:e.openSpaceSettings,hideChevron:!0}))}function Jc({vm:e}){const[t,n]=(0,i.useState)(!1);return i.createElement(bl.W,{open:t,onOpenChange:n,showTitle:!1,title:(0,l._t)("action|open_menu"),side:"right",align:"start",trigger:i.createElement(Sl.K,{"aria-label":(0,l._t)("action|add")},i.createElement(sc.A,{color:"var(--cpd-color-icon-secondary)"}))},i.createElement(wl.D,{Icon:uc.A,label:(0,l._t)("action|start_chat"),onSelect:e.createChatRoom,hideChevron:!0}),e.canCreateRoom&&i.createElement(wl.D,{Icon:ac.A,label:(0,l._t)("action|new_room"),onSelect:e.createRoom,hideChevron:!0}),e.canCreateVideoRoom&&i.createElement(wl.D,{Icon:mc.A,label:(0,l._t)("action|new_video_room"),onSelect:e.createVideoRoom,hideChevron:!0}))}const $c=new Map([[kc.UnreadFilter,(0,l.AO)("room_list|filters|unread")],[kc.PeopleFilter,(0,l.AO)("room_list|filters|people")],[kc.RoomsFilter,(0,l.AO)("room_list|filters|rooms")],[kc.FavouriteFilter,(0,l.AO)("room_list|filters|favourite")],[kc.MentionsFilter,(0,l.AO)("room_list|filters|mentions")],[kc.InvitesFilter,(0,l.AO)("room_list|filters|invites")],[kc.LowPriorityFilter,(0,l.AO)("room_list|filters|low_priority")]]);function qc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function Yc(e){for(var t=1;te.roomId===t);return-1===n?void 0:n}function Qc(){const e=(0,de.nH)(),{isLoadingRooms:t,primaryFilters:n,activePrimaryFilter:s,roomsResult:o}=function(){const[e,t]=(0,i.useState)(),[n,s]=(0,i.useState)(()=>Oc.instance.getSortedRoomsInActiveSpace()),[o,r]=(0,i.useState)(()=>Oc.instance.isLoadingRooms),a=(0,i.useCallback)((e=[])=>{const t=Oc.instance.getSortedRoomsInActiveSpace(e);s(t)},[]),c=e=>e.filter(e=>void 0!==e),d=(0,i.useCallback)(()=>c([e]),[e]);(0,i.useEffect)(()=>{const e=d();a(e)},[d,a]),(0,Fi.ml)(Oc.instance,Nc,()=>{const e=d();a(e)}),(0,Fi.ml)(Oc.instance,Mc,()=>{r(!1)});const m=(0,i.useMemo)(()=>{const n=(n,i)=>({toggle:()=>{t(e=>{const t=e===n?void 0:n;return a(c([t])),t})},active:e===n,name:i,key:n}),i=[];for(const[e,t]of $c.entries())i.push(n(e,(0,l._t)(t)));return i},[e,a]),u=(0,i.useMemo)(()=>m.find(e=>e.active),[m]);return{isLoadingRooms:o,primaryFilters:m,activePrimaryFilter:u,roomsResult:n}}(),{activeIndex:r,roomsResult:a}=function(e){const[t,n]=(0,i.useState)({activeIndex:Xc(e.rooms,Do.M.instance.roomViewStore.getRoomId()),roomsResult:e}),s=(0,i.useRef)(Ms.Ay.instance.activeSpace),o=(0,i.useCallback)((t,i=!1)=>{n(n=>{const s=null!=t?t:Do.M.instance.roomViewStore.getRoomId(),o=Xc(e.rooms,s),r=n.activeIndex,{newIndex:a,newRooms:l}=function(e,t,n,i){const s={newIndex:n,newRooms:e};if(i)return s;if(void 0===n||void 0===t)return s;if(n===t)return s;if(t>e.length-1)return s;const o=[...e],[r]=o.splice(n,1);return o.splice(t,0,r),{newIndex:t,newRooms:o}}(e.rooms,r,o,i);return{activeIndex:a,roomsResult:Yc(Yc({},e),{},{rooms:l})}})},[e]);return(0,mo.F)(S.A,e=>{e.action===H.r.ActiveRoomChanged&&o(e.newRoomId,!0)}),(0,i.useEffect)(()=>{let t=null,n=!1;s.current!==e.spaceId&&(t=Ms.Ay.instance.getLastSelectedRoomIdForSpace(e.spaceId),n=!0,s.current=e.spaceId),o(t,n)},[e,o]),t}(o);!function(e){(0,mo.F)(S.A,t=>{if(t.action!==H.r.ViewRoomDelta)return;const n=Do.M.instance.roomViewStore.getRoomId();if(!n)return;const{delta:i,unread:s}=t,o=s?e.filter(e=>{const t=Va.n.instance.getRoomState(e);return e.roomId===n||t.isUnread}):e,r=o.findIndex(e=>e.roomId===n);if(-1===r)return;const[a]=o.slice((r+i)%o.length);a&&S.A.dispatch({action:H.r.ViewRoom,room_id:a.roomId,show_room_tile:!0,metricsTrigger:"WebKeyboardShortcut",metricsViaKeyboard:!0})})}(a.rooms);const c=(0,Fi.dF)(Ms.Ay.instance,ya.tw,()=>Ms.Ay.instance.activeSpaceRoom),d=_c(e,c),m=(0,i.useCallback)(()=>S.A.fire(H.r.CreateChat),[]);return{isLoadingRooms:t,roomsResult:a,canCreateRoom:d,createRoom:(0,i.useCallback)(()=>vc(c),[c]),createChatRoom:m,primaryFilters:n,activePrimaryFilter:s,activeIndex:r}}var Zc=n("./src/hooks/useCall.ts"),ed=n("./src/stores/notifications/NotificationState.ts");function td(e){const t=(0,de.nH)(),n=(0,Fi.dF)(e,o.RoomEvent.Tags,()=>e.tags),s=Boolean(n[pa.zO.Archived]),r=(0,Fi.dF)(e,o.RoomEvent.Name,()=>e.name),a=(0,i.useMemo)(()=>Va.n.instance.getRoomState(e),[e]),[l,c]=(0,i.useState)(id(r,a)),[{isBold:d,invited:m,hasVisibleNotification:u},h]=(0,i.useState)(nd(a));(0,i.useEffect)(()=>{c(id(r,a))},[r,a]),(0,Fi.YK)(a,ed.ce.Update,()=>{c(id(r,a)),h(nd(a))}),(0,i.useEffect)(()=>{h(nd(a))},[a]);const p=!m&&pc(e),g=!m&&(p||gc(e,t.isGuest(),s)),v=function(e){const{shouldShowMessagePreview:t}=function(){const e=(0,Vt.ti)("RoomList.showMessagePreview");return{toggleMessagePreview:(0,i.useCallback)(()=>{const t=!e;D.A.setValue("RoomList.showMessagePreview",null,O.p.DEVICE,t)},[e]),shouldShowMessagePreview:e}}(),[n,s]=(0,i.useState)(void 0),o=(0,i.useCallback)(async()=>{if(!t)return void s(void 0);const n=Boolean(x.A.shared().getUserIdForRoomId(e.roomId)),i=await Vi.X.instance.getPreviewForRoom(e,n?pa.zO.DM:pa.zO.Untagged);s(null==i?void 0:i.text)},[e,t]);return(0,Fi.ml)(Vi.X.instance,Vi.X.getPreviewChangedEventName(e),()=>{o()}),(0,i.useEffect)(()=>{o()},[o]),n}(e),_=e.isElementVideoRoom()||e.isCallRoom(),f=(0,Zc.Gc)(e.roomId),E=(0,Zc.jd)(f),y=(0,Zc.q0)(f)>0,b=f?E:null,w=u||y,A=(0,i.useCallback)(()=>{S.A.dispatch({action:H.r.ViewRoom,room_id:e.roomId,metricsTrigger:"RoomList"})},[e]);return{name:r,notificationState:a,showContextMenu:p,showHoverMenu:g,openRoom:A,a11yLabel:l,isBold:d,isVideoRoom:_,callConnectionState:b,hasParticipantInCall:y,messagePreview:v,showNotificationDecoration:w}}function nd(e){const t=e.invited;return{computeA11yLabel:t=>id(t,e),isBold:e.hasAnyNotificationOrActivity,invited:t,hasVisibleNotification:e.hasAnyNotificationOrActivity||e.muted}}function id(e,t){return t.isUnsentMessage?(0,l._t)("a11y|room_messsage_not_sent",{roomName:e}):t.invited?(0,l._t)("a11y|room_n_unread_invite",{roomName:e}):t.isMention?(0,l._t)("a11y|room_n_unread_messages_mentions",{roomName:e,count:t.count}):t.hasUnreadCount?(0,l._t)("a11y|room_n_unread_messages",{roomName:e,count:t.count}):(0,l._t)("room_list|room|open_room",{roomName:e})}var sd=n("./node_modules/@vector-im/compound-web/dist/components/Menu/ToggleMenuItem.js"),od=n("./node_modules/@vector-im/compound-web/dist/components/Separator/Separator.js"),rd=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/mark-as-read.js"),ad=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/mark-as-unread.js"),ld=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/favourite.js"),cd=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/arrow-down.js"),dd=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/leave.js"),md=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/notifications-solid.js"),ud=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/notifications-off-solid.js"),hd=n("./src/actions/RoomListActions.ts");function pd(e,t){if(t===pa.zO.Favourite||t===pa.zO.LowPriority){const n=t===pa.zO.Favourite?pa.zO.LowPriority:pa.zO.Favourite,i=Yl.Ay.instance.getTagsForRoom(e).includes(t),s=i?t:n,o=i?null:t;S.A.dispatch(hd.A.tagRoom(e.client,e,s,o,0))}else s.vF.warn(`Unexpected tag ${t} applied to ${e.roomId}`)}var gd=n("./src/RoomNotifs.ts"),vd=n("./src/hooks/useRoomNotificationState.ts");function _d(e){const t=(0,de.nH)(),n=(0,Fi.dF)(e,o.RoomEvent.Tags,()=>e.tags),{level:s}=(0,Li.X)(e),r=Boolean(x.A.shared().getUserIdForRoomId(e.roomId)),a=Boolean(n[pa.zO.Favourite]),l=Boolean(n[pa.zO.LowPriority]),c=Boolean(n[pa.zO.Archived]),d=pc(e),m=gc(e,t.isGuest(),c),u=s>Na.S.None,h=!u&&!c,p=e.canInvite(t.getUserId())&&!r&&(0,wa.g)(gt.C.InviteUsers),g=!r,[v,_]=(0,vd.I)(e);return{showMoreOptionsMenu:d,showNotificationMenu:m,isFavourite:a,isLowPriority:l,canInvite:p,canCopyRoomLink:g,canMarkAsRead:u,canMarkAsUnread:h,isNotificationAllMessage:v===gd.dC.AllMessages,isNotificationAllMessageLoud:v===gd.dC.AllMessagesLoud,isNotificationMentionOnly:v===gd.dC.MentionsOnly,isNotificationMute:v===gd.dC.Mute,markAsRead:(0,i.useCallback)(async n=>{await(0,Ui.G9)(e,t),ri.A.trackInteraction("WebRoomListRoomTileContextMenuMarkRead",n)},[e,t]),markAsUnread:(0,i.useCallback)(async n=>{await(0,Ui.bR)(e,t,!0),ri.A.trackInteraction("WebRoomListRoomTileContextMenuMarkUnread",n)},[e,t]),toggleFavorite:(0,i.useCallback)(t=>{pd(e,pa.zO.Favourite),ri.A.trackInteraction("WebRoomListRoomTileContextMenuFavouriteToggle",t)},[e]),toggleLowPriority:(0,i.useCallback)(()=>pd(e,pa.zO.LowPriority),[e]),invite:(0,i.useCallback)(t=>{S.A.dispatch({action:"view_invite",roomId:e.roomId}),ri.A.trackInteraction("WebRoomListRoomTileContextMenuInviteItem",t)},[e]),copyRoomLink:(0,i.useCallback)(t=>{S.A.dispatch({action:"copy_room",room_id:e.roomId}),ri.A.trackInteraction("WebRoomListRoomTileContextMenuFavouriteToggle",t)},[e]),leaveRoom:(0,i.useCallback)(t=>{S.A.dispatch({action:c?"forget_room":"leave_room",room_id:e.roomId}),ri.A.trackInteraction("WebRoomListRoomTileContextMenuLeaveItem",t)},[e,c]),setRoomNotifState:_}}const fd=["isRoomMuted","ref"];function Ed({room:e,setMenuOpen:t}){const n=_d(e);return i.createElement(we.s,{className:"mx_RoomListItemMenuView",align:"center",gap:"var(--cpd-space-1x)"},n.showMoreOptionsMenu&&i.createElement(yd,{setMenuOpen:t,vm:n}),n.showNotificationMenu&&i.createElement(Sd,{setMenuOpen:t,vm:n}))}function yd({vm:e,setMenuOpen:t}){const[n,s]=(0,i.useState)(!1);return i.createElement(bl.W,{open:n,onOpenChange:e=>{s(e),t(e)},title:(0,l._t)("room_list|room|more_options"),showTitle:!1,align:"start",trigger:i.createElement(wd,{size:"24px"})},i.createElement(bd,{vm:e}))}function bd({vm:e}){return i.createElement("div",{onKeyDown:e=>e.stopPropagation()},e.canMarkAsRead&&i.createElement(wl.D,{Icon:rd.A,label:(0,l._t)("room_list|more_options|mark_read"),onSelect:e.markAsRead,onClick:e=>e.stopPropagation(),hideChevron:!0}),e.canMarkAsUnread&&i.createElement(wl.D,{Icon:ad.A,label:(0,l._t)("room_list|more_options|mark_unread"),onSelect:e.markAsUnread,onClick:e=>e.stopPropagation(),hideChevron:!0}),i.createElement(sd.X,{checked:e.isFavourite,Icon:ld.A,label:(0,l._t)("room_list|more_options|favourited"),onSelect:e.toggleFavorite,onClick:e=>e.stopPropagation()}),i.createElement(sd.X,{checked:e.isLowPriority,Icon:cd.A,label:(0,l._t)("room_list|more_options|low_priority"),onSelect:e.toggleLowPriority,onClick:e=>e.stopPropagation()}),e.canInvite&&i.createElement(wl.D,{Icon:oc.A,label:(0,l._t)("action|invite"),onSelect:e.invite,onClick:e=>e.stopPropagation(),hideChevron:!0}),e.canCopyRoomLink&&i.createElement(wl.D,{Icon:cs.A,label:(0,l._t)("room_list|more_options|copy_link"),onSelect:e.copyRoomLink,onClick:e=>e.stopPropagation(),hideChevron:!0}),i.createElement(od.w,null),i.createElement(wl.D,{kind:"critical",Icon:dd.A,label:(0,l._t)("room_list|more_options|leave_room"),onSelect:e.leaveRoom,onClick:e=>e.stopPropagation(),hideChevron:!0}))}const wd=function(e){return i.createElement(zt.m,{label:(0,l._t)("room_list|room|more_options")},i.createElement(Sl.K,(0,Wt.A)({"aria-label":(0,l._t)("room_list|room|more_options")},e),i.createElement(xn.A,null)))};function Sd({vm:e,setMenuOpen:t}){const[n,s]=(0,i.useState)(!1),o=i.createElement(pe.A,{width:"24px",height:"24px",color:"var(--cpd-color-icon-primary)"});return i.createElement("div",{onKeyDown:e=>e.stopPropagation()},i.createElement(bl.W,{open:n,onOpenChange:e=>{s(e),t(e)},title:(0,l._t)("room_list|notification_options"),showTitle:!1,align:"start",trigger:i.createElement(Ad,{isRoomMuted:e.isNotificationMute,size:"24px"})},i.createElement(wl.D,{"aria-selected":e.isNotificationAllMessage,hideChevron:!0,label:(0,l._t)("notifications|default_settings"),onSelect:()=>e.setRoomNotifState(gd.dC.AllMessages),onClick:e=>e.stopPropagation()},e.isNotificationAllMessage&&o),i.createElement(wl.D,{"aria-selected":e.isNotificationAllMessageLoud,hideChevron:!0,label:(0,l._t)("notifications|all_messages"),onSelect:()=>e.setRoomNotifState(gd.dC.AllMessagesLoud),onClick:e=>e.stopPropagation()},e.isNotificationAllMessageLoud&&o),i.createElement(wl.D,{"aria-selected":e.isNotificationMentionOnly,hideChevron:!0,label:(0,l._t)("notifications|mentions_keywords"),onSelect:()=>e.setRoomNotifState(gd.dC.MentionsOnly),onClick:e=>e.stopPropagation()},e.isNotificationMentionOnly&&o),i.createElement(wl.D,{"aria-selected":e.isNotificationMute,hideChevron:!0,label:(0,l._t)("notifications|mute_room"),onSelect:()=>e.setRoomNotifState(gd.dC.Mute),onClick:e=>e.stopPropagation()},e.isNotificationMute&&o)))}const Ad=function(e){let{isRoomMuted:t,ref:n}=e,s=(0,g.A)(e,fd);return i.createElement(zt.m,{label:(0,l._t)("room_list|notification_options")},i.createElement(Sl.K,(0,Wt.A)({"aria-label":(0,l._t)("room_list|notification_options")},s,{ref:n}),t?i.createElement(ud.A,null):i.createElement(md.A,null)))};var Cd=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/mention.js"),xd=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/email-solid.js"),Rd=n("./node_modules/@vector-im/compound-web/dist/components/ActivityMarker/UnreadCounter.js"),kd=n("./node_modules/@vector-im/compound-web/dist/components/ActivityMarker/Unread.js");const Id=["notificationState","hasVideoCall"];function Td(e){let{notificationState:t,hasVideoCall:n}=e,s=(0,g.A)(e,Id);const{hasAnyNotificationOrActivity:o,isUnsentMessage:r,invited:a,isMention:l,isActivityNotification:c,isNotification:d,count:m,muted:u}=(0,Fi.DY)(t,ed.ce.Update,()=>({hasAnyNotificationOrActivity:t.hasAnyNotificationOrActivity,isUnsentMessage:t.isUnsentMessage,invited:t.invited,isMention:t.isMention,isActivityNotification:t.isActivityNotification,isNotification:t.isNotification,count:t.count,muted:t.muted}));return o||u||n?i.createElement(we.s,(0,Wt.A)({align:"center",justify:"center",gap:"var(--cpd-space-1x)"},s),r&&i.createElement(ve.A,{width:"20px",height:"20px",fill:"var(--cpd-color-icon-critical-primary)"}),n&&i.createElement(Ha.A,{width:"20px",height:"20px",fill:"var(--cpd-color-icon-accent-primary)"}),a&&i.createElement(xd.A,{width:"20px",height:"20px",fill:"var(--cpd-color-icon-accent-primary)"}),l&&i.createElement(Cd.A,{width:"20px",height:"20px",fill:"var(--cpd-color-icon-accent-primary)"}),(l||d)&&i.createElement(Rd.A,{count:m||null}),c&&i.createElement(kd.I,null),u&&i.createElement(ud.A,{width:"20px",height:"20px",fill:"var(--cpd-color-icon-tertiary)"})):null}var Pd=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/public.js"),Nd=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/presence-solid-8x8.js"),Md=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/presence-outline-8x8.js"),Dd=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/presence-strikethrough-8x8.js"),Od=n("./src/components/views/avatars/WithPresenceIndicator.tsx");let Fd=function(e){return e.LowPriority="LowPriority",e.VideoRoom="VideoRoom",e.PublicRoom="PublicRoom",e.Presence="Presence",e}({});function Ld(e){const t=e.isElementVideoRoom()||e.isCallRoom(),n=(0,Od.rT)(e),s=(0,Od.xQ)(e,n),r=function(e){const[t,n]=(0,i.useState)(Ud(e));return(0,Fi.YK)(e,o.RoomEvent.Timeline,(t,i)=>{e.roomId===i.roomId&&(t.getType()!==o.EventType.RoomJoinRules&&t.getType()!==o.EventType.RoomMember||n(Ud(i)))}),(0,i.useEffect)(()=>{n(Ud(e))},[e]),t}(e);let a;return!!e.tags[pa.zO.LowPriority]?a=Fd.LowPriority:t?a=Fd.VideoRoom:r?a=Fd.PublicRoom:s&&(a=Fd.Presence),{badgeDecoration:a,presence:s}}function Ud(e){return e.getJoinRule()===o.JoinRule.Public}function Vd({room:e}){const t=Ld(e);if(!t.badgeDecoration)return i.createElement(En.A,{size:"32px",room:e});const n=function(e,t){if(e===Fd.LowPriority)return i.createElement(cd.A,{width:"16px",height:"16px",className:"mx_RoomAvatarView_icon",color:"var(--cpd-color-icon-tertiary)","aria-label":Bd(e,t)});if(e===Fd.VideoRoom)return i.createElement(Ha.A,{width:"16px",height:"16px",className:"mx_RoomAvatarView_icon",color:"var(--cpd-color-icon-tertiary)","aria-label":Bd(e,t)});if(e===Fd.PublicRoom)return i.createElement(Pd.A,{width:"16px",height:"16px",className:"mx_RoomAvatarView_icon",color:"var(--cpd-color-icon-info-primary)","aria-label":Bd(e,t)});if(e===Fd.Presence)return function(e){switch(e){case Od.Cq.Online:return i.createElement(Nd.A,{width:"8px",height:"8px",className:"mx_RoomAvatarView_PresenceDecoration",color:"var(--cpd-color-icon-accent-primary)","aria-label":jd(e)});case Od.Cq.Away:return i.createElement(Nd.A,{width:"8px",height:"8px",className:"mx_RoomAvatarView_PresenceDecoration",color:"var(--cpd-color-icon-quaternary)","aria-label":jd(e)});case Od.Cq.Offline:return i.createElement(Md.A,{width:"8px",height:"8px",className:"mx_RoomAvatarView_PresenceDecoration",color:"var(--cpd-color-icon-tertiary)","aria-label":jd(e)});case Od.Cq.Busy:return i.createElement(Dd.A,{width:"8px",height:"8px",className:"mx_RoomAvatarView_PresenceDecoration",color:"var(--cpd-color-icon-tertiary)","aria-label":jd(e)})}}(t)}(t.badgeDecoration,t.presence),s=Bd(t.badgeDecoration,t.presence),o=t.badgeDecoration===Fd.Presence?"mx_RoomAvatarView_RoomAvatar_presence":"mx_RoomAvatarView_RoomAvatar_icon";return i.createElement("div",{className:"mx_RoomAvatarView"},i.createElement(En.A,{className:Lt()("mx_RoomAvatarView_RoomAvatar",o),size:"32px",room:e}),s?i.createElement(zt.m,{label:s},n):n)}function Bd(e,t){switch(e){case Fd.LowPriority:return(0,l._t)("room|room_is_low_priority");case Fd.VideoRoom:return(0,l._t)("room|video_room");case Fd.PublicRoom:return(0,l._t)("room|header|room_is_public");case Fd.Presence:return jd(t)}}function jd(e){switch(e){case Od.Cq.Online:return(0,l._t)("presence|online");case Od.Cq.Away:return(0,l._t)("presence|away");case Od.Cq.Offline:return(0,l._t)("presence|offline");case Od.Cq.Busy:return(0,l._t)("presence|busy")}}var Wd=n("./node_modules/@vector-im/compound-web/dist/components/Menu/ContextMenu.js");function Hd({room:e,setMenuOpen:t,children:n}){const s=_d(e);return i.createElement(Wd.t,{title:(0,l._t)("room_list|room|more_options"),showTitle:!1,hasAccessibleAlternative:!0,trigger:n,onOpenChange:t},i.createElement(bd,{vm:s}))}const zd=["room","isSelected","isFocused","onFocus","roomIndex","roomCount","listIsScrolling"],Kd=(0,i.memo)(function(e){let{room:t,isSelected:n,isFocused:s,onFocus:o,roomIndex:r,roomCount:a,listIsScrolling:l}=e,c=(0,g.A)(e,zd);const d=(0,i.useRef)(null),m=td(t),[u,h]=(0,i.useState)(!1),[p,v]=(0,i.useState)(!1),_=p||s||u,f=_&&m.showHoverMenu,E=(0,i.useCallback)(()=>{setTimeout(()=>v(!1),10)},[]);(0,i.useEffect)(()=>{var e;s&&(null===(e=d.current)||void 0===e||e.focus({preventScroll:!0,focusVisible:!0}))},[s]);const y=i.createElement(we.s,(0,Wt.A)({as:"button",ref:d,className:Lt()("mx_RoomListItemView",{mx_RoomListItemView_hover:_,mx_RoomListItemView_menu_open:f,mx_RoomListItemView_selected:n,mx_RoomListItemView_bold:m.isBold}),gap:"var(--cpd-space-3x)",align:"center",type:"button",role:"option","aria-posinset":r+1,"aria-setsize":a,"aria-selected":n,"aria-label":m.a11yLabel,onClick:()=>m.openRoom(),onFocus:o,onMouseOver:()=>h(!0),onMouseOut:()=>h(!1),onBlur:()=>h(!1),tabIndex:s?0:-1},c),i.createElement(Vd,{room:t}),i.createElement(we.s,{className:"mx_RoomListItemView_content",gap:"var(--cpd-space-2x)",align:"center",justify:"space-between"},i.createElement("div",{className:"mx_RoomListItemView_text"},i.createElement("div",{className:"mx_RoomListItemView_roomName",title:m.name},m.name),m.messagePreview&&i.createElement("div",{className:"mx_RoomListItemView_messagePreview",title:m.messagePreview},m.messagePreview)),f?i.createElement(Ed,{room:t,setMenuOpen:e=>e?v(!0):E()}):i.createElement(i.Fragment,null,m.showNotificationDecoration&&i.createElement(Td,{notificationState:m.notificationState,"aria-hidden":!0,hasVideoCall:m.hasParticipantInCall}))));return!m.showContextMenu||l?y:i.createElement(Hd,{room:t,setMenuOpen:e=>{e?setTimeout(()=>v(!0),0):E()}},y)});var Gd=n("./node_modules/react-virtuoso/dist/index.mjs");const Jd=["items","getItemComponent","isItemFocusable","getItemKey","context","onKeyDown"];function $d(e){const{items:t,getItemComponent:n,isItemFocusable:s,getItemKey:o,context:r,onKeyDown:a}=e,l=(0,g.A)(e,Jd),c=(0,i.useRef)(null),d=(0,i.useRef)(null),[m,u]=(0,i.useState)(e.items[0]?o(e.items[0]):void 0),[h,p]=(0,i.useState)(void 0),[v,_]=(0,i.useState)(new Map),f=(0,i.useRef)(!1),[E,y]=(0,i.useState)(!1);(0,i.useEffect)(()=>{const e=new Map;t.forEach((t,n)=>{const i=o(t);e.set(i,n)}),_(e)},[t,o]),(0,i.useEffect)(()=>{!t.length||m&&void 0!==v.get(m)||u(o(t[0]))},[t,o,m,v]);const b=(0,i.useCallback)((e,n)=>{const i=Math.max(0,Math.min(e,t.length-1));if(!f.current&&t[i]){var s;const e=o(t[i]);f.current=!0,null===(s=c.current)||void 0===s||s.scrollIntoView({index:i,align:n,behavior:"auto",done:()=>{u(e),f.current=!1}})}},[t,o]),w=(0,i.useCallback)((e,n,i)=>{const o=t.length;let r;for(let i=e;n?i=0;i+=n?1:-1)if(s(t[i])){r=i;break}void 0!==r&&b(r,i)},[b,t,s]),S=(0,i.useCallback)(e=>{const n=m?v.get(m):void 0;let i=!1;if(e&&!(0,ii.fg)(e)){if(e.code===ii.Uz.ARROW_UP&&void 0!==n)w(n-1,!1),i=!0;else if(e.code===ii.Uz.ARROW_DOWN&&void 0!==n)w(n+1,!0),i=!0;else if(e.code===ii.Uz.HOME)b(0),i=!0;else if(e.code===ii.Uz.END)b(t.length-1),i=!0;else if(e.code===ii.Uz.PAGE_DOWN&&h&&void 0!==n){const e=h.endIndex-h.startIndex;w(Math.min(n+e,t.length-1),!0,"start"),i=!0}else if(e.code===ii.Uz.PAGE_UP&&h&&void 0!==n){const e=h.endIndex-h.startIndex;w(Math.max(n-e,0),!1,"start"),i=!0}i?(e.stopPropagation(),e.preventDefault()):null==a||a(e)}else null==a||a(e)},[b,w,m,v,h,t,a]),A=(0,i.useCallback)(e=>{d.current=e},[]),C=(0,i.useCallback)((e,t,i)=>n(e,t,i,e=>{const n=o(t);y(!0),u(n),e.stopPropagation()}),[n,o]),x=(0,i.useCallback)(e=>{if((null==e?void 0:e.currentTarget)!==d.current||"string"!=typeof m)return;y(!0);const t=v.get(m);void 0!==t&&h&&(th.endIndex)&&b(t),null==e||e.stopPropagation(),null==e||e.preventDefault()},[v,h,b,m]),R=(0,i.useCallback)(e=>{e.currentTarget.contains(e.relatedTarget)||y(!1)},[]),k={tabIndexKey:m,focused:E,context:e.context||{}};return i.createElement(Gd.aY,(0,Wt.A)({ref:c,scrollerRef:A,onKeyDown:S,context:k,rangeChanged:p,overscan:e.overscan||0,data:e.items,onFocus:x,onBlur:R,itemContent:C},l))}function qd({vm:{roomsResult:e,activeIndex:t}}){const n=(0,i.useRef)(void 0),s=(0,i.useRef)(void 0),o=e.rooms.length,[r,a]=(0,i.useState)(!1),c=(0,i.useCallback)((e,n,s,a)=>{const l=n.roomId,c=l===s.tabIndexKey,d=c&&s.focused,m=t===e;return i.createElement(Kd,{room:n,key:l,isSelected:m,isFocused:d,tabIndex:c?0:-1,roomIndex:e,roomCount:o,onFocus:a,listIsScrolling:r})},[t,o,r]),d=(0,i.useCallback)(e=>e.roomId,[]),m=(0,i.useCallback)(e=>{const{spaceId:i,filterKeys:o}=e.context.context,r=n.current!==i||!(0,Kt.isEqual)(s.current,o);return s.current=o,n.current=i,!!r&&{align:"start",index:t||0,behavior:"auto"}},[t]),u=(0,i.useCallback)(e=>{const t=(0,Us.zM)().getNavigationAction(e);if(t===si.bY.NextLandmark||t===si.bY.PreviousLandmark)return Dl.r.findAndFocusNextLandmark(Dl.H.ROOM_LIST,t===si.bY.PreviousLandmark),e.stopPropagation(),void e.preventDefault()},[]);return i.createElement($d,{context:{spaceId:e.spaceId,filterKeys:e.filterKeys},scrollIntoViewOnChange:m,initialTopMostItemIndex:t,role:"listbox","aria-label":(0,l._t)("room_list|list_title"),fixedItemHeight:48,items:e.rooms,getItemComponent:c,getItemKey:d,isItemFocusable:()=>!0,onKeyDown:u,isScrolling:a,increaseViewportBy:{bottom:1200,top:1200}})}function Yd({vm:e}){if(!e.activePrimaryFilter)return i.createElement(Qd,{vm:e});switch(e.activePrimaryFilter.key){case kc.FavouriteFilter:return i.createElement(Xd,{title:(0,l._t)("room_list|empty|no_favourites"),description:(0,l._t)("room_list|empty|no_favourites_description")});case kc.PeopleFilter:return i.createElement(Xd,{title:(0,l._t)("room_list|empty|no_people"),description:(0,l._t)("room_list|empty|no_people_description")});case kc.RoomsFilter:return i.createElement(Xd,{title:(0,l._t)("room_list|empty|no_rooms"),description:(0,l._t)("room_list|empty|no_rooms_description")});case kc.UnreadFilter:return i.createElement(Zd,{title:(0,l._t)("room_list|empty|no_unread"),action:(0,l._t)("room_list|empty|show_chats"),filter:e.activePrimaryFilter});case kc.InvitesFilter:return i.createElement(Zd,{title:(0,l._t)("room_list|empty|no_invites"),action:(0,l._t)("room_list|empty|show_activity"),filter:e.activePrimaryFilter});case kc.MentionsFilter:return i.createElement(Zd,{title:(0,l._t)("room_list|empty|no_mentions"),action:(0,l._t)("room_list|empty|show_activity"),filter:e.activePrimaryFilter});case kc.LowPriorityFilter:return i.createElement(Zd,{title:(0,l._t)("room_list|empty|no_lowpriority"),action:(0,l._t)("room_list|empty|show_activity"),filter:e.activePrimaryFilter});default:return}}function Xd({title:e,description:t,children:n}){return i.createElement(we.s,{className:"mx_EmptyRoomList_GenericPlaceholder",direction:"column",align:"stretch",justify:"center",gap:"var(--cpd-space-2x)"},i.createElement("span",{className:"mx_EmptyRoomList_GenericPlaceholder_title"},e),t&&i.createElement("span",{className:"mx_EmptyRoomList_GenericPlaceholder_description"},t),n)}function Qd({vm:e}){return i.createElement(Xd,{title:(0,l._t)("room_list|empty|no_chats"),description:e.canCreateRoom?(0,l._t)("room_list|empty|no_chats_description"):(0,l._t)("room_list|empty|no_chats_description_no_room_rights")},i.createElement(we.s,{className:"mx_EmptyRoomList_DefaultPlaceholder",align:"center",justify:"center",direction:"column",gap:"var(--cpd-space-4x)"},i.createElement(Y.$,{size:"sm",kind:"secondary",Icon:uc.A,onClick:e.createChatRoom},(0,l._t)("action|start_chat")),e.canCreateRoom&&i.createElement(Y.$,{size:"sm",kind:"secondary",Icon:ac.A,onClick:e.createRoom},(0,l._t)("action|new_room"))))}function Zd({filter:e,title:t,action:n}){return i.createElement(Xd,{title:t},i.createElement(Y.$,{kind:"tertiary",onClick:e.toggle},n))}var em=n("./node_modules/@vector-im/compound-web/dist/components/ChatFilter/ChatFilter.js");function tm({vm:e}){const t=(0,i.useId)(),[n,s]=(0,i.useState)(!1),{ref:o,isWrapping:r,wrappingIndex:a}=function(e){const t=(0,i.useRef)(null),[n,s]=(0,i.useState)(!1),[o,r]=(0,i.useState)(-1);return(0,i.useEffect)(()=>{if(!t.current)return;const n=t=>{let n=!1;Array.from(t.children).forEach((t,i)=>{const s=t,o="mx_RoomListPrimaryFilters_wrapping";if(s.setAttribute("aria-hidden","false"),s.classList.remove(o),e)return;const a=s.previousElementSibling;a&&s.offsetLeft<=a.offsetLeft&&(n||r(i),n=!0),s.classList.toggle(o,n),s.setAttribute("aria-hidden",n.toString())}),n||r(-1),s(e||n)};n(t.current);const i=new ResizeObserver(e=>e.forEach(e=>n(e.target)));return i.observe(t.current),()=>{i.disconnect()}},[e]),{ref:t,isWrapping:n,wrappingIndex:o}}(n),c=function(e,t){const[n,s]=(0,i.useState)(e);return(0,i.useEffect)(()=>{e.findIndex(e=>e.active)>=t&&-1!==t?s(e.slice().sort((e,t)=>e.active&&!t.active?-1:!e.active&&t.active?1:0)):s(e)},[e,t]),n}(e.primaryFilters,a);return i.createElement(we.s,{className:"mx_RoomListPrimaryFilters",gap:"var(--cpd-space-3x)",direction:"row-reverse",justify:"space-between"},r&&i.createElement(Sl.K,{kind:"secondary","aria-expanded":n,"aria-controls":t,className:"mx_RoomListPrimaryFilters_IconButton","aria-label":n?(0,l._t)("room_list|collapse_filters"):(0,l._t)("room_list|expand_filters"),size:"28px",onClick:()=>s(e=>!e)},i.createElement(rc.A,null)),i.createElement(we.s,{id:t,as:"div",role:"listbox","aria-label":(0,l._t)("room_list|primary_filters"),align:"center",gap:"var(--cpd-space-2x)",wrap:"wrap",className:"mx_RoomListPrimaryFilters_list",ref:o},c.map((e,t)=>i.createElement(em.T,{key:t,role:"option",selected:e.active,onClick:()=>e.toggle()},e.name))))}function nm(){const e=Qc(),t=0===e.roomsResult.rooms.length;let n;return n=e.isLoadingRooms?i.createElement("div",{className:"mx_RoomListSkeleton"}):t?i.createElement(Yd,{vm:e}):i.createElement(qd,{vm:e}),i.createElement(i.Fragment,null,i.createElement(rl,{feature:"newRoomList_filter",header:(0,l._t)("room_list|release_announcement|filter|title"),description:(0,l._t)("room_list|release_announcement|filter|description"),closeLabel:(0,l._t)("room_list|release_announcement|next"),placement:"right"},i.createElement("div",null,i.createElement(tm,{vm:e}))),n)}const im=({activeSpace:e})=>{const t=(0,wa.g)(gt.C.FilterContainer),[n,s]=(0,i.useState)(null),o=(0,i.useCallback)(e=>{s(e.target)},[]),r=(0,i.useCallback)(()=>{s(null)},[]),a=(0,i.useCallback)((e,t)=>{if(!n)return;const i=(0,Us.zM)().getNavigationAction(e);i!==si.bY.PreviousLandmark&&i!==si.bY.NextLandmark||(e.stopPropagation(),e.preventDefault(),Dl.r.findAndFocusNextLandmark(Dl.H.ROOM_SEARCH,i===si.bY.PreviousLandmark))},[n]);return i.createElement(we.s,{as:"nav",className:"mx_RoomListPanel",direction:"column",align:"stretch","aria-label":(0,l._t)("room_list|list_title"),onFocus:o,onBlur:r,onKeyDown:a},t&&i.createElement(ic,{activeSpace:e}),i.createElement(Kc,null),i.createElement(nm,null))};var sm=function(e){return e[e.Disabled=0]="Disabled",e[e.Legacy=1]="Legacy",e}(sm||{});class om extends i.Component{constructor(e){super(e),(0,w.A)(this,"listContainerRef",(0,i.createRef)()),(0,w.A)(this,"roomListRef",(0,i.createRef)()),(0,w.A)(this,"focusedElement",null),(0,w.A)(this,"isDoingStickyHeaders",!1),(0,w.A)(this,"updateProtocolSupport",()=>{this.setState({supportsPstnProtocol:Rt.Ay.instance.getSupportsPstnProtocol()})}),(0,w.A)(this,"updateActiveSpace",e=>{this.setState({activeSpace:e})}),(0,w.A)(this,"onDialPad",()=>{S.A.fire(H.r.OpenDialPad)}),(0,w.A)(this,"onExplore",e=>{S.A.fire(H.r.ViewRoomDirectory),ri.A.trackInteraction("WebLeftPanelExploreRoomsButton",e)}),(0,w.A)(this,"refreshStickyHeaders",()=>{this.listContainerRef.current&&this.handleStickyHeaders(this.listContainerRef.current)}),(0,w.A)(this,"onBreadcrumbsUpdate",()=>{const e=om.breadcrumbsMode;if(e!==this.state.showBreadcrumbs){if(this.setState({showBreadcrumbs:e}),!this.listContainerRef.current)return;this.handleStickyHeaders(this.listContainerRef.current)}}),(0,w.A)(this,"onScroll",e=>{const t=e.target;this.handleStickyHeaders(t)}),(0,w.A)(this,"onFocus",e=>{this.focusedElement=e.target}),(0,w.A)(this,"onBlur",()=>{this.focusedElement=null}),(0,w.A)(this,"onKeyDown",(e,t)=>{if(!this.focusedElement)return;var n;(0,Us.zM)().getRoomListAction(e)===si.bY.NextRoom&&(t||(e.stopPropagation(),e.preventDefault(),null===(n=this.roomListRef.current)||void 0===n||n.focus()));const i=(0,Us.zM)().getNavigationAction(e);i!==si.bY.PreviousLandmark&&i!==si.bY.NextLandmark||(e.stopPropagation(),e.preventDefault(),Dl.r.findAndFocusNextLandmark(Dl.H.ROOM_SEARCH,i===si.bY.PreviousLandmark))}),this.state={activeSpace:Ms.Ay.instance.activeSpace,showBreadcrumbs:om.breadcrumbsMode,supportsPstnProtocol:Rt.Ay.instance.getSupportsPstnProtocol()}}static get breadcrumbsMode(){return ql.Y.instance.visible?sm.Legacy:sm.Disabled}componentDidMount(){ql.Y.instance.on(Br.H,this.onBreadcrumbsUpdate),Yl.Ay.instance.on(Yl.lA,this.onBreadcrumbsUpdate),Ms.Ay.instance.on(ya.tw,this.updateActiveSpace),Rt.Ay.instance.on(Rt.uv.ProtocolSupport,this.updateProtocolSupport),this.listContainerRef.current&&(ba.A.instance.trackElementDimensions("ListContainer",this.listContainerRef.current),this.listContainerRef.current.addEventListener("scroll",this.onScroll,{passive:!0})),ba.A.instance.on("ListContainer",this.refreshStickyHeaders)}componentWillUnmount(){var e;ql.Y.instance.off(Br.H,this.onBreadcrumbsUpdate),Yl.Ay.instance.off(Yl.lA,this.onBreadcrumbsUpdate),Ms.Ay.instance.off(ya.tw,this.updateActiveSpace),Rt.Ay.instance.off(Rt.uv.ProtocolSupport,this.updateProtocolSupport),ba.A.instance.stopTrackingElementDimensions("ListContainer"),ba.A.instance.removeListener("ListContainer",this.refreshStickyHeaders),null===(e=this.listContainerRef.current)||void 0===e||e.removeEventListener("scroll",this.onScroll)}componentDidUpdate(e,t){t.activeSpace!==this.state.activeSpace&&this.refreshStickyHeaders()}handleStickyHeaders(e){this.isDoingStickyHeaders||(this.isDoingStickyHeaders=!0,window.requestAnimationFrame(()=>{this.doStickyHeaders(e),this.isDoingStickyHeaders=!1}))}doStickyHeaders(e){if(!e.parentElement)return;const t=e.scrollTop,n=e.offsetHeight+e.scrollTop,i=e.querySelectorAll(".mx_RoomSublist:not(.mx_RoomSublist_hidden)"),s=new Map;let o,r;for(const e of i){const a=e.querySelector(".mx_RoomSublist_stickable");if(!a)continue;a.style.removeProperty("display");const l=.4,c=e.offsetTop+l*fa.u<=t,d=e.offsetTop+l*fa.u>=n;c||e===i[0]?(s.set(a,{stickyTop:!0}),o&&(o.style.display="none",s.set(o,{makeInvisible:!0})),o=a):d&&!r?(s.set(a,{stickyBottom:!0}),r=a):s.set(a,{})}for(const t of s.keys()){const n=s.get(t);if(n.makeInvisible)t.style.display="none";else{if(n.stickyTop){t.classList.contains("mx_RoomSublist_headerContainer_stickyTop")||t.classList.add("mx_RoomSublist_headerContainer_stickyTop");const n=`${e.parentElement.offsetTop}px`;t.style.top!==n&&(t.style.top=n)}else t.classList.contains("mx_RoomSublist_headerContainer_stickyTop")&&t.classList.remove("mx_RoomSublist_headerContainer_stickyTop"),t.style.top&&t.style.removeProperty("top");if(n.stickyBottom){t.classList.contains("mx_RoomSublist_headerContainer_stickyBottom")||t.classList.add("mx_RoomSublist_headerContainer_stickyBottom");const n=`${ba.A.instance.windowHeight-(e.parentElement.offsetTop+e.parentElement.offsetHeight)}px`;t.style.bottom!==n&&(t.style.bottom=n)}else t.classList.contains("mx_RoomSublist_headerContainer_stickyBottom")&&t.classList.remove("mx_RoomSublist_headerContainer_stickyBottom"),t.style.bottom&&t.style.removeProperty("bottom");if(n.stickyTop||n.stickyBottom){t.classList.contains("mx_RoomSublist_headerContainer_sticky")||t.classList.add("mx_RoomSublist_headerContainer_sticky");const e=ba.A.instance.getElementDimensions("ListContainer");if(e){const n=15,i=`${e.width-n}px`;t.style.width!==i&&(t.style.width=i)}}else n.stickyTop||n.stickyBottom||(t.classList.contains("mx_RoomSublist_headerContainer_sticky")&&t.classList.remove("mx_RoomSublist_headerContainer_sticky"),t.style.width&&t.style.removeProperty("width"))}}const a=e.parentElement;a&&(o?a.classList.add("mx_LeftPanel_roomListWrapper_stickyTop"):a.classList.remove("mx_LeftPanel_roomListWrapper_stickyTop"),r?a.classList.add("mx_LeftPanel_roomListWrapper_stickyBottom"):a.classList.remove("mx_LeftPanel_roomListWrapper_stickyBottom"))}renderBreadcrumbs(){if(this.state.showBreadcrumbs===sm.Legacy&&!this.props.isMinimized)return i.createElement(yl,{role:"navigation","aria-label":(0,l._t)("a11y|recent_rooms"),className:"mx_LeftPanel_breadcrumbsContainer mx_AutoHideScrollbar",verticalScrollsHorizontally:!0},i.createElement(Zl,null))}renderSearchDialExplore(){let e,t;return this.state.supportsPstnProtocol&&(e=i.createElement(le.A,{className:Lt()("mx_LeftPanel_dialPadButton",{}),onClick:this.onDialPad,title:(0,l._t)("left_panel|open_dial_pad")})),this.state.activeSpace===ya._b.Home&&(0,wa.g)(gt.C.ExploreRooms)&&(t=i.createElement(le.A,{className:"mx_LeftPanel_exploreButton",onClick:this.onExplore,title:(0,l._t)("action|explore_rooms")})),i.createElement("div",{className:"mx_LeftPanel_filterContainer",onFocus:this.onFocus,onBlur:this.onBlur,onKeyDown:this.onKeyDown,role:"search"},i.createElement(Ea,{isMinimized:this.props.isMinimized}),e,t)}render(){const e=D.A.getValue("feature_new_room_list"),t=Lt()({mx_LeftPanel:!0,mx_LeftPanel_newRoomList:e,mx_LeftPanel_minimized:this.props.isMinimized}),n=Lt()("mx_LeftPanel_actualRoomListContainer","mx_AutoHideScrollbar");if(e)return i.createElement("div",{className:t},i.createElement("div",{className:"mx_LeftPanel_roomListContainer"},i.createElement(im,{activeSpace:this.state.activeSpace})));const s=i.createElement(_a.A,{onKeyDown:this.onKeyDown,resizeNotifier:this.props.resizeNotifier,onFocus:this.onFocus,onBlur:this.onBlur,isMinimized:this.props.isMinimized,activeSpace:this.state.activeSpace,onResize:this.refreshStickyHeaders,onListCollapse:this.refreshStickyHeaders,ref:this.roomListRef});return i.createElement("div",{className:t},i.createElement("div",{className:"mx_LeftPanel_roomListContainer"},(0,wa.g)(gt.C.FilterContainer)&&this.renderSearchDialExplore(),this.renderBreadcrumbs(),!this.props.isMinimized&&i.createElement($l,{onVisibilityChange:this.refreshStickyHeaders}),i.createElement("nav",{className:"mx_LeftPanel_roomListWrapper","aria-label":(0,l._t)("common|rooms")},i.createElement("div",{className:n,ref:this.listContainerRef,tabIndex:-1},s))))}}var rm=n("./src/stores/NonUrgentToastStore.ts");class am extends i.PureComponent{constructor(e){super(e),(0,w.A)(this,"onUpdateToasts",()=>{this.setState({toasts:rm.A.instance.components})}),this.state={toasts:rm.A.instance.components}}componentDidMount(){rm.A.instance.on(Br.H,this.onUpdateToasts)}componentWillUnmount(){rm.A.instance.off(Br.H,this.onUpdateToasts)}render(){const e=this.state.toasts.map((e,t)=>i.createElement("div",{className:"mx_NonUrgentToastContainer_toast",key:`toast-${t}`},i.createElement(e,{})));return i.createElement("div",{className:"mx_NonUrgentToastContainer",role:"alert"},e)}}var lm=n("./node_modules/matrix-js-sdk/src/webrtc/callFeed.ts");class cm extends i.Component{constructor(e){super(e),(0,w.A)(this,"element",(0,i.createRef)()),(0,w.A)(this,"onAudioOutputChanged",e=>{const t=this.element.current;if(e)try{t.setSinkId(e)}catch(e){s.vF.error("Couldn't set requested audio output device: using default",e),s.vF.warn("Couldn't set requested audio output device: using default",e)}}),(0,w.A)(this,"onNewStream",()=>{this.setState({audioMuted:this.props.feed.isAudioMuted()}),this.playMedia()}),this.state={audioMuted:this.props.feed.isAudioMuted()}}componentDidMount(){oa.Ay.instance.addListener(oa.hW.AudioOutputChanged,this.onAudioOutputChanged),this.props.feed.addListener(lm.BL.NewStream,this.onNewStream),this.playMedia()}componentWillUnmount(){oa.Ay.instance.removeListener(oa.hW.AudioOutputChanged,this.onAudioOutputChanged),this.props.feed.removeListener(lm.BL.NewStream,this.onNewStream),this.stopMedia()}async playMedia(){const e=this.element.current;if(e){this.onAudioOutputChanged(oa.Ay.getAudioOutput()),e.muted=!1,e.srcObject=this.props.feed.stream,e.autoplay=!0;try{await e.load()}catch(e){s.vF.info(`Failed to play media element with feed for userId ${this.props.feed.userId} with purpose ${this.props.feed.purpose}`,e)}}}stopMedia(){const e=this.element.current;e&&(e.pause(),e.removeAttribute("src"))}render(){return this.state.audioMuted?null:i.createElement("audio",{ref:this.element})}}class dm extends i.Component{constructor(e){super(e),(0,w.A)(this,"onFeedsChanged",()=>{this.setState({feeds:this.props.call.getRemoteFeeds()})}),this.state={feeds:this.props.call.getRemoteFeeds()}}componentDidMount(){this.props.call.addListener(Ht.$E.FeedsChanged,this.onFeedsChanged)}componentWillUnmount(){this.props.call.removeListener(Ht.$E.FeedsChanged,this.onFeedsChanged)}render(){return this.state.feeds.map((e,t)=>i.createElement(cm,{feed:e,key:t}))}}var mm=n("./src/shouldHideEvent.ts"),um=n("./src/TimezoneHandler.ts"),hm=n("./src/ContentMessages.ts"),pm=n("./node_modules/re-resizable/lib/index.js");class gm extends i.Component{constructor(e,t){super(e,t),(0,w.A)(this,"onResizeStart",()=>{this.context.resizeNotifier.startResizing()}),(0,w.A)(this,"onResize",()=>{this.context.resizeNotifier.notifyRightHandleResized()}),(0,w.A)(this,"onResizeStop",(e,t,n,i)=>{const s=this.loadSidePanelSize().width+i.width;this.context.resizeNotifier.stopResizing(),window.localStorage.setItem(this.sizeSettingStorageKey,s.toString()),j.Vo.instance.trackEvent({eventName:"WebPanelResize",panel:"right",roomType:this.props.analyticsRoomType,size:s})})}get sizeSettingStorageKey(){let e="mx_rhs_size";return this.props.sizeKey&&(e+=`_${this.props.sizeKey}`),e}loadSidePanelSize(){let e=parseInt(window.localStorage.getItem(this.sizeSettingStorageKey),10);return isNaN(e)&&(e=this.props.defaultSize),{height:"100%",width:e}}render(){const e=i.Children.only(this.props.children),t=this.props.panel;let n;return!this.props.collapsedRhs&&t&&(n=i.createElement(pm.c,{key:this.props.sizeKey,defaultSize:this.loadSidePanelSize(),minWidth:320,maxWidth:"50%",enable:{top:!1,right:!1,bottom:!1,left:!0,topRight:!1,bottomRight:!1,bottomLeft:!1,topLeft:!1},onResizeStart:this.onResizeStart,onResize:this.onResize,onResizeStop:this.onResizeStop,className:"mx_RightPanel_ResizeWrapper",handleClasses:{left:"mx_ResizeHandle--horizontal"}},t)),i.createElement("div",{className:"mx_MainSplit"},e,n)}}(0,w.A)(gm,"contextType",Do.A),(0,w.A)(gm,"defaultProps",{defaultSize:320});var vm=n("./node_modules/@vector-im/compound-web/dist/components/Link/Link.js"),_m=n("./node_modules/@vector-im/compound-web/dist/components/Typography/Heading.js"),fm=n("./node_modules/@vector-im/compound-web/dist/components/Badge/Badge.js"),Em=n("./node_modules/@vector-im/compound-web/dist/components/Form/Root.js"),ym=n("./node_modules/@vector-im/compound-web/dist/components/Search/Search.js"),bm=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/export-archive.js"),wm=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/files.js"),Sm=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/extensions.js"),Am=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/user-profile.js"),Cm=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/polls.js"),xm=n("./node_modules/@vector-im/compound-design-tokens/assets/web/icons/lock-off.js"),Rm=n("./src/components/views/right_panel/BaseCard.tsx"),km=n("./src/utils/ShieldUtils.ts"),Im=n("./packages/shared-components/src/utils/Box/Box.module.css");const Tm=["as","flex","shrink","grow","className","children"];function Pm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function Nm(e){for(var t=1;t{const e={};return n&&(e["--mx-box-flex"]=n),s&&(e["--mx-box-shrink"]=s),o&&(e["--mx-box-grow"]=o),e},[n,o,s]);return i.createElement(t,Nm(Nm({},l),{},{className:Lt()(r,{[Im.A["box-flex"]]:!!n,[Im.A["box-shrink"]]:!!s,[Im.A["box-grow"]]:!!o}),style:c}),a)}var Dm=n("./src/hooks/useIsEncrypted.ts"),Om=n("./src/utils/video-rooms.ts");function Fm(e){const t=e.client;return(!!e.canInvite(t.getSafeUserId())||!(!e.isSpaceRoom()||e.getJoinRule()!==o.JoinRule.Public))&&e.getMyMembership()===X.O.Join&&(0,wa.g)(gt.C.InviteUsers)}var Lm=n("./src/components/views/polls/pollHistory/PollHistory.tsx");const Um=({room:e,matrixClient:t,permalinkCreator:n,onFinished:s})=>i.createElement(Q.A,{onFinished:s},i.createElement(Lm.a,{room:e,matrixClient:t,permalinkCreator:n,onFinished:s}));var Vm=n("./src/components/views/elements/StyledRadioGroup.tsx");let Bm=function(e){return e.Html="Html",e.PlainText="PlainText",e.Json="Json",e}({}),jm=function(e){return e.Timeline="Timeline",e.Beginning="Beginning",e.LastNMessages="LastNMessages",e}({});const Wm=e=>{switch(e){case Bm.Html:return(0,l._t)("export_chat|html");case Bm.Json:return(0,l._t)("export_chat|json");case Bm.PlainText:return(0,l._t)("export_chat|text");default:throw new Error("Unknown format")}};var Hm=n("./src/components/views/elements/Validation.tsx"),zm=n("./node_modules/react-dom/client.js"),Km=n("./node_modules/react-dom/server.browser.js"),Gm=n("./node_modules/escape-html/index.js"),Jm=n.n(Gm),$m=n("./node_modules/file-saver/dist/FileSaver.min.js"),qm=n("./node_modules/sanitize-filename/index.js"),Ym=n.n(qm),Xm=n("./src/utils/DecryptFile.ts");function Qm(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,i)}return n}function Zm(e){for(var t=1;tthis.room.getUnfilteredTimelineSet().relations.getChildEventsForEvent(e,t,n)),this.room=e,this.exportType=t,this.exportOptions=n,this.setProgressText=i,n.maxSize<1048576||n.maxSize>8388608e3||n.numberOfMessages&&n.numberOfMessages>10**8||t===jm.LastNMessages&&!n.numberOfMessages)throw new Error("Invalid export options");window.addEventListener("beforeunload",this.onBeforeUnload)}get destinationFileName(){return this.makeFileNameNoExtension(c.Ay.get().brand)+".zip"}onBeforeUnload(e){return e.preventDefault(),e.returnValue=(0,l._t)("export_chat|unload_confirm")}updateProgress(e,t=!0,n=!0){t&&s.vF.log(e),n&&this.setProgressText(e)}addFile(e,t){const n={name:e,blob:t};this.files.push(n)}makeFileNameNoExtension(e="matrix"){var t;const n=Ym()(null!==(t=this.room.name)&&void 0!==t?t:(0,l._t)("common|unnamed_room")).trim()||"Unnamed Room",i=(0,tt.td)(new Date).replace(/:/g,"-");return`${Ym()(e)} - ${n} - Chat Export - ${i}`}async downloadZIP(){const e=this.destinationFileName,t=e.substring(0,e.lastIndexOf(".")),{default:i}=await n.e(3260).then(n.t.bind(n,"./node_modules/jszip/dist/jszip.min.js",23)),s=new i;if(this.cancelled)return this.cleanUp();this.updateProgress((0,l._t)("export_chat|generating_zip"));for(const e of this.files)s.file(t+"/"+e.name,e.blob);const o=await s.generateAsync({type:"blob"});(0,$m.saveAs)(o,t+".zip")}cleanUp(){return s.vF.log("Cleaning up..."),window.removeEventListener("beforeunload",this.onBeforeUnload),""}async cancelExport(){s.vF.log("Cancelling export..."),this.cancelled=!0}downloadPlainText(e,t){const n=new Blob([t],{type:"text/plain"});(0,$m.saveAs)(n,e)}setEventMetadata(e){return e.setMetadata(this.room.currentState,!1),e}getLimit(){let e;if(this.exportType===jm.LastNMessages)e=this.exportOptions.numberOfMessages;else e=10**8;return e}async getRequiredEvents(){const e=this.room.client.getEventMapper();let t=null,n=[];if(this.exportType===jm.Timeline)n=this.room.getLiveTimeline().getEvents();else{let s=this.getLimit();for(;s;){var i;const r=Math.min(s,1e3),a=await this.room.client.createMessagesRequest(this.room.roomId,t,r,o.Direction.Backward);if(this.cancelled)return this.cleanUp(),[];if(0===a.chunk.length)break;s-=a.chunk.length;const c=a.chunk.map(e);for(const e of c)n.push(e);this.exportType===jm.LastNMessages?this.updateProgress((0,l._t)("export_chat|fetched_n_events_with_total",{count:n.length,total:this.exportOptions.numberOfMessages})):this.updateProgress((0,l._t)("export_chat|fetched_n_events",{count:n.length})),t=null!==(i=a.end)&&void 0!==i?i:null}n.reverse()}const s=n.filter(e=>e.isEncrypted()).map(e=>this.room.client.decryptEventIfNeeded(e,{emit:!1}));await Promise.all(s);for(let e=0;e`${e}/${t}-${n}${s>0?` (${s})`:""}${i}`,n=t(e),i=this.fileNames.get(n)||0;return this.fileNames.set(n,i+1),i>0?t(Zm(Zm({},e),{},{count:i})):n}getFilePath(e){let t;switch(e.getContent().msgtype){case"m.image":t="images";break;case"m.video":t="videos";break;case"m.audio":t="audio";break;default:t="m.sticker"===e.getType()?"stickers":"files"}const n=(0,tt.ej)(new Date(e.getTs()));let[i,s]=this.splitFileName(e.getContent().body);return"m.sticker"===e.getType()&&(s=".png"),(0,nn.Mp)(e)&&(s=".ogg"),this.makeUniqueFilePath({directory:t,name:i,date:n,extension:s})}isReply(e){const t=(e.isEncrypted()?e.event.content:e.getContent())["m.relates_to"];return!(!t||!t["m.in_reply_to"])}isAttachment(e){const t=["m.sticker","m.image","m.file","m.video","m.audio"];return e.getType()===t[0]||t.includes(e.getContent().msgtype)}}class tu extends i.Component{constructor(e){super(e),(0,w.A)(this,"onMouseDown",e=>{this.setState({location:{currentX:e.clientX,currentY:e.clientY}}),document.addEventListener("mousemove",this.state.onMouseMove),document.addEventListener("mouseup",this.state.onMouseUp)}),(0,w.A)(this,"onMouseUp",e=>{document.removeEventListener("mousemove",this.state.onMouseMove),document.removeEventListener("mouseup",this.state.onMouseUp),this.props.onMouseUp(e)}),this.state={onMouseMove:this.onMouseMove.bind(this),onMouseUp:this.onMouseUp.bind(this),location:{currentX:0,currentY:0}}}onMouseMove(e){const t=this.props.dragFunc(this.state.location,e);this.setState({location:t})}render(){return i.createElement("div",{className:this.props.className,onMouseDown:this.onMouseDown})}}class nu extends i.Component{constructor(e){super(e),(0,w.A)(this,"dragFunc",(e,t)=>{const n=t.clientX-e.currentX,i=this.state.width+n;return ithis.props.maxWidth?e:(this.setState({width:i}),this.updateCSSWidth.bind(this)(i),{currentX:t.clientX,currentY:e.currentY})}),(0,w.A)(this,"onMoueUp",()=>{this.props.roomId&&D.A.setValue("ircDisplayNameWidth",this.props.roomId,O.p.ROOM_DEVICE,this.state.width)}),this.state={width:D.A.getValue("ircDisplayNameWidth",this.props.roomId),IRCLayoutRoot:null}}componentDidMount(){this.setState({IRCLayoutRoot:document.querySelector(".mx_IRCLayout")},()=>this.updateCSSWidth(this.state.width))}updateCSSWidth(e){var t;null===(t=this.state.IRCLayoutRoot)||void 0===t||t.style.setProperty("--name-width",e+"px")}render(){return i.createElement(tu,{className:"mx_ProfileResizer",dragFunc:this.dragFunc,onMouseUp:this.onMoueUp})}}function iu(e){return ou(e,[e.client.getSafeUserId()].concat(e.client.getIgnoredUsers()))}function su(e){return ou(e,[e.client.getSafeUserId()])}function ou(e,t=[]){const n=[],i=Object.keys(e.currentState.members);for(const s of i)e.currentState.members[s].typing&&-1===t.indexOf(s)&&n.push(e.currentState.members[s]);return n}class ru extends i.Component{constructor(...e){super(...e),(0,w.A)(this,"state",{usersTyping:su(this.props.room),delayedStopTypingTimers:{}}),(0,w.A)(this,"isVisible",()=>ru.isVisible(this.state)),(0,w.A)(this,"onRoomTimeline",(e,t)=>{if((null==t?void 0:t.roomId)===this.props.room.roomId){const t=e.getSender(),n=this.state.usersTyping.filter(e=>e.userId!==t);n.length!==this.state.usersTyping.length&&this.setState({usersTyping:n}),this.abortUserTimer(t)}}),(0,w.A)(this,"onRoomMemberTyping",()=>{const e=iu(this.props.room);this.setState({delayedStopTypingTimers:this.updateDelayedStopTypingTimers(e),usersTyping:e})})}componentDidMount(){v.J.safeGet().on(o.RoomMemberEvent.Typing,this.onRoomMemberTyping),v.J.safeGet().on(o.RoomEvent.Timeline,this.onRoomTimeline)}componentDidUpdate(e,t){const n=ru.isVisible(t),i=ru.isVisible(this.state);this.props.onShown&&!n&&i?this.props.onShown():this.props.onHidden&&n&&!i&&this.props.onHidden()}componentWillUnmount(){const e=v.J.get();e&&(e.removeListener(o.RoomMemberEvent.Typing,this.onRoomMemberTyping),e.removeListener(o.RoomEvent.Timeline,this.onRoomTimeline)),Object.values(this.state.delayedStopTypingTimers).forEach(e=>e.abort())}static isVisible(e){return 0!==e.usersTyping.length||0!==Object.keys(e.delayedStopTypingTimers).length}updateDelayedStopTypingTimers(e){const t=this.state.usersTyping.filter(t=>!e.some(e=>t.userId===e.userId)),n=e.filter(e=>!this.state.usersTyping.some(t=>e.userId===t.userId));n.forEach(e=>{const t=this.state.delayedStopTypingTimers[e.userId];t&&t.abort()});let i=Object.assign({},this.state.delayedStopTypingTimers);return i=n.reduce((e,t)=>(delete e[t.userId],e),i),i=t.reduce((e,t)=>{if(!e[t.userId]){const n=new A.A(5e3);e[t.userId]=n,n.start(),n.finished().then(()=>this.removeUserTimer(t.userId),()=>{})}return e},i),i}abortUserTimer(e){const t=this.state.delayedStopTypingTimers[e];t&&(t.abort(),this.removeUserTimer(e))}removeUserTimer(e){if(this.state.delayedStopTypingTimers[e]){const t=Object.assign({},this.state.delayedStopTypingTimers);delete t[e],this.setState({delayedStopTypingTimers:t})}}renderTypingIndicatorAvatars(e,t){let n=0;e.length>t&&(n=e.length-t+1,e=e.slice(0,t-1));const s=e.map(e=>i.createElement(ln.A,{key:e.userId,member:e,size:"24px",resizeMethod:"crop",viewUserOnClick:!0,"aria-live":"off"}));return n>0&&s.push(i.createElement("span",{className:"mx_WhoIsTypingTile_remainingAvatarPlaceholder",key:"others"},"+",n)),s}render(){const e=[...this.state.usersTyping];for(const t in this.state.delayedStopTypingTimers){const n=this.props.room.getMember(t);n&&e.push(n)}const t=new Intl.Collator;e.sort((e,n)=>t.compare(e.name,n.name));const n=function(e,t){let n=0;if(e.length>t&&(n=e.length-t+1),0===e.length)return"";if(1===e.length)return(0,l._t)("timeline|typing_indicator|one_user",{displayName:e[0].name});const i=e.map(e=>e.name);if(n>=1)return(0,l._t)("timeline|typing_indicator|more_users",{names:i.slice(0,t-1).join(", "),count:n});{const e=i.pop();return(0,l._t)("timeline|typing_indicator|two_users",{names:i.join(", "),lastPerson:e})}}(e,this.props.whoIsTypingLimit);return n?i.createElement("li",{className:"mx_WhoIsTypingTile","aria-atomic":"true"},i.createElement("div",{className:"mx_WhoIsTypingTile_avatars"},this.renderTypingIndicatorAvatars(e,this.props.whoIsTypingLimit)),i.createElement("div",{className:"mx_WhoIsTypingTile_label"},n)):null}}(0,w.A)(ru,"defaultProps",{whoIsTypingLimit:3});var au=n("./src/components/structures/ScrollPanel.tsx"),lu=n("./src/components/views/messages/DateSeparator.tsx"),cu=n("./src/components/views/messages/TimelineSeparator.tsx"),du=n("./src/components/views/elements/ErrorBoundary.tsx"),mu=n("./src/Editing.ts");class uu{constructor(e,t,n,i,s,o){(0,w.A)(this,"events",[]),(0,w.A)(this,"ejectedEvents",[]),(0,w.A)(this,"readMarker",void 0),this.panel=e,this.firstEventAndShouldShow=t,this.prevEvent=n,this.lastShownEvent=i,this.nextEvent=s,this.nextEventTile=o,this.readMarker=e.readMarkerForEvent(t.event.getId(),t.event===i)}}(0,w.A)(uu,"canStartGroup",(e,t)=>!0);var hu=n("./src/TextForEvent.tsx"),pu=n("./src/components/views/messages/EventTileBubble.tsx");const gu=()=>{var e;const{room:t}=(0,Ji.ME)("room"),n=null==t?void 0:t.getLiveTimeline().getState(o.EventTimeline.BACKWARDS),s=null==n||null===(e=n.getStateEvents("m.room.history_visibility")[0])||void 0===e?void 0:e.getContent().history_visibility;let r;return"invited"==s?r=(0,l._t)("timeline|no_permission_messages_before_invite"):"joined"==s&&(r=(0,l._t)("timeline|no_permission_messages_before_join")),i.createElement(pu.A,{className:"mx_HistoryTile",title:(0,l._t)("timeline|historical_messages_unavailable"),subtitle:r})},vu=({events:e,children:t,threshold:n=3,onToggle:o,startExpanded:r=!1,summaryMembers:a=[],summaryText:c,layout:d=Bt.P.Group})=>{const[m,u]=(0,Eo.X)(r);(0,i.useEffect)(()=>{o&&o()},[m]);const h=e.map(e=>e.getId()).join(",");if(e.length!(null==e||!e.getMxcAvatarUrl)||(s.vF.error("EventListSummary given null summaryMember, termites may be afoot eating event senders",a),!1)),e=>e.getMxcAvatarUrl()).map(e=>i.createElement(ln.A,{key:e.userId,member:e,size:"14px"}));p=i.createElement("div",{className:"mx_EventTile_line"},i.createElement("div",{className:"mx_EventTile_info"},i.createElement("span",{className:"mx_GenericEventListSummary_avatars",onClick:u},e),i.createElement("span",{className:"mx_TextualEvent mx_GenericEventListSummary_summary"},c)))}return i.createElement("li",{className:"mx_GenericEventListSummary","data-scroll-tokens":h,"data-expanded":m+"","data-layout":d},i.createElement(le.A,{kind:"link_inline",className:"mx_GenericEventListSummary_toggle",onClick:u,"aria-expanded":m},m?(0,l._t)("action|collapse"):(0,l._t)("action|expand")),p)};var _u=n("./src/utils/ReactUtils.tsx");const fu=()=>{Rl.A.instance.setCard({phase:kl.n.PinnedMessages},!1)},Eu=[o.EventType.RoomMember];var yu=function(e){return e.Joined="joined",e.Left="left",e.JoinedAndLeft="joined_and_left",e.LeftAndJoined="left_and_joined",e.InviteReject="invite_reject",e.InviteWithdrawal="invite_withdrawal",e.Invited="invited",e.Banned="banned",e.Unbanned="unbanned",e.Kicked="kicked",e.ChangedName="changed_name",e.ChangedAvatar="changed_avatar",e.NoChange="no_change",e.ServerAcl="server_acl",e.ChangedPins="pinned_messages",e.MessageRemoved="message_removed",e.HiddenEvent="hidden_event",e}(yu||{});class bu extends i.Component{constructor(e){super(e),(0,w.A)(this,"onEventSentinelUpdated",(0,Kt.throttle)(()=>{this.setState(this.generateState())},500,{leading:!0,trailing:!0})),this.state=this.generateState()}generateState(){const e=this.props.events,t=new Map,n={};return e.forEach((e,i)=>{var s;const r=e.getType();let a=e.getSender();e.isState()&&r===o.EventType.RoomThirdPartyInvite?a=e.getContent().display_name:e.isState()&&r===o.EventType.RoomMember?a=e.getStateKey():e.isRedacted()&&null!==(s=e.getUnsigned())&&void 0!==s&&s.redacted_because&&(a=e.getUnsigned().redacted_because.sender),n[a]||(n[a]=[]);let l=a;if(e.isRedacted()){var c;const e=null===(c=this.context)||void 0===c||null===(c=c.room)||void 0===c?void 0:c.getMember(a);e&&(l=e.name,t.set(a,e))}else e.target&&Eu.includes(r)?(l=e.target.name,t.set(a,e.target)):e.sender&&r!==o.EventType.RoomThirdPartyInvite&&(l=e.sender.name,t.set(a,e.sender));n[a].push({mxEvent:e,displayName:l,index:i})}),{userEvents:n,summaryMembers:Array.from(t.values())}}componentDidMount(){this.bindSentinelListeners(this.props.events)}componentDidUpdate(e){e.events!==this.props.events&&(this.unbindSentinelListeners(e.events),this.bindSentinelListeners(this.props.events),this.setState(this.generateState()))}componentWillUnmount(){this.unbindSentinelListeners(this.props.events)}bindSentinelListeners(e){for(const t of e)t.on(o.MatrixEventEvent.SentinelUpdated,this.onEventSentinelUpdated)}unbindSentinelListeners(e){for(const t of e)t.on(o.MatrixEventEvent.SentinelUpdated,this.onEventSentinelUpdated)}shouldComponentUpdate(e,t){return e.events.length!==this.props.events.length||e.events.lengtht.userEvents[e].some((t,n)=>{var i,s;return(0,wn.No)(t,null!==(i=null===(s=this.state.userEvents[e])||void 0===s?void 0:s[n])&&void 0!==i?i:{})}))}generateSummary(e,t){const n=t.map(t=>{const n=e[t],i=this.renderNameList(n),s=t.split(","),o=bu.getCanonicalTransitions(s),r=bu.coalesceRepeatedTransitions(o).map(e=>bu.getDescriptionForTransition(e.transitionType,n.length,e.repeats)),a=(0,Jt.ki)(r);return(0,l._t)("timeline|summary|format",{nameList:i,transitionList:a})});return n?(0,_u.i)(n,", "):null}renderNameList(e){return(0,Jt.ki)(e,this.props.summaryLength)}static getCanonicalTransitions(e){const t={[yu.Joined]:{after:yu.Left,newTransition:yu.JoinedAndLeft},[yu.Left]:{after:yu.Joined,newTransition:yu.LeftAndJoined}},n=[];for(let i=0;i0&&t[t.length-1].transitionType===n?t[t.length-1].repeats+=1:t.push({transitionType:n,repeats:1});return t}static getDescriptionForTransition(e,t,n){let s;switch(e){case yu.Joined:s=t>1?(0,l._t)("timeline|summary|joined_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|joined",{oneUser:"",count:n});break;case yu.Left:s=t>1?(0,l._t)("timeline|summary|left_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|left",{oneUser:"",count:n});break;case yu.JoinedAndLeft:s=t>1?(0,l._t)("timeline|summary|joined_and_left_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|joined_and_left",{oneUser:"",count:n});break;case yu.LeftAndJoined:s=t>1?(0,l._t)("timeline|summary|rejoined_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|rejoined",{oneUser:"",count:n});break;case yu.InviteReject:s=t>1?(0,l._t)("timeline|summary|rejected_invite_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|rejected_invite",{oneUser:"",count:n});break;case yu.InviteWithdrawal:s=t>1?(0,l._t)("timeline|summary|invite_withdrawn_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|invite_withdrawn",{oneUser:"",count:n});break;case yu.Invited:s=t>1?(0,l._t)("timeline|summary|invited_multiple",{count:n}):(0,l._t)("timeline|summary|invited",{count:n});break;case yu.Banned:s=t>1?(0,l._t)("timeline|summary|banned_multiple",{count:n}):(0,l._t)("timeline|summary|banned",{count:n});break;case yu.Unbanned:s=t>1?(0,l._t)("timeline|summary|unbanned_multiple",{count:n}):(0,l._t)("timeline|summary|unbanned",{count:n});break;case yu.Kicked:s=t>1?(0,l._t)("timeline|summary|kicked_multiple",{count:n}):(0,l._t)("timeline|summary|kicked",{count:n});break;case yu.ChangedName:s=t>1?(0,l._t)("timeline|summary|changed_name_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|changed_name",{oneUser:"",count:n});break;case yu.ChangedAvatar:s=t>1?(0,l._t)("timeline|summary|changed_avatar_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|changed_avatar",{oneUser:"",count:n});break;case yu.NoChange:s=t>1?(0,l._t)("timeline|summary|no_change_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|no_change",{oneUser:"",count:n});break;case yu.ServerAcl:s=t>1?(0,l._t)("timeline|summary|server_acls_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|server_acls",{oneUser:"",count:n});break;case yu.ChangedPins:s=t>1?(0,l._t)("timeline|summary|pinned_events_multiple",{severalUsers:"",count:n},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:fu},e)}):(0,l._t)("timeline|summary|pinned_events",{oneUser:"",count:n},{a:e=>i.createElement(le.A,{kind:"link_inline",onClick:fu},e)});break;case yu.MessageRemoved:s=t>1?(0,l._t)("timeline|summary|redacted_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|redacted",{oneUser:"",count:n});break;case yu.HiddenEvent:s=t>1?(0,l._t)("timeline|summary|hidden_event_multiple",{severalUsers:"",count:n}):(0,l._t)("timeline|summary|hidden_event",{oneUser:"",count:n})}return null!=s?s:null}static getTransitionSequence(e){return e.map(bu.getTransition)}static getTransition(e){if(e.mxEvent.isRedacted())return yu.MessageRemoved;switch(e.mxEvent.getType()){case o.EventType.RoomThirdPartyInvite:return(0,Lr.Qo)(e.mxEvent)?yu.Invited:yu.InviteWithdrawal;case o.EventType.RoomServerAcl:return yu.ServerAcl;case o.EventType.RoomPinnedEvents:return yu.ChangedPins;case o.EventType.RoomMember:switch(e.mxEvent.getContent().membership){case X.O.Invite:return yu.Invited;case X.O.Ban:return yu.Banned;case X.O.Join:return e.mxEvent.getPrevContent().membership===X.O.Join?e.mxEvent.getContent().displayname!==e.mxEvent.getPrevContent().displayname?yu.ChangedName:e.mxEvent.getContent().avatar_url!==e.mxEvent.getPrevContent().avatar_url?yu.ChangedAvatar:yu.NoChange:yu.Joined;case X.O.Leave:if(e.mxEvent.getSender()===e.mxEvent.getStateKey())return e.mxEvent.getPrevContent().membership===X.O.Invite?yu.InviteReject:yu.Left;switch(e.mxEvent.getPrevContent().membership){case X.O.Invite:return yu.InviteWithdrawal;case X.O.Ban:return yu.Unbanned;default:return yu.Kicked}default:return null}default:return yu.HiddenEvent}}getAggregate(e){const t={},n={};return Object.keys(e).forEach(i=>{const s=e[i][0],o=s.displayName,r=bu.getTransitionSequence(e[i]).join(",");t[r]||(t[r]=[],n[r]=-1),t[r].push(o),(-1===n[r]||s.indexe.indices[t]-e.indices[n]);return i.createElement(vu,{events:this.props.events,threshold:this.props.threshold,onToggle:this.props.onToggle,startExpanded:this.props.startExpanded,children:this.props.children,summaryMembers:this.state.summaryMembers,layout:this.props.layout,summaryText:this.generateSummary(e.names,t)})}}(0,w.A)(bu,"contextType",gn.Ay),(0,w.A)(bu,"defaultProps",{summaryLength:1,threshold:3,avatarsMaxLength:5,layout:Bt.P.Group});const wu=[o.EventType.RoomMember,o.EventType.RoomThirdPartyInvite,o.EventType.RoomServerAcl,o.EventType.RoomPinnedEvents];class Su extends uu{constructor(e,t,n,i,s,o){super(e,t,n,i,s,o),this.panel=e,this.firstEventAndShouldShow=t,this.prevEvent=n,this.lastShownEvent=i,this.events=[t]}shouldGroup({event:e,shouldShow:t}){return!t||this.panel.wantsSeparator(this.events[0].event,e)!==cu.W.Date&&(!(!e.isState()||!wu.includes(e.getType()))||(!!e.isRedacted()||!(!this.panel.showHiddenEvents||this.panel.shouldShowEvent(e,!0))))}add(e){const{event:t,shouldShow:n}=e;(t.getType()!==o.EventType.RoomMember||(0,hu.I3)(t,v.J.safeGet(),this.panel.showHiddenEvents))&&(this.readMarker=this.readMarker||this.panel.readMarkerForEvent(t.getId(),t===this.lastShownEvent),(this.panel.showHiddenEvents||n)&&t.getType()!==o.EventType.RoomPinnedEvents&&this.events.push(e))}generateKey(){return"eventlistsummary-"+this.events[0].event.getId()}getTiles(){var e;if(null===(e=this.events)||void 0===e||!e.length)return[];const t=this.panel,n=this.lastShownEvent,s=[];if(t.wantsSeparator(this.prevEvent,this.events[0].event)===cu.W.Date){const e=this.events[0].event.getTs();s.push(i.createElement("li",{key:e+"~"},i.createElement(lu.A,{roomId:this.events[0].event.getRoomId(),ts:e})))}const o=this.events.find(e=>this.panel.grouperKeyMap.get(e.event)),r=o&&this.panel.grouperKeyMap.has(o.event)?this.panel.grouperKeyMap.get(o.event):this.generateKey();o||this.panel.grouperKeyMap.set(this.events[0].event,r);let a=!1,l=this.events.map((e,i)=>(e.event.getId()===t.props.highlightedEventId&&(a=!0),t.getTilesForEvent(0===i?this.prevEvent:this.events[i-1].event,e,e.event===n,true,this.nextEvent,this.nextEventTile))).reduce((e,t)=>e.concat(t),[]);return 0===l.length&&(l=null),this.panel.props.canBackPaginate||this.prevEvent||s.push(i.createElement(gu,{key:"historytile"})),s.push(i.createElement(bu,{key:r,events:this.events.map(e=>e.event),onToggle:t.onHeightChanged,startExpanded:a,layout:this.panel.props.layout},l)),this.readMarker&&s.push(this.readMarker),s}getNewPrevEvent(){return this.events[this.events.length-1].event}}(0,w.A)(Su,"canStartGroup",function(e,{event:t,shouldShow:n}){return!!n&&(!(!t.isState()||!wu.includes(t.getType()))||(!!t.isRedacted()||!(!e.showHiddenEvents||e.shouldShowEvent(t,!0))))});var Au=n("./src/utils/BrowserWorkarounds.ts"),Cu=n("./src/components/views/settings/AvatarSetting.tsx");const xu="52px",Ru=({hasAvatar:e,hasAvatarLabel:t,noAvatarLabel:n,setAvatarUrl:s,isUserAvatar:r,children:a,onClick:l})=>{var c;const d=(0,i.useContext)(de.Ay),[m,u]=(0,i.useState)(!1),h=(0,i.useRef)(null),p=e||m?t:n,{room:g}=(0,Ji.ME)("room");return r||(null==g||null===(c=g.currentState)||void 0===c?void 0:c.maySendStateEvent(o.EventType.RoomAvatar,d.getSafeUserId()))?i.createElement(i.Fragment,null,i.createElement("input",{type:"file",ref:h,className:"mx_MiniAvatarUploader_input",onClick:e=>{(0,Au.e)(e),null==l||l(e)},onChange:async e=>{u(!0);const t=(0,Cu.B)(e);if(t){const{content_uri:e}=await d.uploadContent(t);await s(e)}u(!1)},accept:"image/*"}),i.createElement(le.A,{className:Lt()("mx_MiniAvatarUploader",{mx_MiniAvatarUploader_busy:m,mx_MiniAvatarUploader_hasAvatar:e}),disabled:m,onClick:()=>{var e;null===(e=h.current)||void 0===e||e.click()},"aria-label":p},a,i.createElement("div",{className:"mx_MiniAvatarUploader_indicator"},m?i.createElement(ce.A,{w:20,h:20}):i.createElement("div",{className:"mx_MiniAvatarUploader_cameraIcon"})))):i.createElement(i.Fragment,null,a)};var ku=n("./src/utils/rooms.ts"),Iu=n("./src/models/LocalRoom.ts");const Tu=e=>{if(!(0,ku.u)(e.client))return{shouldEncrypt:!1};if(!x.A.shared().getRoomIds().has(e.roomId))return{shouldEncrypt:!1};if(1!==e.getInvitedAndJoinedMemberCount())return{shouldEncrypt:!1};const t=e.currentState.getStateEvents("m.room.third_party_invite")||[];return 1===t.length?{shouldEncrypt:!0,inviteEvent:t[0]}:{shouldEncrypt:!1}};const Pu=()=>{var e;const t=(0,i.useContext)(de.Ay),{room:n,roomId:s}=(0,Ji.ME)("room","roomId"),r=vo(n);if(!n||!s)throw new Error("Unable to create a NewRoomIntro without room and roomId");const a=n instanceof Iu.Np,c=a?null===(e=n.targets[0])||void 0===e?void 0:e.userId:x.A.shared().getUserIdForRoomId(s);let d;if(c){const{shouldEncrypt:e}=Tu(n),t=((e,t)=>e instanceof Iu.Np?(0,l.AO)("room|intro|send_message_start_dm"):t?(0,l.AO)("room|intro|encrypted_3pid_dm_pending_join"):(0,l.AO)("room|intro|start_of_dm_history"))(n,e);let s;n instanceof Iu.Np||e||n.getJoinedMemberCount()+n.getInvitedMemberCount()!==2||(s=(0,l._t)("room|intro|dm_caption"));const o=null==n?void 0:n.getMember(c),r=(null==n?void 0:n.name)||(null==o?void 0:o.rawDisplayName)||c;d=i.createElement(i.Fragment,null,i.createElement(En.A,{room:n,size:xu,onClick:()=>{S.A.dispatch({action:H.r.ViewUser,member:o||{userId:c}})}}),i.createElement("h2",null,n.name),i.createElement("p",null,(0,l._t)(t,{},{displayName:()=>i.createElement("strong",null,r)})),s&&i.createElement("p",null,s))}else{var m,u,h,p;const e=n&&n.getMyMembership()===X.O.Join&&n.currentState.maySendStateEvent(o.EventType.RoomTopic,t.getSafeUserId()),a=()=>{S.A.dispatch({action:"open_room_settings",room_id:s},!0),setTimeout(()=>{var e;null===(e=window.document.getElementById("profileTopic"))||void 0===e||e.focus()})};let c;e&&r?c=(0,l._t)("room|intro|edit_topic",{},{a:e=>i.createElement(le.A,{element:"a",kind:"link_inline",onClick:a},e),topic:()=>i.createElement(vi.XZ,null,(0,vi.sH)(null==r?void 0:r.text,null==r?void 0:r.html))}):r?c=(0,l._t)("room|intro|display_topic",{},{topic:()=>i.createElement(vi.XZ,null,(0,vi.sH)(null==r?void 0:r.text,null==r?void 0:r.html))}):e&&(c=(0,l._t)("room|intro|no_topic",{},{a:e=>i.createElement(le.A,{element:"a",kind:"link_inline",onClick:a},e)}));const g=null===(m=n.currentState.getStateEvents(o.EventType.RoomCreate,""))||void 0===m?void 0:m.getSender(),v=g&&(null==n||null===(u=n.getMember(g))||void 0===u?void 0:u.rawDisplayName)||g;let _,f,E;_=g===t.getUserId()?(0,l._t)("room|intro|you_created"):(0,l._t)("room|intro|user_created",{displayName:v}),null!==(h=Ms.Ay.instance.activeSpaceRoom)&&void 0!==h&&h.canInvite(t.getSafeUserId())&&Ms.Ay.instance.isRoomInSpace(Ms.Ay.instance.activeSpace,n.roomId)&&(f=Ms.Ay.instance.activeSpaceRoom),f&&(0,wa.g)(gt.C.InviteUsers)?E=i.createElement("div",{className:"mx_NewRoomIntro_buttons"},i.createElement(le.A,{className:"mx_NewRoomIntro_inviteButton",kind:"primary",onClick:()=>{(0,Mo.Lo)(f)}},(0,l._t)("invite|to_space",{spaceName:f.name})),n.canInvite(t.getSafeUserId())&&i.createElement(le.A,{className:"mx_NewRoomIntro_inviteButton",kind:"primary_outline",onClick:()=>{S.A.dispatch({action:"view_invite",roomId:s})}},(0,l._t)("room|intro|room_invite"))):n.canInvite(t.getSafeUserId())&&(0,wa.g)(gt.C.InviteUsers)&&(E=i.createElement("div",{className:"mx_NewRoomIntro_buttons"},i.createElement(le.A,{className:"mx_NewRoomIntro_inviteButton",kind:"primary",onClick:()=>{S.A.dispatch({action:"view_invite",roomId:s})}},(0,l._t)("room|invite_this_room"))));const y=null===(p=n.currentState.getStateEvents(o.EventType.RoomAvatar,""))||void 0===p||null===(p=p.getContent())||void 0===p?void 0:p.url;let b=i.createElement(En.A,{room:n,size:xu,viewAvatarOnClick:!!y});y||(b=i.createElement(Ru,{hasAvatar:!1,noAvatarLabel:(0,l._t)("room|intro|no_avatar_label"),setAvatarUrl:e=>t.sendStateEvent(s,o.EventType.RoomAvatar,{url:e},"")},b)),d=i.createElement(i.Fragment,null,b,i.createElement("h2",null,n.name),i.createElement("p",null,_," ",(0,l._t)("room|intro|start_of_room",{},{roomName:()=>i.createElement("strong",null,n.name)})),i.createElement("p",null,c),E)}const g=(0,l._t)("room|intro|private_unencrypted_warning");let _;n.currentState.mayClientSendStateEvent(o.EventType.RoomEncryption,v.J.safeGet())&&!a&&(_=i.createElement(le.A,{kind:"link_inline",onClick:function(e){e.preventDefault(),S.A.dispatch({action:"open_room_settings",initial_tab_id:Ut.e.Security})}},(0,l._t)("room|intro|enable_encryption_prompt")));const f=i.createElement("span",null," ",g," ",_," ");return i.createElement("li",{className:"mx_NewRoomIntro"},!function(e,t){const n=e.isRoomEncrypted(t.roomId);return"public"===t.getJoinRule()||!(0,ku.u)(e)||n}(t,n)&&i.createElement(pu.A,{className:"mx_cryptoEvent mx_cryptoEvent_icon_warning",title:(0,l._t)("room|intro|unencrypted_warning"),subtitle:f}),d)};class Nu extends uu{shouldGroup({event:e,shouldShow:t}){const n=this.panel,i=this.firstEventAndShouldShow.event;if(!t)return!0;if(n.wantsSeparator(this.firstEventAndShouldShow.event,e)===cu.W.Date)return!1;const s=e.getType();return(s!==o.EventType.RoomMember||e.getStateKey()===i.getSender()&&e.getContent().membership===X.O.Join)&&(!o.M_BEACON_INFO.matches(s)&&!(!e.isState()||e.getSender()!==i.getSender()))}add(e){const{event:t,shouldShow:n}=e,i=this.panel;this.readMarker=this.readMarker||i.readMarkerForEvent(t.getId(),t===this.lastShownEvent),n&&(t.getType()===o.EventType.RoomEncryption?this.ejectedEvents.push(e):this.events.push(e))}getTiles(){var e,t;if(!this.events||!this.events.length)return[];const n=this.panel,s=[],o=!0,r=this.firstEventAndShouldShow,a=this.lastShownEvent;if(n.wantsSeparator(this.prevEvent,r.event)===cu.W.Date){const e=r.event.getTs();s.push(i.createElement("li",{key:e+"~"},i.createElement(lu.A,{roomId:r.event.getRoomId(),ts:e})))}r.shouldShow&&s.push(...n.getTilesForEvent(r.event,r));for(const e of this.ejectedEvents)s.push(...n.getTilesForEvent(r.event,e,r.event===a,o));const c=this.events.map(e=>n.getTilesForEvent(e.event,e,e.event===a,o)).reduce((e,t)=>e.concat(t),[]),d=this.events[this.events.length-1].event;let m;const u=d.getRoomId(),h=null!==(e=null===(t=d.sender)||void 0===t?void 0:t.name)&&void 0!==e?e:d.getSender();return m=u&&x.A.shared().getUserIdForRoomId(u)?(0,l._t)("timeline|creation_summary_dm",{creator:h}):(0,l._t)("timeline|creation_summary_room",{creator:h}),s.push(i.createElement(Pu,{key:"newroomintro"})),s.push(i.createElement(vu,{key:"roomcreationsummary",events:this.events.map(e=>e.event),onToggle:n.onHeightChanged,summaryMembers:d.sender?[d.sender]:void 0,summaryText:m,layout:this.panel.props.layout},c)),this.readMarker&&s.push(this.readMarker),s}getNewPrevEvent(){return this.firstEventAndShouldShow.event}}(0,w.A)(Nu,"canStartGroup",function(e,{event:t}){return t.getType()===o.EventType.RoomCreate});const Mu=[o.EventType.Sticker,o.EventType.RoomMessage];function Du(e,t,n,i,s){return s!==gn.Ae.ThreadsList&&(!(null==e||!e.sender||!t.sender)&&(!(t.getTs()-e.getTs()>3e5)&&(t.isRedacted()===e.isRedacted()&&(!!(t.getType()===e.getType()||Mu.includes(t.getType())&&Mu.includes(e.getType()))&&(t.sender.userId===e.sender.userId&&t.sender.name===e.sender.name&&t.sender.getMxcAvatarUrl()===e.sender.getMxcAvatarUrl()&&((!(0,nn.zr)(t)&&!(0,nn.zr)(e)||s===gn.Ae.Thread)&&!!(0,sn.bN)(e,n,i)))))))}class Ou extends i.Component{constructor(e){super(e),(0,w.A)(this,"readReceiptMap",{}),(0,w.A)(this,"readReceiptsByEvent",new Map),(0,w.A)(this,"readReceiptsByUserId",new Map),(0,w.A)(this,"_showHiddenEvents",void 0),(0,w.A)(this,"unmounted",!1),(0,w.A)(this,"readMarkerNode",(0,i.createRef)()),(0,w.A)(this,"whoIsTyping",(0,i.createRef)()),(0,w.A)(this,"scrollPanel",(0,i.createRef)()),(0,w.A)(this,"showTypingNotificationsWatcherRef",void 0),(0,w.A)(this,"eventTiles",{}),(0,w.A)(this,"grouperKeyMap",new WeakMap),(0,w.A)(this,"calculateRoomMembersCount",()=>{this.setState({hideSender:this.shouldHideSender()})}),(0,w.A)(this,"onShowTypingNotificationsChange",()=>{this.setState({showTypingNotifications:D.A.getValue("showTypingNotifications")})}),(0,w.A)(this,"isUnmounting",()=>this.unmounted),(0,w.A)(this,"collectGhostReadMarker",e=>{e&&requestAnimationFrame(()=>{e.style.width="10%",e.style.opacity="0"})}),(0,w.A)(this,"onGhostTransitionEnd",e=>{const t=e.target.dataset.eventid;this.setState({ghostReadMarkers:this.state.ghostReadMarkers.filter(e=>e!==t)})}),(0,w.A)(this,"collectEventTile",(e,t)=>{this.eventTiles[e]=t}),(0,w.A)(this,"onHeightChanged",()=>{var e;null===(e=this.scrollPanel.current)||void 0===e||e.checkScroll()}),(0,w.A)(this,"resizeObserver",new ResizeObserver(this.onHeightChanged)),(0,w.A)(this,"onTypingShown",()=>{const e=this.scrollPanel.current;null==e||e.checkScroll(),e&&e.getScrollState().stuckAtBottom&&e.preventShrinking()}),(0,w.A)(this,"onTypingHidden",()=>{const e=this.scrollPanel.current;e&&(e.updatePreventShrinking(),e.checkScroll())}),this.state={ghostReadMarkers:[],showTypingNotifications:D.A.getValue("showTypingNotifications"),hideSender:this.shouldHideSender()},this._showHiddenEvents=D.A.getValue("showHiddenEventsInTimeline")}componentDidMount(){var e;this.unmounted=!1,this.showTypingNotificationsWatcherRef=D.A.watchSetting("showTypingNotifications",null,this.onShowTypingNotificationsChange),this.calculateRoomMembersCount(),null===(e=this.props.room)||void 0===e||e.currentState.on(o.RoomStateEvent.Update,this.calculateRoomMembersCount)}componentWillUnmount(){var e;this.unmounted=!0,null===(e=this.props.room)||void 0===e||e.currentState.off(o.RoomStateEvent.Update,this.calculateRoomMembersCount),D.A.unwatchSetting(this.showTypingNotificationsWatcherRef),this.readReceiptMap={},this.resizeObserver.disconnect()}componentDidUpdate(e,t){if(e.layout!==this.props.layout&&this.calculateRoomMembersCount(),e.readMarkerVisible&&e.readMarkerEventId&&this.props.readMarkerEventId!==e.readMarkerEventId){const t=this.state.ghostReadMarkers;t.push(e.readMarkerEventId),this.setState({ghostReadMarkers:t})}const n=this.pendingEditItem;if(!this.props.editState&&this.props.room&&n){const e=this.props.room.findEventById(n);S.A.dispatch({action:H.r.EditEvent,event:null!=e&&e.isRedacted()?null:e,timelineRenderingType:this.context.timelineRenderingType})}}shouldHideSender(){return!!this.props.room&&this.props.room.getInvitedAndJoinedMemberCount()<=2&&this.props.layout===Bt.P.Bubble}getNodeForEventId(e){var t,n;if(this.eventTiles)return null!==(t=null===(n=this.eventTiles[e])||void 0===n||null===(n=n.ref)||void 0===n?void 0:n.current)&&void 0!==t?t:void 0}getTileForEventId(e){if(this.eventTiles&&e)return this.eventTiles[e]}isAtBottom(){var e;return null===(e=this.scrollPanel.current)||void 0===e?void 0:e.isAtBottom()}getScrollState(){var e,t;return null!==(e=null===(t=this.scrollPanel.current)||void 0===t?void 0:t.getScrollState())&&void 0!==e?e:null}getReadMarkerPosition(){var e;const t=this.readMarkerNode.current,n=null===(e=this.scrollPanel.current)||void 0===e?void 0:e.divScroll;if(!t||!n)return null;const i=n.getBoundingClientRect(),s=t.getBoundingClientRect();return s.bottom+2({event:e,shouldShow:this.shouldShowEvent(e)})),n=v.J.safeGet().getSafeUserId();let i=!1,s=-1;for(let o=t.length-1;o>=0;o--){const{event:r,shouldShow:a}=t[o];if(a&&(void 0===e&&(e=r),!i&&this.isSentState(r)&&Es(r)&&(i=!0,r.getSender()===n&&(t[o].lastSuccessfulWeSent=!0)),s<0&&!r.status&&(s=o),s>=0&&i))break}const o=[];let r=null;this.readReceiptsByEvent=new Map,this.props.showReadReceipts&&(this.readReceiptsByEvent=this.getReadReceiptsByShownEvent(t));let a=null;for(let n=0;n=s);e&&o.push(e)}}return a&&o.push(...a.getTiles()),o}getTilesForEvent(e,t,n=!1,s=!1,o=null,r=null){var a,c,d;const m=t.event,u=[],h=(null===(a=this.props.editState)||void 0===a?void 0:a.getEvent().getId())===m.getId(),p=null!==(c=m.getTs())&&void 0!==c?c:Date.now(),g=this.wantsSeparator(e,m);if(!s&&this.props.room)if(g===cu.W.Date)u.push(i.createElement("li",{key:p},i.createElement(lu.A,{key:p,roomId:this.props.room.roomId,ts:p})));else if(g===cu.W.LateEvent){var _;const e=(0,l._t)("timeline|late_event_separator",{dateTime:(0,tt.Yq)(null!==(_=m.getDate())&&void 0!==_?_:new Date)});u.push(i.createElement("li",{key:p},i.createElement(cu.A,{key:p,label:e},e)))}const f=v.J.safeGet();let E=!0;if(r){const e=r;E=this.wantsSeparator(m,e)===cu.W.Date||m.getSender()!==e.getSender()||rn(f,e,this.showHiddenEvents).isInfoMessage||!Du(m,e,f,this.showHiddenEvents,this.context.timelineRenderingType)}const y=g===cu.W.None&&Du(e,m,f,this.showHiddenEvents,this.context.timelineRenderingType),b=m.getId(),w=b===this.props.highlightedEventId,S=this.readReceiptsByEvent.get(b),A=this.props.callEventGroupers.get(m.getContent().call_id);return u.push(i.createElement(bs,{key:m.getTxnId()||b,as:"li",ref:this.collectEventTile.bind(this,b),alwaysShowTimestamps:this.props.alwaysShowTimestamps,mxEvent:m,continuation:y,isRedacted:m.isRedacted(),replacingEventId:m.replacingEventId(),editState:h?this.props.editState:void 0,resizeObserver:this.resizeObserver,readReceipts:S,readReceiptMap:this.readReceiptMap,showUrlPreview:this.props.showUrlPreview,checkUnmounting:this.isUnmounting,eventSendStatus:null!==(d=m.getAssociatedStatus())&&void 0!==d?d:void 0,isTwelveHour:this.props.isTwelveHour,permalinkCreator:this.props.permalinkCreator,last:n,lastInSection:E,lastSuccessful:t.lastSuccessfulWeSent,isSelectedEvent:w,getRelationsForEvent:this.props.getRelationsForEvent,showReactions:this.props.showReactions,layout:this.props.layout,showReadReceipts:this.props.showReadReceipts,callEventGrouper:A,hideSender:this.state.hideSender})),u}wantsSeparator(e,t){var n;if(this.context.timelineRenderingType===gn.Ae.ThreadsList)return cu.W.None;if(null!==e){var i;const n=ps(t);if((null==n?void 0:n.group_id)!==(null===(i=ps(e))||void 0===i?void 0:i.group_id))return void 0!==n?cu.W.LateEvent:cu.W.Date}if(null===e&&!this.props.canBackPaginate)return cu.W.Date;const s=null!==(n=t.getDate())&&void 0!==n?n:new Date;return null!==e&&(0,tt.fq)(e.getDate()||void 0,s)?cu.W.Date:cu.W.None}getReadReceiptsForEvent(e){const t=v.J.safeGet().credentials.userId,{room:n}=this.props;if(!n)return null;const i=this.context.threadId?n.getThread(this.context.threadId):n,o=[];return i?(i.getReceiptsForEvent(e).forEach(e=>{if(!e.userId||!(0,Kr.ll)(e.type)||e.userId===t)return;if(v.J.safeGet().isUserIgnored(e.userId))return;const i=n.getMember(e.userId);o.push({userId:e.userId,roomMember:i,ts:e.data?e.data.ts:0})}),o):(s.vF.debug("Discarding request, could not find the receiptDestination for event: "+this.context.threadId),o)}getReadReceiptsByShownEvent(e){const t=new Map,n=new Map;let i;for(const e of this.props.events){if(this.shouldShowEvent(e)&&(i=e.getId()),!i)continue;const s=t.get(i)||[],o=this.getReadReceiptsForEvent(e);if(o){t.set(i,s.concat(o));for(const e of o)n.set(e.userId,{lastShownEventId:i,receipt:e})}}for(const e of this.readReceiptsByUserId.keys()){if(n.get(e))continue;const{lastShownEventId:i,receipt:s}=this.readReceiptsByUserId.get(e),o=t.get(i)||[];t.set(i,o.concat(s)),n.set(e,{lastShownEventId:i,receipt:s})}this.readReceiptsByUserId=n;for(const e of t.values())e.sort((e,t)=>t.ts-e.ts);return t}updateTimelineMinHeight(){const e=this.scrollPanel.current;if(e){const t=e.isAtBottom(),n=this.whoIsTyping.current,i=n&&n.isVisible();t&&i&&e.preventShrinking()}}onTimelineReset(){const e=this.scrollPanel.current;e&&e.clearPreventShrinking()}render(){let e,t;this.props.backPaginating&&(e=i.createElement("li",{key:"_topSpinner"},i.createElement(ce.A,null))),this.props.forwardPaginating&&(t=i.createElement("li",{key:"_bottomSpinner"},i.createElement(ce.A,null)));const n=this.props.hidden?{display:"none"}:{};let s,o;var r,a;(this.props.room&&this.state.showTypingNotifications&&this.context.timelineRenderingType===gn.Ae.Room&&(s=i.createElement(ru,{room:this.props.room,onShown:this.onTypingShown,onHidden:this.onTypingHidden,ref:this.whoIsTyping})),this.props.layout==Bt.P.IRC)&&(o=i.createElement(nu,{minWidth:20,maxWidth:600,roomId:null!==(r=null===(a=this.props.room)||void 0===a?void 0:a.roomId)&&void 0!==r?r:null}));const l=Lt()(this.props.className,{mx_MessagePanel_narrow:this.context.narrow});return i.createElement(du.A,null,i.createElement(au.A,{ref:this.scrollPanel,className:l,onScroll:this.props.onScroll,onFillRequest:this.props.onFillRequest,onUnfillRequest:this.props.onUnfillRequest,style:n,stickyBottom:this.props.stickyBottom,fixedChildren:o},e,this.getEventTiles(),s,t))}}(0,w.A)(Ou,"contextType",gn.Ay),(0,w.A)(Ou,"defaultProps",{disableGrouping:!1});const Fu=[Nu,Su];var Lu=n("./node_modules/raw-loader/dist/cjs.js!./src/utils/exportUtils/exportCustomCSS.css");const Uu=/\.[\w-]+/g;function Vu(e){const t="-apple-system, BlinkMacSystemFont, avenir next,\n avenir, segoe ui, helvetica neue, helvetica, Ubuntu, roboto, noto, arial, sans-serif";return e.replace(/font-family: ?(Inter|'Inter'|"Inter")/g,`font-family: ${t}`).replace(/--cpd-font-family-sans: ?(Inter|'Inter'|"Inter")/g,`--cpd-font-family-sans: ${t}`).replace(/font-family: ?Inconsolata/g,"font-family: Menlo, Consolas, Monaco, Liberation Mono, Lucida Console, monospace")}function Bu(e,t){return"Raw"!==e.prelude.type||!e.block.children.isEmpty&&e.prelude.value.split(",").some(e=>{const n=e.trim().match(Uu);return!(n&&!n.every(e=>t.has(e.substring(1))))})}const ju=async e=>{const t=await n.e(5914).then(n.bind(n,"./node_modules/css-tree/lib/index.js")),i=["bundle.css","theme-light.css"].map(e=>{var t;return null===(t=document.querySelector(`link[rel="stylesheet"][href$="${e}"]`))||void 0===t?void 0:t.href});let s="";for(const n of i){if(!n)continue;const i=await fetch(n),o=await i.text(),r=t.parse(o,{context:"stylesheet",parseAtrulePrelude:!1,parseRulePrelude:!1,parseValue:!1,parseCustomProperty:!1});for(const n of r.children)"Atrule"===n.type&&"font-face"===n.name||("Rule"!==n.type||Bu(n,e))&&(s+=Vu(t.generate(n)))}return s+Lu.A};class Wu extends eu{constructor(e,t,n,i){super(e,t,n,i),(0,w.A)(this,"avatars",void 0),(0,w.A)(this,"permalinkCreator",void 0),(0,w.A)(this,"totalSize",void 0),(0,w.A)(this,"mediaOmitText",void 0),this.avatars=new Map,this.permalinkCreator=new Gt.pE(this.room),this.totalSize=0,this.mediaOmitText=this.exportOptions.attachmentsIncluded?(0,l._t)("export_chat|media_omitted_file_size"):(0,l._t)("export_chat|media_omitted")}async getRoomAvatar(){let e;const t=jt.ze(this.room,32,32,"crop"),n="room.png";if(t)try{const i=await fetch(t);e=await i.blob(),this.totalSize+=e.size,this.addFile(n,e)}catch(e){s.vF.log("Failed to fetch room's avatar"+e)}const o=i.createElement(vl.A,{size:"32px",name:this.room.name,title:this.room.name,url:e?n:""});return(0,Km.qV)(o)}async wrapHTML(e,t,n){var s,r,a,c;const d=await this.getRoomAvatar(),m=(0,tt.Ah)(new Date),u=null===(s=this.room.currentState.getStateEvents(o.EventType.RoomCreate,""))||void 0===s?void 0:s.getSender(),h=(u?null===(r=this.room.getMember(u))||void 0===r?void 0:r.rawDisplayName:u)||u,p=this.room.client.getSafeUserId(),g=null===(a=this.room.getMember(p))||void 0===a?void 0:a.rawDisplayName,v=(null===(c=this.room.currentState.getStateEvents(o.EventType.RoomTopic,""))||void 0===c||null===(c=c.getContent())||void 0===c?void 0:c.topic)||"",_=Jm()((0,l._t)("export_chat|creator_summary",{creatorName:h})),f=Jm()(p),E=Jm()(this.room.name),y=Jm()(v),b=(0,Km.qV)(i.createElement("p",null,(0,l._t)("export_chat|export_info",{exportDate:m},{roomName:()=>i.createElement("strong",null,E),exporterDetails:()=>i.createElement("a",{href:`https://matrix.to/#/${encodeURIComponent(p)}`,target:"_blank",rel:"noopener noreferrer"},g?i.createElement(i.Fragment,null,i.createElement("strong",null,Jm()(g)),"I "," ("+f+")"):i.createElement("strong",null,f))}))),w=v?(0,l._t)("export_chat|topic",{topic:y}):"",S=(0,Km.qV)(0!==t?i.createElement("div",{style:{textAlign:"center"}},i.createElement("a",{href:`./messages${1===t?"":t}.html`,style:{fontWeight:"bold"}},(0,l._t)("export_chat|previous_page"))):i.createElement(i.Fragment,null)),A=(0,Km.qV)(t\n \n \n \n \n \n \n